Метод последовательной линейной верхней релаксации решения сеточных уравнений
Автор: marmeladkaulia • Апрель 13, 2018 • Лабораторная работа • 449 Слов (2 Страниц) • 734 Просмотры
Лабораторная работа № 4
Метод последовательной
линейной верхней релаксации
решения сеточных уравнений
Цель работы: ознакомиться с итерационным методом решения сеточных уравнений на компьютере.
Приборы и принадлежности: компьютер.
1)
procedure Button1OnClick;
const n = 10;
h = 1/n;
pi =3.141592654;
epsilon = 1e-3;
//gamma = 2/(1+sqrt(sin(pi/2/n*(2-sin(pi/2/n)))));
gamma=1.9;
var T,Tx: array [0..n] of real;
aa,bb,cc,ff,delta : real;
i,iter : integer;
begin
for i:=0 to n-1 do T[i]:= 110; {ввод исходных данных}
T[n]:=strtofloat(Edit1.Text);
Tx[0]:=strtofloat(Edit2.Text);
Tx[0]:=T[n];
Tx[n]:=T[0];
aa := 1; {рабочий блок}
bb := -2;
cc := 1;
ff := 0;
iter:=1; {релаксация}
repeat
delta:=0;
for i:=1 to n-1 do
begin
Tx[i]:= gamma/bb*(ff-aa*Tx[i-1]-
cc*T[i+1])+(1-gamma)*T[i];
if abs(1-T[i]/Tx[i]) > delta
then delta:=abs(1-T[i]/Tx[i]);
end;
T := Tx;
iter := iter + 1
until (delta < epsilon) {or (iter > 100)};
Edit3.Text:= inttostr(iter);
for i:=0 to n do {вывод результата}
begin
TextBox1.Add(inttostr(i)+' . '+floattostr(T[i]));
end;
end;
4)
номер итерации | погрешность при N=4 | погрешность при N=10 | погрешность при N=20 |
1 | 100 | 100 | 100 |
2 | 100 | 100 | 100 |
3 | 50 | 100 | 100 |
4 | 25 | 100 | 100 |
5 | 12,5 | 100 | 100 |
6 | 6,25 | 100 | 100 |
7 | 3,125 | 93,75 | 100 |
8 | 1,5625 | 85,9375 | 100 |
9 | 0,78125 | 78,125 | 100 |
10 | 0,390625 | 70,80078125 | 100 |
11 | 0,1953125 | 64,08691406 | 100 |
12 | 0,09765625 | 57,98339844 | 99,8046875 |
13 | 0,048828125 | 52,4520874 | 99,31640625 |
14 | 0,024414063 | 47,44529724 | 98,52294922 |
15 | 0,012207031 | 42,91534424 | 97,45483398 |
16 | 0,006103516 | 38,81752491 | 96,15783691 |
17 | 0,003051758 | 35,11086106 | 94,67926025 |
18 | 0,001525879 | 31,75809979 | 93,06206703 |
19 | 0,000762939 | 28,72548066 | 91,34294987 |
20 | 0,00038147 | 25,98244464 | 89,55220282 |
...