
Содержание
1.Постановка задачи…………………………………………………………………………...3
2. Краткое описание метода и графическая энтерпритация………………………..…………………………………………………………4 3. Текст программы…………………………………………………………………………….6
4. Вывод результатов в табличном и графическом видах……………………………..8
5. Анализ результатов……………………………………………………………………… .10
6. Список используемой литературы…………………………………………………..…11
1. Постановка задачи
Решить
методом Эйлера следующее дифференциальное
уравнение:
2. Краткое описание метода и графическая энтерпритация
- Метод Эйлера:
;
;
Используется постоянное значение h на каждой операции.
n
;
;
;
…
Где h- шаг,
-
начальные значения
Метод Рунге-Кутты:
Приведем формулы, описывающие метод четвертого порядка, один из самых употребляемых методов интегрирования дифференциальных уравнений. Этот классический метод Рунге-Кутта описывается системой следующих соотношений:
Yi+1=yi+h/6(k0+2k1+2k2+k3) i=0.1…n
где h — величина шага сетки по x и вычисление нового значения проходит в четыре этапа:
k0=f(xi,yi);
k1=f(xi+h/2,yi+hk0/2);
k2=f(xi+h/2,yi+hk1/2);
k3=f(xi+h/2,yi+hk2).
Этот метод имеет четвёртый порядок точности, т.е. суммарная ошибка на конечном интервале интегрирования имеет порядок O(h4) (ошибка на каждом шаге порядка O(h5))
3.
Текст программы (метод Эйлера)
Program Muha;
uses crt;
var x, y, xi, yi, L, h, xip1, yip1,y_tochn, error :real;
i, k :integer;
f: text;
key:char;
str:string;
function f_user (x,y:real):real;
begin
f_user:=y;
end;
function f_tochn (x:real):real;
begin
f_tochn:=exp(x;
end;
begin
clrscr;
assign (f,'EYLERDasha.txt');
rewrite (f);
writeln (' xi=');
readln(xi);
writeln (' yi=');
readln(yi);
xi:=0;
yi:=1;
L:=1;
h:=0.1;
k:=round(L/h);
for i:=1 to k do
begin
xip1:=xi+h;
yip1:=yi+h*f_user(xi,yi);
y_tochn:=f_tochn(xi);
xi:=xip1;
yi:=yip1;
y_tochn:=f_tochn(xip1);
error:=abs((y_tochn-yip1)/y_tochn*100);
writeln (' x=',xi:8:3,' y=',yi:8:3, 'y_tochn=',y_tochn:8:3,'error=',error:10:10);
writeln (f,' x=',xi:8:3,' y=',yi:8:3, 'y_tochn=',y_tochn:8:3,'error=',error:10:10);
end;
close(f);
end.
Текст
программы (метод Рунге-Кутта)
Program Muha;
uses crt;
var x,y,xi,yi,L,h, xip1, yip1,y_tochn,k0,k1,k2,k3, error :real;
i,k:integer;
f: text;
key:char;
str:string;
function f_user (x,y:real):real;
begin
f_user:=y;
end;
function f_tochn (x:real):real;
begin
f_tochn:=exp(x;
end;
begin
clrscr;
assign (f,'rongicut_muha.txt');
rewrite (f);
xi:=0;
yi:=1;
writeln (f,' xi=');
readln(xi);
writeln (' yi=');
readln(yi);
L:=1;
h:=0.1;
k:=round(L/h);
for i:=1 to k do
begin
xip1:=xi+h;
k0:=f_user(xi,yi);
k1:=f_user (xi+h/2,yi+h*k0/2);
k2:=f_user (xi+h/2,yi+h*k1/2);
k3:=f_user (xi+h,yi+h*k2);
yip1:=yi+h/6*(k0+2*k1+2*k2+k3);
xi:=xip1;
yi:=yip1;
y_tochn:=f_tochn(xi);
error:=abs((y_tochn-yip1)/y_tochn*100);
writeln (' x=',xi:8:3,' y=',yi:8:3, ' y_tochn=',y_tochn:8:3,'error=',error:10:10);
writeln (f,' x=',xi:8:3,' y=',yi:8:3, ' y_tochn=',y_tochn:8:3,'error=',error:10:10);
end;
close(f);
end.