Міністерство освіти і наукиУкраїни
Сумський ДержавнийУніверситет
Кафедра Інформатики
Курсова робота
на тему:
«Чисельні методирозв’язування крайових задач для звичайних диференціальних рівнянь»
«Метод скінченних різниць»
Суми 2006
Зміст
Вступ
Постановка задачі
Метод скінчених різниць
Дослідження точності
Збіжність різницевої схеми
Програмна реалізація(представлена на мові Delphi
Висновки
Література
Вступ
На сьогоднішнійдень існує багато чисельних методів розв’язування крайових задач для звичайнихдиференціальних рівнянь. Але всі вони поділяються на дві групи: наближеніметоди чисельного розв’язання і наближені аналітичні методи.
Наближенічисельні методи:
1.Розв'язання лінійної крайової задачі комбінуванням двох задач Коші:
Припустимо,що розв'язок задачі (11.4), (11.5) будемо шукати у вигляді
/> (11.6)
де/> - деяка константа, /> - функція, що задовольняєоднорідне рівняння
/> (11.7)
а/> - функція, яка задовольняєнеоднорідне рівняння
/> (11.8)
Черезте, що рівняння (11.4) є лінійним, функція />будейого розв'язком для будь-якого />. Справді,
/>
Якщоприпустити, що розв’язок (11.6) задовольняє першу граничну умову (11.5) длябудь-якого />, то отримаємо рівняння
/>
Цягранична умова задовольняється, якщо покласти
/> (11.9)
/> (11.10)
Рівність(11.9) справедлива, коли прийняти, наприклад, що
/>, /> (11.11)
Щобзадовольнити рівність (11.10), можна покласти
/>, />,якщо /> (11.12)
/>, />,якщо /> (11.13)
Враховуємо,що одночасно /> і /> на нуль не перетворюютьсячерез умову (11.5).
Такимчином, для розв'язання крайової задачі (11.4), (11.5) необхідно знайтирозв'язок задач
/>, />,/> (11.14)
/> (11.15)
зпочатковими умовами (11.12) чи (11 13). Для цього можна використати будь-якийчисельний метод розв'язання задачі Коші для рівнянь другого порядку. Наближенийрозв'язок цих рівнянь отримуємо на відрізку />,у результаті чого стають відомими значення />,/>,/>,/>. Це дозволяє вибрати такуконстанту />. щоб функція (11.6)задовольняла не тільки рівняння (11.12) і першу граничну умову, але і другуграничну умову (11.5). Маємо
/>,
звідки
/>,
якщо />. (11.16)
Коли />, то однорідна крайовазадача
/>, />,/>
мас нетривіальнийрозв'язок />, який є ознакоювиродженості початкової задачі (11.4), (11.5).
2. Методприцілювання:
Викладений вищеметод редукції крайової задачі до задачі Коші має певні недоліки.
Він не дозволяєвикористовувати методи розв'язання задачі Коші зі змінним порядком і зміннимкроком. Розв'язки /> і /> повинні обчислюватись насітці з однаковим кроком, інакше знайти їх комбінацію (11.6) буде неможливо.
Використанняметоду, як правило, обмежується лише одновимірною лінійною задачею. Причинаполягає в тому, що під час розв'язання системи рівнянь потрібно обчислювати неодне значення константи А (11.16), а матрицю А, що є далеко непростою задачею.
Метод непридатний для розв'язання нелінійних крайових задач.
Ці недолікиспричинилися до появи нових методів. На практиці двоточкова крайова задача(лінійна чи нелінійна) звичайно розв'язується методом прицілювання (стрільби),назва якого запозичена із теорії артилерійської стрільби. Відповідно до цьогометоду розв'язок шуканого рівняння другого порядку
/>
із заданимиграничними умовами
/>, />,/>
знаходять у такийспосіб: ітераційним розв'язанням задачі Коші
/> (11.18)
/> і />
підбираєтьсязначення першої похідної />, дляякої виконується друга крайова умова />.
Спочаткувибирається довільне значення /> ірозв'язується задача Коші (11.18). Значення /> бажановибирати так, щоб наближений розв'язок на кінці інтервалу задовольняв умову /> (рис 1.). Потімвибирається />, і розв'язання задачі Кошіповторюється. Тепер бажано вибрати його так, щоб виконувалась умова /> (рис 1.).
/>
рис. 1. Ілюстраціяметоду стрільби.
Після цьогошляхом інтерполяції уточнюється значення /> длязадач Коші з початковими умовами:
/>,
/>
…….. …….. ……..
де /> - наближений розв'язокзадачі Коші в точці /> для вибраногозначення />.
Методприцілювання є універсальним і використовується для розв'язання нелінійнихдиференціальних рівнянь />-огопорядку. Слід зазначити, що довільний вибір початкового наближення /> може привести до того, щозадача (11.18) виявиться жорсткою навіть у випадку, коли задача (11.1), (11.2)є добре обумовленою.
Наближеніаналітичні методи:
3.Методколокацій:
У методіколокацій розв'язок крайової задачі (11.4), (11.5) шукається у вигляді функції
/>. (11.36)
де />, /> - лінійно незалежні, двічідиференційовані базисні функції, визначені на відрізку/>. Функція /> повинна задовольнятизадані граничні умови (11.5):
/>
/> (11.37, а)
а функції/>, /> - відповідні однорідніграничні умови, тобто
/>,
/>,
/>. (11.37, б)
Через лінійністьграничних умов функція /> у (11.36)задовольняє граничним умовам (11.24) для будь-яких значень />. Наприклад, у точці /> маємо
/>.
Аналогічно для /> отримаємо
/>
Суть методуколокацій полягає в тому, що для заданих /> точокна відрізку />, названих вузламиколокації, підбирають значення /> так,щоб отримана при цьому функція /> (11.36)задовольняла рівняння (11.4) у кожному з вузлів колокації:
/>,/>(11.38)
де
/>, />.
Покладемо
/>, (11.39)
/>
тоді (11.39)матиме стандартний вигляд системи лінійних алгебраїчних рівнянь:
/>, /> (11.40)
відноснокоефіцієнтів />. Якщо розв'язати цюсистему і підставити отримані значення коефіцієнтів у вираз (11.36), отримаємонаближений розв'язок />.
Точністьрозв'язку крайової задачі методом колокацій залежить від типу базисних функцій />. У конкретних задачахвибір цих функцій слід здійснювати з урахуванням апріорної інформації пророзв'язки задачі або на основі емпіричних даних. Нехай /> - це лінійна функція
/>, (11.41)
параметри якоївизначимо таким чином, щоб вона задовольняла неоднорідні граничні умови (11.5),тобто з системи рівнянь
/>,
/>. (11.42)
Функції /> можна задати у вигляді:
/>, />. (11.43)
Очевидно, що забудь-яких /> функція (11.43)задовольняє умову (11.37, а). Значення />,за якого буде задовольнятися друга умова (11.37, б), таке:
/>. (11.44)
Якщо в умовах(11.37, а, б) />, то можливийінший вибір, а саме:
/>,
/>. (11.45)
4.МетодГальоркіна
Як і в методіколокацій, у методі Гальоркіна наближений розв'язок крайової задачі (11.4),(11.5) шукаємо у вигляді
/> (11.48)
де />, /> - лінійно незалежні, двічідиференційовані базисні функції, визначені на відрізку />. Функція /> повинна задовольнятизадані граничні умови (11.37, а), а функції />,/> - відповідні однорідніграничні умови (11.37, 6).
Необхідно, щобсистема базисних функцій />, /> була ортогональною навідрізку />, тобто
/> при /> і/>,
і повною. Останнявимога означає, що не повинно існувати ніякої іншої відмінної від нуля функції,яка ортогональна до всіх функцій />, />.
Використовуючинаближений розв'язок (11.48) знайдемо нев'язку:
/> (11.49)
Коефіцієнти /> мають бути такими, щобзначення інтеграла від квадрата нев'язки/>
було найменшим.
Це досягаєтьсялише в тому випадку, коли нев'язка /> ортогональнадо всіх базисних функцій />. Умовуортогональності запишемо у вигляді:
/>, />
або
/>, /> (11.50)
Таким чином,отримаємо систему лінійних алгебраїчних рівнянь для обчислення коефіцієнтів />
5.Методнайменших квадратів
У методінайменших квадратів наближений розв'язок крайової задачі (11.4) і (11.5)задасться у вигляді:
/>, (11.54)
де />, /> - лінійно незалежні, двічідиференційовані базисні функції, визначені на відрізку />. Функція /> повинна задовольнятизадані граничні умови (11.37, а), а функції />,/> - відповідні однорідніграничні умови (11.38, б).
Підставимонаближений розв'язок (11.54) у рівняння (11.4) і знайдемо нев'язку:
/>, (11.55)
абсолютнавеличина якої для /> повинна бутиякомога меншою. Тому вимагатимемо, щоб виконувалася умова
/> (11.56)
Значенняінтегралу будуть мінімальними за умов:
/>,
/>,
/>,
… … … …
/>.
На основі цихумов формується система лінійних рівнянь для обчислення коефіцієнтів />.
6.Методскінченних елементів
Метод Гальоркінанакладає певні обмеження на вибір системи базисних функцій, які залежать відграничних умов крайової задачі. Це обмеження значно ускладнює реалізацію методу,особливо під час розв'язання задач математичної фізики. Це обмеження можнаподолати, якщо для апроксимації розв'язку використовувати систему простихбазисних функцій, які залежать від координат вузлів на відрізку />. У цьому випадкурозв'язання крайової задачі зводиться до формування і розв'язання системилінійних алгебраїчних рівнянь, тому метод отримав назву методу скінченнихелементів. Його часто використовують для розв'язання дво- та тривимірнихдиференціальних рівнянь із частинними похідними.
Шукатимемонаближений розв'язок задачі
/>, /> (11.59)
як лінійнукомбінацію простих однотипних функцій
/>, (11.60)
що мають вигляд
/> (11.61)
і, як правило,називаються фінітними. Графік однієї з таких функцій наведено на рис. 2, девидно, що функція не дорівнює нулю тільки на інтервалі />. Щодо множини фінітнихфункцій, які задаються на відрізку /> відомо,що вони лінійно незалежні (більш того, ортогональні в спеціальній енергетичнійнормі) і утворюють повну систему в просторі />.Цедає підставу використати їх як базисні функції в методі Гальоркіна.
/>
рис. 2. Графікфінітної функції.
Запишемо умовуортогональності (11.50):
/>, /> (11.62)
і отримаємосистему лінійних алгебраїчних рівнянь для знаходження невідомих />.Праві частини цих рівняньпозначимо через /> і отримаємо дляїх обчислення вираз
/>(11.63)
Коефіцієнтисистеми рівнянь (11.62) позначимо через
/>
Знайдемо виразидля коефіцієнтів системи рівнянь /> зневідомими />. Підставляючи в останнійвираз />, отримаємо
/>
Перший зінтегралів у цьому виразі обчислимо по частинах:
/>
Оскільки заграничних умов (11.60) використовуються />,базисних функцій від /> до /> і всі вони в точках /> і /> дорівнюють 0, то
/>
Тоді вираз дляобчислення набуває вигляду:
/>(11.64)
Для обчислення /> треба знайти значенняпохідних від фінітних функцій. Із цією метою диференціюємо (11.61) і отримуємо:
/> (11.65)
Функція відміннавід нуля тільки на інтервалі />. Крімтого, на одному і тому ж інтервалі ненульовими є дві базисні функції і їхпохідні з сусідніми індексами (рис. 3), тобто на інтервалі /> відмінні від нуля />, />, />, /> і т. д.
/>
рис. 3. Системафінітних функцій.
У виразі для /> (11.64) добутки />, />, /> можна вважати відміннимивід нуля тому, що на елементарному інтервалі не дорівнюють нулю фінітні функціїта їх похідні, які мають сусідні індекси у випадках, коли />. А це означає, що
/> для />, (11.66)
тобто матрицясистеми /> (11.62) є тридіагональноюматрицею. її ненульові елементи обчислюються таким чином. Формули длядіагональних елементів отримаємо, приймаючи /> увиразі (11.64):
/> (11.67)
Для />, отримаємо формули дляелементів правої бічної діагоналі матриці />:
/>, (11.68)
а для /> - лівої;
/>
Три останнівирази визначають систему алгебраїчних рівнянь (11.62) для невідомихкоефіцієнтів />.
Розглянеморозв’язання задачі (11.59) у випадку неоднорідних граничних умов
/>, /> (11.70)
і зведемо її дорозв'язання задачі з однорідними граничними умовами. Для цього введемо заміну:
/>, де />.
Двічідиференціюючи цю функцію і підставляючи вирази для похідних у рівняння (11.59),отримаємо крайову задачу з однорідними граничними умовами:
/>,
/>, />. (11.71)
Постановказадачі
Щобзнайти єдиний розв'язок звичайного диференціального рівняння, необхідно задатидеякі допоміжні умови, що використовуються для обчислення інтегрування. Длярівняння n-ого порядку потрібно п таких умов. Якщо ці умови задаються дляодного значення незалежної змінної (зокрема, для одного кінця інтервалу, наякому необхідно знайти розв'язок), то говорять про початкові умови для задачіКоші. Якщо ж додаткові умови задаються для значень незалежної змінної на різнихкінцях інтервалу, то мають на увазі крайову задачу і граничні умови для неї.
Двоточковакрайова задача для рівняння другого порядку має такий вигляд:
/>/> (11.1)
ізграничними умовами
/> (11.2)
Першніж застосовувати будь-який чисельний метод, варто перевірити умови, щогарантують існування розв'язку цієї задачі. Наведена нижче теорема визначаєзагальні умови, що забезпечують існування й одиничність розв'язку.
Теорема. Припустимо,що /> неперервна в області
/>
Іщо
/> і />
Тежнеперервні на/>. Якщо існує постійна/>, для якої виконуютьсяумови
/>для всіх />
/> для всіх /> (11.3)
токрайова задача (11.1) (11.2) має єдиний розв'язок /> для/>.
Найчастішезустрічаються і найкраще вивчені двоточкові лінійні крайові задачі виду
/>, /> (11.4)
/>, /> (11.5)
де
/>, />
Умови,які повинні задовольняти функції />, /> і />, для того щоб задача(11.4), (11.5) мала єдиний розв'язок, випливають із теореми як наслідок.
Наслідок. Якщо /> і /> неперервні на /> і />, то задача (11.4), (11.5)має єдиний розв'язок на />.
Граничніумови (11.5) визначають третю крайову задачу для рівняння (11.4). Якщоприпустити, що />, то умови (11.5)визначають першу крайову задачу, а коли /> -другу.
Точне(аналітичне) розв'язання крайових задач — більш складна процедура, ніжзнаходження розв'язку задачі Коші. Це спричинило появу великої кількостінаближених методів. Ці методи можна розділити на дві групи:наближено-аналітичні методи, що дають наближений розв'язок крайової задачі навідрізку /> у вигляді конкретноїаналітичної функції, і чисельні методи, що визначають розвозок у виглядітабличної функції, заданої на сітці відрізка />.
Методскінченних різниць
Ідея методускінченних різниць полягає в тому, що похідні в диференціальному рівнянні(11.4) і граничних умовах (11.5) заміняються їх скінченними різницями. Дляцього спочатку введемо на відрізку /> сітку зкроком />:
/>.
Позначимо через />точний розв'язок задачі(11.1) у і-му вузлі сітки, а через /> -наближений розв'язок у цій точці. Заміняючи в кожному внутрішньому вузлі сіткипохідні різницями, отримаємо різницеві рівняння:
/>, />
Симетричнірізницеві апроксимації похідних першого і другого порядків мають похибкудругого порядку відносно />, тобто />. Це легко довести наоснові розкладання в ряд Тейлора точного розв'язку рівняння. Дійсно, для вузлів/>та /> маємо
/>
/>
з різниці якихотримуємо шуканий результат:
/>,
/> (11.21)
Знайдемо нев’язкурізницевого рівняння
/>.
Оскільки /> є точним розв'язкомрівняння (11.4),
/> та />. (11.22)
Тому різницеверівняння (11.21) апроксимує вихідне диференціальне рівняння
(11.4) також іздругим порядком відносно />.
Теперапроксимуємо граничні умови скінченними різницями:
/>, /> (11.23)
Знайдемо похибкуапроксимації граничних умов. Нев’язки граничних умов (11.23) мають вигляд:
/>, />.
Асиметричнаапроксимація першої похідної на відміну від симетричної має глобальну похибкупершого порядку відносно />, тобто />. Це безпосередньо випливаєз розкладання в ряд Тейлора
/>,
із якогоотримуємо
/>, />
Отже, граничніумови (11.23) апроксимуються з першим порядком за к. Порядок їх апроксимаціїможна підвищити до другого, наприклад, використовуючи співвідношення
/>/>,/> (11.24)
похибкаапроксимації яких також пропорційна />, як ідля випадку симетричної апроксимації похідних. Це випливає із порівняння двохрядів Тейлора:
/>
/>
Якщо перший виразпомножити на 4 і відняти його від другого, отримаємо:
/>.
Після йогопідстановки у формулу (11.24) знаходимо нев'язку у вигляді:
/>
тобто крайоваумова апроксимується з другим порядком відносно />.
У такий же спосібдоводиться, що і друга гранична умова (11.23) апроксимується з другим порядкомвідносно />.
Розглянемо щеодну можливість апроксимації крайових умов типу (11.5) на прикладі умови
/>.
Для цього замежами інтервалу /> вводитьсядодаткова точка />, за допомогоюякої обчислюється перша похідна за симетричною формулою апроксимації:
/>. (11.25)
Точку /> можна виключити,скориставшись співвідношенням (11.25) і різницевою апроксимацієюдиференціального рівняння (11.4) в кінцевій точці інтервалу />.
Отримуєморівняння для граничної умови в точці /> ізпорядком />, яким можна замінитиостаннє рівняння в системі алгебраїчних рівнянь, одержаній у разікусочно-різницевої апроксимації похідних у рівнянні (11.4).
Те ж саме можназробити з першою умовою (11.5) і першим апроксимуючим рівнянням для />. Варто підкреслити, щоврахування граничних умов різних типів впливає тільки на перше й останнєрівняння цієї системи.
Зведемо подібнічлени в рівнянні (11.21) і отримаємо стандартне триточкове різницеве рівняння:
/>, (11.27)
/>.
Включивши досистеми рівнянь (11.25) різницеве рівняння (11.23) чи (11.24), отримаємосистему рівнянь, що містить /> рівнянняз /> невідомими />.
Порівняємо ці дваваріанти апроксимації крайової задачі. У першому з них система лінійнихалгебраїчних рівнянь, утворена рівняннями (11.21) і (11.23), має тридіагональнуматрицю коефіцієнтів, і її можна розв'язати методом прогону. Щоб застосуватиметод прогону в другому випадку, слід створити відповідну тридіагональнуматрицю. Для цього потрібно з першого рівняння (11.27) для />
/>
Маємо рівняння здвома невідомими — /> і />. Замінимо ним першерівняння (11.24). Виконаємо такі ж перетворення з другим (11.24) і останнімрівнянням (11.27) для />:
/>
Виключивши з них />, знаходимо:
/>
Це рівняннямістить дві невідомі — /> і />. Замінимо ним другерівняння (11.27). Два останні рівняння разом із (11.27) утворюють системурівнянь із тридіагональною матрицею, що апроксимує вихідну крайову задачу(11.4), (11.5) з порядком />. Цюсистему також можна розв'язати методом прогону. Метод прогону є стійким, якщоматриця коефіцієнтів діагонально домінантна. Забезпечити діагональнудомінантність можна обранням кроку />. Дляцього необхідно, щоб для системи рівнянь (11.27) виконувались умови:
/> і />, />.
Підсилюючиостанні нерівності, маємо такі обмеження на величину кроку:
/> і />, />. (11.28)
Щобзадовольнялись умови (11.23), мають виконуватись нерівності
/> і />. (11.29)
Наявністьобмежень (11.28) і (11.29) свідчить про умовну стійкість розглянутого методуапроксимації.
Дослідженняточності
Дослідженняточності отриманих виразів при чисельних розрахунках зручно робити за допомогоюапостеріорної оцінки, по швидкості спадання членів відповідного ряду Тейлора.Якщо крок сітки досить малий, то похибка близька до першого відкинутого члена.
У такий спосібпорядок точності результату стосовно кроку сітки дорівнює числу залишенихчленів ряду, чи іншими словами, він дорівнює числу вузлів інтерполяції мінуспорядок похідної. тому мінімальне число вузлів необхідне для обчислення m-оїпохідної, дорівнює m+1, воно забезпечує перший порядок точності.
Ці висновки відповідаютьпринципу: при почленному диференціюванні ряду швидкість його збіжностізменшується.
Якщо врахуватипогіршення збіжності ряду при диференціюванні, то можна зробити висновок:навіть якщо функція задана добре складеною таблицею на досить докладній сітці,то практично чисельним диференціюванням можна визначити першу і другу похідні,а третю і четверту – лише з великою похибкою. Похідні більш високого порядкурідко вдається обчислити з задовільною точністю.
Одним з найбільшпростих і досить ефективних методів оцінки похибки й уточнення отриманихрезультатів є правило Рунге. Для оцінки похибки за правилом Рунге порівнюютьнаближені розв’язки,отримані при різних кроках сітки. При цьому використовується наступнеприпущення: глобальна похибка методу порядку p у точці хiподається у вигляді
/> />.
За формулою Рунге
/>
Таким чином, ізточністю до />(величина більш високогопорядку малості) при h→0 похибка методу має вигляд:
/>
де yi– наближене значення, отримане в точці />зкроком h; y2i– із кроком h/2;p — порядок методу; y(x2i) — точний розв’язок задачі.
Формула Рунге:
/>.
Збіжність різницевої схеми
Постановка задачі
Універсальнимметодом наближеного розв’язання, є метод скінченних різниць. Як задачіпредставлені у вигляді систем нелінійних рівнянь у часткових, які розглядаютьсяу області />
Розв’язокзадачі в /> має додаткові умови:
1) умови при /> називають початковимиумовами;
2) умови на границі /> області /> — крайовимиабо граничними умовами.
Задачаз початковими умовами – називається задачею Коші.
Нехай/>. Тоді для функції /> маємо задачу:
/> (1)
/> (2)
де/>и/> — диференціальніоператори задачі і крайових умов. Припустимо, що відповідно задачі (1-2)поставлені коректно, тобто оператори А и R; область D и їїграниці Г такі, що при виборі відповідних класів функцій і правих частин урівняннях (1) и (2) розв’язок існує, і залежить від початкових даних.
Різницева схема
Введемоу області /> сітку />, яка складається з множинивнутрішніх вузлів /> і множиниграничних вузлів />:
Далірозглянемо сіткові функції /> і з їхдопомогою побудуємо наближений розв’язок задачі (1-2). Для цього відносно /> сформулюємо«різницеву задачу», заміняючи оператори задачі /> і /> і їх сітковим аналогами />и/>. Тоді на сітковомушаблоні /> маємо
/> (3)
/> (4)
Задачу(3)-(4) назвемо різницевою схемою для задачі (1)-(2). Звичайно це алгебраїчнасистема рівнянь відносно />.
Припереході від початкової задачі (1)-(2) до її різницевого аналогу (3)-(4)особливо важливі 3 групи питань:
— існування, єдиність і алгоритм побудови різницевого розв’язку />;
— при яких умовах різницевий розв’язок /> збігаєтьсядо точного розв’язку /> і яка прицьому швидкість збіжності;
— як конкретно вибирати сітку /> іпобудувати різницеву схему />і /> у задачі (3)-(4).
Нев’язка різницевої схеми
Припобудові різницевого рівняння задачі
/>
миотримали задачу, якої точний розв’язок />,як правило, не задовольняє. Сіткову функцію
/>
називаютьнев’язкою сіткового рівняння (3). Її зручно представити на розв’язку и(х)у вигляді:
/> на /> (5)
Аналогічнознаходяться нев’язки граничних умов
/> на /> (5')
Якправило нев’язки /> і /> оцінюють попараметру /> через розклад у рядТейлора в припущені гладкості відповідного розв’язку /> для отриманняпредставлення нев’язки з залишковим членом виду />.
Апроксимація різницевої схеми
Різницева схема (3)-(4) апроксимує задачу (1)-(2), якщо має місце:
/>/> (6)
Тобтовідповідні нев’язки /> 0 к нулю при />.
Апроксимація задачі (1)-(2) має порядок/>,якщо
/> (6')
Уцих випадках норми рахуються для сіткових функцій на /> і /> але у своїх функціональнихпросторах.
Зауваження:
Самрозв’язок задачі (1)-(2), як правило невідомий і використовувати його дляотримання нев’язок /> і /> не можна. Томуберуть широкий клас функцій /> івимагають апроксимації порядку к задачі (1)-(2) />/> , тобто
/>.
Прицьому на розв’язку /> задачі(1)-(2) апроксимація буде не гірше, ніж порядок />
Якправило схема (3)-(4) по різним змінним має різний порядок апроксимації,наприклад, нев’язка рівняння
/>
Такаапроксимація називається абсолютною на відміну від умовної апроксимаціїу випадку, коли, наприклад
/>
Приумовній апроксимації різницеве рівняння може апроксимувати різнідиференціальні задачі.
Стійкість різницевої схеми
Відсутністьстійкості різницевої схеми характеризується тим, що малі помилки, допущені наякому-небудь етапі обчислення, надалі сильно зростають і роблять непридатнимрезультат розрахунку (чи взагалі неможливим сам розрахунок). Звичайно стійкістьрізницевої схеми оцінюють по погрішності вхідних даних, оскільки погрішністьапроксимації, у силу визначення (6), при /> />до нуля. Виділимо вструктурі погрішності ці доданки:
/>
Типовийграфік залежності погрішності сіткового рішення від величини кроку такий:
/>
I — При зменшенні кроку спочатку погрішність усіх схем убуває, тому що істотнозменшується погрішність апроксимації.
П — Для стійких схем погрішність сіткового рішення буде прагнути до скінченоївеличини, зв'язаної з помилкою вхідних даних. Якщо при /> помилка вхідних данихзникає, те — це випадок III. Тобто стійка схема в цьому випадку дозволяєодержати як завгодно високу точність розрахунку.
Якщож схема не стійка (IV), то при /> похибка/> зростає(чи зростає об’ємне стійких обчислень). Похибка /> будемати ненульовий мінімум і вже неможливо одержати як завгодно високу точністьрозрахунку.
Якправило похибка вхідних даних і апроксимації мають степеневийхарактер залежності від />; а нестійкість приводить до зростання похибки розв’язку по експоненціальному закону /> і при /> розрахунки втрачають сенс.Нагадаємо
Різницева схема (3-4)стійка по вхідним даним /> і/>, якщо розв’язок різницевоїсхеми неперервно залежить від вхідних даних і ця залежність рівномірна відноснокроку сітки />, тобто є /> (/> не залежить від />) таке, що
/> (7)
Длялінійних схем різницеве рішення лінійно залежить від вхідних даних (у силулінійності зворотного оператора)і />. Тоді
/>
Зауваження:
Настійкість різницевої схеми впливає не тільки апроксимація рівнянь (1) (тобтооператора А), але, і особливо, крайових умов (2).
Якщозмінних у задачі мало, то розглядають безумовну й умовну стійкість;
Збіжність різницевої схеми
Розв’язуючисіткову задачу (3)-(4) нас цікавить близькість сіткового розв’язку у(х) дорозв’язку и(х) задачі (1)-(2). Різницевий розв’язок у(х) збігаєтьсядо розв’язку и(х), якщо
/> (10)
Різницевий розв’язок має порядок точності />,якщо
/> (10')
Нагадаємоще раз, що ми розглядаємо лише коректні різницеві схеми (3)-(4), тобто рішеннярізницевої схеми існує і єдино при будь-яких вхідних даних /> и /> з заданих класів функцій ісхема стійка по вхідним даної (її рішення неперервно них залежить).
Теорема: Якщо розв’язок задачі (1)-(2) /> існує,різницева схема (3)-(4) коректна и апроксимує задачу (1)-(2), то різницевийрозв’язок /> збігається до точного:
/>
(«Апроксимація + Стійкість =>Збіжність»).
Доведення: Запишемо нев’язку різницевої схеми (3)-(4).
/> (*)
Функціяu(x) задовольняє задачі (*) — збуреній задачі (3)-(4). Так як схемастійка, то />:
/>
Всилу апроксимації /> має місце
/>
Такимчином: /> маємо
/>
тобто/> іпри />
Зауваження:
Якщояка-небудь дана нам умова апроксимується точно, то стійкість по ній можна невимагати, тому що вона не вносить похибки у розв’язок (окрім помилок округлення,тоді стійкість по цим даним потрібна).
Дляумовної апроксимації (чи стійкості) збіжність теж носить умовний характер.
Програмнареалізація(представлена на мові Delphi)
Розв’язатидиференційне рівняння:
/>
З крайовимиумовами:
/>
/>
Розв’язання звикористанням методу Гауса:
unit Unit1;
interface
uses
Windows, Messages, SysUtils,Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls,Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Image1: TImage;
Image2: TImage;
Label2: TLabel;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
LabeledEdit6: TLabeledEdit;
LabeledEdit7: TLabeledEdit;
LabeledEdit8: TLabeledEdit;
LabeledEdit9: TLabeledEdit;
LabeledEdit10: TLabeledEdit;
LabeledEdit11: TLabeledEdit;
Label3: TLabel;
Label4: TLabel;
SpeedButton1: TSpeedButton;
LabeledEdit12: TLabeledEdit;
Label5: TLabel;
Image3: TImage;
procedure FormCreate(Sender:TObject);
procedure SpeedButton1Click(Sender:TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
type Dynmas=array of array of real;
dynvec=array of real;
var a,b,pi,qi,fi,a1,a2,b1,b2,AA,BB:real;
eps,h:real;
c:dynmas;
st,m,i:integer;
x,d,y,memory:dynvec;
t_all,tx,ty,k_i:textfile;
g:boolean;
str:string;
implementation
uses Unit2;
{$R *.dfm}
function Gauss(n:Integer; a:dynmas;b:dynVec; var x:dynVec):Boolean;
Var i,j,k,l:Integer;
q,m,t:real;
Begin
for k:=0 to n-2 do
begin
l:=-1;
m:=0;
for i:=k to n-1 do
if Abs(a[i, k])>m then
begin
m:=Abs(a[i, k]);
l:=i;
end;
if l=-1 then
begin
Gauss:=false;
Exit;
end;
if lk then
begin
For j:=0 to n-1 do
begin
t:=a[k,j];
a[k,j]:=a[l,j];
a[l,j]:=t;
end;
t:=b[k];
b[k]:=b[l];
b[l]:=t;
end;
for i:=k+1 to n-1 do
begin
q:=a[i,k]/a[k,k];
for j:=0 to n-1 do
If j=k then
a[i,j]:= 0
else
a[i,j]:= a[i,j]-q*a[k,j];
b[i]:=b[i]-q*b[k];
end;
end;
if a[n-1,n-1]0 then
x[n-1]:=b[n-1]/a[n-1,n-1]
else
begin
Gauss:=false;
Exit;
end;
for i:=n-2 downto 0 do
begin
t:=0;
for j:=1 to n-i do
t:=t+a[i,i+j]*x[i+j];
x[i]:=(1/a[i,i])*(b[i]-t);
end;
Gauss := true;
end;
procedure Koef(var s:dynmas;k:integer; h:real; v:dynvec; var z:dynvec);
var i:integer;
begin
s[0,0]:=h*a1-a2; s[0,1]:=a2;
z[0]:=h*AA;
for i:=0 to 2*(k-1) do
begin
s[i+1,i]:=1-(h*pi*ln(v[i]))/2;
s[i+1,i+1]:=h*h*qi-2;
s[i+1,i+2]:=1+(h*pi*ln(v[i]))/2;
z[i+1]:=h*h*fi;
end;
s[2*k,2*k-1]:=-b2; s[2*k,2*k]:=h*b1+b2;
z[2*k]:=h*BB;
end;
procedure TForm1.FormCreate(Sender:TObject);
begin
getdir(0,str);
str:=str+'\otv\';
end;
procedureTForm1.SpeedButton1Click(Sender: TObject);
begin
if (form1.LabeledEdit1.Text='') and
(form1.LabeledEdit9.Text='') and
(form1.LabeledEdit12.Text='') then
begin
showmessage('так як ви не ввеликоефіцієнти, то программа буде задіяна зі стандартним набором данних');
pi:=-1;
qi:=-2;
fi:=1;
a1:=1;
a2:=-1;
a:=0.5;
AA:=1;
b1:=1;
b2:=1;
b:=1.5;
BB:=0;
eps:=0.0001;
end
else
begin
pi:=strtofloat(form1.LabeledEdit1.Text);
qi:=strtofloat(form1.LabeledEdit2.Text);
fi:=strtofloat(form1.LabeledEdit3.Text);
a1:=strtofloat(form1.LabeledEdit4.Text);
a2:=strtofloat(form1.LabeledEdit5.Text);
a:=strtofloat(form1.LabeledEdit6.Text);
AA:=strtofloat(form1.LabeledEdit7.Text);
b1:=strtofloat(form1.LabeledEdit8.Text);
b2:=strtofloat(form1.LabeledEdit9.Text);
b:=strtofloat(form1.LabeledEdit10.Text);
BB:=strtofloat(form1.LabeledEdit11.Text);
eps:=strtofloat(form1.LabeledEdit12.Text);
end;
form2.Series1.Clear;
AssignFile(t_all,str+'otv.txt');
AssignFile(tx,str+'otv_x.txt');
AssignFile(ty,str+'otv_y.txt');
AssignFile(k_i,str+'otv_krok_vuzl.txt');
Rewrite(t_all);
m:=1;
g:=false;
While not g do
begin
h:=(b-a)/(2*m);
SetLength(y,2*m+1);
SetLength(x,2*m+1);
SetLength(d,2*m+1);
for i:=0 to 2*m do
x[i]:=a+i*h;
Setlength(c,2*m+1);
for i:=0 to 2*m do
Setlength(c[i],2*m+1);
Koef(c,m,h,x,d);
if gauss(2*m+1,c,d,y)truethen
break;
if m1 then
for i:=0 to m do
if abs(memory[i]-y[2*i])/15>epsthen
begin
g:=false;
break;
end
else
g:=true;
SetLength(memory,2*m+1);
memory:=Copy(y);
if g then
writeln(t_all,'Крайова задачарозвязана з точністю eps =',eps:0:4);
for i:=0 to 2*m do
begin
write(t_all,y[i]:0:10);
write(t_all,' ');
writeln(t_all,x[i]:0:10);
end;
Writeln(t_all,'Кількість вузлів — ',2*m+1);
Writeln(t_all,'Крок сітки — ',h:0:10);
Writeln(t_all);
st:=m;
m:=m*2;
end;
rewrite(ty);
rewrite(tx);
rewrite(k_i);
writeln(k_i,h:0:10);
writeln(k_i,2*m+1);
form2.StringGrid1.ColCount:=2*st+2;
for i:=0 to (2*st+1) do
begin
form2.StringGrid1.Cells[i+1,0]:=inttostr(i+1);
form2.StringGrid1.Cells[i+1,1]:=floattostr(x[i]);
form2.StringGrid1.Cells[i+1,2]:=floattostr(y[i]);
writeln(ty,y[i]:0:10);
writeln(tx,x[i]:0:10);
end;
for i:=0 to (2*st) do
form2.Series1.AddXY(x[i],y[i]);
form2.Label1.Caption:='Крок сітки — '+floattostr(h);
form2.Label2.Caption:='Кількістьвузлів — '+floattostr(2*st+1);
CloseFile(t_all);
CloseFile(tx);
CloseFile(ty);
CloseFile(k_i);
form2.Show;
end;
end.
Результати записуємо у файл.
Графік отриманий програмою:
/>
Розв’язання звикористанням методу прогонки:
unit Unit1;
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ExtCtrls, StdCtrls, Buttons;
type
TForm1 =class(TForm)
Panel1: TPanel;
Label1: TLabel;
Image1: TImage;
Image2: TImage;
Label2: TLabel;
LabeledEdit1:TLabeledEdit;
LabeledEdit2:TLabeledEdit;
LabeledEdit3:TLabeledEdit;
LabeledEdit4:TLabeledEdit;
LabeledEdit5:TLabeledEdit;
LabeledEdit6:TLabeledEdit;
LabeledEdit7:TLabeledEdit;
LabeledEdit8:TLabeledEdit;
LabeledEdit9:TLabeledEdit;
LabeledEdit10:TLabeledEdit;
LabeledEdit11:TLabeledEdit;
Label3: TLabel;
Label4: TLabel;
SpeedButton1:TSpeedButton;
LabeledEdit12:TLabeledEdit;
Label5: TLabel;
Image3: TImage;
procedureFormCreate(Sender: TObject);
procedureSpeedButton1Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form1: TForm1;
type Dynmas=arrayof array of real;
dynvec=array ofreal;
var a,b,pi,qi,fi,a1,a2,b1,b2,AA,BB:real;
eps,h:real;
c:dynmas;
st,m,i:integer;
w_,v_,x,d,y,memory:dynvec;
t_all,tx,ty,k_i:textfile;
g:boolean;
time1,time2,vremja:longint;
str:string;
implementation
uses Unit2;
{$R *.dfm}
FunctionTimer:longint;
constc60:longint=60;
varh,m,s,s100:word;
begin
decodetime(now,h,m,s,s100);
timer:=((h*c60+m)*c60+s)*100+s100;
end;
functionprogonka(n:Integer; a:dynmas; b:dynVec; var x:dynVec):boolean;
Vari,j,k,l:Integer;
q,m,t:real;
ls:integer;
Begin
{прямой ход}
w_[0]:=(-a[0,1]/a[0,0]);
v_[0]:=(d[0]/a[0,0]);
for i:=1 to n-1do
begin
w_[i]:=-(a[i,i+1]/(a[i,i-1]*w_[i-1]+a[i,i]));
v_[i]:=(d[i]-a[i,i-1]*v_[i-1])/(a[i,i-1]*w_[i-1]+a[i,i]);
end;
{w_[n]:= ;
v_[n]:= ;}
for i:=0 to n-1do
begin
x[i]:=v_[i]+w_[i]*x[i+1];
end;
x[n-1]:=v_[n-1];
{обратный ход}
x[n-1]:=v_[n-1];
for i:=n-1downto 0 do
begin
x[i]:=w_[i]*x[i+1]+v_[i];
end;
{for k:=0 to n-2do
begin
l:=-1;
m:=0;
for i:=k to n-1do
if Abs(a[i, k])>mthen
begin
m:=Abs(a[i, k]);
l:=i;
end;
if l=-1 then
begin
progonka:=false;
Exit;
end;
if lkthen
begin
For j:=0 to n-1do
begin
t:=a[k,j];
a[k,j]:=a[l,j];
a[l,j]:=t;
end;
t:=b[k];
b[k]:=b[l];
b[l]:=t;
end;
for i:=k+1 ton-1 do
begin
q:=a[i,k]/a[k,k];
for j:=0 to n-1do
If j=k then
a[i,j]:= 0
else
a[i,j]:=a[i,j]-q*a[k,j];
b[i]:=b[i]-q*b[k];
end;
end;
ifa[n-1,n-1]0 then
x[n-1]:=b[n-1]/a[n-1,n-1]
else
begin
progonka:=false;
Exit;
end;
for i:=n-2downto 0 do
begin
t:=0;
for j:=1 to n-ido
t:=t+a[i,i+j]*x[i+j];
x[i]:=(1/a[i,i])*(b[i]-t);
end;}
progonka :=true;
end;
procedureKoef(var s:dynmas; k:integer; h:real; v:dynvec; var z:dynvec);
var i:integer;
begin
s[0,0]:=h*a1-a2;s[0,1]:=a2;
z[0]:=h*AA;
for i:=0 to2*(k-1) do
begin
s[i+1,i]:=1-(h*pi*ln(v[i]))/2;
s[i+1,i+1]:=h*h*qi-2;
s[i+1,i+2]:=1+(h*pi*ln(v[i]))/2;
z[i+1]:=h*h*fi;
end;
s[2*k,2*k-1]:=-b2;s[2*k,2*k]:=h*b1+b2;
z[2*k]:=h*BB;
end;
procedureTForm1.FormCreate(Sender: TObject);
begin
getdir(0,str);
str:=str+'\otv\';
vremja:=0;
end;
procedureTForm1.SpeedButton1Click(Sender: TObject);
begin
if(form1.LabeledEdit1.Text='') and
(form1.LabeledEdit9.Text='')and
(form1.LabeledEdit12.Text='')then
begin
showmessage('такяк ви не ввели коефіцієнти, то программа буде задіяна зі стандартним наборомданних');
pi:=-1;
qi:=-2;
fi:=1;
a1:=1;
a2:=-1;
a:=0.5;
AA:=1;
b1:=1;
b2:=1;
b:=1.5;
BB:=0;
eps:=0.0001;
end
else
begin
pi:=strtofloat(form1.LabeledEdit1.Text);
qi:=strtofloat(form1.LabeledEdit2.Text);
fi:=strtofloat(form1.LabeledEdit3.Text);
a1:=strtofloat(form1.LabeledEdit4.Text);
a2:=strtofloat(form1.LabeledEdit5.Text);
a:=strtofloat(form1.LabeledEdit6.Text);
AA:=strtofloat(form1.LabeledEdit7.Text);
b1:=strtofloat(form1.LabeledEdit8.Text);
b2:=strtofloat(form1.LabeledEdit9.Text);
b:=strtofloat(form1.LabeledEdit10.Text);
BB:=strtofloat(form1.LabeledEdit11.Text);
eps:=strtofloat(form1.LabeledEdit12.Text);
end;
time2:=timer;
form2.Series1.Clear;
AssignFile(t_all,str+'otv.txt');
AssignFile(tx,str+'otv_x.txt');
AssignFile(ty,str+'otv_y.txt');
AssignFile(k_i,str+'otv_krok_vuzl.txt');
Rewrite(t_all);
m:=1;
g:=false;
While not g do
begin
h:=(b-a)/(2*m);
SetLength(y,2*m+1);
SetLength(x,2*m+1);
SetLength(d,2*m+1);
SetLength(w_,2*m+1);
SetLength(v_,2*m+1);
for i:=0 to 2*mdo
x[i]:=a+i*h;
Setlength(c,2*m+1);
for i:=0 to 2*mdo
Setlength(c[i],2*m+1);
Koef(c,m,h,x,d);
ifprogonka(2*m+1,c,d,y)true then
break;
if m1then
for i:=0 to m do
ifabs(memory[i]-y[2*i])/15>eps then
begin
g:=false;
break;
end
else
g:=true;
SetLength(memory,2*m+1);
memory:=Copy(y);
if g then
writeln(t_all,'Крайовазадача розвязана з точністю eps =',eps:0:4);
for i:=0 to 2*mdo
begin
write(t_all,y[i]:0:10);
write(t_all,' ');
writeln(t_all,x[i]:0:10);
end;
Writeln(t_all,'Кількістьвузлів — ',2*m+1);
Writeln(t_all,'Кроксітки — ',h:0:10);
Writeln(t_all);
st:=m;
m:=m*2;
end;
rewrite(ty);
rewrite(tx);
rewrite(k_i);
writeln(k_i,h:0:10);
writeln(k_i,2*m+1);
form2.StringGrid1.ColCount:=2*st+2;
for i:=0 to(2*st+1) do
begin
form2.StringGrid1.Cells[i+1,0]:=inttostr(i+1);
form2.StringGrid1.Cells[i+1,1]:=floattostr(x[i]);
form2.StringGrid1.Cells[i+1,2]:=floattostr(y[i]);
writeln(ty,y[i]:0:10);
writeln(tx,x[i]:0:10);
end;
for i:=0 to(2*st) do
form2.Series1.AddXY(x[i],y[i]);
form2.Label1.Caption:='Кроксітки — '+floattostr(h);
form2.Label2.Caption:='Кількістьвузлів — '+floattostr(2*st+1);
time1:=timer;
vremja:=abs(time2-time1);
form2.Label3.Caption:='часроботи: '+floattostr(vremja*0.01)+' секунд(и)';
writeln(k_i,vremja*0.01:0:5);
CloseFile(t_all);
CloseFile(tx);
CloseFile(ty);
CloseFile(k_i);
form2.Show;
end;
end
Результатизаписуємо у файл.
Графік отриманийпрограмою:
/>
Якщопроаналізувати ці два приклади програми:
1)з використаннямметоду Гауса для розв’язання тридіагональної матриці;
2)з використаннямметоду прогонки для розв’язання тридіагональної матриці.
Ми можемосказати, що для однієї і тієї ж задачі час розв’язання з використанням 1огометоду складає 2,99 сек., а для 2ого 0.1 сек. Така розбіжність у часі випливаєз того, що метод прогону є модифікацією методу Гауса і призначений спеціальнодля розв’язку матриць з 3и і 5и діагональними структурами.
Розв’язуємозадачу за допомогою пакету Mathematica:
/>
100
0.01
-0.123705
/>
MultipleListPlot[{{0.5,0.154796},{0.51,0.146438},{0.52,0.138265},{0.53,0.130272},{0.54,0.122456},{0.55,0.114812},{0.56,0.107336},{0.57,0.100024},{0.58,0.0928731},{0.59,0.0858792},{0.6,0.079039},{0.61,0.0723491},{0.62,0.0658064},{0.63,0.0594079},{0.64,0.0531504},{0.65,0.0470312},{0.66,0.0410475},{0.67,0.0351966},{0.68,0.0294758},{0.69,0.0238829},{0.7,0.0184152},{0.71,0.0130705},{0.72,0.00784647},{0.73,0.00274101},{0.74,-0.002248},{0.75,-0.00712262},{0.76,-0.0118848},{0.77,-0.0165364},{0.78,-0.0210793},{0.79,-0.0255153},{0.8,-0.029846},{0.81,-0.0340732},{0.82,-0.0381983},{0.83,-0.0422231},{0.84,-0.0461488},{0.85,-0.049977},{0.86,-0.0537091},{0.87,-0.0573463},{0.88,-0.06089},{0.89,-0.0643414},{0.9,-0.0677017},{0.91,-0.0709721},{0.92,-0.0741536},{0.93,-0.0772473},{0.94,-0.0802542},{0.95,-0.0831754},{0.96,-0.0860117},{0.97,-0.0887641},{0.98,-0.0914334},{0.99,-0.0940204},{1.,-0.096526},{1.01,-0.0989509},{1.02,-0.101296},{1.03,-0.103561},{1.04,-0.105748},{1.05,-0.107857},{1.06,-0.109889},{1.07,-0.111844},{1.08,-0.113722},{1.09,-0.115525},{1.1,-0.117252},{1.11,-0.118904},{1.12,-0.120482},{1.13,-0.121985},{1.14,-0.123415},{1.15,-0.124771},{1.16,-0.126054},{1.17,-0.127264},{1.18,-0.128401},{1.19,-0.129466},{1.2,-0.130459},{1.21,-0.131379},{1.22,-0.132228},{1.23,-0.133004},{1.24,-0.133708},{1.25,-0.134341},{1.26,-0.134902},{1.27,-0.135391},{1.28,-0.135808},{1.29,-0.136154},{1.3,-0.136427},{1.31,-0.136628},{1.32,-0.136757},{1.33,-0.136814},{1.34,-0.136798},{1.35,-0.136709},{1.36,-0.136547},{1.37,-0.136312},{1.38,-0.136004},{1.39,-0.135621},{1.4,-0.135164},{1.41,-0.134633},{1.42,-0.134026},{1.43,-0.133344},{1.44,-0.132586},{1.45,-0.131752},{1.46,-0.130841},{1.47,-0.129852},{1.48,-0.128786},{1.49,-0.127641},{1.5,-0.126416}},{{0.5,0.159038},{0.51,0.150628},{0.52,0.142405},{0.53,0.134363},{0.54,0.126498},{0.55,0.118807},{0.56,0.111285},{0.57,0.103929},{0.58,0.0967336},{0.59,0.0896968},{0.6,0.0828146},{0.61,0.0760838},{0.62,0.0695011},{0.63,0.0630634},{0.64,0.0567678},{0.65,0.0506112},{0.66,0.0445911},{0.67,0.0387046},{0.68,0.0329491},{0.69,0.0273222},{0.7,0.0218214},{0.71,0.0164443},{0.72,0.0111888},{0.73,0.00605251},{0.74,0.00103346},{0.75,-0.00387045},{0.76,-0.00866119},{0.77,-0.0133407},{0.78,-0.0179107},{0.79,-0.0223731},{0.8,-0.0267296},{0.81,-0.0309819},{0.82,-0.0351315},{0.83,-0.0391799},{0.84,-0.0431288},{0.85,-0.0469795},{0.86,-0.0507334},{0.87,-0.0543918},{0.88,-0.0579562},{0.89,-0.0614276},{0.9,-0.0648073},{0.91,-0.0680964},{0.92,-0.0712961},{0.93,-0.0744074},{0.94,-0.0774314},{0.95,-0.0803691},{0.96,-0.0832213},{0.97,-0.085989},{0.98,-0.0886731},{0.99,-0.0912744},{1.,-0.0937936},{1.01,-0.0962317},{1.02,-0.0985892},{1.03,-0.100867},{1.04,-0.103065},{1.05,-0.105185},{1.06,-0.107227},{1.07,-0.109192},{1.08,-0.11108},{1.09,-0.112891},{1.1,-0.114627},{1.11,-0.116287},{1.12,-0.117872},{1.13,-0.119382},{1.14,-0.120819},{1.15,-0.122181},{1.16,-0.123469},{1.17,-0.124684},{1.18,-0.125825},{1.19,-0.126894},{1.2,-0.12789},{1.21,-0.128813},{1.22,-0.129664},{1.23,-0.130442},{1.24,-0.131148},{1.25,-0.131781},{1.26,-0.132342},{1.27,-0.132831},{1.28,-0.133248},{1.29,-0.133592},{1.3,-0.133863},{1.31,-0.134062},{1.32,-0.134189},{1.33,-0.134242},{1.34,-0.134222},{1.35,-0.134129},{1.36,-0.133962},{1.37,-0.133722},{1.38,-0.133407},{1.39,-0.133018},{1.4,-0.132554},{1.41,-0.132015},{1.42,-0.1314},{1.43,-0.13071},{1.44,-0.129943},{1.45,-0.129098},{1.46,-0.128177},{1.47,-0.127177},{1.48,-0.126099},{1.49,-0.124942},{1.5,-0.123705}},PlotLegend{Mathematica,Riznmethod},PlotJoined{False,True},PlotPosition{0.3,-0.5}]
Отримуємографіки:
/>
де червона –метод скінченних різниць.
синя –стандартний метод пакету Mathematica
Висновки
Крайова задачадля звичайних диференціальних рівнянь є набагато складнішою, ніж задача Коші.Одним із підходів до розв'язання цієї задачі є зведення її до задачі Коші зізмінними початковими умовами. Розв'язок задачі отримують багаторазовимрозв'язанням задачі Коші.
У загальномувипадку для розв'язання двоточкової крайової задачі (одно- чи багатовимірної,лінійної чи нелінійної) доцільно застосовувати метод прицілювання, а длярозв'язання окремих лінійних одновимірних задач — метод композиції двохрозв'язків задачі Коші з різними початковими умовами.
Ефективнимметодом розв'язання лінійної крайової задачі для диференціального рівняння другогопорядку є метод скінченних різниць, у якому використовуються різницеві схемиапроксимації для похідних першого і другого порядків. У результаті крайовазадача перетворюється на задачу розв'язання системи лінійних рівнянь ізтридіагональною матрицею. Цю систему можна розв'язати методом прогону.
Метод скінченнихрізниць дозволяє також обчислювати власні значення і власні функції крайовоїзадачі, які визначають нетривіальні розв'язки однорідної крайової задачі.
Метод скінченнихрізниць можна застосовувати і для розв'язання нелінійних крайових задач, але вцьому випадку необхідно лінеаризовувати нелінійні функції, що входять в умовузадачі.
Розв'язоккрайової задачі у вигляді апроксимуючого аналітичного виразу отримують методамиколокацій, Гальоркіна і найменших квадратів введенням базисних функцій, яківраховують граничні умови.
Коефіцієнти длябазисних функцій та їх композиції, які апроксимують розв'язок крайової задачі,у методі колокацій вибирають з умови нульової нев'язки в обраних вузлахінтервалу розв'язку, у методі найменших квадратів — з умови мінімуму квадратунев'язки, а в методі Гальоркіна — з умови ортогональності нев'язки до обранихбазисних функцій.
У сучаснихматематичних пакетах розв'язання крайових задач для рівнянь з частиннимипохідними конкуренцію розглянутим методам складає метод скінчених елементів, щобазується на концепціях метода Гальоркіна за умови спеціального вибору базиснихфункцій.
Література
1.Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков «Численныеметоды»
2.В.А.Буслов, С.Л.Яковлев «Численные методы ІІ.Решениеуравнений».-Курс лекций,- СПб, 2001.
3.Н.Н.Калиткин «Численные методы»
4.А.А.Самарский, А.В.Гулин «Численные методы»,-Москва,- «Наука»,-1989г.
5.Б.П.Демидович, И.А.Марон, Э.Э.Шувалов «Численныеметоды анализа»,-ред. Б.П.Демидовича,- Москва,- «Наука»,- 1967г.