Різницеві схеми для рівняння переносу на нерівномірних сітках

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

скачати

Міністерство освіти і науки Російської Федерації

Федеральне агентство з освіти

Державна освітня установа вищої професійної освіти

Якутський державний університет імені М.К. Аммосова

Інститут математики та інформатики

Кафедра прикладної математики

Дипломна робота

"Різницеві схеми для рівняння переносу на нерівномірних сітках"

"Спеціальність 010501.65-

Прикладна математика та інформатика "

Спеціалізація "Математичне моделювання"

Едісеева Зоя Микитівна

Науковий керівник: Охлопков Н.М

к.ф-м.н. професор

Рецензент: Миколаїв Володимир Єгорович

к.ф.-м.н., доцент

Якутськ 2009

Зміст

Введення

Глава I. Основні поняття різницевих схем

1.1 Сіткова область

1.2 Сіткова функція. Простір сіткових функцій. Норми сіткових функцій

1.3 Апроксимація диференційних операторів

1.4 Різницева схема

1.5 Коректність різницевої схеми

1.6 Апроксимація і збіжність

1.7 Нерівномірна сітка

1.7.1 Побудова сіткової області

1.7.2 Формування сітки

Глава II. Одномірне рівняння переносу з змінними коефіцієнтами

2.1 Постановка завдання

2.2 "Явні" схеми

2.3 Неявні схеми

2.3.1 Центрально-різницева схема

2.3.2 трехточечная схема з вагою

Глава III. Одномірне рівняння переносу з постійними коефіцієнтами

3.1 Постановка завдання

3.2 Схема біжить рахунки

3.3 Неявні схеми

3.3.1 Центрально-різницева схема

3.3.2 трехточечная схема вагою

3.3.3 Схема "прямокутник"

3.3.4 Схема зі згладжуванням

3.3.5 Схема прямокутник зі згладжуванням

3.3.6 "Шахова" схема

Висновок

Використана література

Додаток 1

Додаток 2

Додаток 3

Додаток 4

Додаток 5

Додаток 6

Введення

Обчислювальну математику у вузькому сенсі розуміють як теорію чисельних методів і алгоритмів вирішення широкого кола математичних задач.

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

Різницева схема повинна відповідати таким основним вимогам:

1.Визначення порядок апроксимації, стійкість економічність, консервативність, однорідність.

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

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

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

Об'єктом дослідження обрані різницеві схеми, апроксимуючі вихідну завдання.

Мета дипломної роботи - вибір найбільш стійкою різницевої схеми.

Для досягнення мети поставлені такі завдання:

- Розглянути різницеві методи рішення для рівнянь переносу зі змінними і постійними коефіцієнтами на нерівномірних сітках;

- Виконати чисельний експеримент розглянутих схем.

Глава I. Основні поняття теорії різницевих схем

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

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

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

1.1 Сіткова область

Для побудови різницевої схеми необхідно побудувати сітку G h-кінцеве безліч точок, що належать G, щільність розподілу яких характеризується параметрами h-кроком сітки. Хай область зміни аргументу x є відрізок G = {0 ≤ x ≤ 1}. Розіб'ємо цей відрізок точками x i = i ∙ h, i = 0, n на n рівних частин довжини h = 1 / n кожна. Безліч точок x i = i ∙ h, називається рівномірною сіткою на відрізку 0 ≤ x ≤ 1 і позначимо = {X i = i ∙ h, i = 0, n}, а число h-відстань між точками (вузлами) сітки називається кроком сітки. Розбиття відрізка 0 ≤ x ≤ 1 точками x i, i = 0, n можна виробляти довільним чином - 0 <x 1 <... <x n -1 <1. Тоді отримуємо сітку = {X i, i = 0, n, x 0 = 0, x n = 1} c кроками h i = x i - x i -1, яке залежить від номера вузла сітки. Якщо h i ≠ h i +1 хоча б в одній точці, то сітка називається нерівномірною і таку сітку позначають ŵ . Точки x 0 і x n назвемо граничними вузлами і позначимо їх р h. Інші вузли назвемо внутрішніми і позначимо їх w h. Вузли сусідні з межують назвемо прикордонними. Тоді маємо

= W h г h.

1.2 Сіткова функція. Простір сіткових функцій. Норми сіткових функцій

Функція y = y (x i) дискретного аргументу x i називається сіткової функцією, визначеною на сітці . Сіткові функції можна розглядати як функції цілого аргумента, що є номером вузла сітки, тобто y = y (x i) = y (i). Далі ми будемо писати y (x i) = y i.

Сіткова область w h залежить від параметра h. При різних значеннях параметра h маємо різні сіткові області. Тому і сіткові функції y h (x) залежать від параметра h.

Функції u (x) неперервного аргументу є елементами функціонального простору H. Безліч сіткових функцій y h (x) утворює простір H h. Таким чином, у методі сіток простір H, замінюється простором H h сіткових функцій y h (x).

Так як розглядається безліч сіток {w h}, то ми отримуємо безліч {H h} просторів сіткових функцій, визначених на {w h}.

Нехай u (x) - розв'язок вихідної безперервної завдання

Lu (x) = f (x), (1)

; Y h - рішення різницевої задачі, . Для теорії наближених обчислень представляє великий інтерес оцінка близькості u (x) і y h (x), але u (x) і y h (x) є елементами з різних просторів. Простір H відображається на простір H h. Кожній функції ставиться у відповідність сіткова функція y h (x), x w h, так що y h = P h u H h, де P h - лінійний оператор з H в H h. Це відповідність можна здійснити різними способами, тобто залежить від вибору оператора P h. Тепер, маючи сіткову функцію u h, утворюємо різниця y h - u h, яка є вектором простору H h. Близькість y h і u h характеризується числом y h - u h Hh, де Hh - норма на H h.

Відповідність функцій u (x) і u h можна встановити різними способами, наприклад,

u h = u (x), x w h.

Надалі ми будемо користуватися цим способом відповідності.

У лінійному просторі H h введемо норму Hh, яка є аналогом норми Н у вихідному просторі Н. Зазвичай прийнято вибирати норму в просторі H h так, щоб при прагненні до нуля h вона переходила в ту чи іншу норму функцій, заданих на всьому відрізку, тобто щоб виконувалася умова

Hh = H, (2)

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

Умова (2) називають умовою узгодження в просторах H h і Н.

Розглянемо найпростіші типи норм у H h для випадку сіток

w h = {x i = i ∙ h} на відрізку 0 ≤ x ≤ 1.

1. Норма Hh =

задовольняє умові (2), якщо в якості Н розглядати простір неперервних функцій з нормою

H = , H = [a, b],

а сіткову функцію визначати у вигляді (2), тобто

y h (x) = u h (x), x w h

2. Норма Hh =

задовольняють умові (2), якщо за Н прийняти простір неперервних функцій з нормою

H = u 2 (x) dx, H = C [a, b],

а сіткову функцію визначати у вигляді

y h = u h (x), x w h.

1.3 Апроксимація диференційних операторів

Нехай маємо диференціальний оператор

Цей оператор можна апроксимувати декількома способами. Наприклад,

- Права різницева похідна, (3)

- Ліва різницева похідна; (4)

- Центральна різницева похідна; (5)

Можна взяти їх лінійну комбінацію

, (6) де у-речовинний параметр.

При у = 1 з (6) отримуємо апроксимацію (3); при у = 0 - апроксимацію (4), а при у = 0.5-апроксимацію (7).

Щоб показати похибка апроксимації, розкладемо по формулі Тейлора

припускаючи, що функція v (x) досить гладка в деякій околиці (x - h 0, x + h 0) точки х, h <h 0, h 0 - фіксоване число.

Підставляючи це розкладання в (3), (4), (5), отримаємо:

Звідси видно, що

Нехай L - диференційний оператор, L h - різницевий оператор, заданий на сітці w h. Кажуть, що різницевий оператор L h:

  1. апроксимуємо диференціальний оператор L у вузлі x i w h, якщо

, Де v (x) - досить гладка функція, прагне до нуля при h → 0;

  1. апроксимуємо L з порядком n> 0 у вузлі x i w h якщо , Тобто

, M = const> 0.

В якості наступного прикладу розглянемо оператор .

Для апроксимації цього оператора використовуємо триточковий шаблон (x - h, x, x + h).

Помічаючи , Маємо

Звідси

Користуючись розкладанням (7), покажемо, що порядок апроксимації дорівнює двом, тобто

так як

1.4 Різницева схема

Як правило, диференціальне рівняння вирішується з деякими додатковими умовами - початковими (задача Коші), крайовими (крайова задача) або і з початковими, і з крайовими умовами (змішані задачі). Ці додаткові умови при переході до різницевих рівнянь треба так само апроксимувати.

Нехай маємо деяку диференціальну задачу, записану у вигляді

Lu = f (x), x G (8)

з додатковою умовою

lu = ц (x), x Г. (9)

Введемо в області Г сітку

і поставимо у відповідність завданню (8), (9) різницеву завдання

L h y h = f h, x w h, (10)

L h y h = ц h, x г h. (11)

Функція y h (x), f h (x), ц h (x) залежать від кроку сітки. Змінюючи h, отримуємо безлічі функцій {y h}, {f h},h}, що залежать від параметра h. Таким чином, ми розглядаємо не одну різницеву завдання, а сімейство завдань, залежне від параметра h. Це сімейство завдань називається різницевої схемою.

Розглянемо приклади різницевих схем, апроксимуючих диференціальні завдання.

Приклад 1. Маємо завдання Коші

, 0 <x ≤ 1, л = const

.

Використовуємо апроксимації:

;

.

Після цього маємо різницеву схему:

Розрахунковий алгоритм маємо вигляд

Приклад 2. Розглянемо задачу Коші.

Скористаємося наступними апроксимаціями:

Після цього маємо різницеву схему

1.5 Коректність різницевої схеми

Нехай маємо диференціальну задачу

, (12)

(13) і на сітці апроксимуємо її різницевої схемою

(14)

(15)

Завдання (12), (13) поставлено коректно, якщо виконані умови:

  1. завдання однозначно вирішити за будь-яких правих частинах

  2. вирішення завдання безперервно залежить від правих частин тобто

H ≤ M 1 H + M 2 H.

Аналогічно визначається поняття коректності різницевої схеми (14), (15). Кажуть, що різницева схема (14), (15) коректна, якщо при всіх досить малих │ h │ <h 0:

1) вирішення y h різницевої схеми існує і єдино для всіх вхідних даних f h H h, ц h H h;

2) існують постійні M 1> 0, M 2> 0 не залежать від h і такі, що при будь-яких f h H h, ц h H h справедлива оцінка

Hh ≤ M 1 Hh + M 2 Hh. (16)

Властивість 2), що означає безперервну залежність, рівномірну щодо h, рішення різницевої схеми від правих частин, називається стійкістю різницевої схеми. Розглянемо приклади.

Приклад 1. Нехай маємо задачу:

(17)

Точним рішенням задачі (17) є функція

Якщо ввести нову функцію то отримаємо завдання

(18)

Рішенням задачі (18) є функція

Задачу (18) апроксимуємо на рівномірній сітці = {X i = ih, i = 0, n} схемою:

(19)

Перепишемо схему (19) у вигляді

Звідси маємо

Розглянемо фіксовану точку і виберемо послідовність сіток таких, щоб = I 0 ∙ h, тобто є вузлом сітки при h → 0.

Обчислимо значення у в цій точці y ( ) = Y i 0 = s i 0 y 0. Так як │ s │ <1 при б> 0

і будь-яких h, то │ y ( ) │ ≤ │ s i 0 │ y 0 │ <│ y (0) │ при будь-якому h. З цього

нерівності видно, що рішення різницевої схеми (19) безперервно залежить від вхід € них даних. У таких випадках кажуть, що різницева схема стійка за вхідними даними (по початкових умов і по правій частині).

Приклад 2. Маємо рівняння

, (20)

Точним рішенням задачі (20) є функція

Звідси випливає нерівність

, (21)

при л> 0.

Для стійкості обчислювальних алгоритмів розв'язання задачі (20) повинна бути виконана умова виду (21) тобто

(22)

Задачу (20) апроксимуємо явною схемою Ейлера

(23)

.

Висловлюючи рішення схеми (23) через початкова умова, маємо

Нерівність (22) буде виконано, якщо

тобто .

Таким чином, явна схема Ейлера умовно стійка.

Приклад 3. Для чисельного розв'язання задачі (20) використовуємо неявну схему Ейлера

(24)

Звідси

тобто

при

Схема (24) абсолютно стійка, бо виконана умова (22) при будь-якому h.

Приклад 4. Задачу (20) апроксимуємо схемою з вагою

(25)

Звідси маємо

Умова (22) буде виконано, якщо

т.е

Звідси отримуємо

Схема абсолютно стійка при

і

тобто схема (25) умовно стійка при

1.6 Апроксимація і збіжність

Для того, щоб з'ясувати, з якою точністю наблизили функцію u = u (x) за допомогою функції y (x), ми повинні їх порівняти. Нехай u h значення функції u (x) на сіткової області , Тобто u h H h.

Розглянемо похибка рішення різницевої схеми (14), (15), яка апроксимує на сітці диференціальну задачу (12), (13).

Введемо функцію похибки рішення

z h = Y h - u h,

де y h - Рішення схеми (14), (15), u h - вирішення задачі (12), (13) на сітці ͞ w h. Підставивши y h = Z h + u h в лінійну задачу (14), (15), отримаємо для zh завдання того ж виду, що і (14), (15):

(26)

(27)

(28)

Функції (28) називаються похибкою апроксимації задачі (12), (13), схемою (14), (15) на рішення задачі (12), (13).

Будемо говорити, що рішення різницевої схеми (14), (15) сходиться до вирішення завдання (12), (13), якщо

Hh = Hh → 0 при h → 0.

Різницева схема сходиться зі швидкістю О (hn) або має n-ий порядок точності, якщо при досить малому h ≤ h 0 виконується нерівність

Hh = Hh M ∙ h n,

де M> 0, не залежить від h, n> 0.

Кажуть, що різницева схема має n-ий порядок апроксимації, якщо

ш h = O (h n),

т.е M ∙ h n.

Теорема. Нехай диференціальна завдання (12), (13) поставлено коректно, різницева схема (14), (15) є коректною і апроксимує вихідну задачу (12), (13). Тоді рішення різницевої схеми (14), (15) сходиться до вирішення вихідної задачі (12), (13), причому порядок точності збігається з порядком апроксимації.

Доказ. Якщо схема (14), (15) коректна, то не важко отримати оцінку похибки рішення через похибка апроксимації (28).

Завдання (26), (27) аналогічна задачі (14), (15), тому для неї користуючись апріорної оцінкою виду (16), одержимо оцінку

Hh = Hh M 1 Hh + M 2 Hh. (29)

Таким чином, якщо схема (14), (15) коректна і апроксимує завдання (12), (13), то вона сходиться при h → 0. Норма похибки ‖ z hHh → 0 при h → 0, якщо Hh → 0 і Hh → 0 при h → 0.

З оцінки (28) видно, що порядок точності схеми (14), (15) визначається порядком апроксимації, і щоб схема сходилася зі швидкістю O (h n), n> 0 досить, щоб вона мала апроксимацію того ж порядку, тобто .

Hh = О (h n), Hh = O (h n).

Розглянемо приклади.

Приклад 1. Розглянемо явну схему Ейлера

яка апроксимує диференціальну задачу (20). Покажемо порядок похибки апроксимації і збіжність.

Розглянемо функцію похибки рішення

Для z i отримуємо схему:

(30)

Розкладемо u i +1 за формулою Тейлора в точці x i, маємо

(31)

Підставляючи (31) в ш i, отримаємо

тобто маємо порядок апроксимації. З (30) маємо

При маємо Висловлюючи z i через z 0, отримаємо:

Звідси видно, що при h → 0, │ z i │ → 0. Для точності схеми маємо

z i +1 │ ≤ h ∙ │ ш s │ ≤ h ∙ i ∙ O (h) = x i ∙ O (h) ≤ M ∙ h,

тобто схема має перший порядок точності.

Приклад 2. Розглянемо неявну схему Ейлера

,

яка апроксимує диференціальну задачу (20). Для похибки рішення z i = Y i - u i отримуємо різницеву схему:

Підставляючи розкладання (31) в ш i , Отримаємо

Звідси маємо

тобто перший порядок апроксимації. Для збіжності розглянемо розв'язок задачі для z i:

Множник при л> 0. Висловлюючи z i через z 0, маємо

Звідси │ z i │ ≤ M ∙ h, тобто схема має перший порядок точності. Таким же чином можна показати, що схема з вагою

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

1.7 Нерівномірна сітка

1.7.1 Побудова сіткової області

Нехай вихідна область = { }. Її апроксимуємо сіткової областю:

, - Середній крок} - сітка по х;

, - Середній крок} - сітка по t;

Тоді шукана сітка є - Нерівномірна сітка.

На цій сітці апроксимуємо диференціальні оператори:

- Права різницева похідна по х; (1)

-Сіткова функція;

- Ліва різницева похідна по х, (2)

- Центральна різницева похідна по х, (3)

- Апроксимація з вагою ; (4)

Апроксимація першої похідної по t має вигляд:

- Права різницева похідна за t; (5)

- Ліва різницева похідна за t; (6)

- Центральна різницева похідна за t; (7)

Апроксимація другої похідної по х і по t має вигляд:

; (8)

; (9)

Покажемо похибка апроксимації першої похідної по х.

Для цього введемо функцію похибки рішення Знайдемо і підставимо в (1).

Маємо = ,

Функцію розкладемо по формулі Тейлора

,

і підставимо в Маємо

,

звідси отримуємо апроксимацію першого порядку .

1.7.2 Формування сітки

I варіант

, (1)

, Q> 1-возраст.геометр.прогрессія

, Q <1-убив.геометр.прогрессія

1) , (2)

, Q> 1. (3)

2) , (4)

, Q <1. (5)

і - Задаємо самі.

Приклад Нехай

q> 1 і за формулою (3) n

Приклад Нехай

обчислюємо за формулою (5)

Дійсно

II варіант

Можна використовувати інший підхід:

, , ,

,

, .

a) , Q <1 - спадна геом. прогресія n і q-задаємо самі.

в) , Q> 1 - зростаюча геом. прогресія.

Таким чином, можна розглядати такі модулі сіток:

  1. Рівномірна сітка .

  2. Квазіравномерная сітка ( ...).

  3. Нерівномірне по зростаючій геометричній прогресії .

  4. Нерівномірне по спадної геометричної прогресії .

  5. Середньоарифметичний метод 3) і 4) .

    Глава II. Одновимірного рівняння переносу з змінними коефіцієнтами

    2.1 Постановка завдання

    Розглянемо рівняння виду:

    (1)

    задовольняє початковим умовам

    (2)

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

    (3)

    Вхідні дані:

    1)

    l = 1, T = 1

    точне рішення:

    2)

    точне рішення:

    3)

    точне рішення:

    4)

    точне рішення:

    Для вирішення задачі (1) - (3) використовуємо різні різницеві схеми, вірніше, явну і неявну.

    2.2 "Явні" схеми

    Явні схеми для нашої задачі використовуються тоді, коли p (x, t)> 0, (p 0> 0, p N> 0) або p (x, t) <0, (p 0 <0, p N <0) . На практиці часто використовують схему біжить рахунку. У залежності від знака функції p (x, t) використовують праву чи ліву різницеві схеми.

    Отже, розглянемо схему біжить рахунки в обох випадках.

    1) p (x, t)> 0, (p 0> 0, p N> 0)

    Різницева схема (права) має вигляд

    ; (1 ')

    ; (2 ')

    ; (3 ')

    з (1 ') ,

    де .

    2) p (x, t) <0, (p 0 <0, p N <0)

    У цьому випадку використовується ліва різницева схема

    ; (1 ")

    ; (2 ")

    ; (3 ")

    з (1 ') ,

    де .

    Таблиця 1 Чисельне рішення рівняння переносу з змінними коефіцієнтами схема біжить рахунки "явна" схема (права різницева схема)

    ------------- Kogda p 0> 0, pN> 0 ------------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.10039200

    0.10004559

    0.00034641

    1

    0.10731313

    0.10694264

    0.00037049

    2

    0.11471141

    0.11431517

    0.00039623

    3

    0.12261970

    0.12219596

    0.00042375

    4

    0.13107319

    0.13062004

    0.00045315

    5

    0.14010945

    0.13962487

    0.00048458

    6

    0.14976865

    0.14925048

    0.00051817

    7

    0.16009374

    0.15953968

    0.00055407

    8

    0.17113063

    0.17053820

    0.00059243

    9

    0.18292837

    0.18229495

    0.00063342

    10

    0.19553941

    0.19486220

    0.00067721

    11

    0.20901984

    0.20829583

    0.00072401

    12

    0.22342957

    0.22265555

    0.00077402

    13

    0.23883258

    0.23800523

    0.00082736

    14

    0.25528740

    0.25441310

    0.00087431

    15

    0.27195211

    0.27195211

    0.00000000

    Таблиця 2. Чисельне рішення рівняння переносу з змінними коефіцієнтами схема біжить рахунки "явна" схема (ліва різницева схема)

    ------------- Kogda p0 <0, pN <0 -------------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.14715178

    0.14715178

    0.00000000

    1

    0.14242453

    0.14232757

    0.00009697

    2

    0.13785337

    0.13766151

    0.00019185

    3

    0.13343317

    0.13314843

    0.00028474

    4

    0.12915902

    0.12878331

    0.00037571

    5

    0.12502613

    0.12456129

    0.00046484

    6

    0.12102988

    0.12047768

    0.00055219

    7

    0.11716580

    0.11652796

    0.00063785

    8

    0.11342959

    0.11270772

    0.00072187

    9

    0.10981705

    0.10901272

    0.00080434

    10

    0.10632415

    0.10543886

    0.00088530

    11

    0.10294698

    0.10198216

    0.00096483

    12

    0.09968176

    0.09863879

    0.00104298

    13

    0.09652483

    0.09540502

    0.00111981

    14

    0.09347266

    0.09227727

    0.00119539

    15

    0.09052183

    0.08925206

    0.00126976

    Текст програми дивись у додатку 1

    2.3 Неявні схеми

    На відміну від явної схеми неявні схеми використовуються для задачі (1) - (3) у всіх випадках 1) p 0> 0, p N> 0, 2) p 0 <0, p N <0, 3) p 0> 0 , p N <0, 4) p 0 <0, p N> 0.

    Розглянемо 2 різні різницеві схеми:

    1. Центрально-різницева схема.

    2. Трехточечная схема з вагою.

    Всі ці схеми вирішуються методом прогонки і всі ці різницеві рівняння, тобто отримані при апроксимації схеми, вірніше, рівняння зводяться до вигляду:

    (4)

    Коефіцієнти A i, B i, C i повинні відповідати умовам:

    (5)

    Коефіцієнти B 0, C 0, F 0, A N, C N, F N знаходяться з граничних умов. У цьому завданню в залежності від знака функції p (x, t) ставляться граничні умови і тим самим знаходяться наші коефіцієнти. Розглянемо всі 4 випадки:

    1) p 0> 0, p N> 0, u (l, t) = м 2 (t), (3 ')

    з рівняння (3 ') A N, C N, F N.

    B 0, C 0, F 0 перебувають з додаткового умови, яка ставиться на лівому кінці.

    2) p 0 <0, p N <0, u (0, t) = м 1 (t), (3 ") з рівняння (3 ") B 0, C 0, F 0.

    A N, C N, F N перебувають з додаткового умови, яка ставиться на правому кінці.

    3) p 0 <0, p N> 0, u (0, t) = м 1 (t), u (l, t) = м 2 (t), (3 "')

    з рівняння (3 "') B 0, C 0, F 0

    A N, C N, F N

    4) p 0> 0, p N <0, немає граничних умов.

    Додаткова умова ставиться на лівому і на правому кінцях. Знаходимо B 0, C 0, F 0, A N, C N, F N.

    Алгоритм правої прогонки

    , .

    ,

    .

    При виконанні умов алгоритм правої прогонки стійкий.

    2.3.1 Центрально різницева схема

    Різницева схема має вигляд (задачі (1) - (3)):

    , .

    1) P 0> 0, P N> 0

    , , .

    2) P 0 <0, P N <0

    .

    3) P 0 <0, P N> 0

    B 0 = 0, C 0 = 1, F 0 = ,

    A N = 0, C N = 1, .

    4) P 0> 0, P N <0

    ,

    Таблиця 3. Чисельне рішення рівняння переносу з змінними коефіцієнтами центральна різницева схема метод прогонки

    ------------- Kogda p 0> 0, pN> 0 ------------ 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.18772094

    0.18765555

    0.00006539

    1

    0.18147920

    0.18150347

    0.00002427

    2

    0.17566576

    0.17555308

    0.00011268

    3

    0.16982701

    0.16979776

    0.00002924

    4

    0.16440069

    0.16423113

    0.00016956

    5

    0.15890974

    0.15884699

    0.00006275

    6

    0.15384782

    0.15363937

    0.00020845

    7

    0.14868453

    0.14860247

    0.00008206

    8

    0.14391438

    0.14373070

    0.00018368

    9

    0.13904086

    0.13901865

    0.00002221

    10

    0.13462315

    0.13446108

    0.00016208

    11

    0.13004378

    0.13005292

    0.00000914

    12

    0.12593278

    0.12578928

    0.00014351

    13

    0.12169429

    0.12166541

    0.00002888

    14

    0.11786577

    0.11767675

    0.00018903

    15

    0.11381884

    0.11381884

    0.00000000

    Таблиця 4. Чисельне рішення рівняння переносу з змінними коефіцієнтами центральна різницева схема метод прогонки

    ------------- Kogda p 0 <0, pN <0 -------------- 50 sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.14715178

    0.14715178

    0.00000000

    1

    0.14240331

    0.14232757

    0.00007574

    2

    0.13769681

    0.13766151

    0.00003530

    3

    0.13325746

    0.13314843

    0.00010903

    4

    0.12885248

    0.12878331

    0.00006918

    5

    0.12470227

    0.12456129

    0.00014098

    6

    0.12057943

    0.12047768

    0.00010174

    7

    0.11669966

    0.11652796

    0.00017170

    8

    0.11284082

    0.11270772

    0.00013310

    9

    0.10921401

    0.10901272

    0.00020130

    10

    0.10560221

    0.10543886

    0.00016335

    11

    0.10221201

    0.10198216

    0.00022985

    12

    0.09883137

    0.09863879

    0.00019259

    13

    0.09566248

    0.09540502

    0.00025746

    14

    0.09249816

    0.09227727

    0.00022089

    15

    0.08953626

    0.08925206

    0.00028420

    Таблиця 5. Чисельне рішення рівняння переносу з змінними коефіцієнтами центральна різницева схема метод прогонки

    ------------- Kogda p 0 <0, pN> 0 -------------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.03678794

    0.03678794

    0.00000000

    1

    0.03565917

    0.03558189

    0.00007728

    2

    0.03439784

    0.03441538

    0.00001754

    3

    0.03335557

    0.03328711

    0.00006846

    4

    0.03216179

    0.03219583

    0.00003404

    5

    0.03119895

    0.03114032

    0.00005863

    6

    0.03007027

    0.03011942

    0.00004915

    7

    0.02917987

    0.02913199

    0.00004788

    8

    0.02811435

    0.02817693

    0.00006258

    9

    0.02728957

    0.02725318

    0.00003639

    10

    0.02628567

    0.02635971

    0.00007405

    11

    0.02551993

    0.02549554

    0.00002439

    12

    0.02457633

    0.02465970

    0.00008337

    13

    0.02386341

    0.02385126

    0.00001215

    14

    0.02297890

    0.02306932

    0.00009042

    15

    0.02231302

    0.02231302

    0.00000000

    Таблиця 6. Чисельне рішення рівняння переносу з змінними коефіцієнтами центральна різницева схема метод прогонки

    ------------- Kogda p 0> 0, pN <0 -------------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.00379722

    0.00375311

    0.00004410

    1

    0.00328998

    0.00328462

    0.00000536

    2

    0.00291427

    0.00287461

    0.00003966

    3

    0.00250378

    0.00251579

    0.00001200

    4

    0.00225176

    0.00220175

    0.00005001

    5

    0.00190450

    0.00192691

    0.00002241

    6

    0.00172045

    0.00168638

    0.00003407

    7

    0.00145947

    0.00147588

    0.00001640

    8

    0.00129005

    0.00129165

    0.00000159

    9

    0.00109247

    0.00113042

    0.00003795

    10

    0.00092289

    0.00098931

    0.00006642

    11

    0.00074314

    0.00086582

    0.00012268

    12

    0.00056520

    0.00075774

    0.00019254

    13

    0.00038370

    0.00066315

    0.00027946

    14

    0.00020306

    0.00058037

    0.00037731

    15

    0.00002275

    0.00050793

    0.00048518

    Текст програми дивись в додатку 2

    2.3.2 трехточечная схема з вагою

    Різницева схема для нашої задачі ((1) - (3)) має вигляд:

    (0)

    Рівняння (0) приведемо до вигляду

    (1)

    З рівняння (1) знаходимо коефіцієнти

    , , ,

    .

    1) P 0> 0, P N> 0 y N j +1 = м 2 j +1A N = 0, C N = 1, F N = м 2 j +1

    (1.0)

    Рівняння (1.0) приводимо до виду

    (1.1)

    З рівняння (1.1) знаходимо

    , ,

    .

    2) P 0 <0, P N <0 y 0 j +1 = м 1 j +1B 0 = 0, C 0 = 1, F 0 = м 1 j +1

    . (2.0)

    Рівняння (2.0) приводимо до виду

    (2.1)

    З рівняння (2.1) знаходимо , ,

    .

    3) P 0 <0, P N> 0

    y 0 j +1 = м 1 j +1B 0 = 0 , C 0 = 1, F 0 = м 1 j +1 ,

    y N j +1 = м 2 j +1A N = 0 , C N = 1, F N = м 2 j +1.

    4) P 0> 0, P N <0

    B 0 = 0, C 0 = 1, F 0 = м 1 j +1

    A N = 0, C N = 1, F N = м 2 j +1

    Таблиця 7. Чисельне рішення рівняння переносу з змінними коефіцієнтами трехточечная схема з вагою Метод прогонки

    ------------------- Kogda p0> 0, pN> 0 --------------- kogda G = 1

    50sloy N priblijennoe tochnoe pogreshnosti

    0

    0.36842774

    0.36787944

    0.00054830

    1

    0.35627966

    0.35581892

    0.00046075

    2

    0.34461653

    0.34415379

    0.00046275

    3

    0.33324870

    0.33287108

    0.00037762

    4

    0.32234219

    0.32195827

    0.00038392

    5

    0.31170418

    0.31140322

    0.00030095

    6

    0.30150555

    0.30119421

    0.00031134

    7

    0.29155019

    0.29131989

    0.00023030

    8

    0.28201389

    0.28176929

    0.00024460

    9

    0.27269705

    0.27253179

    0.00016526

    10

    0.26378042

    0.26359714

    0.00018329

    11

    0.25506082

    0.25495540

    0.00010543

    12

    0.24672399

    0.24659696

    0.00012703

    13

    0.23856301

    0.23851255

    0.00005045

    14

    0.23076867

    0.23069318

    0.00007549

    15

    0.22313016

    0.22313016

    0.00000000

    Таблиця 8. Чисельне рішення рівняння переносу на с переменнмі коефіцієнтами трехточечная схема з вагою Метод прогонки

    ------------------- Kogda p0> 0, pN> 0 --------------- kogda G = 0.5

    50sloy N priblijennoe tochnoe pogreshnosti

    0

    0.22317966

    0.36787944

    0.14469979

    1

    0.32550240

    0.35581892

    0.03031652

    2

    0.21980791

    0.34415379

    0.12434588

    3

    0.32390953

    0.33287108

    0.00896156

    4

    0.17318247

    0.32195827

    0.14877580

    5

    0.30172608

    0.31140322

    0.00967714

    6

    0.15878469

    0.30119421

    0.14240953

    7

    0.28118803

    0.29131989

    0.01013186

    8

    0.16595060

    0.28176929

    0.11581869

    9

    0.25958363

    0.27253179

    0.01294816

    10

    0.10012442

    0.26359714

    0.16347272

    11

    0.23108668

    0.25495540

    0.02386872

    12

    0.10648083

    0.24659696

    0.14011613

    13

    0.24403326

    0.23851255

    0.00552071

    14

    0.10163574

    0.23069318

    0.12905744

    15

    0.22313016

    0.22313016

    0.00000000

    Таблиця 9. Чисельне рішення рівняння переносу з змінними коефіцієнтами трехточечная схема з вагою Метод прогонки

    ------------------- Kogda p0 <0, pN <0 --------------- kogda G = 1

    50sloy N priblijennoe tochnoe pogreshnosti

    0

    0.36787944

    0.36787944

    0.00000000

    1

    0.35801340

    0.35581892

    0.00219448

    2

    0.36845033

    0.34415379

    0.02429654

    3

    0.35906842

    0.33287108

    0.02619734

    4

    0.37000945

    0.32195827

    0.04805117

    5

    0.36101823

    0.31140322

    0.04961501

    6

    0.37246014

    0.30119421

    0.07126592

    7

    0.36379087

    0.29131989

    0.07247098

    8

    0.37571304

    0.28176929

    0.09394375

    9

    0.36731988

    0.27253179

    0.09478809

    10

    0.37968642

    0.26359714

    0.11608928

    11

    0.37154421

    0.25495540

    0.11658881

    12

    0.38430710

    0.24659696

    0.13771013

    13

    0.37640856

    0.23851255

    0.13789601

    14

    0.38951172

    0.23069318

    0.15881854

    15

    0.38186439

    0.22313016

    0.15873423

    Таблиця 10 Чисельне рішення рівняння переносу з змінними коефіцієнтами трехточечная схема з вагою Метод прогонки

    ------------------- Kogda p0 <0, pN <0 ---------------

    kogda G = 0,5 50sloy N priblijennoe tochnoe pogreshnosti

    0

    0.36787944

    0.36787944

    0.00000000

    1

    0.31801913

    0.35581892

    0.03779978

    2

    0.36478621

    0.34415379

    0.02063242

    3

    0.34573407

    0.33287108

    0.01286299

    4

    0.36983022

    0.32195827

    0.04787195

    5

    0.36678412

    0.31140322

    0.05538090

    6

    0.34570117

    0.30119421

    0.04450696

    7

    0.34004986

    0.29131989

    0.04872997

    8

    0.33360167

    0.28176929

    0.05183238

    9

    0.35119193

    0.27253179

    0.07866014

    10

    0.35046403

    0.26359714

    0.08686690

    11

    0.35792253

    0.25495540

    0.10296714

    12

    0.36451445

    0.24659696

    0.11791748

    13

    0.35527614

    0.23851255

    0.11676359

    14

    0.38271932

    0.23069318

    0.15202614

    15

    0.39593489

    0.22313016

    0.17280473

    Текст програми дивись в додатку 3

    Глава III. Одновимірного рівняння переносу з постійними коефіцієнтами

    3.1 Постановка завдання

    Розглянемо рівняння переносу виду

    (3.1)

    задовольняє початковому умові

    (3.2)

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

    1. P> 0 p> 0, немає на лівій межі умов.

    2. P <0 p <0, немає на правій межі умов. (3.3)

    Вхідні дані:

    1) P> 0

    2) P <0

    3.2 "Явні" схеми

    Розглянемо схему біжить рахунки в обох випадках.

    1) p> 0

    У цьому випадку використовується права різницева схема

    (3.1 ')

    ; (3.2 ')

    . (3.3 ')

    З рівняння (3.1 ') слід

    2) p <0

    Різницева схема (ліва) має вигляд:

    ; (3.1 ")

    ; (3.2 ")

    (3.3 ")

    З рівняння (3.1 ") слід

    Таблиця 11. Чисельне рішення рівняння переносу з постійними коефіцієнтами схема біжить рахунки "явна" схема (права різницева схема)

    ------------- Kogda p> 0 --------------------------------- ---------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    1.37301170

    1.35914091

    0.01387078

    1

    1.41878826

    1.40520915

    0.01357911

    2

    1.46606506

    1.45283887

    0.01322618

    3

    1.51488985

    1.50208301

    0.01280684

    4

    1.56531173

    1.55299629

    0.01231544

    5

    1.61738112

    1.60563527

    0.01174585

    6

    1.67114985

    1.66005846

    0.01109139

    7

    1.72667123

    1.71632633

    0.01034490

    8

    1.78400003

    1.77450141

    0.00949863

    9

    1.84319260

    1.83464833

    0.00854427

    10

    1.90430684

    1.89683395

    0.00747290

    11

    1.96740228

    1.96112735

    0.00627493

    12

    2.03254007

    2.02759998

    0.00494008

    13

    2.09978305

    2.09632572

    0.00345734

    14

    2.16919578

    2.16738091

    0.00181487

    15

    2.24084454

    2.24084454

    0.00000000

    Таблиця 12. Чисельне рішення рівняння переносу з постійними коефіцієнтами схема біжить рахунки "явна" схема (ліва різницева схема)

    ------------- Kogda p <0 ------------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.03678794

    0.03678794

    0.00000000

    1

    0.03444494

    0.03558189

    0.00113696

    2

    0.03220334

    0.03441538

    0.00221204

    3

    0.03005929

    0.03328711

    0.00322782

    4

    0.02800907

    0.03219583

    0.00418676

    5

    0.02604910

    0.03114032

    0.00509122

    6

    0.02417592

    0.03011942

    0.00594350

    7

    0.02238620

    0.02913199

    0.00674579

    8

    0.02067672

    0.02817693

    0.00750021

    9

    0.01904439

    0.02725318

    0.00820879

    10

    0.01748622

    0.02635971

    0.00887349

    11

    0.01599934

    0.02549554

    0.00949620

    12

    0.01458096

    0.02465970

    0.01007874

    13

    0.01322842

    0.02385126

    0.01062284

    14

    0.01193914

    0.02306932

    0.01113018

    15

    0.01071063

    0.02231302

    0.01160239

    Текст програми дивися у додатку 4

    3.3 Неявні схеми

    Розглянемо дві різні різницеві схеми:

    1. Центрально-різницева схема.

    2. Трехточечная схема з вагою.

    Всі ці схеми зводяться до стандартного вигляду (3.4) і вирішуються методом прогонки

    (3.4)

    Коефіцієнти A i, B i, C i повинні відповідати умовам:

    (3.5)

    Коефіцієнти B 0, C 0, F 0, A N, C N, F N знаходяться з граничних умов. У цьому завданню в залежності від знака функції p (x, t) ставляться граничні умови і тим самим знаходяться наші коефіцієнти.

    1. Коли р> 0 задається праве гранична умова:

    (3.3 ')

    Використовуючи рівняння (3.3 ') знаходимо коефіцієнти A N, C N, F N. Коефіцієнти B 0, C 0, F 0 перебувають з додаткового умови, що ставиться на лівому кінці.

    2) Коли р <0 задається гранична умова на лівому кінці

    (3.3 ")

    Використовуючи рівняння (3.3 ") знаходимо коефіцієнти B 0, C 0, F 0

    Коефіцієнти A N, C N, F N знаходяться з додаткового умови, що ставиться на правому кінці.

    3.3.1 Центрально-різницева схема

    Різницева схема завдання (3.1) - (3.3) має наступний вигляд:

    1) р> 0. У цьому випадку гранична умова задається на правому кінці:

    (3.6)

    Використовуючи рівняння (3.6) знаходимо коефіцієнти A N = 0, C N = 1,

    Додаткова умова на лівому кінці має вигляд:

    (3.7)

    Наведемо рівняння (3.7) до вигляду:

    (3.7 ')

    Звідси знаходимо коефіцієнти:

    1. У випадку, коли р <0, гранична умова ставиться на лівому кінці

    (3.8)

    Використовуючи рівняння (3.8) знаходимо коефіцієнти B 0, = 0, C 0 = 1,

    Додаткова умова на правому кінці має вигляд:

    (3.9)

    Наводимо рівняння (3.9) до вигляду:

    (3.9 ')

    звідси знаходимо коефіцієнти:

    Таблиця 13. Чисельне рішення рівняння переносу з постійними коефіцієнтами центральна різницева схема метод прогонки

    ------------- Kogda p> 0 -------------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.03544452

    0.03678794

    0.00134342

    1

    0.03541069

    0.03558189

    0.00017120

    2

    0.03306824

    0.03441538

    0.00134714

    3

    0.03313883

    0.03328711

    0.00014828

    4

    0.03084494

    0.03219583

    0.00135089

    5

    0.03101552

    0.03114032

    0.00012480

    6

    0.02876471

    0.03011942

    0.00135472

    7

    0.02903119

    0.02913199

    0.00010080

    8

    0.02681828

    0.02817693

    0.00135865

    9

    0.02717688

    0.02725318

    0.00007630

    10

    0.02499699

    0.02635971

    0.00136272

    11

    0.02544422

    0.02549554

    0.00005132

    12

    0.02329272

    0.02465970

    0.00136698

    13

    0.02382538

    0.02385126

    0.00002588

    14

    0.02169787

    0.02306932

    0.00137145

    15

    0.02231302

    0.02231302

    0.00000000

    Таблиця 14. Чисельне рішення рівняння переносу з постійними коефіцієнтами центральна різницева схема метод прогонки

    ------------- Kogda p <0 -------------- 50sloy

    N priblijennoe tochnoe pogreshnosti

    0

    0.03678794

    0.03678794

    0.00000000

    1

    0.03475182

    0.03558189

    0.00083008

    2

    0.03440516

    0.03441538

    0.00001021

    3

    0.03246493

    0.03328711

    0.00082218

    4

    0.03217504

    0.03219583

    0.00002079

    5

    0.03032529

    0.03114032

    0.00081503

    6

    0.03008771

    0.03011942

    0.00003171

    7

    0.02832337

    0.02913199

    0.00080861

    8

    0.02813396

    0.02817693

    0.00004297

    9

    0.02645027

    0.02725318

    0.00080290

    10

    0.02630518

    0.02635971

    0.00005453

    11

    0.02469766

    0.02549554

    0.00079788

    12

    0.02459330

    0.02465970

    0.00006639

    13

    0.02305773

    0.02385126

    0.00079352

    14

    0.02299077

    0.02306932

    0.00007855

    15

    0.02152320

    0.02231302

    0.00078982

    Текст програми дивися в додатку 5

    3.3.2 трехточечная схема з вагою

    Різницева схема має вигляд:

    речовинний параметр

    1. P> 0

    На лівому кінці ставиться додаткова умова

    2. P <0

    На правому кінці ставиться додаткова умова

    Різницеві рівняння і додаткові умови зводяться до стандартного вигляду (3.4) і вирішуються методом прогонки.

    Таблиця 15. Чисельне рішення рівняння переносу з постійними коефіцієнтами трехточечная схема з вагою Метод прогонки

    50sloy N priblijennoe tochnoe pogreshnosti

    ------------------- Kogda p> 0 --------------- kogda G = 1

    0

    0.03684277

    0.03678794

    0.00005483

    1

    0.03562797

    0.03558189

    0.00004607

    2

    0.03446165

    0.03441538

    0.00004627

    3

    0.03332487

    0.03328711

    0.00003776

    4

    0.03223422

    0.03219583

    0.00003839

    5

    0.03117042

    0.03114032

    0.00003010

    6

    0.03015056

    0.03011942

    0.00003113

    7

    0.02915502

    0.02913199

    0.00002303

    8

    0.02820139

    0.02817693

    0.00002446

    9

    0.02726970

    0.02725318

    0.00001653

    10

    0.02637804

    0.02635971

    0.00001833

    11

    0.02550608

    0.02549554

    0.00001054

    12

    0.02467240

    0.02465970

    0.00001270

    13

    0.02385630

    0.02385126

    0.00000505

    14

    0.02307687

    0.02306932

    0.00000755

    15

    0.02231302

    0.02231302

    0.00000000

    Таблиця 16. Чисельне рішення рівняння переносу з постійними коефіцієнтами трехточечная схема з вагою Метод прогонки

    ------------------- Kogda p> 0 --------------- kogda G = 0.5

    50sloy N priblijennoe tochnoe pogreshnosti

    0

    0.02231797

    0.03678794

    0.01446998

    1

    0.03255024

    0.03558189

    0.00303165

    2

    0.02198079

    0.03441538

    0.01243459

    3

    0.03239095

    0.03328711

    0.00089616

    4

    0.01731825

    0.03219583

    0.01487758

    5

    0.03017261

    0.03114032

    0.00096771

    6

    0.01587847

    0.03011942

    0.01424095

    7

    0.02811880

    0.02913199

    0.00101319

    8

    0.01659506

    0.02817693

    0.01158187

    9

    0.02595836

    0.02725318

    0.00129482

    10

    0.01001244

    0.02635971

    0.01634727

    11

    0.02310867

    0.02549554

    0.00238687

    12

    0.01064808

    0.02465970

    0.01401161

    13

    0.02440333

    0.02385126

    0.00055207

    14

    0.01016357

    0.02306932

    0.01290574

    15

    0.02231302

    0.02231302

    0.00000000

    Таблиця 17. Чисельне рішення рівняння переносу з постійними коефіцієнтами трехточечная схема з вагою Метод прогонки

    ------------------- Kogda p <0 --------------- kogda G = 1

    50sloy N priblijennoe tochnoe pogreshnosti

    0

    0.03678794

    0.03678794

    0.00000000

    1

    0.03676351

    0.03654351

    0.00022000

    2

    0.03679165

    0.03630069

    0.00049096

    3

    0.03676949

    0.03605949

    0.00070999

    4

    0.03679966

    0.03581990

    0.00097976

    5

    0.03677973

    0.03558189

    0.00119784

    6

    0.03681190

    0.03534547

    0.00146643

    7

    0.03679418

    0.03511062

    0.00168357

    8

    0.03682831

    0.03487732

    0.00195098

    9

    0.03681277

    0.03464558

    0.00216719

    10

    0.03684883

    0.03441538

    0.00243345

    11

    0.03683543

    0.03418671

    0.00264872

    12

    0.03687339

    0.03395955

    0.00291384

    13

    0.03686210

    0.03373391

    0.00312820

    14

    0.03690193

    0.03350976

    0.00339217

    15

    0.03689273

    0.03328711

    0.00360562

    Таблиця 18. Чисельне рішення рівняння переносу з постійними коефіцієнтами трехточечная схема з вагою Метод прогонки

    ------------------- Kogda p <0 --------------- kogda G = 0.5

    50sloy N priblijennoe tochnoe pogreshnosti

    0

    0.03678794

    0.03678794

    0.00000000

    1

    0.03697886

    0.03654351

    0.00043535

    2

    0.03685351

    0.03630069

    0.00055282

    3

    0.03694215

    0.03605949

    0.00088265

    4

    0.03678490

    0.03581990

    0.00096500

    5

    0.03709634

    0.03558189

    0.00151445

    6

    0.03702149

    0.03534547

    0.00167603

    7

    0.03710468

    0.03511062

    0.00199406

    8

    0.03712939

    0.03487732

    0.00225206

    9

    0.03693008

    0.03464558

    0.00228450

    10

    0.03706115

    0.03441538

    0.00264577

    11

    0.03679396

    0.03418671

    0.00260725

    12

    0.03713746

    0.03395955

    0.00317791

    13

    0.03669566

    0.03373391

    0.00296175

    14

    0.03706614

    0.03350976

    0.00355638

    15

    0.03675340

    0.03328711

    0.00346629

    Текст програми дивися в додатку 6

    3.3.3 Схема "прямокутник"

    1. P> 0 різницева схема права має вигляд

    2. P <0 різницева схема ліва має вигляд

    3.3.4 Схема зі згладжуванням

    Різницева схема має вигляд

    1. P> 0

    2. P <0

    Схема зводиться до стандартного вигляду і вирішується методом прогонки.

    3.3.5 Схема прямокутник зі згладжуванням

    1. P> 0

    2. P <0

    3.3.6 "Шахова" схема

    Маємо схему з вагою

    1. P> 0

    2. p <0

    Параметр управляє реалізацією схеми. При = 0 і

    (I + j) - парному вирішуємо по явною схемою, при = 1 і

    (I + j) - непарній вирішуємо за неявною схемою явно. У цілому схема реалізується явно.

    Висновок

    Теорія різницевих схем є самостійним розділом обчислювальної математики, де вивчаються методи наближеного рішення диференціальних рівнянь шляхом заміни їх кінцево-різницевими рівняннями (різницевими схемами).

    Звичайно-різницевий метод (метод сіток)-один з потужних досить універсальних методів сучасної обчислювальної математики. Цей метод належить до класу машинних методів вирішення широкого кола завдань для диференціальних рівнянь.

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

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

    Дослідження показало, що найбільш стійким методом для одновимірного рівняння переносу з змінними коефіцієнтами є:

    1. При p 0> 0, pN> 0 трехточечная схема з вагою при G = 1, абсолютна похибка апроксимації на 50-му шарі складає 0,00007549.

    2. При p 0 <0, pN <0 неявна схема з центральною різницею, абсолютна похибка апроксимації на 50-му шарі складає 0,00007574.

    3. При p 0 <0, pN> 0 так само схема з центральною різницею, абсолютна похибка складає 0,00009042.

    Так само проведені розрахунки деяких методів одновимірного рівняння переносу з постійними коефіцієнтами.

    Дослідження показало, що найбільш стійким методом для одновимірного рівняння переносу з постійними коефіцієнтами є:

    1. При p> 0 трехточечная схема з вагою при G = 1, абсолютна похибка апроксимації на 50-му шарі складає 0,00000755.

    2) При p <0 також трехточечная схема з вагою при G = 1, абсолютна похибка на 50-му шарі складає 0,00022000

    Список використаної літератури

    1. Самарський О.А. Теорія різницевих схем. М.: Наука, 1977, с. 616.

    2. Самарський О.А., Гулін А. В. Чисельні методи. М. Наука, 1989, с. 315.

    3. Охлопков Н.М. Чисельні методи розв'язання звичайних диференціальних рівнянь. Якутськ: Вид-во Ягу, 1993, с. 38.

    4. Охлопков Н.М., Охлопков Г.М. Введення в спеціальність "Прикладна математика" частина 1,2 Якутськ: Вид-во Ягу, 1997, с. 93, с. 85.

    5. Охлопков Н.М., Іванов Ф.В. Обчислювальні алгоритми рішення задач для диференціальних рівнянь Якутськ: Вид-воЯгу, 1992, с.65.

    6. Охлопков Н.М., Іванов Ф.В. Пакет програм чисельного розв'язання задач математичної фізики ч.2, Якутськ: Вид-во Ягу, 1989, з 15.

    7. Охлопков Н.М. Про економічних методах вирішення задач математичної фізики. Якутськ: Вид-во Ягу, 1982, с. 39.

    Додаток 1

    Рівняння зі змінними коефіцієнтами

    "Явна" схема.

    Ліва різницева схема

    p 0 <0, pN <0

    uses crt;

    const n = 15; j0 = 20; tt = 1; l = 1; A = 0.01; a1 = 1; q ​​= 2;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j: integer;

    x, h, t, tau, d: hi;

    u, u1, g, u2, u11, u12: m;

    function ut (p, r: real): real;

    begin ut: = A * exp (p + r); end;

    function fi (p, r: real): real;

    begin fi: = A * exp (p + r) * (p * (p +1) + r * (r +1) +7); end;

    function ro (p, r: real): real;

    begin ro: = sqr (p) + sqr (r) +5; end;

    function p1 (p, r: real): real;

    begin p1: =- (p + r +2); end;

    begin

    clrscr;

    writeln ('sxema begushego scheta');

    writeln ('kogda p0 <0, pN <0');

    writeln ('levaya raznostnaya sxema');

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = l / n;

    tau [j]: = tt/j0;

    t [j]: = 0; j: = 1;

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A * (exp (x [i]));

    end;

    while t [j] <= tt do begin clrscr;

    t [j]: = t [j] + tau [j];

    u1 [0]: = A * exp ((t [j]));

    for i: = n-1 downto 0 do

    begin

    g [i]: = tau [j +1] * p1 (x [i], t [j +1]) / h [i +1];

    u11 [i ]:=(- g [i] * u1 [i +1]) + (ro (x [i], t [j +1]) * u [i]);

    u12 [i]: = tau [j +1] * fi (x [i], t [j]);

    u1 [i]: = (u11 [i] + u12 [i]) / (ro (x [i], t [j +1]) + g [i]);

    end;

    for i: = n-1 downto 0 do

    u [i]: = u1 [i];

    writeln ('----------------------------------------------- -----------');

    write ('', j, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    j: = j +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    end;

    end.

    Рівняння зі змінними коефіцієнтами

    "Явна" схема.

    Схема біжить рахунку.

    Права різницева схема

    p 0> 0, pN> 0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 0.5; A = 0.5; a1 = 2; q = 2;

    type w = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j: integer;

    x, h, t, tau, d: hi;

    u, u1, g, u2, u11, u12: w;

    function ut (p, r: real): real;

    begin ut: = A * exp (p + r); end; {to4noe reshenie}

    function fi (p, r: real): real;

    begin fi: = A * exp (p + r) * (p * (p-1) + r * (r-1) + 3); end;

    function ro (p, r: real): real;

    begin ro: = sqr (p) + sqr (r) +5; end;

    function p1 (p, r: real): real;

    begin p1: = p + r +2; end;

    begin clrscr;

    writeln ('sxema begushego scheta');

    writeln ('kogda p0> 0, pN> 0');

    writeln ('pravaya raznostnaya sxema');

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; j: = 1;

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A * exp (x [i]); {u0 (x)}

    end;

    begin

    while t [j] <= tt do begin clrscr;

    t [j]: = t [j] + tau [j];

    u1 [i]: = A * exp (l + t [j]); {mu2 (t)}

    for i: = n-1 downto 0 do

    begin

    g [i]: = (tau [j +1] * p1 (x [i], t [j +1]) / h [i +1]); {R [i, j +1]}

    u11 [i]: = (g [i] * u1 [i +1]) + ro (x [i], t [j +1]) * u [i];

    u12 [i]: = tau [j +1] * fi (x [i], t [j +1]);

    u1 [i]: = (u11 [i] + u12 [i]) / (ro (x [i], t [j +1]) + g [i]); {y

    end;

    for i: = n-1 downto 0 do begin

    u [i]: = u1 [i]; end;

    writeln ('----------------------------------------------- -----------');

    write ('', j, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    j: = j +1;

    writeln ('----------------------------------------------- ---------------'

    readln;

    end;

    end;

    end.

    Додаток 2

    Рівняння зі змінними коефіцієнтами

    Схема з центральною різницею

    p 0> 0, pN> 0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; q ​​= 3; g1 = 1;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k: integer;

    h, d, tau, t: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (p + r); end;

    function fi (p, r: real): real;

    begin fi: = begin fi: = A * exp (p + r) * (p * (p-1) + r * (r-1) + 3); end;

    function ro (p, r: real): real;

    begin ro: = sqr (p) + sqr (r) +5; end;

    p1 (p, r: real): real;

    begin p1: = p + r +2; end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema s sentralnoy raznostju');

    writeln ('kogda p0> 0, pn> 0');

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (x [i]);

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = 1 + (p1 (x [i], t [j]) * tau [j]) / h [i] + tau [j] * q;

    b [0]: = (tau [j] * p1) / h [i];

    a [n]: = 0;

    c [n]: = 1;

    for i: = 1 to n-1 do begin

    r [i]: = tau [j] * p1 / (2 * h [i]);

    a [i]: =- r [i];

    c [i]: = ro;

    b [i]: =- a [i];

    f [i]: = ro * u [i] + tau [j] * fi (x [i], t [j]); end;

    f [0]: = tau [j] * fi (x [0], t [j]) + u [0];

    f [n]: = A1 * exp (l + t [j]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Рівняння зі змінними коефіцієнтами

    Схема з центральною різницею

    p0 <0, pN <0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; q ​​= 3; g1 = 1;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k: integer;

    h, d, tau, t: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (p + r); end;

    function fi (p, r: real): real;

    begin fi: = A1 * exp (p + r) * (p * (p +1) + r * (r +1) +7); end;

    function ro (p, r: real): real;

    begin ro: = sqr (p) + sqr (r) +5; end;

    function p1 (p, r: real): real;

    begin p1: =- (p + r +2); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema s sentralnoy raznostju');

    writeln ('kogda p0 <0, pn <0');

    readln;

    h [0]: = 0;

    h [1]: = g1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (x [i]);

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = 1;

    b [0]: = 0;

    a [n ]:=-( tau [j] * p1 [x) / h [i];

    c [n]: = 1 - (p1 * tau [j]) / h [i] + tau [j] * q;

    for i: = 1 to n-1 do begin

    r [i]: = tau [j] * p1 / (2 * h [i]);

    a [i]: =- r [i];

    c [i]: = ro;

    b [i]: =- a [i];

    f [i]: = ro * u [i] + tau [j] * fi (x [i], t [j]); end;

    f [0]: = A1 * exp (t [j]);

    f [n]: = (tau [j] * fi (x [n], t [j]) + u [n]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Рівняння зі змінними коефіцієнтами

    Схема з центральною різницею.

    p0 <0, pN> 0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; q ​​= 3; a2 = 1;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k: integer;

    h, d, tau, t: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = v * exp (p + r); end;

    function fi (p, r: real): real;

    begin fi: = A1 * exp (p + r) * ((p + r +10) - (2 * p-1) * exp (2 * r); end;

    function ro (p, r: real): real;

    begin ro: = p + r +10; end;

    function p1 (p, r: real): real;

    begin p1: = (2 * p-1) * exp (2 * r); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema s sentralnoy raznostju');

    writeln ('kogda p0 <0, pn> 0');

    readln;

    h [0]: = 0;

    h [1]: = a2;

    for i: = 2 to n do

    h [i]: = h [i-1] * q1;

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i];

    u [i]: = A1 * exp (x [i]);

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = 1;

    b [0]: = 0;

    a [n]: = 0;

    c [n]: = 1;

    for i: = 1 to n-1 do begin

    r [i]: = tau [j +1] * p1 / (2 * h [i]);

    a [i]: =- r [i];

    c [i]: = ro;

    b [i]: =- a [i];

    f [i]: = ro * u [i] + tau [j +1] * fi (x [i], t [j]); end;

    f [0]: = A1 * exp (t [j]);

    f [n]: = A1 * exp (l + t [j]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Рівняння зі змінними коефіцієнтами

    Схема з центральною різницею.

    p0> 0, p <0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; a2 = 1; q ​​= 3;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k: integer;

    h, d, tau, t: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (p + r); end;

    function fi (p, r: real): real;

    begin fi: = A1 * exp (p + r) * ((p + r +10) - (2 * p-1) * exp (2 * r); end;

    function ro (p, r: real): real;

    begin ro: = p + r +10; end;

    function p1 (p, r: real): real;

    begin p1: = (2 * p-1) * exp (2 * r); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema s sentralnoy raznostju');

    writeln ('kogda p0> 0, pn <0');

    readln;

    h [0]: = 0;

    h [1]: = a2;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    h [i]: = x [i]-x [i-1];

    tau [j]: = t [j]-tau [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (x [i]);

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = p1 + ro * tau [j] / h [i];

    b [0]: = tau [j] * p1 / h [i];

    a [n]: = tau [j] * p1 / h [i];

    c [n]: =- ro + p1 * tau [j] / h [i];

    for i: = 1 to n-1 do begin

    r [i]: = tau [j] * p1 / (2 * h [i]);

    a [i]: =- r [i];

    c [i]: = ro;

    b [i]: =- a [i];

    f [i]: = ro * u [i] + tau [j] * fi (x [i], t [j]); end;

    f [0]: = tau [j +1] * fi (x [0], t [j]) + ro * u [0];

    f [n ]:=-( tau [j +1] * fi (x [n], t [j]) + ro * u [n]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Додаток 3

    Рівняння зі змінними коефіцієнтами

    Трехточечная схема з вагою

    Метод прогонки

    p 0> 0, pN> 0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; q ​​= 3; a2 = 1;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k, G: integer;

    h, d, tau, t, f1, f2, f3, f4, f5, f6: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (p + r); end;

    function fi (p, r: real): real;

    begin fi: = A * exp (p + r) * (p * (p-1) + r * (r-1) + 3); end;

    function ro (p, r: real): real;

    begin ro: = sqr (p) + sqr (r) +5; end;

    function p1 (p, r: real): real;

    begin p1: = p + r +2; end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema begushego scheta');

    writeln ('metod progonki');

    writeln ('------------------------------');

    writeln ('------------- kogda p0> 0, pN> 0 ------------');

    writeln ('vvedite G =');

    read (G);

    writeln ('----------------------------------------');

    readln;

    readln;

    h [0]: = 0;

    h [1]: = a2;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (x [i]);

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = ro + (p1 * tau [j]) / h [i];

    b [0]: = G * tau [j] * p1 / h [i];

    a [n]: = 0;

    c [n]: = 1;

    for i: = 1 to n-1 do begin

    a [i]: =- G * p1 * tau [j] / (2 * h [i]);

    c [i]: = ro;

    b [i]: =- a [i];

    f1 [i]: = (1-G) * p1 * tau [j] / (2 * h [i]);

    f2 [i]: = ro * u [i];

    f3 [i]: = G * tau [j] * fi (x [i], t [j]);

    f4 [i]: = (1-G) * tau [j] * fi (x [i], t [j]-tau [j]);

    f [i]: = f1 [i] * (u [i +1]-u [i-1]) + f2 [i] + f3 [i] + f4 [i];

    end;

    f5 [i]: = (1-G) * p1 * (u [1]-u [0]) * tau [j] / h [i];

    f6 [i]: = ro * u [0] + f5 [i] + G * tau [j] * fi (x [0], t [j] + tau [j]);

    f [0]: = f6 [j] + (1-G) * tau [j] * fi (x [0], t [j]);

    f [n]: = A1 * exp (l + t [j]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Рівняння зі змінними коефіцієнтами

    Трехточечная схема з вагою

    Метод прогонки

    p 0 <0, pN <0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; q ​​= 3; a2 = 1;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k, G: integer;

    h, d, tau, t, f1, f2, f3, f4, f5, f6: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (p + r); end;

    function fi (p, r: real): real;

    begin fi: = A * exp (p + r) * (p * (p +1) + r * (r +1) +7); end;

    function ro (p, r: real): real;

    begin ro: = sqr (p) + sqr (r) +5; end;

    function p1 (p, r: real): real;

    begin p1: =- (p + r +2); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('trextochechnaya sxema');

    writeln ('kogda p <0');

    writeln ('vvedite G =');

    read (G);

    writeln ('----------------------------------------------- -----');

    readln;

    readln;

    h [0]: = 0;

    h [1]: = a2;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (x [i]);

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = 1;

    b [0]: = 0;

    a [n]: =- g * (tau [j] * p1) / h [i];

    c [n]: = ro-g * (p1 * tau [j]) / h [i];

    for i: = 1 to n-1 do begin

    r [i]: = tau [j] * p1 / (2 * h [i]);

    a [i ]:=(- g * p1 * tau [j]) / (2 * h [i]);

    c [i]: = ro;

    b [i]: =- a [i];

    f1 [i]: = (1-g) * (p1 * tau [j]) / (2 * h [i]);

    f2 [i]: = ro * u [i];

    f3 [i]: = g * tau [j] * fi (x [i], t [j]);

    f4 [i]: = (1-g) * tau [j] * fi (x [i], t [j]-tau [j]);

    f [i]: = f1 [i] * (u [i +1]-u [i-1]) + f2 [i] + f3 [i] + f4 [i]; end;

    f [0]: = A1 * exp (t [j]);

    f5 [i]: = (1-g) * p1 * (u [1]-u [0]) * tau [j] / h [i];

    f6 [i]: = ro * u [0] + f5 [i] + g * tau [j] * fi (x [0], t [j] + tau [j]);

    f [n]: = f6 [j] + (1-g) * tau [j] * fi (x [0], t [j]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Додаток 4

    Рівняння з постійними коефіцієнтами

    "Явна" схема.

    Ліва різницева схема

    p <0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A = 1; B = 1; p1 = 1; q ​​= 3;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j: integer;

    h, d, tau, t: hi;

    u11, u12: real;

    u, u1, x, g, u2: m;

    function ut (p, r: real): real;

    begin ut: = A * exp (B * (p + r)); end;

    function fi (p, r: real): real;

    begin fi: = A * B * exp (B * (p + r)) * (1-p1 + q / B); end;

    begin

    clrscr;

    writeln ('sxema begushego scheta');

    writeln ('kogda p0> 0, pN> 0');

    writeln ('pravaya raznostnaya sxema');

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; j: = 1;

    for i: = 0 to n do

    begin

    x [i]: = i * h; t [j]: = j * tau [j];

    u [i]: = A * (exp (B * (x [i ])));

    end;

    while t [j] <= tt do begin clrscr;

    t [j]: = t [j] + tau [j];

    u1 [n]: = A * exp (B * (l + t [j]));

    for i: = n-1 downto 0 do begin

    g [i]: = (tau [j +1] * p1) / h [i];

    u11: = (g [i] * u1 [i +1]) + u [i];

    u12: = tau * fi (x [i], t [j]);

    u1 [i]: = (u11 + u12) / (1 ​​+ g [i] + tau [j +1] * q);

    end;

    for i: = 0 to n do u [i]: = u1 [i];

    writeln ('----------------------------------------------- -----------');

    write ('', j, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t): 6:8, '', d [i]: 6:8, ''); end;

    j: = j +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    end;

    end.

    Рівняння з постійними коефіцієнтами

    "Явна" схема.

    Схема біжить рахунку.

    Права різницева схема

    p> 0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A = 1; B =- 1; p1 =- 3; q = 3;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j: integer;

    x, h, d, tau, t: hi;

    u11, u12: real;

    u, u1, g: m;

    function ut (p, r: real): real;

    begin ut: = A * exp (B * (p + r)); end;

    function fi (p, r: real): real;

    begin fi: = A * B * exp (B * (p + r)) * (1-p1 + q / B); end;

    begin

    clrscr;

    writeln ('sxema begushego scheta');

    writeln ('kogda p0 <0, pN <0');

    writeln ('levaya raznostnaya sxema');

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; j: = 1;

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A * (exp (B * (x [i ])));

    end;

    while t [j] <= tt do begin clrscr;

    t [j]: = t [j] + tau [j];

    u1 [0]: = A * exp (B * (t [j]));

    for i: = 1 to n do begin

    g [i]: = (tau [j] * p1) / h [i];

    u11: = (-g [i] * u1 [i-1]) + u [i];

    u12: = tau [j] * fi (x [i], t [j]);

    u1 [i]: = (u11 + u12) / (1-g [i] + tau [j] * q);

    end;

    for i: = 0 to n do u [i]: = u1 [i];

    writeln ('----------------------------------------------- -----------');

    write ('', j, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [j]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [j]: 6:8, ''); end;

    j: = j +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    end;

    end.

    Додаток 5.

    Рівняння з постійними коефіцієнтами

    Схема з центральною різницею

    p> 0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; B1 = 1; p1 = 1; q ​​= 3; g1 = 1;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k: integer;

    h, d, tau, t: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (B1 * (p + r)); end;

    function fi (p, r: real): real;

    begin fi: = A1 * B1 * exp (B1 * (p + r)) * (1-p + q / B); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema s sentralnoy raznostju');

    writeln ('kogda p0> 0, pn> 0');

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (B1 * (x [i]));

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = 1 + (p1 * tau [j +1]) / h [1] + tau [j +1] * q;

    b [0]: = (tau [j +1] * p1) / h [1];

    a [n]: = 0;

    c [n]: = 1;

    for i: = 1 to n-1 do begin

    r [i]: = tau [j] * p1 / (2 * h [i]);

    a [i]: =- r [i];

    c [i]: = ro;

    b [i]: =- a [i];

    f [i]: = ro * u [i] + tau [j] * fi (x [i], t [j]); end;

    f [0]: = tau [j] * fi (x [0], t [j]) + u [0];

    f [n]: = A1 * exp (B1 * (l + t [j]));

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Рівняння з постійними коефіцієнтами

    Схема з центральною різницею

    P <0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; B1 =- 1; p1 =- 1; q ​​= 3; g1 = 1;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k: integer;

    h, d, tau, t: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (B1 * (p + r)); end;

    function fi (p, r: real): real;

    begin fi: = A1 * B1 * exp (B1 * (p + r)) * (1-p1 + q / B); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema s sentralnoy raznostju');

    writeln ('kogda p0 <0, pn <0');

    readln;

    h [0]: = 0;

    h [1]: = g1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (B1 * (x [i]));

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = 1;

    b [0]: = 0;

    a [n ]:=-( tau [j] * p1) / h [i];

    c [n]: = 1 - (p1 * tau [j]) / h [i] + tau [j] * q;

    for i: = 1 to n-1 do begin

    r [i]: = tau [j] * p1 / (2 * h [i]);

    a [i]: =- r [i];

    c [i]: = ro;

    b [i]: =- a [i];

    f [i]: = ro * u [i] + tau [j] * fi (x [i], t [j]); end;

    f [0]: = A1 * exp (t [j]);

    f [n]: = (tau [j] * fi (x [n], t [j]) + u [n]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Додаток 6

    Рівняння з постійними коефіцієнтами

    Трехточечная схема з вагою

    Метод прогонки

    p> 0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; B1 = 1; p1 = 1; q ​​= 3;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k, G: integer;

    h, d, tau, t, f1, f2, f3, f4, f5, f6: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (B1 * (p + r)); end;

    function fi (p, r: real): real;

    begin fi: = A1 * B1 * exp (B1 * (p + r)) * (1-p1 + q/B1); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('sxema begushego scheta');

    writeln ('metod progonki');

    writeln ('------------------------------');

    writeln ('------------- kogda p0> 0, pN> 0 ------------');

    writeln ('vvedite G =');

    read (G);

    writeln ('----------------------------------------');

    readln;

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (B1 * (x [i]));

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = ro + (p1 * tau [j]) / h [i];

    b [0]: = G * tau [j] * p1 / h [i];

    a [n]: = 0;

    c [n]: = 1;

    for i: = 1 to n-1 do begin

    a [i]: =- G * p1 * tau [j] / (2 * h [i]);

    c [i]: = ro;

    b [i]: =- a [i];

    f1 [i]: = (1-G) * p1 * tau [j] / (2 * h [i]);

    f2 [i]: = ro * u [i];

    f3 [i]: = G * tau [j] * fi (x [i], t [j]);

    f4 [i]: = (1-G) * tau [j] * fi (x [i], t [j]-tau [j]);

    f [i]: = f1 [i] * (u [i +1]-u [i-1]) + f2 [i] + f3 [i] + f4 [i];

    end;

    f5 [i]: = (1-G) * p1 * (u [1]-u [0]) * tau [j] / h [i];

    f6 [i]: = ro * u [0] + f5 [i] + G * tau [j] * fi (x [0], t [j] + tau [j]);

    f [0]: = f6 [j] + (1-G) * tau [j] * fi (x [0], t [j]);

    f [n]: = A1 * exp (B1 * (l + t [j]));

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Рівняння з постійними коефіцієнтами

    Трехточечная схема з вагою

    Метод прогонки

    P <0

    uses crt;

    const n = 15; j0 = 50; tt = 1; l = 1; A1 = 1; B1 =- 1; p1 =- 1; q ​​= 3;

    type m = array [0 .. n] of real;

    hi = array [0 .. n] of real;

    var i, j, k, G: integer;

    h, d, tau, t, f1, f2, f3, f4, f5, f6: hi;

    u, u1, r, x, z, a, b, c, f, alfa, betta: m;

    function ut (p, r: real): real;

    begin ut: = A1 * exp (B1 * (p + r)); end;

    function fi (p, r: real): real;

    begin fi: = A1 * B1 * exp (B1 * (p + r)) * (1-p1 + q/B1); end;

    begin

    clrscr;

    writeln ('chislennoe reshenie uravneniya perenosa');

    writeln ('trextochechnaya sxema');

    writeln ('kogda p <0');

    writeln ('vvedite G =');

    read (G);

    writeln ('----------------------------------------------- -----');

    readln;

    readln;

    h [0]: = 0;

    h [1]: = a1;

    for i: = 2 to n do

    h [i]: = h [i-1] * q;

    for i: = 0 to n do

    h [i]: = x [i]-x [i-1];;

    tau [j]: = t [j]-t [j-1];

    t [j]: = 0; k: = 0;

    clrscr;

    writeln ('----------------------------------------------- -------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- --------');

    writeln ('N priblijennoe tochnoe pogreshnost');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do

    begin

    x [i]: = i * h [i]; t [j]: = j * tau [j];

    u [i]: = A1 * exp (B1 * (x [i]));

    d [i]: = abs (ut (x [i], t [j])-u [i]);

    write ('', i,'', u [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8,'', d [i]: 6:8 ,'');

    end;

    writeln ('----------------------------------------------- --------');

    readln;

    k: = 1;

    while t [j] <= tt do begin

    clrscr;

    t [j]: = t [j] + tau [j];

    c [0]: = 1;

    b [0]: = 0;

    a [n]: =- g * (tau [j] * p1) / h [i];

    c [n]: = ro-g * (p1 * tau [j]) / h [i];

    for i: = 1 to n-1 do begin

    r [i]: = tau [j] * p1 / (2 * h [i]);

    a [i ]:=(- g * p1 * tau [j]) / (2 * h [i]);

    c [i]: = ro;

    b [i]: =- a [i];

    f1 [i]: = (1-g) * (p1 * tau [j]) / (2 * h [i]);

    f2 [i]: = ro * u [i];

    f3 [i]: = g * tau [j] * fi (x [i], t [j]);

    f4 [i]: = (1-g) * tau [j] * fi (x [i], t [j]-tau [j]);

    f [i]: = f1 [i] * (u [i +1]-u [i-1]) + f2 [i] + f3 [i] + f4 [i]; end;

    f [0]: = A1 * exp (B1 * (t [j]));

    f5 [i]: = (1-g) * p1 * (u [1]-u [0]) * tau [j] / h [i];

    f6 [i]: = ro * u [0] + f5 [i] + g * tau [j] * fi (x [0], t [j] + tau [j]);

    f [n]: = f6 [j] + (1-g) * tau [j] * fi (x [0], t [j]);

    alfa [0]: = b [0] / c [0];

    betta [0]: = f [0] / c [0];

    for i: = 1 to n-1 do begin

    z [i]: = c [i]-alfa [i-1] * a [i];

    alfa [i]: = b [i] / z [i];

    betta [i]: = (f [i] + a [i] * betta [i-1]) / z [i]; end;

    u1 [n]: = (f [n] + a [n] * betta [n-1]) / (c [n]-alfa [n-1] * a [n]);

    for i: = n-1 downto 0 do

    u1 [i]: = alfa [i] * u1 [i +1] + betta [i];

    writeln ('----------------------------------------------- -----------');

    write ('', k, 'sloy');

    writeln ('');

    writeln ('----------------------------------------------- ---------');

    writeln ('N priblijennoe tochnoe pogreshnosti');

    writeln ('----------------------------------------------- ---------');

    for i: = 0 to n do begin

    d [i]: = abs (ut (x [i], t [j])-u1 [i]);

    write ('', I, '', u1 [i]: 6:8, '');

    writeln (ut (x [i], t [j]): 6:8, '', d [i]: 6:8, ''); end;

    k: = k +1;

    writeln ('----------------------------------------------- ---------------');

    readln;

    for i: = 0 to n do

    u [i]: = u1 [i];

    end;

    end.

    Додати в блог або на сайт

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

    Програмування, комп'ютери, інформатика і кібернетика | Диплом
    508.1кб. | скачати


    Схожі роботи:
    Різницеві схеми для рівнянь параболічного типу
    Крайові задачі і різницеві схеми
    ЛІнійні різницеві рівняння зі сталими коефіцієнтами Задача Коші
    Лінійні різницеві рівняння із сталими коефіцієнтами Задача Коші
    Рівняння Максвела для Т, ТЕ, ТМ хвиль
    Схеми для зовнішнього пристрою
    Диференціальні рівняння для електричного кола
    Електронні схеми для дому та побуту
    Синтез схеми ПЛІС для інвертора
    © Усі права захищені
    написати до нас