Рішення параболічних рівнянь

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

MACROBUTTON MTEditEquationSection2 Equation Chapter 1 Section 1 SEQ MTEqn \ r \ * MERGEFORMAT SEQ MTSec \ r 1 \ * MERGEFORMAT SEQ MTChap \ r 1 \ * MERGEFORMAT Реферат

У курсовій роботі розглядається метод сіток рішення параболічних рівнянь. Теоретична частина включає опис загальних принципів методу, його застосування до розв'язання параболічних рівнянь, дослідження розв'язності одержуваної системи різницевих рівнянь. У практичній частині розробляється програма для чисельного вирішення поставленого завдання. У додатку представлений текст програми і результати виконання тестових розрахунків.

Обсяг курсової роботи: 33 с.
Ілюстрацій: 5.
Графіків: 1.
Джерел: 4.
Ключові слова: параболічне рівняння, рівняння теплопровідності, метод сіток, крайова задача, кінцеві різниці.

Зміст
Введення
1. Теоретична частина
1.1 Метод сіток рішення рівнянь параболічного типу
1.2 Метод прогонки рішення різницевої задачі для рівнянь параболічного типу
1.3 Оцінка похибки і збіжність методу сіток
1.4 Доказ стійкості різницевої схеми
2. Реалізація методу
2.1 Розробка програмного модуля
2.2 Опис логіки програмного модуля
2.3 Приклад роботи програми
Висновок
Список джерел
Додаток

Введення
До диференціальним рівнянням з приватними похідними приходимо при вирішенні найрізноманітніших завдань. Наприклад, за допомогою диференціальних рівнянь з частинними похідними можна вирішувати задачі теплопровідності, дифузії, багатьох фізичних і хімічних процесів.
Як правило, знайти точне рішення цих рівнянь не вдається, тому найбільш широке застосування отримали наближені методи їх вирішення. У даній роботі обмежимося розглядом диференціальних рівнянь з частинними похідними другого порядку, а точніше диференціальними рівняннями з приватними похідними другого порядку параболічного типу, коли ці рівняння є лінійними, а шукана функція залежить від двох змінних. У загальному випадку таке рівняння записується таким чином:
.
Зауважимо, що чисельними методами доводиться вирішувати і нелінійні рівняння, але знаходити їх рішення багато важче, ніж рішення лінійних рівнянь.
введемо в розгляд величину . У тому випадку, коли рівняння називається параболічним. У разі, коли величина не зберігає знак, маємо змішаний тип диференціального рівняння. Слід зазначити, що в диференціальному рівнянні всі функції є відомими, і вони визначені в області , В якій ми шукаємо рішення.

1. Теоретична частина
1.1 Метод сіток рішення рівнянь параболічного типу
Для вирішення диференціальних рівнянь параболічного типу існує декілька методів їх чисельного розв'язання на ЕОМ, однак особливе положення займає метод сіток, так як він забезпечує найкращі співвідношення швидкості, точності отриманого рішення і простоти реалізації обчислювального алгоритму. Метод сіток ще називають методом кінцевих різниць. Нехай дано диференціальне рівняння
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 1)
Потрібно знайти функцію в області з кордоном при заданих крайових умовах. Згідно з методом сіток у плоскій області будується сіткова область , Що складається з однакових клітинок. При цьому область повинна якомога краще наближати область . Сіткова область (тобто сітка) складається з ізольованих точок, які називаються вузлами сітки. Число вузлів буде характеризуватися основними розмірами сітки : Чим менше , Тим більше вузлів містить сітка. Вузол сітки називається внутрішнім, якщо він належить області , А всі сусідні вузли належать сітці . В іншому випадку він називається граничним. Сукупність граничних вузлів утворює кордон сіткової області .
Сітка може складатися з клітин різної конфігурації: квадратних, прямокутних, трикутних і інших. Після побудови сітки вихідне диференціальне рівняння замінюється різницевим рівнянням у всіх внутрішніх вузлах сітки. Потім на підставі граничних умов встановлюються значення шуканого рішення в граничних вузлах. Приєднуючи граничні умови сіткової завдання до різницевих рівнянь, записаних для внутрішніх вузлів, отримуємо систему рівнянь, з якої визначаємо значення шуканого рішення у всіх вузлах сітки.
Заміна диференціального рівняння різницевим може бути здійснена різними способами. Один із способів апроксимації полягає в тому, що похідні, що входять в диференціальне рівняння, замінюються лінійними комбінаціями значень функції у вузлах сітки з тих чи інших формулами чисельного диференціювання. Різні формули чисельного диференціювання мають різну точність, тому від вибору формул апроксимації залежить якість апроксимації диференціального рівняння різницевим рівнянням.
Розглянемо неоднорідне рівняння теплопровідності, що є окремим випадком рівнянь параболічного типу:
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 2)
- Відома функція.
Будемо шукати рішення цього рівняння в області

Зауважимо, що цю півсмуги завжди можна привести до півсмузі, коли . Рівняння (1.2) будемо вирішувати з початковими умовами:
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 3)
- Відома функція, і крайовими умовами:

MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 4)
де - Відомі функції змінної .
Для вирішення завдання область покриємо сіткою .

Вузли сітки, що лежать на прямих , і будуть граничними. Всі інші вузли будуть внутрішніми. Для кожного внутрішнього вузла диференціальне рівняння (1.2) замінимо різницевим. При цьому для похідної скористаємося наступною формулою:
.
Для довільної запишемо наступні формули:
,

,
.
Чи можемо отримати три види різницевих рівнянь:
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 5)
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 6)
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 7)
.
Різницеві рівняння (1.5) апроксимують рівняння (1.2) з похибкою , Рівняння (1.6) - із такою ж похибкою, а рівняння (1.7) вже апроксимує рівняння (1.2) з похибкою .
У різницевої схемою (1.5) задіяні 4 вузли. Конфігурація схеми (1.5) має вигляд:


У схемі (1.6) також беруть участь 4 вузли, і ця схема має вигляд:

У схемі (1.7) беруть участь 5 вузлів, і ця схема має вигляд:

Перша і третя схеми - явні, друга схема неявна. У випадку явних схем значення функції у вузлі чергового шару можна знайти, знаючи значення у вузлах попередніх шарів. У разі неявних схем для знаходження значень розв'язку у вузлах чергового шару доводиться розв'язувати систему рівнянь.
Для вузлів початкового (нульового) шару значення рішення виписуються з допомогою початкової умови (1.3):
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 8)
Для граничних вузлів, що лежать на прямих і , Замінивши похідні за формулами чисельного диференціювання, отримуємо з граничних умов (1.4) наступні рівняння:

MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 9)
Рівняння (1.9) апроксимують граничні умови (1.4) з похибкою , Так як використовуємо односторонні формули чисельного диференціювання. Похибка апроксимації можна знизити, якщо використовувати більш точні односторонні (з трьома вузлами) формули чисельного диференціювання.
Приєднуючи до системи різницевих рівнянь, записаних для внутрішніх вузлів, початкові та граничні умови (1.8) і (1.9) для різницевої задачі отримаємо повні різницеві схеми трьох видів. Для проведення обчислень найпростішою схемою надається перша: достатньо на підставі початкової умови знайти значення функції у вузлах шару , Щоб надалі послідовно визначати значення рішення у вузлах верств і т.д.
Третя схема також вельми проста для проведення обчислень, але при її використанні необхідно окрім значень рішення у вузлах шару знайти якимось чином значення функції і в шарі . Далі обчислювальний процес легко організовується. У разі другої схеми, яка є неявної, обов'язково доводиться розв'язувати систему рівнянь для знаходження рішення сіткової завдання.
З точки зору точкової апроксимації третя схема найточніша.
Введемо в розгляд параметр . Тоді наші різницеві схеми можна переписати, вводячи вказаний параметр. При цьому найпростіший їх вигляд буде при .
У будь-якому випадку згідно з методом сіток будемо мати стільки рівнянь, скільки є невідомих (значення шуканої функції у вузлах). Число невідомих дорівнює числу всіх вузлів сітки. Вирішуючи систему рівнянь, отримуємо рішення поставленої задачі.
Розв'язність цієї системи для явних схем питань не викликає, тому що всі дії виконуються в явно певній послідовності. У разі неявних схем розв'язність системи слід досліджувати в кожному конкретному випадку. Важливим питанням є питання про те, на скільки знайдені рішення добре (адекватно) відображають точні рішення, і чи можна необмежено згущуючи сітку (зменшуючи крок по осях) отримати наближені рішення, як завгодно близькі до точних рішень? Це питання про збіжність методу сіток.
На практиці слід застосовувати сходяться різницеві схеми, причому тільки ті з них, які є стійкими, тобто при використанні яких невеликі помилки в початкових або проміжних результатах не призводять до великих відхилень від точного рішення. Завжди слід використовувати стійкі різницеві схеми, проводячи відповідні дослідження на стійкість.
Перша з побудованих вище різницевих схем у разі першої крайової задачі буде стійкою при . Друга схема стійка при всіх значеннях величини . Третя схема нестійка для будь-яких , Що зводить нанівець всі її переваги і робить неможливою до застосування на ЕОМ.
Явні схеми прості для організації обчислювального процесу, але мають один дуже вагомий недолік: для їх стійкості доводиться накладати сильні обмеження на сітку. Неявні схеми вільні від цього недоліку, але є інша проблема - треба розв'язувати системи рівнянь великої розмірності, що на практиці при знаходженні вирішення складних рівнянь в дальній області з високим ступенем точності може потребувати великих обсягів пам'яті ЕОМ і часу на очікування кінцевого результату. На щастя, прогрес не стоїть на місці і вже зараз потужності сучасних ЕОМ цілком достатньо для вирішення поставлених перед ними завдань.
1.2 Метод прогонки рішення різницевої задачі для рівнянь параболічного типу
Розглянемо окремий випадок задачі, поставленої в попередньому розділі. В області

знайти рішення рівняння
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 10)
з граничними умовами
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 11)
і початковою умовою
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 12)
Розглянемо стійку обчислювальну схему, для якої величина не є обмеженою зверху, а, значить, крок по осі і може бути обраний досить великим. Покриємо область сіткою

Запишемо різницеве ​​рівняння, що апроксимує диференціальне рівняння (1.10) у всіх внутрішніх вузлах шару . При цьому будемо використовувати такі формули:
,
.
Ці формули має похибку . У результаті рівняння (1.10) замінюється різницевим:
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 13)
Перепишемо (1.13) у вигляді:
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 14)
Дана обчислювальна схема має наступну конфігурацію:


MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 15)
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 16)
Система (1.14) - (1.16) являє собою різницеву завдання, відповідну крайовій задачі (1.10) - (1.12).
За величину ми поклали .
(1.14) - (1.16) є система лінійних алгебраїчних рівнянь з 3-діагональною матрицею, тому її резонно вирішувати методом прогонки, так як він у декілька разів перевершує за швидкістю метод Гаусса.
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 17)
Тут , - Деякі коефіцієнти, що підлягають визначенню. Замінивши в (1.17) на будемо мати:
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 18)
Підставивши рівняння (1.18) в (1.14) отримаємо:

. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 19)
Порівнявши (1.17) і (1.19) знайдемо, що:
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 20)
Покладемо в (1.14) і знайдемо з нього :
,
.
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 21)
Зауважимо, що в другій формулі (1.21) величина підлягає заміні на згідно з першим умові (1.15).
За допомогою формул (1.21) і (1.20) проводимо прогонку в прямому напрямку. У результаті знаходимо величини

Потім здійснюємо зворотний хід. При цьому скористаємося другий з формул (1.15) і формулою (1.17). Отримаємо наступний ланцюжок формул:

MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 22)
Таким чином, відправляючись від початкового шару , На якому відоме рішення, ми послідовно можемо знайти значення шуканого рішення у всіх вузлах стеки.
Отже, ми побудували неявну схему вирішення диференціальних рівнянь параболічного типу методом сіток.
1.3 Оцінка похибки і збіжність методу сіток
При вирішенні задачі методом сіток ми допускаємо похибка, що складається з похибки методу та обчислювальної похибки.
Похибка методу - це та похибка, яка виникає в результаті заміни диференціального рівняння різницевим, а також похибка, що виникає за рахунок зносу граничних умов з на .
Обчислювальна похибка - це похибка, що виникає при рішенні системи різницевих рівнянь, за рахунок практично неминучих машинних заокруглень.
Існують спеціальні оцінки похибки для вирішення задач методом сіток. Однак ці оцінки містять максимуми модулів похідних шуканого рішення, тому користуватися ними вкрай незручно, однак ці теоретичні оцінки хороші тим, що з них видно: якщо необмежено подрібнювати сітку, то послідовність рішень буде сходитися рівномірно до точного розв'язання. Тут ми зіткнулися з проблемою збіжності методу сіток. При використанні методу сіток ми повинні бути впевнені, що, необмежено згущуючи сітку, можемо отримати рішення, як завгодно близьке до точного.
Отже, на прикладі розв'язку крайової задачі для диференціального рівняння параболічного типу розглянемо основні принципи методу сіток. Відзначимо, що якщо при вирішенні різницевої задачі невеликі помилки в початкових і крайових умовах (або в проміжних результатах) не можуть привести до великих відхилень шуканого рішення, то говорять, що задача поставлена ​​коректно в сенсі стійкості за вхідними даними. Різницеву схему називають стійкою, якщо обчислювальна похибка необмежено не зростає. В іншому випадку схема називається нестійкою.
1.4 Доказ стійкості різницевої схеми
Нехай є рішення рівняння (1.14), що задовольнить обуреним початковим умовам

і граничним умовам

.
Тут - Деякі початкові помилки.
Розглянемо похибка
.

Похибка буде задовольняти рівнянню
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 23)
(В силу лінійності рівняння (1.14)), а також наступними граничними та початковими умовами:
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 24)
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 25)
Приватне рішення рівняння (1.23) будемо шукати у вигляді
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 26)
Тут числа і слід підібрати так, щоб вираз (1.26) задовольняло рівнянню (1.23) і граничним умовам (1.24).
При цілому задовольняє рівнянню (1.23) та умовам (1.24).
Підставимо рівняння (1.26) в рівняння (1.24). При цьому отримаємо:

або
.

Вираз у квадратних дужках одно
.
Підставляючи цей вираз у попереднє рівняння замість виразу у квадратних дужках і проводячи скорочення на отримаємо:
,
звідки знаходимо :
.
Таким чином, згідно з рівнянням (1.26), отримуємо лінійно-незалежні рішення рівняння (1.23) у вигляді

Зауважимо, що це приватне рішення задовольняє однорідним крайовим умовам (1.24). Лінійна комбінація цих приватних рішень також є рішенням рівняння (1.23):

, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 27)
причому , Визначена у вираженні (1.27), задовольняє для будь-яких однорідним граничним умовам (1.24). Коефіцієнти підбираються виходячи з того, що повинні задовольняти початковим умовам (1.25):
.
У результаті отримуємо систему рівнянь
,
містить рівнянь з невідомими . Вирішуючи побудовану систему визначаємо невідомі коефіцієнти .
Для стійкості досліджуваної різницевої схеми необхідно, щоб за будь-яких значеннях коефіцієнтів , Обумовлене формулою (1.27), залишалося обмеженою величиною при . Для цього достатньо, щоб для всіх виконувалося нерівність
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 28)
Аналізуючи (1.28) бачимо, що ця нерівність виконується для будь-яких значень параметра . При цьому при або в крайньому випадку, коли

,
залишається обмеженим і при фіксованому не зростає по модулю. Отже ми довели, що розглянута різницева схема стійка для будь-яких значень параметра .

2. Реалізація методу
2.1 Розробка програмного модуля
Поставлено мету: розробити програмний продукт для знаходження наближеного рішення параболічного рівняння:
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 29)
в області
,
задовольняє умовам
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 30)
Розіб'ємо область прямими

де
- Крок по осі ,
- Крок по осі .
Замінивши у кожному вузлі похідні кінцево-різницевими відносинами по неявній схемі, отримаємо систему види:

. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 31)
Перетворивши її, отримаємо:
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 32)
де

У граничних вузлах
MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 33)
У початковий момент
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 34)
Ця різницева схема стійка при будь-якому . Будемо вирішувати систему рівнянь (1.32), (1.33) і (1.34) методом прогонки. Для цього шукаємо значення функції у вузлі у вигляді
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 35)
де - Поки невідомі коефіцієнти.
Аналогічно

. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 36)
Підставивши значення (1.35) в (1.32) отримаємо:
.
Звідки
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 37)
З порівняння (1.35) і (1.37) видно, що
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 38)
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 39)
Для з (1.32) маємо:
.
Звідки

або

.
Звідки, використовуючи (1.35), отримаємо:
, MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 40)
. MACROBUTTON MTPlaceRef \ * MERGEFORMAT SEQ MTEqn \ h \ * MERGEFORMAT (SEQ MTSec \ c \ * Arabic \ * MERGEFORMAT 1. SEQ MTEqn \ c \ * Arabic \ * MERGEFORMAT 41)
Використовуючи даний метод, ми всі обчислення проведемо в наступному порядку для всіх .
1) Знаючи значення функції на кордоні (1.33), знайдемо значення коефіцієнтів за (1.40) і за (1.38) для всіх .
2) Знайдемо за (1.41), використовуючи для початкова умова (1.34).
3) Знайдемо за формулами (1.39) для .
4) Знайдемо значення шуканої функції на шарі, починаючи з :

2.2 Опис логіки програмного модуля
Лістинг програми наведено в додатку 1. Нижче будуть описані функції програмного модуля та його призначення.
Функція main () є базовою. Вона реалізує алгоритм методу сіток, описаного в попередніх розділах роботи.
Функція f (x, y) представляє собою вільну функцію двох змінних диференціального рівняння (1.29). Як аргумент на неї передаються два дійсних числа з плаваючою точкою типу float. На виході функція повертає значення функції , Обчислене в точці .
Функції mu_1 (t) і mu_2 (t) представляють собою крайові умови. У них передається по одному аргументу (t) дійсного типу (float).
Функція phi () є відповідальною за початковий умови.
У функції main () визначено такі константи:
- Права кордон по для області ;
- Права кордон по для області ;
- Крок сітки по осі ;
- Крок сітки по осі ;
Варіюючи і можна змінювати точність отриманого рішення від менш точного до більш точного. Вище було доведено, що використовувана обчислювальна схема стійка для будь-яких комбінацій параметрів і , Тому при прагненні їх до нуля можемо отримати як завгодно близьке до точного рішення.
Програма забезпечена трьома механізмами виведення результатів роботи: на екран у вигляді таблиці, в текстовий файл, а також у файл списку математичного пакета Waterloo Maple. Це дозволяє наочно уявити отримане рішення.
Програма написана на мові програмування високого рівня Borland C + + 3.1 у вигляді додатку MS-DOS. Забезпечується повна сумісність програми з усіма широко відомими операційними системами корпорації Майкрософт: MS-DOS 5.x, 6.xx, 7.xx, 8.xx, Windows 9x/Me/2000/NT/XP.

2.3 Приклад роботи програми
В якості прикладу розглянемо чисельне рішення наступного диференціального рівняння параболічного типу:

в області
,
задовольняє умовам

Задавши прямокутну сітку з кроком осі 0.1 і по осі 0.01, отримаємо наступне рішення:
2.10 1.91 1.76 1.63 1.53 1.44 1.37 1.31 1.26 1.22 1.18
2.11 1.75 1.23 1.20 1.15 1.10 1.07 1.04 1.04 1.07 1.21
2.12 1.61 0.95 0.96 0.93 0.91 0.90 0.90 0.94 1.03 1.24
2.13 1.51 0.79 0.81 0.81 0.80 0.81 0.83 0.89 1.03 1.27
2.14 1.45 0.69 0.73 0.74 0.74 0.76 0.80 0.88 1.04 1.31
2.15 1.41 0.64 0.69 0.70 0.71 0.74 0.79 0.89 1.05 1.34
У таблиці вісь x розташована горизонтально, а вісь t розташована вертикально і спрямована вниз.
На виконання програми на середньостатистичному персональному комп'ютері витрачається час, що дорівнює декількох мілісекунд, що говорить про високу швидкість алгоритму.
Докладно вихідний файл output.txt, що містить таблицю значень функції представлений в додатку 3.

Висновок
У роботі було розглянуто метод сіток рішення параболічних рівнянь в приватних похідних. Розкрито основні поняття методу, апроксимація рівняння та граничних умов, досліджено розв'язність і збіжність одержуваної системи різницевих рівнянь.
На підставі вивченого теоретичного матеріалу була розроблена програмна реалізація методу сіток, проаналізовано її збіжність і швидкодію, проведений тестовий розрахунок, побудований графіки отриманого чисельного рішення.

Список джерел
1. Березін І.С., Жидков Н.П. Методи обчислень. Т.2. - М.: Физматгиз, 1962.
2. Тихонов О.М., Самарський О.А. Рівняння математичної фізики. - М.: Наука, 1972.
3. Пірумов Н.Р. Чисельні методи. - М.: Видавництво МАІ, 1998.
4. Каліткін М.М. Чисельні методи. - М.: Наука, 1976.

Додаток
Текст програми
/ / - / /
# Include <stdio.h>
# Include <conio.h>
# Include <math.h>
void main (void);
float f (float x, float t);
float mu_1 (float t);
float mu_2 (float t);
float phi (float x);
/ / - / /
void main (void)
{
clrscr ();
FILE * myfile;
FILE * plotter;
float a [120] [120];
float b [120] [120];
float u [120] [120];
float T = 0.05;
float l = 1;
float h = 0.1;
float tau = 0.01;
int n, i, j, k;
float s = pow (h, 2) / tau;
n = ceil (l / h);
for (i = 0; i <= 119; i + +)
{
for (j = 1; j <= 119; j + +)
{
u [i] [j] = 0;
a [i] [j] = 0;
b [i] [j] = 0;
}
}
for (i = 0; i <= n; i + +)
{
u [i] [0] = phi (i * h);
}
for (j = 0; j <= floor (T / tau); j + +)
{
u [0] [j] = mu_1 (tau * j);
u [n] [j] = mu_2 (tau * j);
}
for (j = 0; j <= floor (T / tau); j + +)
{
a [1] [j + 1] = 1 / (2 + s);
for (i = 2; i <= n - 1; i + +)
{
a [i] [j + 1] = 1 / (2 + s - a [i - 1] [j + 1]);
}
b [1] [j + 1] = mu_1 ((j + 1) * tau) + s * u [1] [j] + pow (h, 2) * f (h, (j + 1) * tau) ;
for (i = 2; i <= n - 1; i + +)
{
b [i] [j + 1] = a [i - 1] [j + 1] + s * u [i] [j] + pow (h, 2) * f (i * h, (j + 1) * tau);
}
u [n] [j + 1] = mu_2 ((j + 1) * tau);
for (k = 1; k <= n - 1; k + +)
{
u [n - k] [j + 1] = a [n - k] [j + 1] * (b [n - k] [j + 1] + u [n - k + 1] [j + 1] );
}
}
myfile = fopen («output.txt», «w +»);
plotter = fopen («3dplot.txt», «w +»);
fprintf (myfile, «Таблиця значень функції u = u (x, t) в області D = {0 <= X <=% g, 0 <= T <=% g}: \ n», l, T);
printf («Значення функції u (x, t) в області D = {0 <= X <=% g, 0 <= T <=% g}: \ n \ n», l, T);
for (j = 0; j <= floor (T / tau); j + +)
{
for (i = 0; i <= n; i + +)
{
printf ("% .2 f», u [i] [j]);
fprintf (myfile, «u (% g) (% g) =% g; \ n», i * h, j * tau, u [i] [j]);
if (i <n & & j <floor (T / tau))
{
fprintf (plotter, «[[% g,% g,% g], [% g,% g,% g], [% g,% g,% g], [% g,% g,% g]] », i * h, j * tau, u [i] [j], (i + 1) * h, j * tau, u [i + 1] [j], i * h, (j + 1) * tau, u [i] [j + 1], (i + 1) * h, (j + 1) * tau, u [i + 1] [j + 1]);
if (i> = n - 1 & & j> = floor (T / tau) - 1)
{
}
else
{
fprintf (plotter ,»,»);
}
}
}
printf ("\ n");
}
fclose (myfile);
fclose (plotter);
printf ("\ nОсь x розташована горизонтально; вісь t розташована вертикально і спрямована вниз»);
printf ("Крок по осі x дорівнює% g; крок по осі t дорівнює% g. \ n», h, tau);
printf ("\ nДля виходу натисніть ENTER ...»);
while (getch ()! = 13);
}
/ / - / /
float f (float x, float t)
{
return x * t;
}
/ / - / /
float mu_1 (float t)
{
return 2.1 + t;
}
/ / - / /
float mu_2 (float t)
{
return 3.2 * (t + 1 / 2.71828);
}
/ / - / /
float phi (float x)
{
return (1.1 * pow (x, 2) + 2.1) * exp (-x);
}
Додати в блог або на сайт

Цей текст може містити помилки.

Математика | Курсова
91.7кб. | скачати


Схожі роботи:
Рішення диференціальних рівнянь 2
Графічне рішення рівнянь
Рішення нелінійних рівнянь
Рішення диференціальних рівнянь 2
Рішення рівнянь з параметрами
Рішення ірраціональних рівнянь
Рішення диференціальних рівнянь
Рішення лінійних інтегральних рівнянь
Рішення звичайних диференціальних рівнянь
© Усі права захищені
написати до нас