
- •І. Основні поняття
- •1.1. Класифікація диференціальних рівнянь у частинних похідних
- •1.2. Апроксимація частинних похідних
- •1. 3. Метод сіток (ідея методу)
- •Іі. Розв’язок змішаної задачі для рівняння теплопровідності методом сіток
- •2.1. Постановка задачі
- •2.2. Явна різницева схема. Проблема стійкості
- •IV. Лабораторна робота 1
- •Варіанти індивідуальних завдань
- •Контрольний приклад
- •V. Неявна різницева схема
- •5.1. Побудова неявної різницевої схеми
- •5.2. Обчислювальна схема (алгоритм) рішення неявної різницевої схеми методом прогону
- •5.3. Блок-схема алгоритму Структурна схема програми рішення першої крайової задачі для рівняння параболічного типу за неявною різницевою схемою методом прогону
- •5.4. Програма рішення першої крайової задачі дня рівняння параболічного типу методом прогону (за неявною схемою)
- •VI. Лабораторна робота 2
- •Контрольний приклад
- •VII. Схема кранкa –ніколсона
- •7.1. Зауваження про стійкість і точність розв’язку
- •7. 2. Побудова і рішення різницевої схеми Кранка - Ніколсона
- •7.3. Алгоритм рішення різницевої схеми Кранка – Ніколсона методом прогону
- •7. 5. Програма рішення першої крайової задачі для рівняння параболічного типу за різницевою схемою Кранка-Ніколсона
- •VIII. Лабораторна робота 3
- •Завдання
- •Контрольний приклад.
- •IX. Рішення змішаної задачі для хвильового рівняння методом сіток
- •9.1. Постановка задачі. Алгоритм методу
- •9. 2 . Обчислювальна схема рішення задачі
- •9.3. Структурна схема програми рішення змішаної задачі для хвильового рівняння методом сіток
- •9. 4. Программа рішення змішаної задачі для хвильового рівняння методом сіток
- •X. Лабораторна робота 4
- •Варіанти індивідуальних завдань
- •Контрольний приклад
- •Хі. Рішення рівняння лапласа методом сіток
- •11.1. Побудова різницевої схеми
- •11.2. Принцип максимуму. Оцінка похибок і збіжність рішень різницевих рівнянь
- •11. 3. Рішення еліптичної різницевої схеми
- •XII. Проблеми збіжності рішення. Алгоритм чисельного рішення
- •12.1 Збіжність рішення
- •12.2. Алгоритм чисельного рішення задачі Діріхлє для рівняння Лапласа ітераційним методом Гауса-Зейделя
- •12.3. Структурна схема програми рішення задачі Діріхлє для рівняння Лапласа методом сіток
- •12. 4. Програма рішення задачі Діріхлє для рівняння Лапласа
- •XIII. Лабораторна робота 5
- •Контрольний приклад
5.2. Обчислювальна схема (алгоритм) рішення неявної різницевої схеми методом прогону
1. Будуємо прямокутну сітку з кроком h по осі Ох і кроком т по осі Ot:
а)
.
б)
2.
Обчислюємо
.
3.
Обчислюємо
4.
Обчислюємо
5.
Задаємо
.
6.
Обчислюємо
7. Обчислюємо
.
8.
Обчислюємо
9.
Обчислюємо
10. Задаємо к=2 і повторюємо пункти 6,7,8,9.
11. Задаємо к=3,4,…m і повторюємо пункти 6,7,8,9.
5.3. Блок-схема алгоритму Структурна схема програми рішення першої крайової задачі для рівняння параболічного типу за неявною різницевою схемою методом прогону
5.4. Програма рішення першої крайової задачі дня рівняння параболічного типу методом прогону (за неявною схемою)
program Nejavn_scheme;
uses Crt;
type Table=array[0..100,0..100] of Real;
LineTable=array[0..100]of Real;
var u: Table; k,i,n,m: Integer; L,h,tay,a,lambda: Real;
P,Q: LineTable;
function F(x: Real): Real; {u(x,0)}
begin
F:=sin(x+1)
end;
function Fi(x: Real): Real; {u(0,k)}
begin
Fi:=x+0.8415
end;
function Psi(x: Real): Real; {u(n,k)}
begin
Psi:=4*x+0.9093
end;
begin
ClrScr;
{ввід початкових умов}
WriteLn('введіть L, крок по осі x (h), крок по осі y (tay), кількість часових шарів, параметр a:');
ReadLn(L,h,tay,m,a);
n:=Trunc(L/h+0.5); {кількість кроків по осі х}
{обчислюються значення в початкових вузлах з допомогою початкових умов}
for k:=1 to m do begin
u[0,k]:=Fi(k*tay);
u[n,k]:=Psi(k*tay);
end;
for i:=1 to n-1 do u[i,0]:=f(i*h);
lambda:=tay*sqr(a)/sqr(h); {шаг по t}
k:=1;
P[1]:=lambda/(1+2*lambda);
Q[1]:=(u[1,k-1]+lambda*fi(k*tay))/(1+2*lambda);
{основна обчислювальна процедура}
for k:=2 to n-1 do begin
for i:=2 to m do begin
P[i]:=lambda/(1+2*lambda-lambda*P[i-1]);
Q[i]:=(u[i,k-1]+lambda*Q[i-1])/(1+2*lambda-lambda*P[i-1])
end;
u[n-1,k]:=(u[n-1,k-1]+lambda*fi(k*tay))/(1+2*lambda-lambda*P[n-2]);
for i:=n-2 downto 1 do u[i,k]:=Q[i]+P[i]*u[i+1,k];
end;
{вивід результатів}
WriteLn('результати обчислень:');
Write(' ');
for i:=0 to n do Write(' ', i:4,' ');
WriteLn;
Write(' ');
for i:=0 to n do Write (' ',i*h:1:3);
for k:=0 to m do begin
WriteLn; Write(k:2,' ');
for i:=0 to n do Write(u[i,k]:1:3,' ');
end;
WriteLn;
WriteLn('кількість кроків по осі OX = ', n:2);
WriteLn('крок розбиття = ', h:1:5);
WriteLn('крок по часовому шару = ', tay:1:5);
WriteLn('кількість кроків = ', m:2);
ReadKey
end.
VI. Лабораторна робота 2
РІШЕННЯ ПЕРШОЇ КРАЙОВОЇ ЗАДАЧІ ДЛЯ РІВНЯННЯ ПАРАБОЛІЧНОГО ТИПУ МЕТОДОМ СІТОК ЗА НЕЯВНОЮ СХЕМОЮ
Завдання
1. Вирішити задачу (2.12)—(2.14) методом сіток, використовуючи завдання попередньої лабораторної роботи.
2. Рішення системи лінійних алгебраїчних рівнянь (2.26) здійснити методом прогону.
Контрольний приклад
З а в д а н н я. Використовуючи метод сіток, скласти рішення змішаної задачі для диференціального рівняння параболічного типу
(рівняння теплопровідності)
при заданих граничних і початкових умовах:
, , , де .
Рішення виконати при h=0,1 по аргументу x та t=h2/6 по аргументу t.
.
Внесемо конкретні дані задачі у вищенаписану програму і одержимо відповідь у вигляді таблиці з результатів обчислень:
0 1 2 3 4 5 6 7 8 9 10
0.000 0.100 0.200 0.300 0.400 0.500 0.600 0.700 0.800 0.900 1.000
0 0.000 0.467 0.905 1.286 1.579 1.750 1.769 1.610 1.258 0.714 0.000
1 0.027 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.003
2 0.053 0.359 0.046 0.006 0.001 0.000 0.000 0.000 0.001 0.007 0.007
3 0.080 0.363 0.082 0.015 0.002 0.000 0.000 0.000 0.003 0.015 0.010
4 0.107 0.367 0.110 0.026 0.005 0.001 0.000 0.001 0.005 0.025 0.013
5 0.134 0.370 0.134 0.037 0.009 0.002 0.001 0.002 0.009 0.036 0.017
6 0.160 0.372 0.153 0.049 0.013 0.003 0.001 0.003 0.013 0.048 0.020
7 0.187 0.374 0.169 0.060 0.018 0.005 0.002 0.005 0.018 0.060 0.024
8 0.214 0.376 0.183 0.071 0.023 0.007 0.003 0.007 0.023 0.073 0.027
9 0.240 0.377 0.194 0.081 0.029 0.009 0.005 0.010 0.030 0.086 0.030
10 0.267 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.034
Кількість розбивок по осі OX = 10
Крок розбивки= 0.10000
Крок по часовому шару= 0.00167
Кількість кроків = 10