Смекни!
smekni.com

Дослідження однокрокових методів розвязання звичайних диференційних рівнянь (стр. 1 из 2)

Міністерство освіти і науки України

Вінницький національний технічний університет

Інститут АЕКСУ

Кафедра АІВТ

Контрольна робота

з дисципліни:

“Моделювання на ЕОМ”

Дослідження однокрокових методів розв’язання звичайних диференційних рівнянь

Виконав: ст. гр. 1АМ-04_____ Балко О.О.

Перевірив: доцент каф.АІВТ_____ Кабачій В.В.

2007


Вступ

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Блок-схеми алгоритмів розв'язку даного диференційного рівняння