Методи чисельного розв’язування диференціальних рівнянь

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

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

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

Рік:
2010
Тип роботи:
Інші
Предмет:
Комп’ютерні методи дослідження інформаційних процесів та систем

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА Кафедра захисту інформації З В І Т До лабораторної роботи №6 з курсу: „ Комп’ютерні методи дослідження інформаційних процесів та систем ” на тему: «Методи чисельного розв’язування диференціальних рівнянь» Варіант 10 Мета роботи: Ознайомлення з методами чисельного розв’язування диференційних рівнянь. Вступ Диференціальне рівняння (ДР), що містить лише одну незалежну змінну і похідні за нею, називають звичайними (ДР). ДР, що містить декілька незалежних змінних і похідні за ними, називають рівняння в частинних похідних Порядком ДР називається найвищий порядок похідної (або диференціалу), який входить в рівняння. Звичайне ДР (ЗДР) -го порядку в загальному випадку має незалежну змінну, невідому функцію та її похідні до -го порядку включно:  (1)  - незалежна змінна; - невідома функція (залежна змінна); - похідні цієї функції. Диференціальне рівняння -го порядку, розв’язане відносно старшої похідної, може бути записано у вигляді:  (2) Щоб розв’язати ЗДР, необхідно мати значення залежної змінної та (або) її похідних при деяких значення незалежної змінної. Якщо ці значення задані при одному значенні незалежної змінної - така задача називається задачею з початковими умовами або задачею Коші, а при  або більше значеннях незалежної змінної - задача називається крайовою. Значення залежної змінної та її похідних називаються додатковими умовами, котрі в задачі Коші називаються початковими, а в крайовій задачі - граничними. Задача Коші Задача Коші формулюється так: Нехай задане ДР  (3) з початковими умовами . Потрібно знайти функцію , що задовольняє дане рівняння та початкову умову. Для одержання чисельний розв’язку цієї задачі спочатку обчислюють значення похідної, а потім задаючи малий приріст, переходять до нової точки  Положення нової точки визначають за нахилом кривої, обчисленому з допомогою ДР. Таким чином, графік чисельного розв’язку являє собою послідовність коротких прямолінійних відрізків, якими апроксимується істинна крива . Сам чисельний метод визначає порядок дій при переході від даної точки кривої до наступної. Існують дві групи методів розв’язування задачі Коші. Однокрокові методи. В них для знаходження наступної точки на кривій  потрібна інформація лише про попередній крок. Багатокрокові. Для знаходження наступної точки кривої  вимагається інформація більш ніж про одну з попередніх точок. Всі ці методи розв’язування ДР дають розв’язок у вигляді таблиці значень. Методи з автоматичною зміною кроку Застосовуються в тому випадку, якщо розв’язок потрібно одержати із заданою точністю. При високій точності (похибка ) автоматична зміна кроку забезпечує зменшення загального числа кроків в декілька разів (особливо при розв’язках у вигляді кривих, що сильно відрізняються крутизною). Метод Рунге-Кутта-Фельберга з автоматичною зміною кроку Це метод четвертого порядку, дає більш точну оцінку похибки (порівняно з методом Рунге-Кутта-Мерсона) на кожному кроці і реалізується послідовним циклічним обчисленням за наступними формулами:        Похибка  Якщо а) , крок  зменшується в двічі б) Якщо , крок  збільшується вдвічі. Час розрахунку для однієї точки удвічі більший, ніж для методу Рунге-Кутта-Мерсона 2. ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ Розв’язати чисельним методом диференціальне рівняння. 10     Блок схема програми + - - +  Список індентифікаторів, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення class Program – клас, в якому оголошений метод Main; class RungeKuFelberg –клас, в якому оголошені методи f, Metod; public void f – метод обчислення функції; public void Metod – метод обчислення диференціального рівняння з автоматичним вибором кроку; static void Main(string[] args) – головна функція; robly –екземпляр класу RungeKuFelberg; x, y, h, E,R,Y - змінні типу double; i – змінна типу int; Текст програми: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace laba6 { class Program { static void Main(string[] args) { RungeKuFelberg robly = new RungeKuFelberg(); robly.Metod(); Console.ReadLine(); } } class RungeKuFelberg { double x, y, h, k1, k2, k3, k4, k5, k6, R, E = 0.001, Y; int i; public double f(double X, double Y) { return Math.Cos(Math.Pow(X, 2)) + Math.Sin(Math.Pow(Y, 3)); } public void Metod() { x = 0; y = 1; for (x = 0; x <= 1; i++) { h = 0.01; do { k1 = h * f(x, y); k2 = h * f(x + h * 2 / 9, y + 2 * k1 / 9); k3 = h * f(x + h * 1 / 3, y + k1 * 1 / 12 + k2 * 1 / 4); k4 = h * f(x + h * 3 / 4, (y + k1 * 69 / 128) - k2 * 143 / 128 + k3 * 135 / 64); k5 = h * f(x + h, (y + k1 * 17 / 12 + k2 * 27 / 4 - k3 * 27 / 5 + k4 * 16 / 15)); k6 = h * f(x + h * 5/6,(y+k1*65/432)-(k2*5/16)+(k3*13/16)+(k4*4/27)+(k5 *5/144)); Y = f(x, y) + k1 * 1 / 9 - k3 * 3 / 100 + k4 * 16 / 45 + k5 * 1 / 12; R = k1 * 1 / 150 - k3 * 3 / 100 + k4 * 16 / 75 + k5 * 1 / 20 - k6 * 6 / 25; if (Math.Abs(R) > E) { h /= 2; } if (Math.Abs(R) < E / 30) { h *= 2; } else { Console.WriteLine("y= " + Y + "\tx= " + x); x += h; } } while (Math.Abs(R) > E); } } } } Результат виконання програми: y= 1,85128370998275 x= 0 y= 1,85128370475665 x= 0,01 y= 1,85128362857824 x= 0,02 y= 1,85128330007922 x= 0,03 y= 1,85128241725352 x= 0,04 y= 1,85128055745783 x= 0,05 y= 1,85127717741295 x= 0,06 y= 1,8512716132065 x= 0,07 y= 1,85126308029783 x= 0,08 y= 1,85125067352596 x= 0,09 y= 1,85123336712177 x= 0,1 y= 1,85121001472557 x= 0,11 y= 1,85117934941166 x= 0,12 y= 1,85113998372123 x= 0,13 y= 1,85109040970568 x= 0,14 y= 1,85102899898204 x= 0,15 y= 1,85095400280276 x= 0,16 y= 1,85086355214206 x= 0,17 y= 1,85075565780135 x= 0,18 y= 1,8506282105363 x= 0,19 y= 1,8504789812083 x= 0,2 y= 1,85030562096335 x= 0,21 y= 1,85010566144143 x= 0,22 y= 1,84987651501964 x= 0,23 y= 1,84961547509251 x= 0,24 y= 1,84931971639323 x= 0,25 y= 1,84898629535933 x= 0,26 y= 1,84861215054699 x= 0,27 y= 1,84819410309791 x= 0,28 y= 1,84772885726303 x= 0,29 y= 1,84721300098749 x= 0,3 y= 1,84664300656141 x= 0,31 y= 1,84601523134123 x= 0,32 y= 1,84532591854635 x= 0,33 y= 1,84457119813621 x= 0,34 y= 1,84374708777285 x= 0,35 y= 1,84284949387433 x= 0,36 y= 1,84187421276437 x= 0,37 y= 1,84081693192373 x= 0,38 y= 1,83967323134917 x= 0,39 y= 1,83843858502555 x= 0,4 y= 1,83710836251724 x= 0,41 y= 1,83567783068472 x= 0,42 y= 1,8341421555325 x= 0,43 y= 1,83249640419472 x= 0,44 y= 1,83073554706462 x= 0,45 y= 1,82885446007435 x= 0,46 y= 1,82684792713163 x= 0,47 y= 1,82471064271976 x= 0,48 y= 1,8224372146676 x= 0,49 y= 1,8200221670962 x= 0,5 y= 1,81745994354874 x= 0,51 y= 1,81474491031049 x= 0,52 y= 1,81187135992555 x= 0,53 y= 1,80883351491708 x= 0,54 y= 1,80562553171767 x= 0,55 y= 1,80224150481669 x= 0,56 y= 1,79867547113106 x= 0,57 y= 1,79492141460613 x= 0,58 y= 1,79097327105326 x= 0,59 y= 1,78682493323029 x= 0,6 y= 1,78247025617139 x= 0,61 y= 1,77790306277241 x= 0,62 y= 1,77311714963768 x= 0,63 y= 1,76810629319423 x= 0,64 y= 1,76286425607895 x= 0,65 y= 1,75738479380428 x= 0,66 y= 1,75166166170748 x= 0,67 y= 1,74568862218854 x= 0,68 y= 1,7394594522413 x= 0,69 y= 1,73296795128217 x= 0,7 y= 1,7262079492804 x= 0,71 y= 1,71917331519354 x= 0,72 y= 1,71185796571139 x= 0,73 y= 1,70425587431103 x= 0,74 y= 1,69636108062557 x= 0,75 y= 1,68816770012818 x= 0,76 y= 1,67966993413292 x= 0,77 y= 1,67086208011309 x= 0,78 y= 1,66173854233725 x= 0,79 y= 1,65229384282249 x= 0,8 y= 1,64252263260394 x= 0,810000000000001 y= 1,63241970331856 x= 0,820000000000001 y= 1,62197999910093 x= 0,830000000000001 y= 1,61119862878747 x= 0,840000000000001 y= 1,60007087842534 x= 0,850000000000001 y= 1,58859222408078 x= 0,860000000000001 y= 1,57675834494134 x= 0,870000000000001 y= 1,56456513670513 x= 0,880000000000001 y= 1,55200872524952 x= 0,890000000000001 y= 1,53908548057055 x= 0,900000000000001 y= 1,5257920309834 x= 0,910000000000001 y= 1,51212527757328 x= 0,920000000000001 y= 1,4980824088846 x= 0,930000000000001 y= 1,48366091583576 x= 0,940000000000001 y= 1,46885860684513 x= 0,950000000000001 y= 1,45367362315295 x= 0,960000000000001 y= 1,43810445432248 x= 0,970000000000001 y= 1,42214995390251 x= 0,980000000000001 y= 1,40580935523191 x= 0,990000000000001 Висновок: На цій лабораторній роботі я склав програму мовою С# і ознайомився з методом Рунге-Кутта-Фельберга з автоматичною зміною кроку для розв’язування рівнянь
Антиботан аватар за замовчуванням

25.12.2011 16:12-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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