Подпрограмма: AFT1R (модуль AFT1R_p)
Назначение
Оценка числа обусловленности вещественной треугольной
матрицы.
Математическое описание
Для заданной вещественной треугольной матрицы А порядка N
вычисляется величина, обратная числу обусловленности матрицы:
RCOND = 1 / ( || A ||1 * || A-1 ||1) ,
где || A ||1 = maxj=1,..,N ( | a1 j | + | a2 j | +...+ | aN j | )
Дж. Форсайт, М. Малькольм, К. Моулер. Машинные методы
математических вычислений. М.: Мир, 1980.
Использование
procedure AFT1R(var A :Array of Real; M :Integer; N :Integer;
LOW :Integer; var RCOND :Real; var Z :Array of Real;
var IERR :Integer);
Параметры
A -
|
двумерный массив размера М*N, содержащий
матрицу (тип: вещественный);
|
M -
|
первая размерность массива А в вызывающей
программе (тип: целый);
|
N -
|
порядок матрицы А (тип: целый);
|
LOW -
|
признак матрицы А (тип: целый); причем:
|
LОW=0 -
|
если матрица А верхняя треугольная;
|
LОW≠0 -
|
если матрица А нижняя треугольная;
|
RCOND -
|
вещественная переменная, содержащая на выходе
вычисленное значение величины, обратной числу
обусловленности матрицы А;
|
Z -
|
вещественный рабочий вектор длины N;
|
IERR -
|
целая переменная, содержащая на выходе
информацию о прохождении счета, при этом:
|
IЕRR=65 -
|
если М ≤ 0 или
N ≤ 0;
|
IЕRR=66 -
|
если в процессе работы произошло
переполнение (это говорит о том, что
|| А ||1
превосходит по абсолютной
величине максимальное представимое на данной машине число);
|
IЕRR=-К -
|
где К - номер строки матрицы А,
содержащей нулевой диагональный элемент
(это свидетельствует о вырожденности
матрицы). Если таких строк несколько,
то К равно номеру последней из них
(см. замечания по использованию).
|
Версии
AFT1E -
|
оценка числа обусловленности вещественной
треугольной матрицы, заданной с расширенной (Extended) точностью.
|
AFT1C -
|
оценка числа обусловленности комплексной
треугольной матрицы.
|
Вызываемые подпрограммы
UTAFSI -
|
подпрограмма выдачи диагностических сообщений.
|
Замечания по использованию
| 1.
|
В подпрограмме АFТ1E массивы А, Z и переменная RСОND
имеют тип Extended.
|
| 2.
|
В подпрограмме АFТ1С массивы А и Z имеют тип
Complex.
|
| 3.
|
Если вырабатывается значение переменной IЕRR,
отличное от нуля, то полагается RСОND = 0.0
и происходит выход из подпрограммы.
|
Пример использования
Unit TAFT1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AFT1R_p;
function TAFT1R: String;
implementation
function TAFT1R: String;
var
N,M,LOW,J,I,IERR :Integer;
RCONE :Real;
A :Array [0..80] of Real;
Z :Array [0..8] of Real;
label
_2,_3,_4;
begin
Result := ''; { результат функции }
N := 9;
M := 9;
LOW := 0;
for J:=1 to N do
begin
for I:=1 to M do
begin
A[(I-1)+(J-1)*9] := 0.0;
if ( J < I )
then goto _2;
A[(I-1)+(J-1)*9] := (I*10+J);
_2:
_3:
end;
_4:
end;
Result := Result + #$0D#$0A;
for I:=1 to M do
begin
for J:=1 to N do
begin
Result := Result + Format(' A= %20.16f ',
[A[(I-1)+(J-1)*9]]) + #$0D#$0A;
end;
end;
Result := Result + #$0D#$0A;
AFT1R(A,M,N,LOW,RCONE,Z,IERR);
Result := Result + Format('%s',[' IERR=']);
Result := Result + Format('%3d ',[IERR]);
Result := Result + Format('%s',[' RCONE=']);
Result := Result + Format('%20.16f ',[RCOND]) + #$0D#$0A;
UtRes('TAFT1R',Result); { вывод результатов в файл TAFT1R.res }
exit;
end;
end.
Результат: RCOND = 0.03629