Текст подпрограммы и версий ammlr_p.zip , ammle_p.zip |
Тексты тестовых примеров tammlr_p.zip , tammle_p.zip |
Численное умножение обратной для нижней треугольной разреженной матрицы с единичной диагональю, заданной в формате RR (L) U, на прямоугольную разреженную матрицу, заданную в формате RR (C) U .
Форматы RR (L) U и RR (C) U приведены в описаниях подпрограмм AMMKR и AMTSR .
Данная операция эквивалентна следующей:
X = U -TB ,
где B - прямоугольная разреженная матрица с NR строками и NC столбцами в формате RR (C) U и U - верхняя треугольная матрица порядка NR в формате RR (L) U.
Алгоритм, реализованный в подпрограмме AMMLR, приведен в описании подпрограммы AMMKR .
С.Писсанецки. Технология разреженных матриц. - М.: Мир, 1988.
procedure AMMLR(var IUT :Array of Integer; var JUT :Array of Integer; var UNT :Array of Real; var IB :Array of Integer; var JB :Array of Integer; var BN :Array of Real; NR :Integer; NC :Integer; var IX :Array of Integer; var JX :Array of Integer; var XN :Array of Real; var P :Array of Real);
Параметры
IUT, JUT, - UNT | заданные портрет и ненулевые элементы матрицы UT в формате RR (L) U; |
IB,JB,BN - | заданные портрет и ненулевые элементы матрицы B в формате RR (C) U; |
NR - | заданный порядок матрицы UT и число строк матриц B и X (тип: целый); |
NC - | заданное число столбцов матриц B и X (тип: целый); |
IX, JX - | заданный портрет результирующей матрицы X в формате RR (C) U; |
XN - | вещественный одномерный массив, содержащий вычисленные ненулевые элементы матрицы X в соответствии с заданным ее портретом IX и JX; |
P - | вещественный одномерный массив длины NC, используемый в подпрограмме в качестве рабочего. |
Версии:
AMMLE - | численное умножение обратной для нижней треугольной разреженной матрицы с единичной диагональю, заданной в формате RR (L) U, на прямоугольную разреженную матрицу, заданную в формате RR (C) U, в режиме расширенной (Extended) точности; при этом параметры UNT, BN, XN и P должны иметь тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit TAMMLR_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, AMMLR_p; function TAMMLR: String; implementation function TAMMLR: String; var NR,NC,_i :Integer; P :Array [0..2] of Real; XN :Array [0..7] of Real; const IUT :Array [0..4] of Integer = ( 1,1,1,2,4 ); JUT :Array [0..2] of Integer = ( 2,3,1 ); IB :Array [0..4] of Integer = ( 1,3,4,5,6 ); JB :Array [0..4] of Integer = ( 3,1,2,1,3 ); UNT :Array [0..2] of Real = ( 1.0,1.0,1.0 ); BN :Array [0..4] of Real = ( 1.0,1.0,1.0,1.0,1.0 ); IX :Array [0..4] of Integer = ( 1,3,4,6,9 ); JX :Array [0..7] of Integer = ( 3,1,2,1,2,3,1,2 ); begin Result := ''; { ТЕСТ ДЛЯ ПОДПРОГРАММЫ AMMLR } NR := 4; NC := 3; AMMLR(IUT,JUT,UNT,IB,JB,BN,NR,NC,IX,JX,XN,P); Result := Result + Format('%s',[' XN=']); Result := Result + #$0D#$0A; for _i:=0 to 7 do begin Result := Result + Format('%20.16f ',[XN[_i]]); if ( ((_i+1) mod 8)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('TAMMLR',Result); { вывод результатов в файл TAMMLR.res } exit; end; end. Результаты: XN = ( 1, 1, 1, 1, - 1, 0, - 2, 1 )