- •Содержание
- •3.1. Аппроксимация данных методом наименьших квадратов 11
- •1. Решение систем линейных алгебраических уравнений
- •1.1. Классический метод Гаусса
- •1.2. Метод Гаусса с выбором главного элемента
- •2. Метод Ньютона для снау
- •2.1. Вариант 1
- •2.2. Вариант 2
- •I, n : IntType;
- •X,y,x0,y0 : RealType;
- •3. Аппроксимация данных методом наименьших квадратов
- •3.1. Аппроксимация данных методом наименьших квадратов
- •3.2. Аппроксимация данных с другими нормами
- •3.3. Аппроксимация данных многочленом заданной степени
- •Var X,y:array[1..Nmax] of real;
- •I,n:integer;
- •4. Решение систем дифференциальных уравнений
- •4.1. Метод Эйлера
- •4.2. Методы Рунге-Кутта
- •Проверка выполнения программы
- •X, h: RealType;
- •I, j : IntType;
- •X : RealType;
- •I, j, k : IntType;
X : RealType;
Y1, Y : Vec;
Koef : TypeKoeff;
Out : Text;
Function F(i:IntType; x:RealType ; Y:Vec):RealType ;
{Подпрограмма вычисления производных}
Begin
Case i of
1 : F:= Y[2];
2 : F:= - A*Exp(-A*x)
end;
End ;
Procedure RungeKoot(M, N:IntType; x,h:RealType ; Var Y:Vec);
{Реализация метода Рунге-Кутта 4-го порядка}
{N - порядок системы уравнений}
Var
I, j, k : IntType;
Begin
For i:= 1 to M do
begin
For j:= 1 to 4 do
begin
For k:= 1 to N do
Y[k]:= Y1[k]+Constant[j]*Koef[j-1,k];
For k:= 1 to N do
Koef[j,k]:=h*F(k,x+Constant[j]*h,Y);
end;
For k:= 1 to N do
Y1[k]:=Y1[k] + (Koef[1,k] + 2*Koef[2,k] + 2*Koef[3,k] + Koef[4,k])/6.0;
x:= x+h;
WriteLn(Out,'│ ',x:8:5,' │ ',Y[1]:8:5,' │ ',Y[2]:8:5,' │');
end;
WriteLn(Out,'└────────────┴────────────┴────────────┘');
Close(Out);
End ;
Begin
Assign(Out, NameOut);
Rewrite(Out);
WriteLn(Out,'┌────────────┬────────────┬────────────┐');
WriteLn(Out,'│ Agument │ Function │ Derivative │');
WriteLn(Out,'├────────────┼────────────┼────────────┤');
Y1[1]:= Y10;
Y1[2]:= Y20;
M:=Round((Xend - Xbgn)/h);
x:= Xbgn;
RungeKoot (M, N, x, h, Y) ;
end.