DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Розв’язування задачі Коші методом Рунге-Кутта

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра автоматизованих систем управління

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Чисельні методи в інформатиці

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра автоматизованих систем управління Звіт до лабораторної роботи № 6 з курсу «Чисельні методи в інформатиці» на тему «Розв’язування задачі Коші методом Рунге-Кутта» Львів – 2011 Мета роботи: вивчити і засвоїти постановку та методи розв’язування задачі Коші. Навчитися досліджувати розв’язок , використовуючи метод Рунге-Кутта. Короткі теоретичні відомості Тільки невелика кількість задач Коші, iнтегровних у явному виглядi, зустрічаються серед задач, якi потрiбно розв’язувати. Тому для розв’язування задач Коші широко використовують чисельні методи з їх реалізацією на комп’ютерах. При цьому особливо важливими є вибір потрібного методу і його програмної реалізації, а також підготування всіх даних, необхідних для роботи комп’ютерної програми. 1.Формулювання задачi. Нехай на в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нювання абсолютної похибки за допомогою величини називають правилом Рунге. Варіант 17 Застосовуючи чисельн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 ((yn0*yn0+xn0)/(xn0*yn0)); } //--------------------------------------------------------------------------- double func_toch(double xn0) { return (sqrt(2*xn0*(3*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;} } } //----------------------------------------------------------------------------------------------------------- Результат виконання програми:  Висновок: На цій лабораторній роботі я вивчив і засвоїв постановку та методи розв’язування задачі Коші. Навчився досліджувати розв’язок, використовуючи метод Рунге-Кутта.
Антиботан аватар за замовчуванням

20.02.2013 20:49

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!