| 
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/as_htm_p/ask3c_p.htm  
 Дата изменения: Mon Apr 4 09:40:42 2011 Дата индексирования: Mon Oct 1 23:13:01 2012 Кодировка: Windows-1251  | 
| 
      Текст подпрограммы и версий  ask3c_p.zip  | 
      Тексты тестовых примеров   task3c_p.zip  | 
Решение системы линейных алгебраических уравнений с клеточно - циркулянтной матрицей.
Решается система А*x = b с клеточно - циркулянтной матрицей А (см. [1]), состоящей из L на L клеток общего вида размера М на М. В основе алгорифма лежит подобное преобразование матрицы А к клеточно - диагональной матрице тех же размеров. Тем самым решение исходной системы порядка М на L сводится к решению L систем порядка М (см. [2]).
1. В.В.Воеводин. Вычислительные основы линейной алгебры. М., Наука, 1977.
2. С.Н.Воеводина. Решение системы уравнений с клеточно - теплицевыми матрицами. В сб. "Вычислительные методы и программирование", вып. 24, Изд-во МГУ, 1975.
procedure ASK3C(var A :Array of Complex; var X :Array of Complex;
                var R :Array of Complex; M :Integer;
                L :Integer);
Параметры
| A - | комплексный одномерный массив длины М2*L, в котором задается матрица системы следующим образом. Массив А делится на L кусков длины М2. В I - ом куске, I = 1, ..., L, записывается по столбцам I - ая клетка первой клеточной строки исходной матрицы; | 
| X - | комплексный одномерный массив длины М на L, в котором задается правая часть; на выходе из подпрограммы в Х получается решение; | 
| R - | комплексный одномерный рабочий массив длины max (Z, L), где Z - целая часть числа (М + 1)/2; | 
| M - | порядок клетки (тип: целый); | 
| L - | клеточный порядок исходной матрицы (тип: целый). | 
Версии: нет
Вызываемые подпрограммы
| ASG1C - | решение комплексной системы линейных алгебраических уравнений методом Гаусса с выбором по столбцу. | 
Замечания по использованию
| В подпрограмме АSК3С используются служебные подпрограммы АR01С, АR02С. | 
Unit TASK3C_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ASK3C_p;
function TASK3C: String;
implementation
function TASK3C: String;
var
M,L,_i :Integer;
R :Array [0..1] of Complex;
const
A :Array [0..7] of Complex = ( ( re:1.0; im:1.0 ),( re:2.0; im:2.0 ),( re:2.0; 
im:2.0 ),( re:1.0; im:1.0 ),( re:2.0; im:2.0 ),( 
re:4.0; im:4.0 ),( re:4.0; im:4.0 ),( re:2.0; im: 
2.0 ) );
X :Array [0..3] of Complex = ( ( re:9.0; im:9.0 ),( re:9.0; im:9.0 ),( re:9.0; 
im:9.0 ),( re:9.0; im: 9.0 ) );
begin
Result := '';  { результат функции }
M := 2;
L := 2;
ASK3C(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 %20.16f ',[X[_i].re,X[_i].im]);
  if ( ((_i+1) mod 2)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('TASK3C',Result);  { вывод результатов в файл TASK3C.res }
exit;
end;
end.
Результаты:
      X  =   ( (1., 0.),  (1., 0.),  (1., 0.),  (1., 0.) )