Текст подпрограммы и версий 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.)