Курсовая работа: Програма розв’язання звичайних диференціальних рівнянь однокроковими методами
Якщо інтеграл в правій частині формули (1.5)обчислити за формулою трапеції, то матимемо
(1.11)
Невідоме значення у(хk+1 ), що входить до правої частини цієї рівності, можна обчислити за формулою (1.7). Підставивши його в праву частину рівності (1.11), дістанемо рівність:
Звідси для удосконаленого методу Ейлера-Коші матимемо такі розрахункові формули:
(1.12)
(1.13)
Отже, і в цьому методі на кожному кроці інтегрування праву частину рівняння (1.1) обчислюють двічі: спочатку за методом Ейлера (формула (1.12)) обчислюють наближене значення шуканого розв’язку у точці хk+1 , яке потім уточнюють за формулою (1.13). Похибка методу на кожному кроці має порядок О(h3 ).
Така побудова наближеного розв’язку задачі (1.1)1(1.2) з геометричної точки зору означає, що на відрізку [xk ,xk+1 ] графік інтегральної кривої наближають відрізком прямої, яка проходить через точку (xk ,yk ) і має кутовий коефіцієнт Тобто ця пряма утворює з додатним напрямком осі Ох кут
|
|
|
|
|
|
|
|
|
|
|
|
Координати точки (xk+1 ,) визначають як точку перетину дотичної у=уk +f(xk ,yk )(x-xk ) до графіка інтегральної кривої задачі (1.1)-(1.2) в точці (xk ,yk ) з прямою х=хk [2].
2. Розробка алгоритму розв’язання задачі
Стандартний спосіб розв’язання задачі Коші чисельними однокроковими методами – це зведення диференціальних рівнянь n-го порядку до систем з n рівнянь 1-го порядку і подальшого розв’язання цієї системи стандартними однокроковими методами:
Для рівняння введемо заміну тоді для даного рівняння можна записати еквівалентну систему із двох рівнянь:
Запишемо для кожного з цих рівнянь ітераційне рівняння:
для модифікованого методу :Ейлера:
для виправленого методу Ейлера:
Таким чином знаходиться масив точок функції ymn з різними кроками тобто n1=(b-a)/0,1=10+1 раз з кроком 0,1 і n2=(b-a)/0,05 раз з кроком 0,05. Це необхідно для оперативного визначення похибки за методом Рунге (екстраполяції Рідчардсона) [3].
Загальний вигляд похибки для цих двох методів , де с визначається саме за методом Рунге , звідки с на кожному кроці обчислень знаходиться за формулою:
.
Знаючи с можна знайти локальну похибку і просумувавши її по всьому діапазону інтегрування визначити загальну похибку обчислень.
Мовою програмування було обрано Turbo C++. Вона виявилась найзручнішою із тих мов, в яких мені доводилось працювати.
Програма складається з трьох допоміжних функцій float f(x,y,z), void eylermod() i eylerisp(). eylermоd() реалізовує модифікований метод Ейлера, eylerisp() – виправлений метод, а функція f(x,y,z) повертає значення другої похідної рівняння.
Лістинг програми приведено в додатку.
3 . Результати обчислень і оцінка похибки
Результатом розв’язання задачі Коші являється функція. В даному випадку отримати цю функцію в аналітичному вигляді обчислювальні однокрокові методи не дозволяють. Вони представляють функцію в табличному вигляді, тобто набір точок значень х і відповідних їм значень функції у(х). Тому для більшої наглядності було вирішено по цим точкам намалювати графіки функцій у(х) для кожного з методів окремо (дивись рисунок 4). На тому ж малюнку виведені значення похибок для кожного методу окремо. На рисунку 5 виведено значення функції у(х) в дискретному вигляді з кроком h1=0.1.