GAECHKA
Твоя помощница в решении задач

Численное решение задачи Коши для дифференциальных уравнений 1-го порядка

ОДУ y'=2x+y-3
Начальное условие y(0)=2
Отрезок=[0][1]
Точное решение уравнения y=ex-2x+1
Метод Эйлера
Пожалуйста помогите решить
0
вопрос задан

Источник


1 ответ
const
  n=10;
var
  k1,k2,k3,k4,x,y: array [0..n] of real;
  h: real;
  i: integer;
 
function f(x,y: real): real;
begin
  f:=2*x+y-3;
end;
 
begin
  h:=0.1;
  y[0]:=2;
  for i:=0 to n do
    x[i] :=i*h;
 
  for i:=0 to n-1 do
  begin
    k1[i]:=f(x[i],y[i]);
    k2[i]:=f(x[i]+h/2,y[i]+h*k1[i]/2);
    k3[i]:=f(x[i]+h/2,y[i]+h*k2[i]/2);
    k4[i]:=f(x[i]+h,y[i]+h*k3[i]);
 
    y[i+1]:=y[i]+h/6*(k1[i]+2*k2[i]+2*k3[i]+k4[i]);
  end;
 
  for i := 0 to n do
    writeln('x[',i:2,'] = ',x[i]:0:1,'   y[',i,'] = ',y[i]:0:4);
  readln;
end.
{Решение задачи Коши методом Эйлера}
program Eyler;
uses crt; {модуль управления экраном}
var i,n:integer;
    a,b,h,x,x0,y,y0,eps,emax:real;
 
function f(x,y:real):real; {функция уравнения}
begin
 f:=2*x+y-3;
end;
 
function ft(x:real):real; {функция точная}
begin
 ft:=exp(x)-2*x+1;
end;
 
begin
 clrscr; {очистить экран}
 writeln ('Решение задачи Коши методом Эйлера');
 writeln ('Уравнение dy/dx=x^2+y^2)');
 write ('Введите интервал поиска решения [A,B]: ');
 read (a,b);
 write ('Введите число шагов N: ');
 readln (n);
 h:=(b-a)/n;
 x0:=a;
 write ('Введите начальное значение Y(0): ');
 read(y0);
 y:=y0;
 x:=x0;
 emax:=0; {макс. отклонение}
 writeln ('X':19,'Y':19);
 for i:=1 to n+1 do begin
  y:=y+h*f(x,y); {делаем шаг метода}
  (*eps:=abs(y-ft(x));
  if eps>emax then emax:=eps; {оцениваем макс. погрешность}*)
  writeln (x:19:8,y:19:8);
  x:=x+h;
 end;
 {writeln ('Pmax=',emax:19:8);}
 readln;
end.
Можете помочь почему не сходится в ответе?
x[ 0] = 0.0 y[0] = 2.0000
x[ 1] = 0.1 y[1] = 1.9052
x[ 2] = 0.2 y[2] = 1.8214
x[ 3] = 0.3 y[3] = 1.7499
x[ 4] = 0.4 y[4] = 1.6918
x[ 5] = 0.5 y[5] = 1.6487
x[ 6] = 0.6 y[6] = 1.6221
x[ 7] = 0.7 y[7] = 1.6138
x[ 8] = 0.8 y[8] = 1.6255
x[ 9] = 0.9 y[9] = 1.6596
x[10] = 1.0 y[10] = 1.7183


x[ 0] = 0.0 y[0] = 1.9000
x[ 1] = 0.1 y[1] = 1.8152
x[ 2] = 0.2 y[2] = 1.7314
x[ 3] = 0.3 y[3] = 1.66499
x[ 4] = 0.4 y[4] = 1.61018
x[ 5] = 0.5 y[5] = 1.57187
x[ 6] = 0.6 y[6] = 1.5481
x[ 7] = 0.7 y[7] = 1.5438
x[ 8] = 0.8 y[8] = 1.5575
x[ 9] = 0.9 y[9] = 1.5936
x[10] = 1.0 y[10] = 1.6533