Решение задачи Коши для обыкновенного дифференциального уравнения методом Эйлера

vladik0106

Решите задачу Коши для обыкновенного дифференциального уравнения на отрезке [0; 1] при условии у(0) = 0 методом Эйлера, разбивая отрезок интегрирования на n частей. П р и м е ч а н и е. Расчетная формула метода Эйлера имеет вид: yn+1 = yn + hnf(xn,yn).
5 ответов

vladik0106

Решите задачу Коши для обыкновенного дифференциального уравнения на отрезке [0; 1] при условии у(0) = 0 методом Эйлера, разбивая отрезок интегрирования на n частей. П р и м е ч а н и е. Расчетная формула метода Эйлера имеет вид: yn+1 = yn + hnf(xn,yn).
Ну и где же Ваше обыкновенное дифференциальное уравнение? http://twt.mpei.ac.ru/math/ODE/ODEf/ODEf_04130000e1.html


vladik0106

извиняюсь уравнение y'=x^2+y^2


vladik0106

извиняюсь уравнение y'=x^2+y^2
{ГђГҐГёГҐГ*ГЁГҐ Г§Г*Г¤Г*Г·ГЁ Êîøè ìåòîäîì ÝéëåðГ*}
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:=x*x+y*y;
end;
 
(*function ft(x:real):real; {ГґГіГ*êöèÿ òî÷Г*Г*Гї}
begin
 ft:=2/x;
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.
Взято ЗДЕСЬ Уберите ненужное...


vladik0106

спасибо большое!!!!))))) очень быстро)))) я начинающий просто))))большое спасибо!!!


vladik0106

Доброго дня. Нужна помощь. Есть задание нужно составит программку в pascal Кто в этом разбирается подскажите правильно ли она считает Задача Коши y'=f(x,y)=-y+e^(-x), y(a)=0,-(я так понял это y(0)), a=0, b=1/ Точное решение задачи y(x)=xe^(-x). решить задачу Коши для ОДУ на промежутке [a, b] методом Эйлера.Я взял исходник и поменял в ней функцию уравнения на свою
{Решение задачи Коши методом Эйлера}
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:=-y+exp(-x);
end;
 
function ft(x:real):real; {функция точная}
begin
 ft:=x*exp(-x);
end;
 
begin
 clrscr; {очистить экран}
 writeln ('Решение задачи Коши методом Эйлера');
 writeln ('Уравнение dy/dx=y/x-4/sqr(x)');
 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,'Eps':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,eps:19:8);
  x:=x+h;
 end;
 writeln ('Pmax=',emax:19:8);
 reset (input); readln;
end.
Буду очень признателен за любую помощь. С Уважением Koss