Var h,e,max:real; a:TextFile;
N,i,j,k:integer;
u,u0,mas:array [0..50,0..50] of real;
x,y:array [0..50] of real;
s:string;
t:byte;
begin
e:=StrToFloat(Edit2.Text);
h:=1/150;
memo1.Lines.Clear;
///////////////сетка////////////////////
x[0]:=0; y[0]:=0;
for i:=0 to 49 do
begin
x[i+1]:=x[i]+i*h;
y[i+1]:=y[i]+i*h;
end;
///////////////////////////////////////
//////////граничные условия/////////////
for i:=0 to 50 do begin u0[0,i]:=20*y[i]; mas[0,i]:=0; end;
for i:=0 to 50 do begin u0[i,0]:=20*sqr(x[i]); mas[i,0]:=0; end;
for i:=0 to 50 do begin u0[50,i]:=20*Cos(2*pi*y[i]); mas[50,i]:=0; end;
for i:=0 to 50 do begin u0[i,50]:=20*Cos(2*pi*x[i]); mas[i,50]:=0; end;
///////////////////////////////////////
/////////////Начальные приближения//////////
for i:=1 to 49 do
begin
for j:=1 to 49 do u0[i,j]:=0;
end;
////////////////////////////////////////////
////////////Итерации///////////////////////
repeat
//---------------------Одна итерация---------------//
for i:=1 to 49 do
begin
for j:=1 to 49 do
begin
u[i,j]:=1/4*(u0[i+1,j]+u0[i-1,j]+u0[i,j+1]+u0[i,j-1]);
mas[i,j]:=ABS(u[i,j]-u0[i,j]); //Массив из которого будем выбирать максимум разности u-u0
u0[i,j]:=u[i,j];
end;
end;
//-----------------------------------------------//
//--------------Выбор максимального элемента----------//
max:=mas[0,0];
for i:=1 to 50 do
begin
for j:=1 to 50 do
begin
if mas[i,j]>=max then max:=mas[i,j];
end;
end;
/////////////////////////////////////////////////////
until max<e;