Контрольная работа: Дослідження однокрокових методів розвязання звичайних диференційних рівнянь
Название: Дослідження однокрокових методів розвязання звичайних диференційних рівнянь Раздел: Рефераты по информатике Тип: контрольная работа | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Міністерство освіти і науки України Вінницький національний технічний університет Інститут АЕКСУ Кафедра АІВТ Контрольна робота з дисципліни: “Моделювання на ЕОМ” Дослідження однокрокових методів розв’язання звичайних диференційних рівнянь Виконав: ст. гр. 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 Блок-схеми алгоритмів розв'язку даного диференційного рівняння
3 Вхідні та вихідні дані Вхідними даними програми є: крок обчислення і задане диференціальне рівняння. Вихідними даними програми є: графіки, таблиця з рішеннями диференціального рівняння і похибки обчислень. 4. Аналіз результатів моделювання Розроблена програма дозволяє розв'язувати дане диференційне рівняння трьома методами. З результатів обчислень ми можемо перевірити функціональність програми і точність кожного з методів. Прямий метод Ейлера:
Даний метод не є точним на що вказує глобальна похибка 0.743598. Зворотній метод Ейлера :
Даний метод є більш точним за прямий метод Ейлера так як його глобальна похибка складає 626846. Метод Рунге-Кутта
Даний метод є найточнішим серед прямого і зворотного методу Ейлера, його глобальна похибка дорівнює 0.004732. Звідси можна зробити висновок; найбільш простим однокроковим методом, потребуючим мінімальних затрат розрахункових ресурсів, і який є дуже точним по відношенню до метода Ейлера є метод Рунге-Кутта. Метод Ейлера, крім значної похибки усічки, часто буває нестійким (малі локальні помилки приводять до значного збільшення глобальної). 4.1. Розв’язок диференціального рівняння в Mathcad Звіримо результати обчислень. Візьмемо найточніший метод Рунге-Кутта та результат отриманий в Mathcad відповідно: 4.472 та 4.603 похибка 0.131 Тобто можна зробити висновок що результати обчислень програми і обчислення Mathcad майже співпадають. 5. Інструкція користувачу Для завантаження необхідно переписати з дискети файл kursova.exe і запустити його, для роботи програми потрібен графічний драйвер egavga.bgi Після завантаження слід натиснути клавішу Enter потрібну кількість разів щоб обрати потрібний метод Після натиснення клавіші Esc відбудеться вихід з програми. Висновки В результаті виконання даної курсової роботи ми наглядно оцінили кожний з методів розв'язку диференційного рівняння і прийшли до висновку, що найточнішим методом з найменшою глобальною похибкою є метод Рунге-Кутта , а прямий метод Ейлера і зворотній метод Ейлера, є не досить точними. Але всі ці методи є простими однокроковими методами, що потребують мінімальні затрати розрахункових ресурсів. Тому можна сказати, що методи Ейлера краще використовувати для попередніх(приблизних) розрахунків, а щоб отримати точний результат можна застосувати більш точний метод Рунге-Кутта. Література 1. В.Т.Маликов, Р.Н.Кветный . Вычислительные методы и применение ЭВМ . Учебное пособие -- К.: Высш. шк. Главное издательство,1989.-213 с . 2. В.Е.Краскевич, К.Х.Зеленский, В.И.Гречко . Численные методы в инженерных исследованиях. -- К.: Высш. шк. Главное издательство, 1986.--263 с . |