Інтегрування диференціальних рівнянь чисельними методами Ейлера з півкроком і Рунге-Кутта 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Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Види рівнянь та методи їх розв’язань. Чисельні методи уточнення коренів, постановка задачі. Рішення нелінійного рівняння методом простих та дотичних ітерацій. Використання програмних засобів. Алгоритми розв’язку задач. Програми мовою С++, їх тестування.
курсовая работа [232,2 K], добавлен 12.02.2013Чисельне інтегрування, формула Сімпсона, значення інтегралу від функцій та формули трапецій. Знаходження коренів рівняння методом Ньютона. Наближення функцій поліномами вищого порядку. Метод Ейлера та його модифікації. Визначення похибок розрахунків.
контрольная работа [6,1 M], добавлен 04.07.2010Схема слідкуючої системи витратоміра літака. Створення системи диференціальних рівнянь на основі рівнянь ланок (вимірювальної схеми, електронного підсилювача, двигуна і редуктора) та її розв'язання за допомогою методів з автоматичною зміною кроку.
курсовая работа [492,6 K], добавлен 29.10.2013Задача лінійного програмування. Розв’язання задачі геометричним методом. Приведення системи рівнянь до канонічного вигляду. Розв’язання симплекс-методом. Розв’язок двоїстої задачі. Задача цілочислового програмування і дробово-лінійного програм.
контрольная работа [385,2 K], добавлен 04.06.2009Розв’язання нелінійних алгебраїчних рівнянь методом дихотомії. Вирішення задачі знаходження коренів рівняння. Розробка алгоритму розв’язання задачі і тестового прикладу. Блок-схеми алгоритмів основних функцій. Інструкція користувача програмою мовою С++.
курсовая работа [2,0 M], добавлен 24.09.2010Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.
курсовая работа [163,4 K], добавлен 16.05.2016Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013В роботі розглянуто наближені методи розв'язку нелінійних рівнянь для методів Ньютона та хорд, складено блок-схеми та написано програму, за допомогою якої розв'язується задане рівняння. Аналіз рівняння, методів його розв'язання і результатів обрахунку.
курсовая работа [380,9 K], добавлен 30.11.2009