Текст подпрограммы и версий
ast4r_p.zip , ast4e_p.zip
Тексты тестовых примеров
tast4r_p.zip , tast4e_p.zip

Подпрограмма:  AST4R (модуль AST4R_p)

Назначение

Решение разреженной линейной системы с верхней треугольной матрицей с единичной диагональю, представленной в формате RR (U) U .

Математическое описание

Описание формата RR (U) U приведено в описании подпрограммы AM21R (индекс 18.8.16).

Пусть разреженная верхняя треугольная матрица  U порядка  N с единичной диагональю задана в строчном формате RR (U) U. Требуется найти решение линейной системы UX = B.

Решение систем такого вида осуществляется обратной подстановкой по следующим расчетным формулам:

              xn  =  bn
                                   n
              xi   =  bi  -    ∑      ui k xk ,       i = n - 1, ..., 2, 1
                                k= i +1 

Использование

procedure AST4R(var IU :Array of Integer; var JU :Array of Integer;
                var UN :Array of Real; var B :Array of Real;
                N :Integer; var X :Array of Real);

Параметры

IU, JU, -
         UN  
заданные портрет и ненулевые элементы верхней треугольной матрицы  U с единичной диагональю в формате RR (U) U;
B - вещественный одномерный массив длины  N, содержащий компоненты вектора правой части системы;
N - заданный порядок системы (тип: целый);
X - вещественный одномерный массив длины  N, содержащий компоненты вычисленного вектора решения.

Версии

AST4E - решение разреженной линейной системы с верхней треугольной матрицей с единичной диагональю в режиме расширенной (Extended) точности; при этом параметры UN, B и X должны иметь тип Extended.

Вызываемые подпрограммы: нет

Замечания по использованию: нет

Пример использования

Unit TAST4R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AST4R_p;

function TAST4R: String;

implementation

function TAST4R: String;
var
N,_i :Integer;
X :Array [0..3] of Real;
const
IU :Array [0..4] of Integer = ( 1,2,3,4,4 );
JU :Array [0..2] of Integer = ( 4,3,4 );
UN :Array [0..2] of Real = ( 1.0,1.0,1.0 );
B :Array [0..3] of Real = ( 1.0,1.0,1.0,1.0 );
begin
Result := '';  { результат функции }

{      ТЕСТ ДЛЯ ПОДПРОГРАММЫ AST4R }

N := 4;
AST4R(IU,JU,UN,B,N,X);
Result := Result + Format('%s',[' X=']);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%20.16f ',[X[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('TAST4R',Result);  { вывод результатов в файл TAST4R.res }
exit;
end;

end.


Результаты:   X = (0, 1, 0, 1)