Обыкновенные дифференциальные уравнения

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

Государственное образовательное учреждение

высшего профессионального образования

"Пермский государственный университет"

 

 

 

 

 

 

 

 

 

Лабораторная работа № 13

вариант 6

Обыкновенные дифференциальные уравнения

 

 

Выполнил:

студент группы РФЭ-2

Собенин Александр Николаевич.

Проверил:

Шкарапута Александр Петрович.

 

 

 

 

 

 

Пермь 2011

Краткое содержание.

 

Задача Коши для дифференциального уравнения первого порядка

Задача Коши для дифференциального уравнения первого порядка включает уравнение вида:

 

и начальное условие: .

 

Существуют различные методы численного решения задачи Коши: методы рядов Тейлора, одношаговые методы Рунге-Кутта, многошаговые разностные методы. При решении уравнения численными методами значения функции находятся приближенно в виде дискретной числовой последовательности {yi}, где .

 

Методы Рунге-Кутта

 

Простейшим вариантом методов Рунге-Кутта является метод Эйлера, при котором производная заменяется конечной разностью.

 

В случае , , тогда ,

 

где , , , .

Данный метод имеет первый порядок точности по h, погрешность нарастает с удалением от точки . Метод Эйлера является методом Рунге-Кутта первого порядка.

Общий вид методов Рунге-Кутта (при ) записывается с помощью формулы:

, где - порядок метода, ,

,

,

,

. . . . . . . . ,

.

дифференциальный уравнение дискретный последовательность

Коэффициенты , , выбираются из соображений точности.

Метод Эйлера получается при .

Для имеется уже семейство методов Рунге-Кутта второго порядка, для которых должно выполнятся условие .

В частности при и получается, так называемый, исправленный метод Эйлера:

 

.

При , , , получается модифицированный метод Эйлера:

.

 

Большое распространение получили методы Рунге-Кутта четвертого () порядка точности.

Для повышения точности вычислений можно воспользоваться итерационным методом уточнения. Он заключается в том, что каждое значение вычисляется с помощью последовательных приближений. Например, для метода Эйлера за начальное приближение берется , найденное значение уточняется по формуле , где

Уточнение продолжают до тех пор, пока в пределах требуемой точности два последовательных приближения не совпадут.

 

Постановка задачи.

 

.Решить задачу Коши для уравнения первого порядка на одном и том же множестве значений с шагом и ., используя метод Эйлера первого порядка, исправленный или модифицированный метод Эйлера и метод Рунге-Кутта 4-го порядка Полученные результаты свести в одну таблицу и сопоставить.

.Используя метод Эйлера с уточнением, найти приближенное решение задачи Коши в тех же точках, что и в предыдущем задании. Точность вычислений должна составить 0,0001. Помимо решения в каждой точке вывести число итераций.

 

,

 

Ход работы.

Текст программы:

#include

#include "math.h"

function(float x, float y)

{f;= x + cos(y/2.25);f;

}euler(float x,float y,float h)

{i;=y+h*function(x,y);y;

}repair_euler(float x,float y,float h)

{i;h2=h/2;=y+h2*(function(x,y)+function(x+h,y+h*function(x,y)));y;

}met_RK_4(float x,float y,float h)

{Y,h2,k[4];i;=h/2;[0]=function(x,y);[1]=function(x+h2,y+h2*k[0]);[2]=function(x+h2,y+h2*k[1]);[3]=function(x+h,y+h*k[2]);=y+h*(k[0]+k[1]*2+k[2]*2+k[3])/6;y;

}utochnenie(float x,float y,float h)

{h2 = h/2,y2,Y,eps=0.0001;i,kol=0;("\n\nIteracionyi metod utochneniya");(i=0;i<=10;i++,x+=h,kol=0)

{=y+h*function(x,y);

{++;=Y;=y+h2*(function(x,y)+function(x+h,Y));

} while(fabs(Y-y2)>eps);=y2;("\n%f i=%d",y2,kol);

}

}main()

{x0,y0,h,y_e,y_r,y_m,x;i;("Vvedite x0,y0 i shag h:");("%f%f%f",&x0,&y0,&h);_e=y_r=y_m=y0;=x0;("\n\nmet. Eulera\tispravl. met. Eulera\tmet. Runge-Kutta 4 por");(i=0;i<=10;i++,x+=h)

{_e = euler(x,y_e,h);_r = repair_euler(x,y_r,h);_m = met_RK_4(x,y_m,h);("\n%f\t\t%f\t\t%f",y_e,y_r,y_m);

}

utochnenie(x0,y0,h);

}

Работа программы:

Vvedite x0,y0 i shag h:1.4 2.2 0.1

met. Eulera ispravl. met. Eulera met. Runge-Kutta 4 por

.395887 2.397176 2.397192

.594351 2.596643 2.596673

.794922 2.797972 2.798012

.997195 3.000803 3.000851

.200840 3.204855 3.204905

.405606 3.409922 3.409970

.611322 3.615882 3.615921

.817899 3.822687 3.822713

.025328 4.030371 4.030377

.233676 4.239041 4.239021

.443091 4.448879 4.448826metod utochneniya

.397176 i=2

.596643 i=2

.797972 i=2

.000803 i=2

.204855 i=2

.409922 i=2

.615882 i=2

.822687 i=2

.030371 i=2

.239041 i=2

4.448879 i=2

Вывод: Сравнивая методы Рунге-Кутта с итерационным, видим, что методы более высокого порядка обеспечивают наибольшую точность.