fy "> // друк матриці, j: integer; i: = 1 to n doj: = 1 to n do (fl, a [i, j]: 10:5) ; (fl);; end;: = Form2.SpinEdit1.Value; // розмірність матріциi: = 1 to N do // введення значенійj: = 1 to N do [i, j]: = StrToFloat (Form2.sg1.Cells [j , i]); [i]: = StrToFloat (Form2.sg1.Cells [N + 1, i]);; (fl, 'resgauss'); Rewrite (fl); (fl, 'Вихідна матриця:'); // вивід матріци_MATR (A, n); (fl, 'Праві частини:'); // вивід правій частині матріциj: = 1 to n do (fl, B [j]: 10:5); (A, n, L, U, norm); // вивід LU-разложеніяnorm = 0 then ('Ні LU-розкладання для A');; ;; (fl, 'Результати розкладання A = LU'); (fl, ' L-матриця: '); // вивід L-матріци_MATR (L, n); (fl, ' U-матриця:'); // висновок U-матріци_MATR (U, n); (fl, 'Контроль за span> LU = A: '); // вивід конрроля по LUi: = 1 to n doj: = 1 to n do: = 0; k: = 1 to n do: = s + l [i, k] * u [k, j]; [i, j]: = s;; _MATR ( A, n); (L, U, n, B, x); (fl, 'Рішення системи'); // вивід рішення сістемиi: = 1 to n do (fl, 'X', i, '=', x [i]: 7:5); (L, U, n, s); (fl, 'Визначник матриці det (A) = ', s: 7:5); // вивід визначника (U, L, n, O ); (fl, 'Зворотній матриця:'); // висновок зворотного матріци_MATR (O, n); (fl) ;. Lines.LoadFromFile ('resgauss');; TForm1.aOprgExecute (Sender: TObject); // інформація про програму . ShowModal;; end.
) Обчислювальний модуль gauss_lu
{У модулі gauss_lu виробляються всі обчислення} gauss_lu; = array [1 .. 10,1 .. 10] of real;// двовимірний масив дійсних чисел = array [1 .. 10] of real;// одновимірний масив дійсних чіселObr (L, U: matr; n: integer; var O: matr); LU (A: matr; n: integer; var L, U: matr; var norm: real); SLU (L, U: matr; n: integer; B: vect; var x: vect); Det (L, U: matr; n: integer; var d: real); LU (A: matr; n: integer; var L, U: matr; var norm: real);/...