Дослідження однокрокових методів розв"язання звичайних диференційних рівнянь
На даний момент велика роль в розвитку сучасного світу відводиться підвищенню технічного рівня обчислювальної техніки, пристроїв і засобів автоматизації. Це передбачає розвиток виробництва і широке використання промислових роботів, систем автоматичного управління з використанням мікропроцесорів і мікро-ЕОМ, створення гнучких автоматизованих виробництв. Розв’язок цих задач потребує широкого… Читати ще >
Дослідження однокрокових методів розв"язання звичайних диференційних рівнянь (реферат, курсова, диплом, контрольна)
Міністерство освіти і науки України Вінницький національний технічний університет
Інститут АЕКСУ Кафедра АІВТ Контрольна робота з дисципліни:
«Моделювання на ЕОМ»
Дослідження однокрокових методів розв’язання звичайних диференційних рівнянь Виконав: ст. гр. 1АМ-04_____ Балко О.О.
Перевірив: доцент каф. АІВТ_____ Кабачій В.В.
Вступ
1 Короткі теоретичні відомості
2 Алгоритми методів
2.1 Блок-схеми алгоритмів розв’язку даного диференційного рівняння
3 Вхідні та вихідні дані1
4. Аналіз результатів моделювання
4.1 Розв’язок диференціального рівняння в Mathcad
5. Інструкція користувачу
Висновки
Література
Додаток А. Лістинг програми
Вступ
На даний момент велика роль в розвитку сучасного світу відводиться підвищенню технічного рівня обчислювальної техніки, пристроїв і засобів автоматизації. Це передбачає розвиток виробництва і широке використання промислових роботів, систем автоматичного управління з використанням мікропроцесорів і мікро-ЕОМ, створення гнучких автоматизованих виробництв. Розв’язок цих задач потребує широкого упровадження в інженерну практику методів обчислювальної математики.
Обчислювальна математика заснована на чисельних методах, придатних до застосування при розрахунках на ЕОМ. Сучасні ЕОМ дозволили дослідникам значно підвищити ефективність математичного моделювання складних задач науки і техніки. Нині методи дослідження проникають практично в усі сфери людської діяльності, а математичні моделі стають засобами пізнання.
Значення математичних моделей неперервно зростає у зв’язку з тенденціями до оптимізації технічних пристроїв і технологічних схем планування експерименту. Реалізація моделей на ЕОМ здійснюється за допомогою різноманітних методів обчислювальної математики, яка неперервно удосконалюється.
В даній роботі розглянуті однокрокові методи розв’язання звичайних диференційних рівнянь (на прикладі диференційного рівняння першого порядку), а саме прямий та зворотній методи Ейлера, та метод Рунге-Кутта.
Розробленна програма дозволяє розв’язати вказане диференційне рівняння методами Ейлера (прямим та зворотним) та Рунге-Кутта, порівняти їх результати та визначити похибки
1. Короткі теоретичні відомості
Найбільш простим однокроковим методом, який потребує мінімальних затрат обчислювальних ресурсів, але дає змогу обчислювати результат із порівняно низькою точністю, є метод Ейлера.
В цьому методі для оцінки наступної точки на кривій використовується лише один лінійний член в формулі Тейлора,
(1)
де визначається з початкового рівняння.
Цей процес можна розповсюдити на наступні кроки:
(2)
Метод Ейлера є методом першого порядку
(3)
де, , , — визначається як
(4)
для всіх і .
Метод Ейлера, крім значної похибки зрізання часто буває нестійким (малі локальні похибки призводять до значного збільшення глобальної).
Цей метод можна вдосконалити різними способами.
Найбільш відомі два з них: виправлений метод Ейлера і модифікований метод Ейлера (в літературі зустрічаються інші назви цих методів, наприклад, модифікований метод Ейлера й удосконалений метод ламаних).
Ітераційні формули для цих методів мають вигляд, відповідно:
(5)
І
(6)
Де
(7)
Це методи другого порядку, їх похибка має третій ступінь, що досягається покращенням апроксимації похідної. Ідея полягає у спробі зберегти або оцінити член другого порядку у формулі Тейлора. Однак збільшення точності вимагає додаткових витрат машинного часу на обчислення. Ще більш висока точність може бути досягнута при обчисленні вищих похідних і збереженні більшої кількості членів ряду Тейлора. Такими методами є методи Рунге-Кутта.
Принцип на якому побудований модифікований метод Ейлера, можна пояснити, користуючись рядом Тейлора і зберігаючи в ньому член з. Апроксимація другої похідної здійснюється кінцевою різницею
(8)
Аналогічно обчисленню другої похідної в кінцево-різницевому вигляді можна обчислити більш високі похідні: значення n-ї за значеннями попередньої (n-1)-ї.
Метод Рунге-Кутта дає набір формул для обчислення координат внутрішніх точок, які потрібні для реалізації цієї ідеї. Оскільки існує ряд способів знаходження цих точок, то метод Рунге-Кутта об'єднує цілий клас методів для розв’язання диференціальних рівнянь першого порядку.
Найбільш розповсюджений класичний метод четвертого порядку точності:
(9)
Де
(10)
(11)
Метод Ейлера і його модифікації ще називають методами Рунге-Кутта першого і другого порядку. Метод Рунге-Кутта має значно більш високу точність, що дозволяє збільшити крок розв’язання. Його максималу величину визначає допустима похибка. Такий вибір часто здійснюється автоматично і включається як складова частина, вбудована в алгоритм, побудований за методом Рунге-Кутта.
Раніше було відзначено, що помилка зрізання при використанні методу Рунге-Кутта n-го порядку. Обчислення верхніх границь для коефіцієнта с являє собою складну задачу, пов’язану з необхідністю оцінки ряду додаткових параметрів. Існує декілька способів для оперативного обчислення с. Найбільшого поширення набув екстраполяційний метод Річардсона (ще його називають методом Рунге), коли послідовно знаходять з кроком h і з кроком, а після цього прирівнюють отримані величини та визначають с з рівняння:
(12)
що відповідає точному значенню .
Отримаємо оціночне співвідношення:
(13)
2. Алгоритми методів
В курсовій роботі розроблена програма, що розв’язує задане диференційне рівняння першого порядку трьома методами:
Ейлера : — прямим
— Зворотнім та Рунге-Кутта
Також, програма рахує похибку на кроці та загальну похибку методу.
В основі алгоритму лежить використання однокрокових методів, в основі яких лежить знаходження наступної точки на кривій лише за значенням попередньої. Основу методу складає розкладання функції в ряд Тейлора.
Програма використовує основні функції Borland C++ 3.1, а саме:
Цикли: while ()
for ()
Оператори безумовного переходу: If ()
else
switch ()
В основі програми лежить загальний алгоритм розв’язку диференційних рівнянь однокроковими методами.
Алгоритм:
1.за початковим значенням x, y знаходимо наступну точку кривої y=f (x) при кроці h=0.1;
2.знаходимо нові значення x, y;
3.перевряємо чи х належить проміжку, на якому шукаються розв’язки: якщо х належить цьому проміжку, то алгоритм повторюється з пункту 1, де замість початкових значень x, y; використовуються нові(обчислені в пункті 2); якщо ні, то алгоритм припиняє свою роботу ;
4.аналогічно шукаються розв’язки цього ж рівняння, але при кроці h=0.05;
5.Знаходження похибки зводиться до:
· знаходження C за формулою с=(y1-y2))/(St (h1,p+1)-St (h2,p+1))
де y1, y2-значення в одній тій самій точці розв’язку, але обчисленні з різним кроком;
St — функція піднесення до степеня, де р+1 степінь, а h1(h2) числа, що підносяться до степеня.
· знаходження глобальної похибки, шляхом додавання похибок знайдених на кожному кроці обчислень;
Для данного завдання, формули знаходження наступних значень за попердніми мають вигляд:
· прямий метод Ейлера:
yn:=yn+h*(yn+0.7*xn+1.2);
· зворотній метод Ейлера:
yn:=yn+h*(0.7*xn+1.2)/(1-h);
метод Рунге-Кутта
yn=yn+((k0+2*k1+2*k2+k3)/6);
2.1 Блок-схеми алгоритмів розв’язку даного диференційного рівняння
3 Вхідні та вихідні дані
Вхідними даними програми є: крок обчислення і задане диференціальне рівняння.
Вихідними даними програми є: графіки, таблиця з рішеннями диференціального рівняння і похибки обчислень.
4. Аналіз результатів моделювання
Розроблена програма дозволяє розв’язувати дане диференційне рівняння трьома методами. З результатів обчислень ми можемо перевірити функціональність програми і точність кожного з методів.
Прямий метод Ейлера:
Крок 0.1 | Крок 0.05 | Похибка | |
1.0 | 1.0 | 0.0 | |
1.220 000 | 1.227 250 | 0.9 667 | |
1.469 000 | 1.484 968 | 0.30 958 | |
1.749 900 | 1.776 278 | 0.66 128 | |
2.65 890 | 2.104 621 | 0.117 769 | |
2.420 479 | 2.473 795 | 0.188 856 | |
2.817 527 | 2.887 984 | 0.282 799 | |
3.261 280 | 3.351 802 | 0.403 495 | |
3.756 408 | 3.870 337 | 0.555 401 | |
4.308 049 | 4.449 197 | 0.743 598 | |
Даний метод не є точним на що вказує глобальна похибка 0.743 598.
Зворотній метод Ейлера :
Крок 0.1 | Крок 0.05 | Похибка | |
1.0 | 1.0 | 0.0 | |
1.244 444 | 1.239 515 | 0.6 572 | |
1.523 827 | 1.512 468 | 0.21 717 | |
1.842 030 | 1.822 472 | 0.47 795 | |
2.203 367 | 2.173 528 | 0.87 580 | |
2.612 630 | 2.570 073 | 0.144 322 | |
3.75 144 | 3.17 020 | 0.221 821 | |
3.596 827 | 3.519 814 | 0.324 504 | |
4.184 252 | 4.84 490 | 0.457 521 | |
4.844 725 | 4.717 731 | 0.626 846 | |
Даний метод є більш точним за прямий метод Ейлера так як його глобальна похибка складає 626 846.
Метод Рунге-Кутта
Крок 0.1 | Крок 0.05 | Похибка | |
1.0 | 1.0 | 0.0 | |
1.229 469 | 1.229 644 | 0.26 | |
1.489 718 | 1.489 644 | 0.103 | |
1.783 814 | 1.783 663 | 0.259 | |
2.115 130 | 2.114 874 | 0.524 | |
2.487 374 | 2.486 981 | 0.930 | |
2.904 625 | 2.904 060 | 0.1 513 | |
3.371 367 | 3.370 593 | 0.2 312 | |
3.892 533 | 3.891 508 | 0.3 370 | |
4.473 544 | 4.472 224 | 0.4 732 | |
Даний метод є найточнішим серед прямого і зворотного методу Ейлера, його глобальна похибка дорівнює 0.4 732.
Звідси можна зробити висновок; найбільш простим однокроковим методом, потребуючим мінімальних затрат розрахункових ресурсів, і який є дуже точним по відношенню до метода Ейлера є метод Рунге-Кутта. Метод Ейлера, крім значної похибки усічки, часто буває нестійким (малі локальні помилки приводять до значного збільшення глобальної).
4.1. Розв’язок диференціального рівняння в Mathcad
Звіримо результати обчислень. Візьмемо найточніший метод Рунге-Кутта та результат отриманий в Mathcad відповідно: 4.472 та 4.603 похибка 0.131
Тобто можна зробити висновок що результати обчислень програми і обчислення Mathcad майже співпадають.
5. Інструкція користувачу
Для завантаження необхідно переписати з дискети файл kursova. exe і запустити його, для роботи програми потрібен графічний драйвер egavga. bgi
Після завантаження слід натиснути клавішу Enter потрібну кількість разів щоб обрати потрібний метод
Після натиснення клавіші Esc відбудеться вихід з програми.
Висновки
В результаті виконання даної курсової роботи ми наглядно оцінили кожний з методів розв’язку диференційного рівняння і прийшли до висновку, що найточнішим методом з найменшою глобальною похибкою є метод Рунге-Кутта, а прямий метод Ейлера і зворотній метод Ейлера, є не досить точними. Але всі ці методи є простими однокроковими методами, що потребують мінімальні затрати розрахункових ресурсів. Тому можна сказати, що методи Ейлера краще використовувати для попередніх (приблизних) розрахунків, а щоб отримати точний результат можна застосувати більш точний метод Рунге-Кутта.
Література
В.Т. Маликов, Р. Н. Кветный. Вычислительные методы и применение ЭВМ. Учебное пособие — К.: Высш. шк. Главное издательство, 1989.-213 с .
В.Е. Краскевич, К. Х. Зеленский, В. И. Гречко. Численные методы в инженерных исследованиях. — К.: Высш. шк. Главное издательство, 1986.—263 с .