Інтегрування диференціальних рівнянь чисельними методами Ейлера з півкроком і Рунге-Кутта 4-го порядку
Метод Эйлера як найбільш простий чисельний метод рішення систем звичайних диференціальних рівнянь. Метод Ейлера з півкроком. Чисельне відшукання розв’язку задачі Коші методом Рунге-Кутта. Складання програм обчислень диференціальних рівнянь мовою С++.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 23.09.2017 |
Размер файла | 438,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ
«ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»
Кафедра «Системи та процеси управління»
ЗВІТ
про науково-дослідницьку курсову роботу на тему:
«Інтегрування диференціальних рівнянь чисельними методами Ейлера з півкроком і Рунге-Кутта 4-го порядку»
Виконав студент гр. И-21а Катасонов Е.В.
Керівник роботи, доц. Шипуліна Л.В.
Харків 2013
Зміст
Вступ
1. Постановка задачі
2. Метод Ейлера з півкроком
3. Метод Рунге-Кутта 4-го порядку
4. Результати розрахунків
Висновки
Список джерел інформації
Додаток А
Додаток Б
Вступ
Математика як наука виникла у связі з необхідністю рішення практичних завдань: вимірів на місцевості, навігації й т.д. Внаслідок цього математика була чисельною математикою, її метою було одержання рішення у вигляді числа.
Теперішній час характерний різким розширенням додатків математики, багато в чому пов'язаним зі створенням і розвитком засобів обчислювальної техніки.
Величезна швидкодія цифрових обчислювальних машин (ЦОМ) відкриває нові широкі можливості для застосування загальних математичних методів дослідження в проблемах фізики, механіки, техніки й багатьох інших областей.
Виняткове значення мають ЦОМ для автоматичного керування рухомими об'єктами, наприклад космічними апаратами. Велика також роль ЦОМ для розвитку самої математики. ЦОМ використовуються для рішень алгебраїчних, трансцендентних і диференціальних рівнянь, для рішення складних функціональних нерівностей і т.п.
Таким чином, створення ЦОМ знаменує рішучий стрибок по шляху прогресу точних і технічних наук нашого часу.
1. Постановка задачі
Дано систему диференціальних рівнянь
, (1.1)
, . (1.2)
Задано початкові умови: і інтервал інтегрування:
Необхідно проінтегрувати рівняння методами Ейлера з півкроком і Рунге-Кутта 4-го порядку й зрівняти отримані результати.
2. Метод Ейлера з півкроком
Метод Эйлера -- найбільш простий чисельний метод рішення систем звичайних диференціальних рівнянь [1, 2]. Уперше описаний Леонардом Ейлером в 1768 році в роботі «Інтегральне вирахування». Метод Ейлера є явним, однокроковим методом першого порядку точності, заснованому на апроксимації інтегральної кривої кусочно-лінійною функцією, т.зв. ламаної Ейлера.
Ламана Ейлера (червона лінія) - наближене рішення в п'яти вузлах задачі Коші й точне рішення цієї задачі (виділено синім кольором, рис. 2.1).
Розглянемо диференціальне рівняння
(2.1)
с початковою умовою
. (2.2)
Рисунок 2.1 Метод Ейлера
Вибравши крок інтегрування , покладемо .
Відповідно до методу Ейлера послідовні значення шуканого рішення обчислюються по наближеній формулі
.
Більше точним є метод Ейлера з півкроком, при якому спочатку обчислюють проміжні значення і находять значення напрямку поля інтегральних кривих у середній крапці , тобто , а потім знаходять (рис. 2.2): .
Рисунок 2.2 Метод Ейлера з півкроком
Алгоритм метода Эйлера с полушагом:
Вводимо цілу змінну , где , і крок інтегрування за часом
Для виробляємо обчислення в циклі по :
(2.3)
Результати інтегрування виводимо через кожні кроків.
3. Метод Рунге-Кутта 4-го порядку
Метод Рунге-Кутта найбільше часто вживається при чисельному відшуканні розв'язку задачі Коші (2.1), при умові (2.2) і дозволяє одержати наближення високої точності.
Геометрично цей метод для задачі Коші також полягає в тому, що на малому відрізку [х; х+h] інтегральна крива у=у(х) рівняння (2.1) заміняється відрізком прямої, що проходить через точку (х; у(х)). Однак в основу методу покладений більше тонкий, чим у методах Ейлера, підхід до визначення напрямку цього відрізка прямій.
Нехай відрізок розділений на п рівних частин точками , і визначені наближені значення розв'язку диференціального рівняння відповідно в точках . Переходимо до відрізка й відшукання (рис. 3.1).
Рисунок 3.1 Метод Рунге-Кутта
Визначаємо ? напрямок дотичної до інтегральної кривої в точці , і точку перетину прямих і , тобто точку
.
Знаходимо напрямок дотичної в точці : і із точки проводимо пряму з кутовим коефіцієнтом : до перетину із прямою . Одержуємо точку . Знаходимо напрямок дотичної в точці : і із точки проводимо пряму з кутовим коефіцієнтом : до перетину із прямою . Одержуємо точку . Далі визначаємо напрямок дотичної в точці : .
Остаточний напрямок відрізка ламаної, що представляє наближений розв'язок задачі, буде рівним і проводимо із точки пряму , до перетинання із прямої в точці , де вважаємо наближеним значенням розв'язку в точці (рис. 3.1).
Метод Рунге-Кутта 4-го порядку здійснює наступний алгоритм:
Передбачаються заданими рівняння , початкова умова і відрізок .
1. Задаємо число п точок поділу відрізка й обчислюємо крок . Вважаємо відомими й переходимо до дії 2.
2. Нехай знайдені . Визначаємо
(3.1)
Якщо (k+1=n), то процес закінчений. Числа представляють наближені значення шуканого розв'язку в точках .
Якщо ж (k+1<n), то повторюємо дію 2, вважаючи вихідним .
Всі розрахунки по алгоритму зручно оформляти у вигляді таблиці.
Обчислення по методу Рунге-Кутта значно ускладнені в порівнянні з методом Ейлера, але за рахунок цього він дає меншу похибку при заміні точного розв'язку наближеним .
З теорії наближених методів відомо, що при кроці інтегрування h має місце оцінка , так що похибка одного кроку обчислень (визначення по ) має порядок (або ).
Сумарна похибка за п кроків, тобто похибка приблизного наближеного розв'язку в точці буде порядку (або ).
Звідси, якщо збільшити п у два рази, похибка приблизно зменшиться в 16 разів. Тому для оцінки наближеного розв'язку , отриманого із кроком h, повторюють обчислення із кроком 2h і за абсолютну похибку приймають число
,
де ? наближений розв'язок із кроком 2h.
Наведена оцінка є оцінкою методу й не враховує похибку, отриману при округленні.
4. Результати розрахунків
Для інтегрування рівнянь (1.1), (1.2) були складені програми на мові С. У Додатку А - програма обчислень за методом Ейлера з півкроком по формулах (2.3), а в Додатку Б - програма обчислень за методом Рунге-Кутта 4-го порядку по формулах (3.1). Результати обчислень зведені в таблицю.
Час |
Метод Ейлера з півкроком |
Метод Рунге-Кутта 4-го порядку |
|||
0 |
0 |
0 |
0 |
0 |
|
1 |
0.626683 |
0.253427 |
0.627446 |
0.254721 |
|
2 |
0.708346 |
0.509194 |
0.709312 |
0.511275 |
|
3 |
0.385391 |
0.506216 |
0.383959 |
0.506767 |
|
4 |
0.209138 |
0.345539 |
0.207175 |
0.343793 |
|
5 |
0.231389 |
0.265549 |
0.232643 |
0.264606 |
|
6 |
0.203164 |
0.235408 |
0.203288 |
0.235481 |
|
7 |
0.173392 |
0.201598 |
0.17298 |
0.20121 |
|
8 |
0.159568 |
0.178457 |
0.159778 |
0.178292 |
|
9 |
0.143516 |
0.160016 |
0.143352 |
0.159868 |
|
10 |
0.131936 |
0.144968 |
0.13195 |
0.144842 |
диференціальний рівняння ейлр рунге
Висновки
У даній роботі розглянуті два чисельні методи інтегрування системи диференціальних рівнянь: Ейлера з півкроком і Рунге-Кутта 4-го порядку.
Наведено теоретичне обґрунтування кожного методу й алгоритми розрахунків.
Складено програми мовою С++ і наведені результати розрахунків.
Порівняння результатів, отриманих різними методами, показало, що більше точним є метод Рунге-Кутта 4-го порядку.
Список джерел інформації
1. Демидович Б.П. Численные методы анализа / Б.П. Демидович, И.А. Марон,
Э.З. Шувалова - М.: Наука. Главная редакция физико-математической литературы, 1967. - 368 с.
2. Калиткин Н.Н. Численные методы / Н.Н. Калиткин - М.: Наука. Главная редакция физико-математической литературы, 1978. - 512 с.
Додаток А
Програма обчислень за методом Ейлера з півкроком
#include <iostream>
#include <fstream.h>
#include <math.h>
using namespace std;
double f1(double, double, double);
double f2(double, double, double);
void main()
{
double t1,x1,y1,h,r,*x,*y,*t;
int tmax,i,imax;
y=new double [140];
x=new double [140];
t=new double [140];
tmax=10;
x[0]=0;
y[0]=0;
t[0]=0;
h=0.1;
imax=100;
r=h/2;
t1=0;
for(i=0; i<imax+1; i++)
{
x1=x[i-1]+h/2*f1(x[i-1],y[i-1],t[i-1]);
y1=y[i-1]+h/2*f2(x[i-1],y[i-1],t[i-1]);
t1=t[i-1]+h/2;
x[i]=x[i-1]+h*f1(x1,y1,t1);
y[i]=y[i-1]+h*f2(x1,y1,t1);
t[i]=t[i-1]+h;
}
ofstream fout;
fout.open("ME1.txt");
for(i=0; i<imax+1; i=i+5)
{
fout<<"t="<<t[i]<<"x="<<x[i]<<"y="<<y[i]<<'\n';
}
fout.close();
}
double f1(double x, double y, double t)
{
return(cos(t*y)-x);
}
double f2(double x, double y, double t)
{
return(sin(x)-y);
}
Додаток Б
Програма обчислень за методом Рунге-Кутта 4-го порядку
#include <iostream>
#include <fstream>
#include <math.h>
#include <stdio.h>
using namespace std;
double f1(double, double, double);
double f2(double, double, double);
int main()
{
double h,*t,*x,*y,k11,k12,k21,k22,k31,k32,k41,k42;
int tmax,i,imax;
y=new double [120];
x=new double [120];
t=new double [120];
t[0]=0;
x[0]=0;
y[0]=0;
tmax=10;
h=0.1;
imax=100;
for(i=1;i<imax+1;i++)
{
k11=h*f1(x[i-1],y[i-1],t[i-1]);
k12=h*f2(x[i-1],y[i-1],t[i-1]);
k21=h*f1((x[i-1]+0.5*k11),(y[i-1]+0.5*k12),(t[i-1]+0.5*h));
k22=h*f2((x[i-1]+0.5*k11),(y[i-1]+0.5*k12),(t[i-1]+0.5*h));
k31=h*f1((x[i-1]+0.5*k21),(y[i-1]+0.5*k22),(t[i-1]+0.5*h));
k32=h*f2((x[i-1]+0.5*k11),(y[i-1]+0.5*k12),(t[i-1]+0.5*h));
k41=h*f1((x[i-1]+k31),(y[i-1]+0.5*k32),(t[i-1]+h));
k42=h*f2((x[i-1]+k31),(y[i-1]+0.5*k32),(t[i-1]+h));
x[i]=x[i-1]+(k11+2*k21+2*k31+k41)/6;
y[i]=y[i-1]+(k12+2*k22+2*k32+k42)/6;
t[i]=t[i-1]+h;
}
ofstream fout;
fout.open("RK4.txt");
for(i=0;i<imax+1;i=i+10)
{
fout<<"t="<<t[i]<<" "<<"x="<<x[i]<<" "<<"y="<<y[i]<<'\n';
}
fout.close();
}
double f1(double x, double y, double t)
{
return(cos(t*y)-x);
}
double f2(double x, double y, double t)
{
return(sin(x)-y);
}
Размещено на Allbest.ru
Подобные документы
Розгляд та аналіз основних способів розв’язання звичайних диференціальних рівнянь за методом Рунге-Кутта з автоматичним вибором кроку. Способи оцінки погрішності і збіжності методу Рунге-кутти четвертого порядку з автоматичним вибором довжини кроку.
контрольная работа [31,0 K], добавлен 18.01.2013Стандартний спосіб розв’язання задачі Коші для звичайного диференціального рівняння першого порядку чисельними однокроковими методами. Геометричний зміст методу Ейлера. Побудова графіку інтегральної кривої. Особливість оцінки похибки за методом Рунге.
курсовая работа [112,9 K], добавлен 30.11.2009Огляд та аналіз методів розв’язання системи диференціальних рівнянь та вибір методів рішення. Алгоритми методів Ейлера. Вибір методу рішення задачі Коші. Рішення диференціальних рівнянь. Отримання практичних навиків програмування на мові Паскаль.
курсовая работа [174,3 K], добавлен 06.03.2010Визначення і розв’язання задачі Коші для звичайних диференціальних рівнянь першого порядку методом Ейлера, алгоритм розв’язання, похибка при вирішенні. Складання блок-схеми. Реалізація алгоритму у середовищі Borland Pascal. Результат роботи програми.
курсовая работа [264,0 K], добавлен 20.08.2010Загальні відомості та геометричний зміст розв'язання задачі Коші. Використання методу Ейлера для розв'язання звичайних диференціальних рівнянь першого порядку. Розробка блок-схеми та реалізація алгоритму в середовищі програмування Borland Delphi 7.0.
курсовая работа [398,1 K], добавлен 14.10.2012Розв’язання системи рівняння методом Гауса за схемою з частковим вибором головного елементу. Рішення задачі Коші методом Рунге-Кутта. Знаходження моментів кубічних сплайнів методом прогонки. Розв’язування системи нелінійних рівнянь методом Ньютона.
контрольная работа [252,3 K], добавлен 04.06.2010Методи чисельного розв'язання рівнянь. Рух тіла у в’язкому середовищі. В'язкість (внутрішнє тертя) і в'язкопружність. Метод Рунге-Кутти четвертого порядку. Функції та макроси вводу та виводу даних у стилі мови програмування Сі. Параметри фізичної моделі.
курсовая работа [947,5 K], добавлен 23.08.2014Розвиток виробництва і широке використання промислових роботів. Алгоритми методів, блок-схеми алгоритмів розв'язку даного диференційного рівняння. Аналіз результатів моделювання, прямий метод Ейлера, розв’язок диференціального рівняння в Mathcad.
контрольная работа [59,1 K], добавлен 30.11.2009Основні означення системи лінійних рівнянь. Елементарні перетворення системи лінійних рівнянь. Алгоритм метода Жордана-Гаусса. Метод повного виключення невідомих. Приклад використовування методу Жордана-Гаусса. Складання програму мовою Borland C++ 4.5.
курсовая работа [139,6 K], добавлен 20.12.2013Метод розв’язків рівнянь більш високих порядків. Вибір методу розв'язання задачі Коші. Методи розв'язання крайових задач розглядаються на прикладі звичайного диференціального рівняння другого порядку. Вибір методу інструментальних засобів вирішення задач.
курсовая работа [132,0 K], добавлен 03.12.2009