Текст подпрограммы и версий
askar_p.zip , askae_p.zip , askac_p.zip
Тексты тестовых примеров
taskar_p.zip , taskae_p.zip , taskac_p.zip

Подпрограмма:  ASKAR (модуль ASKAR_p)

Назначение

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

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

Решается система А*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.)