Рішення звичайних диференціальних рівнянь
З ДИСЦИПЛІНИ «КОМПЬЮТЕРНОЕ
Рішення звичайних диференціальних рівнянь. метод Ейлера
Звичайні диференціальні рівняння зустрічаються досить часто в різних прикладних задачах. Ними описуються завдання руху систем матеріальних точок, електричних ланцюгів і ін.
Диференціальним називається таке рівняння, яке пов'язує незалежну змінну Х, її функцію y = f (x) і похідні цієї функції.
У неявному вигляді диференціальне рівняння записується так:
Порядок старшої похідної, що входить в це рівняння, називається порядком диференціального рівняння.
Якщо y = f (x) - функція одного незалежного змінного Х, диференціальне рівняння називається звичайним, якщо ж y = f (x1, x2, ... xn) - функція n незалежних змінних x1, x2, ... xn. то рівняння називається рівнянням в приватних похідних.
Рішення звичайного диференціального рівняння зводиться до пошуку функції y = f (x), яка при підстановці в рівняння звертає його в тотожність.
Пошук рішення такого рівняння називається його інтеграцією, а отримане рішення - інтегралом цього рівняння.
Існують загальне і часткове вирішення диференціального рівняння.
Спільним рішенням рівняння є функція y = # 966; (x, c), яка задовольняє рівняння при будь-яких значеннях постійного С.
Приватне рішення визначається конкретним значенням С. Для знаходження приватного рішення необхідно вказати початкові умови, тобто задати значення y, при х = х0. тобто y0 = y (x0), ...,
Завдання відшукання рішення звичайного диференціального рівняння при початкових умовах називається задачею Коші для звичайного диференціального рівняння.
Ми розглядаємо рівняння дозволеними відносно старшої похідної.
Їх можна звести до системи n звичайних диференціальних рівнянь першого порядку заміною на невідому функцію Р1 (х), на Р2 (х) і т.д. тобто
Причому, початкові умови:
Для вирішення ми будемо розглядати методи Ейлера і Рунге-Кутта.
Чисельне рішення полягає в побудові таблиці наближених значень y1, y2, ..., yn-1 точного рішення y (x) рівняння.
Ми не знаємо виду функції, не можемо відразу обчислити значення функції. Знаємо тільки початкові умови, значення Х0 = а, y0 = y (x0) і інтервал [a, b], на якому необхідно проінтегрувати функцію.
Завдання ставиться так: в точках Х0, X1, ..., Хn потрібно знайти наближення y0, y1, ..., yn точного рішення.
Перший крок - розбиваємо відрізок на кінцеве число вузлових точок (вузли сітки). Крок сітки h = (b-a) / n, Xi = a + ih, I = 0,1. N.
Потрібно відновити значення шуканої функції. Розглянемо диференціальне рівняння 1 порядку
Другий крок - знаючи початкові умови обчислюємо значення першої похідної в точці Х0.
Третій крок - в наступному вузлі сітки обчислюємо значення функції.
На четвертому кроці все повторюється.
Геометрична інтерпретація методу полягає в заміні інтегральної кривої на відрізку дотичній до неї в точці xi, yi. На кожному кроці заново визначається дотична, і, отже, відповідна наближеному рішенням крива буде ламаною лінією. Тому метод називають ще методом ламаних.
Схема обчислень: xi = a + ih (I = 0,1, ..., N)
Тобто маючи відому точку, обчислюємо наступну. Це схема обчислень для рівняння 1 порядку.
Метод Ейлера для рівнянь 2 порядку треба рівняння з початковими умовами звести до системи 2 рівнянь 1-го порядку:
Похідні беруться в точці х.
Ітераційна формула обчислень:
На практиці обчислення проводяться знизу вгору: спочатку обчислюється 1 похідну, тобто pi. а потім другу Yi.
Для рівняння другого порядку доводиться двічі застосовувати інтегрування. Відновлюємо значення похідної, а потім значення шуканої функції, тобто вирішуємо спочатку одне рівняння, а потім друге.
Приклад. На відрізку [a, b] скласти таблицю значень наближеного рішення диференціального рівняння. задовольняє початковим умовам
Y (0) = 1, Y # 900; (0) = 2. крок інтегрування h = 0,2, точність # 949; = 0,001. Передбачити друк значень точного рішення y = e x + x.
Потрібен масив Х - значень Х від 0 до 2
У - масив наближених рішень
Р - масив значень похідної
(A-b) / h + початкова точка = 2 / 0,2 = 10 + 1 = 11
Розглянутий метод Ейлера відноситься до групи однокрокових методів. в яких для розрахунку точки (xi + 1. yi + 1) потрібна інформація про останню обчислювальної точці (xi. yi).
Чисельне рішення полягає в побудові таблиці наближених значень y1. y2. y3. ..., yn-1 точного рішення y (x) рівняння y ¢ = f (x, y), a £ x £ b при початковому умови y (x0) = y0. x0 = a на обраній послідовності точок xi = x0 + ih. Функція y залежить від аргументу х
Точність методу або помилкою обриву називають помилку, яку роблять при переході від попереднього до наступного Х, якщо замінюють диференціальне рівняння Конечностно виразом.
Похибка апроксимації різницевими рівняннями дорівнює величині відкинутого залишкового члена ряду Тейлора O (h p +1).
Прийнято вважати, якщо розрахункові формули чисельного методу узгоджуються з розкладанням в ряд Тейлора до членів порядку h p. то число р називають порядком точності методу.
У методі Ейлера порівняння формули обчислення з розкладанням в ряд Тейлора узгоджується до першого порядку по h, тобто метод має перший порядок точності з локальної похибкою O (h 2)
Для методу Ейлера похибка дорівнює h 2.
10.2. Чисельний МЕТОД ПОБУДОВИ ГРАФИКОВ
При вирішенні завдань на ЕОМ важливе значення має наочність і зручність швидкого сприйняття досліджуваних явищ. Після освоєння коштів графічного режиму Турбо Паскаля можна будувати графіки, а також отримувати різні геометричні фігури. Які б зображення не виводилися на екран, всі вони будуються з точок, групи яких в свою чергу утворюють відрізки і криві. Висновок точки здійснюється процедурою PutPixel (X, Y, Color), де Х і Y-координати екрану, де буде розташована точка. Color - її колір.
Для побудови графіка функції необхідно здійснити наступні операції:
1) Табулювання функції;
2) Знаходження максимального і мінімального значень функції;
3) Формування і висновок графіка на екран.
Розглянемо застосування графічного режиму на прикладі побудови графіка функції Y (x) = x з / (2 (x + 1) (x + 1)) в області зміни х Î [-5, -1) U (-1, 5] з кроком h, а також побудови асимптоти, заданої виразом Y (x) = х / 2 - 1.

Табулювання функції можна здійснити за допомогою наступних операторів:
for i. = 1 to n do begin
Тут введені імена змінних: xStart - початкове значення аргументу, xEnd - кінцеве значення аргументу, n - число точок в рядку. Крок зміни аргументу X визначається виразом:
h: = (xEnd -xStart) / (n - 1);
В організованому циклі табулювання функції обчислюються значення Y (x), використовуючи підпрограму - функцію з ім'ям F. Індекс кожного значення Х і відповідне йому значення Y (x), будуть міститися в певні елементи масиву У. У точці Х = -1 задана функції не визначена, тому необхідно виключити з побудови ділянку графіка в околиці цієї точки. Це досягається програмним шляхом застосуванням операторів
if y [i] <- 6 then y[ i ] := - 6;
В даному випадку здійснено обмеження знизу на рівні У = -6, і все значення функції, які менше -6, будуть виключені з побудови графіка. У тому випадку, якщо в околиці точки розриву функція отримувала б позитивне значення, слід було б здійснювати обмеження зверху введенням операторів
де а - рівень обмеження.
Для визначення масштабу викреслюють графіка необхідно знайти мінімальне і максимальне значення елементів масиву Y. Це досягається за допомогою операторів
for i: = 1 to n do begin
if y [i]> yMax then
if y [i] Для того, щоб встановити графічний режим, необхідно використовувати стандартну процедуру InitGraph модуля Graph, яка встановлює один з можливих графічних режимів. Формат процедури наступний: InitGraph (імя_драйвера, режим, путь_к_драйверу); У модулі Graph є більше 70 підпрограм. Розглянемо необхідні процедури для побудови графіка функції У = f (x) в заданому інтервалі зміни Х з заданим кроком h. Для формування заголовка графіка благається використовувати такі процедури: SetTextStule (Font, Direct, CharSize); -процедура виведення тексту із зазначенням виду шрифту, нахилу і його розміру. Вид шрифту (параметр Font) в модулі Graph визначається константами: DefaultPont = 0 (матричний шрифт); TriplexPont = 1 (жирний шрифт); SmallFont = 2 (тонкий шрифт); SansSerifPont = 3 (прямий шрифт); GothicPont = 4 (готичний шрифт). Для визначення напрямку виведення тексту використовуються константи: Horizdir = 0 (зліва направо) або VertDir = 1 (від низу до верху). Третій параметр визначає розмір шрифту. Якщо CharSize = 1, то символи мають звичайні розміри (8х8 пікселів), якщо CharSize == 2, то символи мають розміри 16х16 пікселів. Максимальне значення константи дорівнює 10. Процедура SetTextJustify (код_горізонталі, код_вертікалі) - встановлює параметри для видачі тексту, в залежності від коду. Процедура OutTextXY (X, Y, текст); - забезпечує виведення тексту з координати (X, Y). При формуванні осі X, горизонтальної та вертикальної сітки можна використовувати такі процедури: SetLineStile (тіп_лініі, определеніе_пользователем / від_лініі); - визначається тип лінії: solidin = 0 (суцільна лінія), dottein = 1 (пунктирна лінія), centerin = 2 (штрих-пунктирна лінія), dashedin = 3 (штрихова лінія), user-bitin = 4 (певна користувачем лінія); другий параметр має сенс тільки при userbitln = 4, а вид лінії задається константою nonnwidth = 1 (звичайна товщина) або константою thickwidth = 3 (жирна лінія); SetColor (колір) - визначає колір символів і ліній. Для установки курсору в зазначену координату використовується процедура MoveTo, (X, Y), а для креслення лінії від поточної лінії до зазначеної координати - процедура LineTo (X, Y). При роботі з графічними зображеннями необхідно використовувати систему координат. Залежно від обраного графічного режиму встановлюється роздільна здатність екрана в 320х200, 640х480 або інше число точок (пікселів). Програмним шляхом можна встановити максимальне число пікселів в рядку за допомогою функції GetMaxX, а число строк- за допомогою функції GetMaxY. Початок координат має значення (0, 0), центр екрану - (GetMaxX div 2, GetMaxY div 2), а правий нижній кут - (GetMaxX, GetMaxY). При виконанні графічних операцій завжди вказується, що повинен робити курсор, проте сам курсор в графічному режимі невидимий.