Текст подпрограммы и версий
aft1r_p.zip , aft1e_p.zip , aft1c_p.zip
Тексты тестовых примеров
taft1r_p.zip , taft1e_p.zip , taft1c_p.zip

Подпрограмма:  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