Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
В методичних вказівках подано методи переходу в...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.7 Mб
Скачать

12.2. Алгоритм чисельного рішення задачі Діріхлє для рівняння Лапласа ітераційним методом Гауса-Зейделя

1. Область D неперервної зміни аргументів заміняється кінцевою (дискретною) множиною точок (вузлів) сітки:

, де h – крок по осі ох, l- крок по осі оу,

2. Обчислюємо граничні значення рішення:

a)

б)

3. Задаємо початкові значення рішення у всіх внутрішніх вузлах сітки: .

4. Знаходимо наближені рішення у всіх внутрішніх вузлах сітки по (12.52), проходячи значення при кожному , прийнявши як критерій закінчення ітераційного процесу умову (12.53).

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

12. 4. Програма рішення задачі Діріхлє для рівняння Лапласа

program Dirikhle_Prob;

uses Crt;

const

n=10; m=10; e=0.001; h=1;l=1;

var

u:array[0..m*trunc(1/l)+1,0..n*trunc(1/h)+1] of real;

i,j,it,m1,n1:integer;

r,d,unew:real;

p:boolean;

procedure Libman;

begin

p:=false;

for i:=1 to m1-1 do begin

for j:=1 to n1-1 do begin

unew:=0.25*(u[i+1,j]+u[i-1,j]+u[i,j-1]+u[i,j+1]);

d:=abs(unew-u[i,j]);

if d>e then p:=true;

u[i,j]:=unew;

end;

end;

end;

function F1(x:real):real; {u[0,k]}

begin

F1:=0;

end;

function F2(x:real):real; {u[n,k]}

begin

F2:=64-12*x;

end;

function F3(x:real):real; {u[i,0]}

begin F3:=x*x*x;

end;

function F4(x:real):real; {u[i,m]}

begin

F4:=x*x*x-27*x;

end;

begin

ClrScr;

n1:=trunc(n/h);

m1:=trunc(m/l);

{початкові значення вузлів}

for i:=0 to m1 do begin

for j:=0 to n1 do u[i,j]:=0;

end;

for j:=0 to m1 do u[0,j]:=F1(j*h);

for j:=0 to m1 do u[n1,j]:=F2(j*h);

for i:=1 to n1 do u[i,0]:=F3(i*h);

for i:=1 to n1 do u[i,m1]:=F4(i*h);

{основні обчислення}

Libman;it:=1;

while p and (it<100) do begin

Libman;it:=it+1;

end;

{вивід результатів}

WriteLn('результати обчислень:');

Write(' ');

for j:=0 to n1 do write(j*h:2,' ');

WriteLn(' ');

Write(' ');

for i:=m1 downto 0 do begin

Write(' ',(i*l):2,' ');

for j:=0 to n1 do Write(u[i,j]:5:2,' ');

WriteLn(' ');

end;

WriteLn(' ');

Write(' ');

for j:=0 to n1 do Write(j*h:2,' ');

WriteLn(' ');

WriteLn(' ');

WriteLn('число ітерацій: ',it:2);

WriteLn('похибка e= ',e:1:3);

ReadKey

end.

XIII. Лабораторна робота 5

З а в д а н н я 4. Знайти наближене рішення задачі Діріхлє для рівняння Лапласа

у квадраті з вершинами: ,

з граничними умовами виду:

, , , ,

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

ВАРІАНТИ КОНТРОЛЬНИХ ЗАВДАНЬ

)

1

2

0

3

0

4

0

5

6

0

0

7

8

0

0

9

0

10

11

12

13

40

40

14

0

15

20

16

0

17

18

0

19

0

20

30

30

21

22

0

23

20

Варіанти індивідуальних завдань(закінчення)

)

24

0

25