|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/as_htm_p/astar_p.htm
Дата изменения: Tue Nov 10 13:11:33 2015 Дата индексирования: Sun Apr 10 02:41:22 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий astar_p.zip , astae_p.zip , astac_p.zip |
Тексты тестовых примеров tastar_p.zip , tastae_p.zip , tastac_p.zip |
Решение системы линейных алгебраических уравнений с теплицевой матрицей.
Решается система Аx = B, где А - теплицева матрица размера М на М. Эффективно используется теплицевость матрицы А.
С.Н.Воеводина. Решение системы уравнений с клеточно - теплицевыми матрицами. В сб. "Вычислительные методы и программирование", вып. 24, Изд-во МГУ, 1975.
procedure ASTAR(var A :Array of Real; var X :Array of Real;
var R :Array of Real; var M :Integer);
Параметры
| A - | вещественный одномерный массив длины 2М - 1, в котором задается матрица системы следующим образом: в массиве А записывается ее первая строка, за которой следуют элементы первого столбца начиная со второго элемента; |
| X - | вещественный одномерный массив длины М, в котором задается правая часть; на выходе из подпрограммы в Х получается решение; |
| R - | вещественный одномерный рабочий массив длины 2М; |
| M - | порядок матрицы (тип: целый). |
Версии
| ASTAD - | решение системы линейных алгебраических уравнений с теплицевой матрицей, заданной с расширенной (Extended) точностью. |
| ASTAC - | решение системы линейных алгебраических уравнений с комплексной теплицевой матрицей. |
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. |
При обращении к подпрограмме АSКАD параметры А, Х, R имеют тип Extended. | |
| 2. |
При обращении к подпрограмме АSКАС параметры А, Х, R имеют тип Complex. | |
| 3. | В подпрограммах АSТАR, АSТАD, АSТАС используются соответствующие версии служебной подпрограммы АSТ0R. |
Unit TASTAR_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ASTAR_p;
function TASTAR: String;
implementation
function TASTAR: String;
var
M,_i :Integer;
R :Array [0..7] of Real;
const
A :Array [0..6] of Real = ( 1.0,2.0,3.0,4.0,4.0,3.0,2.0 );
X :Array [0..3] of Real = ( 10.0,10.0,10.0,10.0 );
begin
Result := ''; { результат функции }
M := 4;
ASTAR(A,X,R,M);
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('TASTAR',Result); { вывод результатов в файл TASTAR.res }
exit;
end;
end.
Результат:
X = ( 1., 1., 1., 1. )