Представим исходную систему линейных алгебраическихуравнений (СЛАУ) в виде
(3.1)
Делим первое уравнение системы (3.1) на . В результате получим уравнение
, (3.2)
где .
Из второго уравнения системы (3.1) вычитаем уравнение (3.2), умноженное на , а из третьего уравнения системы (3.1) – уравнение (3.2), умноженное на . Получаем систему
(3.3)
где .
Делим первое уравнение системы (3.3) на . В результате получим уравнение
, (3.4)
где .
Умножая уравнение (3.4) на и вычитая его из второго уравнения системы (3.3), получаем
, (3.5)
где .
Наконец, разделив уравнение (3.5) на , получим
. (3.6)
Используя уравнения (3.4) и (3.2), находим последовательно
и .
Типовой вариант
Функция задана таблично:
-3 | -1 | ||||||
2,9 | 1,0 | -0,2 | -1,5 | -0,4 | 0,5 | 2,0 |
Реализация типового варианта
1. Расчет в среде программирования Delphi.
1.1. Создайте проект консольного приложения MNK.
1.2. Создайте текстовый файл исходных данных (File | New | Other) и сохраните его под именем MNK.txt (File | Save As…). Внесите в добавленный файл такие данные (рис. 3.1): MM = 2 – предельное значение степени аппроксимирующего полинома (m = 1, 2); N = 6 – количество точек табличной функции, учитывая что индексация точек начинается с 0 (I = 0, … , N); пары координат (Xi, Yi) точек табличной функции.
Рис. 3.1
1.3. Отредактируйте главную функцию.
program MNK;
{$APPTYPE CONSOLE}
uses
SysUtils,Math;
Type
mat=array of array of real;
vec=array of real;
Var
N:integer;// количество точек табличной функции (I = 0…N)
m:integer;// степень аппроксимирующего полинома Pm(x)
MM:integer;// предельная степень полинома (количество полиномов)
i,j:integer;// счетчики
X,Y:vec;// таблица данных X(N),Y(N)
C:vec;// массив коэффициентов аппроксимирующего полинома Pm(x)
A:mat;// матрица коэффициентов системы уравнений
fo:text;// файловая переменная
//—— процедура чтения табличной функции ——
procedure tab(var MM,N:integer;var X,Y:vec);
Var
i:integer;
fi:text;// файловая переменная
Begin
AssignFile(fi,’MNK.txt’);// связывание файловой переменной
Reset(fi);// направление обмена данными – чтение
ReadLn(fi,MM,N);// чтение количества полиномов и
SetLength(X,N+1);// количества точек функции
SetLength(Y,N+1);
for i:=0 to N do// таблица данных X(N),Y(N)
ReadLn(fi,X[i],Y[i]);
CloseFile(fi);// закрытие файла
end;
Метод Гаусса решения линейных уравнений