Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Метод Рунге-Кутта для задачи Коши 1-ого порядка

Читайте также:
  1. frac34; Методические основы идентификации типа информационного метаболизма психики.
  2. I . ОРГАНИЗАЦИОННО - МЕТОДИЧЕСКИЙ РАЗДЕЛ
  3. I. ЗАДАЧИ, РЕШАЕМЫЕ ОРГАНАМИ ВНУТРЕННИХ ДЕЛ ПРИ ЧРЕЗВЫЧАЙНОЙ СИТУАЦИИ
  4. I. Организационно-методические указания
  5. I. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЙ РАЗДЕЛ
  6. I. Флагелляция как метод БДСМ
  7. I. ЦЕЛИ И ЗАДАЧИ

Решение задачи Коши

 

Метод Эйлера

Описание метода

Пусть дана задача Коши для уравнения первого порядка

y’= f(x, y)

на [a, b]

y(a)=y0

Решение разыскивается на интервале [a,b]. На этом интервале введем узлы с шагом h:

y’ = lim(), при и y’

откуда мы получаем:

yi’ = , где h=

откуда мы выражаем y(i+1):

y(i+1) = yi + h*f (xi,yi) - формула метода Эйлера, основанном на аппроксимации интегральной кривой кусочно-линейной функцией.

Задание:

a=0;

b=pi/4;

f=inline('(cos(x)).^2-y.*tan(x)');

y0=0;

n=10;

P=inline('sin(x).*cos(x)');

 

Программа:

function [M,E]=eiler1(a,b,f,y0,n,P)

x=linspace(a,b,n+1);

h=abs(b-a)/n;

y(1)=y0;

for i=1:n;

y(i+1)=y(i)+h*f(x(i),y(i));

end

M=[x;y]';

E=max(abs(P(x)-y));

 

 

plot(x,P(x),'',x,y,'rx')

hold on

 

Эйлер 2-ого порядка (модифицированный)

Теория:

Аналогичен обычному методу Эйлера, отличие состоит в том что мы находим сначала промежуточные значения x (i+1/2) и y (i+1/2).

 

,где L1 – касательная в начальной точке. В промежуточной точке Р(с шагом h/2) построим прямую L*, где tg = f(xi+ h/2,yi+ h/2 ∙ f(xi, yi)).

И через начальную точку построим прямую L0 параллельную L*. Из графика мы видим, что погрешность уменьшилась→то есть данный метод точнее предыдущего.

Программа:

 

function [M,E]=eiler2(a,b,f,y0,n,P)

x=linspace(a,b,n+1);

h=abs(b-a)/n;

y(1)=y0;

for i=1:n;

xx=x(i)+h/2;

yy=y(i)+(h/2)*f(x(i),y(i));

y(i+1)=y(i)+h*f(xx,yy);

end

M=[x;y]';

E=max(abs(P(x)-y));

 

 

plot(x,P(x),'',x,y,'rx')

hold on

 

Эйлер 3

Первоначально грубо находим по методу Эйлера:

y(i+1)=y(i)+h*f(x(i),y(i))

дальше используем формулу со среднеарифметическим значением производной:

y(i+1)=y(i)+(h/2)*(f(x(i),y(i))+f(x(i+1),y(i+1)))

Программа:

function [M,E]=eiler3(a,b,f,y0,n,P)

x=linspace(a,b,n+1);

h=abs(b-a)/n;

y(1)=y0;

for i=1:n;

y(i+1)=y(i)+h*f(x(i),y(i));

y(i+1)=y(i)+(h/2)*(f(x(i),y(i))+f(x(i+1),y(i+1)));

end

M=[x;y]';

E=max(abs(P(x)-y));

 

 

plot(x,P(x),'',x,y,'rx')

hold on

Оцениваем погрешность по:

[M,E1]=eiler1(a,b,f,y0,n,P);

[M,EE1]=eiler1(a,b,f,y0,2*n,P);

r1=E1/EE1

[M,E2]=eiler2(a,b,f,y0,n,P);

[M,EE2]=eiler2(a,b,f,y0,2*n,P);

r2=E2/EE2

[M,E3]=eiler3(a,b,f,y0,n,P);

[M,EE3]=eiler3(a,b,f,y0,2*n,P);

r3=E3/EE3

Метод Рунге-Кутта для задачи Коши 1-ого порядка

Рассмотрим задачу Коши

y’ = f(x,y)

Тогда приближенное значение в последующих точках вычисляется по итерационной формуле:

Вычисление нового значения проходит в четыре стадии:

где h — величина шага сетки по x.

 

Программа:

function [R,E]=rungkut(a,b,f,y0,P,n)

x=linspace(a,b,n+1);

h=abs(b-a)/n;

y(1)=y0;

for i=1:n;

k1=h*f(x(i),y(i));

k2=h*f(x(i)+h/2,y(i)+k1/2);

k3=h*f(x(i)+h/2,y(i)+k2/2);

k4=h*f(x(i)+h,y(i)+k3);

y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;

end

R=[x;y]';

E=max(abs(P(x)-y));

 

plot(x,P(x),'',x,y,'rx')

hold on


Дата добавления: 2015-12-08; просмотров: 73 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.016 сек.)