Текст подпрограммы и версий
afg0r_p.zip , afg0e_p.zip , afg0c_p.zip
Тексты тестовых примеров
tafg0r_p.zip , tafg0e_p.zip , tafg0c_p.zip

Подпрограмма:  AFG0R (модуль AFG0R_p)

Назначение

Треугольное разложение вещественной матрицы методом Гаусса без выбора ведущего элемента.

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

Выполняется факторизация матрицы А вида А = LU , где L - нижняя, U - верхняя треугольные матрицы. Матрица L имеет единичные диагональные элементы.

В.В.Воеводин, Р.В.Петрина, Комплекс алгоритмов, основанных на преобразованиях Гаусса, в пакете линейной алгебры, Сб. "Численный анализ на ФОРТРАНе", вып.3, Изд-во МГУ, 1973.

Использование

procedure AFG0R(var A :Array of Real; N :Integer);

Параметры

A - двумерный N*N массив, в котором задается исходная матрица (тип: Real); по окончании работы подпрограммы в массиве А на соответствующих местах запоминаются элементы матрицы U и поддиагональные элементы матрицы L;
N - заданный порядок исходной матрицы (тип: целый).

Версии

AFG0E - треугольное разложение матрицы, заданной с расширенной (Extended) точностью, методом Гаусса без выбора ведущего элемента.
AFG0C - треугольное разложение комплексной матрицы методом Гаусса без выбора ведущего элемента.

Вызываемые подпрограммы: нет

Замечания по использованию

  1. 

В подпрограмме АFG0E массив А имеет тип Extended.

  2.  В подпрограмме АFG0С массив А имеет тип Complex.

Пример использования

Unit TAFG0R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AFG0R_p;

function TAFG0R: String;

implementation

function TAFG0R: String;
var
J,I :Integer;
const
РА :Array [0..15] of Real = ( 7.9,8.5,4.3,3.2,5.6,-4.8,4.2,-1.4,5.7,0.8,-3.2,
-8.9,-7.2,3.5,9.3,3.3 );
begin
Result := '';  { результат функции }
AFG0R(PA,4);
Result := Result + #$0D#$0A;
for I:=1 to 4 do
 begin
  for J:=1 to 4 do
   begin
    Result := Result + Format('%20.16f ',[PA[(I-1)+(J-1)*4]]) + #$0D#$0A;
   end;
 end;
Result := Result + #$0D#$0A;
UtRes('TAFG0R',Result);  { вывод результатов в файл TAFG0R.res }
exit;
end;

end.


Результат:

                 | 7.900     5.600    5.700   -7.200 |
                 | 1.076  -10.825  -5.333   11.247 |
      A  =    | 0.544    -0.106  -6.870   14.415 |   , 
                 | 0.405      0.339   1.369  -17.323 |

это означает, что

                 | 1           0          0            0       |
                 | 1.076    1          0            0       |
      L  =    | 0.544   -0.106   1            0       |   , 
                 | 0.405    0.339   1.369     1       |
                 | 7.900    5.600   5.700   -7.200 |

                 | 0      -10.825  -5.333    11.247 |
      U  =    | 0        0           -6.870    14.415 |  .
                 | 0        0            0          -17.323 |