Текст подпрограммы и версий afg0r_p.zip , afg0e_p.zip , afg0c_p.zip |
Тексты тестовых примеров tafg0r_p.zip , tafg0e_p.zip , tafg0c_p.zip |
Треугольное разложение вещественной матрицы методом Гаусса без выбора ведущего элемента.
Выполняется факторизация матрицы А вида А = 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 |