|
Текст подпрограммы и версий askar_p.zip , askae_p.zip , askac_p.zip |
Тексты тестовых примеров taskar_p.zip , taskae_p.zip , taskac_p.zip |
Решение системы линейных алгебраических уравнений с клеточно - теплицевой матрицей.
Решается система А*x = b, где А - клеточно - теплицева матрица, состоящая из L на L клеток общего вида размера М на М. Алгорифм эффективно использует специальный вид матрицы А.
С.Н.Воеводина. Решение системы уравнений с клеточно - теплицевыми матрицами. В сб. "Вычислительные методы и программирование", вып. 24., Изд-во МГУ, 1975.
procedure ASKAR(var A :Array of Real; var X :Array of Real;
var R :Array of Real; var M :Integer; var L :Integer);
Параметры
| A - | вещественный одномерный массив длины М2 на (2L - 1), в котором задается матрица системы следующим образом: массив А делится на 2L - 1 кусков длины М2. В I - ом куске, I = 1, ..., L, записывается I - ая клетка первой клеточной строки матрицы системы. В (L + I) - ом куске, I = 1, ..., L - 1, записывается (I + 1) - ая клетка первого клеточного столбца. Каждая клетка в своем куске записывается по столбцам; |
| X - | вещественный одномерный массив длины М на L, в котором задается правая часть; на выходе из подпрограммы в Х получается решение; |
| R - | вещественный одномерный рабочий массив длины 2М2L + 4М2 + М; |
| M - | порядок клетки (тип: целый); |
| L - | клеточный порядок исходной матрицы (тип: целый). |
Версии
| ASKAE - | решение системы линейных алгебраических уравнений с комплексной клеточно - теплицевой матрицей, заданной с расширенной (Extended) точностью. |
| ASKAC - | решение системы линейных алгебраических уравнений с комплексной клеточно - теплицевой матрицей. |
Вызываемые подпрограммы
|
AIG1R - AIG1E AIG1C | обращение матрицы методом Жордана с выбором по столбцу. |
Замечания по использованию
| 1. |
При обращении к подпрограмме АSКАE параметры А, Х, R имеют тип Extended. | |
| 2. |
При обращении к подпрограмме АSКАС параметры А, Х, R имеют тип Complex. | |
| 3. | В подпрограммах АSКАR, АSКАE, АSКАС используются соответствующие версии служебной подпрограммы АSКВR. |
Unit TASKAR_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ASKAR_p;
function TASKAR: String;
implementation
function TASKAR: String;
var
M,L,_i :Integer;
R :Array [0..33] of Real;
const
A :Array [0..11] of Real = ( 1.0,2.0,2.0,1.0,2.0,4.0,4.0,2.0,2.0,4.0,4.0,2.0 );
X :Array [0..3] of Real = ( 9.0,9.0,9.0,9.0 );
begin
Result := ''; { результат функции }
M := 2;
L := 2;
ASKAR(A,X,R,M,L);
Result := Result + Format('%s',[' X=' + #$0D#$0A]);
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('TASKAR',Result); { вывод результатов в файл TASKAR.res }
end;
end.
Результат: X = (1., 1., 1., 1.)