Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

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

Тип: лабораторная работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Решение дифференциальных уравнений первого порядка. Варианты методов Рунге-Кутта различных порядков. Основные методы численного решения задачи Коши. Повышение точности вычислений и итерационный метод уточнения. Дискретная числовая последовательность.
Краткое сожержание материала:

Размещено на

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

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

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

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

вариант 6

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

Выполнил:

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

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

Проверил:

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

Пермь 2011

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

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

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

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

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

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

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

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

где , , , .

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

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

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

,

,

,

. . . . . . . . ,

.

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

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

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

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

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

.

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

.

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

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

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

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

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

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

,

Ход работы.

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

#include <stdio.h>

#include "math.h"

float function(float x, float y)

{

float f;

f = x + cos(y/2.25);

return f;

}

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

{

int i;

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

return y;

}

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

{

int i;

float h2=h/2;

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

return y;

}

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

{

float Y,h2,k[4];

int i;

h2=h/2;

k[0]=function(x,y);

k[1]=function(x+h2,y+h2*k[0]);

k[2]=function(x+h2,y+h2*k[1]);

k[3]=function(x+h,y+h*k[2]);

y=y+h*(k[0]+k[1]*2+k[2]*2+k[3])/6;

return y;

}

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

{

float h2 = h/2,y2,Y,eps=0.0001;

int i,kol=0;

printf("\n\nIteracionyi metod utochneniya");

for(i=0;i<=10;i++,x+=h,kol=0)

{

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

do

{

kol++;

y2=Y;

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

} while(fabs(Y-y2)>eps);

y=y2;

printf("\n%f i=%d",y2,kol);

}

}

void main()

{

float x0,y0,h,y_e,y_r,y_m,x;

int i;

printf("Vvedite x0,y0 i shag h:");

scanf("%f%f%f",&x0,&y0,&h);

y_e=y_r=y_m=y0;

x=x0;

printf("\n\nmet. Eulera\tispravl. met. Eulera\tmet. Runge-Kutta 4 por");

for(i=0;i<=10;i++,x+=h)

{

y_e = euler(x,y_e,h);

y_r = repair_euler(x,y_r,h);

y_m = met_RK_4(x,y_m,h);

printf("\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

2.395887 2.397176 2.397192

2.594351 2.596643 2.596673

2.794922 2.797972 2.798012

2.997195 3.000803 3.000851

3.200840 3.204855 3.204905

3.405606 3.409922 3.409970

3.611322 3.615882 3.615921

3.817899 3.822687 3.822713

4.025328 4.030371 4.030377

4.233676 4.239041 4.239021

4.443091 4.448879 4.448826

Iteracionnyi metod utochneniya

2.397176 i=2

2.596643 i=2

2.797972 i=2

3.000803 i=2

3.204855 i=2

3.409922 i=2

3.615882 i=2

3.822687 i=2

4.030371 i=2

4.239041 i=2

4.448879 i=2

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

Размещено на Allbest.ru

...
Другие файлы:

Самоучитель MathCAD 12 математические расчёты на компьютере
Оглавление Часть1. ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ Глава 1. Основные сведения о Mathcad Глава 2. Алгебраические вычисления Глава 3. Дифференцирование...

Курс высшей математики. В пяти томах. Том 2
От издателяТом II - 1. Обыкновенные дифференциальные уравнения 2. Линейные дифференциальные уравнения и дополнительные сведения по теории дифференциал...

Понтрягин. Обыкновенные дифференциальные уравнения
"От автора:Эта книга написана на основе лекций, которые я в течение ряда лет читал на механико-математическом факультете МГУ. При составлении програ...

Численные методы на базе Mathcad
В пособии изложены необходимые начальные сведения о терминологии и методах вычислительной математики. Рассмотрены уравнения и системы уравнений, задач...

Нелинейные дифференциальные уравнения
Книга является элементарным введением в теорию нелинейных дифференциальных уравнений. В ней излагаются стандартные методы нелинейного анализа: классич...