Розв’язування задачі Коші методом Рунге-Кутта
Дослідження методу розв’язання звичайного рівняння та системи диференційних рівнянь першого та вищих порядків методом Рунге-Кутта. Досліджування розв’язку задачі, використовуючи метод Рунге-Кутта. Оцінювання похибки наближеного розв’язку задачі Кошi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | украинский |
Дата добавления | 18.01.2013 |
Размер файла | 206,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра автоматизованих систем управління
Звіт
до лабораторної роботи № 4
з курсу «Чисельні методи в інформатиці»
на тему «Розв'язування задачі Коші методом Рунге-Кутта»
Виконав:
студент групи КН-31
Присяжник Іван
Прийняв:
Романчук Я. П.
Львів - 2010
Мета роботи: вивчити і засвоїти постановку та методи розв'язування задачі Коші. Навчитися досліджувати розв'язок , використовуючи метод Рунге-Кутта.
Тільки невелика кількість задач Коші, інтегрованих у явному вигляді, зустрічаються серед задач, якi потрiбно розв'язувати. Тому для розв'язування задач Коші широко використовують чисельні методи з їх реалізацією на комп'ютерах. При цьому особливо важливими є вибір потрібного методу і його програмної реалізації, а також підготування всіх даних, необхідних для роботи комп'ютерної програми.
1. Формулювання задачі
Нехай на вiдрiзку потрiбно знайти розв'язок диференцiйного рiвняння
(1)
який задовольняє таку умову
(2)
Задачу (1)-(2) називають задачею Кошi для звичайногодиференцiйного рівняння першого порядку.
Будемо припускати, що функцiя f(х,у) неперервна та задовольняє умову Лiпшиця за у, тобто виконується
(3)
де L- деяка додатна стала. В цьому випадку задача Кошi має єдиний розв'язок на промiжку
2. Метод Ейлера
Розiб'ємо проміжок [а, b], на якому шукаємо розв'язок, на рiвномiрнi вiдрізки причому
Розрахункова формула методу Ейлера має вигляд
(4)
де .У випадку рівномiрного розбиття вiдрізка [а, b] точками отримасмо
3. Методи Рунге-Кутта
На практиці для розв'язування задачi Коші найчастiше використовують методи Рунге-Кутта. Цими методами можна розв'язати задачу Кошi для звичайного диференцiйного рiвняння першого порядку, для диференцiйних рiвнянь вищих порядків, системи диференцiйних рiвнянь першого порядку.
Перевага методiв Рунге-Кутта полягає в тому, що обчислювальні алгоритми є однорiдними, тобто не змiнюються при переходi від однiєї точки до iншої, а крок змiнюється вiдповiдно до потреби точностi обчислень, без ускладнення обчислювального алгоритму.
Методи Рунге-Кутта мають високу точнiсть, причому обчислення можна проводити із змінним кроком: неважко эменшити крок там, де функцiя швидко змiнюється, i збiльшити в протилежному випадку.
Недоліком методів Рунге-Кутта є те, що для відшукання наближеного розв'язку в точцi заданого вiдрiзку необхiдно виконати декілька обчислень значень функцій.
Наведемо рекурентні формули методу Рунге-Кутта рiзних порядкiв точностi.
Формули методу Рунге-Кутта другого порядку:
4. Оцiнювання похибки наближеного розв'язку задачі Кошi
задача диференційний рівняння рунге
Для методiв Ейлера та його модифiкацiй, а також методів Рунге-Кутта i Адамса застосовують апріорні оцiнки похибки наближеного розв'язку задачi Кошi (1)-(2) . Однак цi оцiнки здебiльшого значно завищені. Тому їхнє значення не стiльки практичне, скiльки теоретичне, бо з них безпосередньо випливає висновок про збiжність цих методiв. Крім того, апрiорнi оцiнки мiстять у собi ряд сталих, для вiдшукання яких часто треба виконувати досить складні обчислення.
Тому, щоб оцiнити похибку наближеного розв'язку задачi (1) - (2), намагаються використати iнформацiю, яку дiстають в процесі чисельного розрахунку (такі оцінки називають апостеріорними). Найефективнiшим оцінюванням є використання оцiнки з подвiйним перерахунком.
Розглянемо детальнiше метод подвiйного перерахункудля таких трьох випадків [2]:
1) задано крок iнтегрування h i треба визначити точні цифри наближеного розв'язку в кожнiй вузловiй точцi ;
2) задано точнiсть е>0, з якою треба обчислити наближений розв'язок задачi, добираючи належним чином як сам метод, так i крок iнтегрування h;
3) оцiнити похибку - вiдповiдно наближений і точний розв'язок задачi в кожнiй вузловiй точцi .
Для цього розв'язок задачi (1)-(2) у кожнiй вузловiй точці обчислюють двiчі: з кроком h i h/2. Позначатимемо їх вiдповiдно .
Десятковi розряди наближень , які збiгаються мiж собою, вважають точними цифрами наближеного розв'язку в точцi .
Якщо наближений розв'язок задачi (1)-(2) треба обчислити з наперед заданою точнiстю є>0, то, використовуючи метод певного порядку точностi, інтегрування з кроками h і h/2 доцiльно вести паралельно, щоб вчасно визначити неузгодженiсть мiж значеннями i, можливо, перейти до нового кроку.
Якщо ж у точцi значення задовольняють нерiвність то крок інтегрування для наступної точки треба збільшити, наприклад, подвоїти. Якщо то крок ітегрування ділять навпіл. Цим забезпечують автоматичний вибiр кроку iнтегрування.
Нарештi, наявнiсть наближених значень , обчислених вiдповiдно з кроком h i h/2, дає змогу наближено оцiнити похибку методу у точцi . Для одержання оцiнки похибки, припустимо, що виконуються такі умови:
1) на кожному кроці iнтегрування h похибка методу приблизно пропорцiйна до де S - порядок точностi методу;
2) похибка методу на кожному кроцi інтегрування однакова;
3) на кожному наступному кроцi інтегрування сумарна похибка методу містить також усi похибки, зробленi на попереднiх кроках.
Тому, якщо де М -- невiдомий коефiцiєнт пропорційності, то
Отже, для похибки в точцi у випадку iнтегрування з кроком h маємо рівнiсть
(4.1)
а при інтегруванні з кроком h/2 - рiвність
(4.2)
Віднявши почленно (4.2) вiд рiвностi (4.1) та розв'язавши одержане рівняння щодо невiдомого коефiцiєнта М, знайдемо
Пiдставивши це значення M в (4.2), отримаємо
(4.3)
Оцiнювання абсолютної похибки за допомогою величини називають правилом Рунге.
Застосовуючи чисельнi методи розв'язування задачi Кошi, розв'язати диференцiйне рiвняння першого порядку з точнiстю є =0.0001 на відрiзку із кроком h= 0.05 i заданими початковими умовами , а також порівняти отриманий розв'язок із точним розв'язком y*, використовуючи правило Рунге.
Текст програми
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "RungeUn.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float x0, y0, xn0, ytn1, yn0, eps, h, xn1, yn1, k1, k2;
bool modif=true;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
double func(double xn0, double yn0)
{
return (-2*xn0*yn0*yn0/(xn0*xn0-1));
}
//---------------------------------------------------------------------------
double func_toch(double xn0)
{
return 1/(log(fabs(1-xn0*xn0))+1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
x0=StrToFloat(LabeledEdit1->Text);
y0=StrToFloat(LabeledEdit2->Text);
h=StrToFloat(LabeledEdit3->Text);
eps=StrToFloat(LabeledEdit4->Text);
Memo1->Clear();
Memo1->Lines->Add((AnsiString)" x y h ytoch");
xn0=x0;
yn0=y0;
while (xn0 < (x0+0.5))
{
k1 = h * func(xn0,yn0);
k2 = h * func(xn0+h,yn0+k1);
yn1 = yn0 + (k1+k2)/2.0;
xn1 = xn0 + h;
xn0 = xn1;
yn0 = yn1;
ytn1=func_toch(xn1);
Memo1->Lines->Add(FloatToStrF(xn1,ffFixed,8,4)+
(AnsiString)" "+
FloatToStrF(yn1,ffFixed,8,4)+
(AnsiString)" "+
FloatToStrF(h,ffFixed,8,4)+
(AnsiString)" "+
FloatToStrF(ytn1,ffFixed,8,4));
if(abs(yn1-ytn1)>eps){h/=2.0; modif=false;}
else if(!modif){h*=2; modif=true;}
}
}
//-------------------------------------------------------------------------------
Результат виконання програми
Висновок
На цій лабораторній роботі я вивчив і засвоїв постановку та методи розв'язування задачі Коші. Навчився досліджувати розв'язок, використовуючи метод Рунге-Кутта.
Размещено на Allbest.ru
...Подобные документы
Розв’язання системи рівняння методом Гауса за схемою з частковим вибором головного елементу. Рішення задачі Коші методом Рунге-Кутта. Знаходження моментів кубічних сплайнів методом прогонки. Розв’язування системи нелінійних рівнянь методом Ньютона.
контрольная работа [252,3 K], добавлен 04.06.2010Стандартний спосіб розв’язання задачі Коші для звичайного диференціального рівняння першого порядку чисельними однокроковими методами. Геометричний зміст методу Ейлера. Побудова графіку інтегральної кривої. Особливість оцінки похибки за методом Рунге.
курсовая работа [112,9 K], добавлен 30.11.2009Розгляд та аналіз основних способів розв’язання звичайних диференціальних рівнянь за методом Рунге-Кутта з автоматичним вибором кроку. Способи оцінки погрішності і збіжності методу Рунге-кутти четвертого порядку з автоматичним вибором довжини кроку.
контрольная работа [31,0 K], добавлен 18.01.2013Визначення і розв’язання задачі Коші для звичайних диференціальних рівнянь першого порядку методом Ейлера, алгоритм розв’язання, похибка при вирішенні. Складання блок-схеми. Реалізація алгоритму у середовищі Borland Pascal. Результат роботи програми.
курсовая работа [264,0 K], добавлен 20.08.2010Метод розв’язків рівнянь більш високих порядків. Вибір методу розв'язання задачі Коші. Методи розв'язання крайових задач розглядаються на прикладі звичайного диференціального рівняння другого порядку. Вибір методу інструментальних засобів вирішення задач.
курсовая работа [132,0 K], добавлен 03.12.2009Загальні відомості та геометричний зміст розв'язання задачі Коші. Використання методу Ейлера для розв'язання звичайних диференціальних рівнянь першого порядку. Розробка блок-схеми та реалізація алгоритму в середовищі програмування Borland Delphi 7.0.
курсовая работа [398,1 K], добавлен 14.10.2012Задача лінійного програмування. Розв’язання задачі геометричним методом. Приведення системи рівнянь до канонічного вигляду. Розв’язання симплекс-методом. Розв’язок двоїстої задачі. Задача цілочислового програмування і дробово-лінійного програм.
контрольная работа [385,2 K], добавлен 04.06.2009Огляд та аналіз методів розв’язання системи диференціальних рівнянь та вибір методів рішення. Алгоритми методів Ейлера. Вибір методу рішення задачі Коші. Рішення диференціальних рівнянь. Отримання практичних навиків програмування на мові Паскаль.
курсовая работа [174,3 K], добавлен 06.03.2010Види рівнянь та методи їх розв’язань. Чисельні методи уточнення коренів, постановка задачі. Рішення нелінійного рівняння методом простих та дотичних ітерацій. Використання програмних засобів. Алгоритми розв’язку задач. Програми мовою С++, їх тестування.
курсовая работа [232,2 K], добавлен 12.02.2013Виконання "ручного" розв'язування рівняння методом Ньоютона. Розробка програми на мові С#, яка реалізує введення вихідних даних, розв'язання заданого рівняння, виведення результатів у зручній формі на екран. Визначення початкового наближення кореня.
лабораторная работа [120,9 K], добавлен 19.01.2022Розвиток виробництва і широке використання промислових роботів. Алгоритми методів, блок-схеми алгоритмів розв'язку даного диференційного рівняння. Аналіз результатів моделювання, прямий метод Ейлера, розв’язок диференціального рівняння в Mathcad.
контрольная работа [59,1 K], добавлен 30.11.2009Розробка програмного забезпечення для розв'язку системи лінійних рівнянь за формулами Крамера, головні особливості мови Turbo Pascal. Методи розв'язування задачі, архітектура програми та її опис. Контрольний приклад та результат машинного експерименту.
курсовая работа [47,7 K], добавлен 23.04.2010Розв’язання нелінійних алгебраїчних рівнянь методом дихотомії. Вирішення задачі знаходження коренів рівняння. Розробка алгоритму розв’язання задачі і тестового прикладу. Блок-схеми алгоритмів основних функцій. Інструкція користувача програмою мовою С++.
курсовая работа [2,0 M], добавлен 24.09.2010В роботі розглянуто наближені методи розв’язку нелінійних рівнянь. Для вказаних методів складено блок-схеми та написано програму, за якою розв’язується задане рівняння. Аналіз як самого рівняння і методів його розв’язання так і результатів обрахунку.
курсовая работа [302,8 K], добавлен 03.12.2009Розробка програмного забезпечення для розв'язку системи лінійних рівнянь за формулами Гаусса, головні особливості мови Turbo Pascal. Методи розв'язування задачі, архітектура програми та її опис. Контрольний приклад та результат машинного експерименту.
курсовая работа [40,3 K], добавлен 23.04.2010Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.
курсовая работа [163,4 K], добавлен 16.05.2016В роботі розглянуто наближені методи розв'язку нелінійних рівнянь для методів Ньютона та хорд, складено блок-схеми та написано програму, за допомогою якої розв'язується задане рівняння. Аналіз рівняння, методів його розв'язання і результатів обрахунку.
курсовая работа [380,9 K], добавлен 30.11.2009Постановка та описання алгоритму розв’язання задачі про оптимальне призначення, формулювання вимог. Обґрунтування вибору засобів програмування. Розробка структури програми та системи її візуалізації, тестування та верифікація, оцінка ефективності.
курсовая работа [1,1 M], добавлен 12.05.2013Відомості з теорії графів, методи отримання точних розв'язків задачі їх розфарбування. Алгоритм розфарбування графу методом неявного перебору. Комп'ютерна реалізація розв’язку задачі розфарбування графів. Типові задачі та існуючі програмні продукти.
курсовая работа [335,6 K], добавлен 15.06.2015