Текст подпрограммы и версий asg5a_p.zip , asg5e_p.zip , asg5z_p.zip |
Тексты тестовых примеров tasg5a_p.zip , tasg5e_p.zip , tasg5z_p.zip |
Решение системы линейных алгебраических уравнений на основе преобразований вращения.
Матрица А размера 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.)