Текст подпрограммы и версий
asg5a_p.zip , asg5e_p.zip , asg5z_p.zip
Тексты тестовых примеров
tasg5a_p.zip , tasg5e_p.zip , tasg5z_p.zip

Подпрограмма:  ASG5A (модуль ASG5A_p)

Назначение

Решение системы линейных алгебраических уравнений на основе преобразований вращения.

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

Матрица А размера N на N исходной системы А*x = b с помощью преобразований вращения  R1 2, R1 3, ..., RN - 1 N представляется в виде

     A = L*RN-1 N ... R1 2 , 

где L - нижняя треугольная матрица размера N на N. Заменой переменных y = RN - 1 N ... R1 2*x исходная система сводится к системе L*y = b, которая решается способом обратной подстановки. При повторном решении системы с той же матрицей А и другой правой частью предоставляется возможность не выполнять заново факторизацию матрицы А.

В.В. Воеводин, Вычислительные основы линейной алгебры, М., 1977.

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

procedure ASG5A(var A :Array of Real; var B :Array of Real;
                var X :Array of Real; N :Integer; L :Integer);

Параметры

A - вещественный двумерный массив размера N на N, в котором задается исходная матрица; по окончании работы подпрограммы в нижней треугольной части А запоминаются на соответствующих местах элементы матрицы L, а в верхней треугольной части матрицы А в компактном виде запоминается информация о матрицах вращения  R1 2, ..., RN - 1 N ;
B - вещественный вектор длины N, в котором задается правая часть;
X - вещественный вектор длины N, в котором запоминается вычисленное решение системы;
N - заданый порядок матрицы А (тип: целый);
L - задает режим работы подпрограммы (тип: целый); при этом:
L = 1 - если система с данной матрицей решается впервые,
L ≠ 1 - если система с данной матрицей, но другой правой частью, решается повторно.

Версии

ASG5E - решение системы линейных алгебраических уравнений, заданной с расширенной (Extended) точностью, на основе преобразований вращения.
ASG5E - решение комплексной системы линейных алгебраических уравнений на основе преобразований вращения.

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

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

  1. 

Подпрограммы АSG5А, АSG5E, АSG5Е позволяют помещать вычисленное решение Х на место правой части В.

  2. 

В подпрограмме АSG5E параметры А, В, Х имеют тип Extended.

  3.  В подпрограмме АSG5Е параметры А, В, Х имеют тип Complex.

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

Unit tasg5a_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ASG5A_p;

function tasg5a: String;

implementation

function tasg5a: String;
var
I,J,_i :Integer;
A :Array [0..24] of Real;
B :Array [0..4] of Real;
X :Array [0..4] of Real;
label
_2,_3,_4;
begin
Result := '';  { результат функции }
for I:=1 to 5 do
 begin
  for J:=1 to 5 do
   begin
_2:
    A[(I-1)+(J-1)*5] := 0.0;
   end;
 end;
for I:=1 to 5 do
 begin
  for J:=I to 5 do
   begin
_3:
    A[(I-1)+(J-1)*5] := 1.0;
   end;
 end;
for I:=1 to 5 do
 begin
_4:
  B[I-1] := 6-I;
 end;
ASG5A(A,B,X,5,1);
Result := Result + #$0D#$0A;
for _i:=0 to 4 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('tasg5a',Result);  { вывод результатов в файл tasg5a.res }
exit;
end;

end.

Результат:

      X  =  (1., 1., 1., 1., 1.)