метод якоби



Весна в доме якоби 2016

Автор Know задал вопрос в разделе Другие языки и технологии

Паскаль метод Якоби. и получил лучший ответ

Ответ от Makfromkz[гуру]
program jacobi;
uses crt;
Const
n=7;
var i,j,it,jt,v,s:integer;
fi,e:real;
A,B:array [1..n,1..n] of real;
f: text;
function GetSumm: real;
var ii,jj: integer;
ss: real;
begin
ss:=0;
for ii:=1 to n do
for jj:=1 to n do
if ii<>jj then ss:=ss+A[ii,jj]*A[ii,jj];
GetSumm:=ss;
end;
procedure GetMax(var iii,jjj: integer);
var ii,jj: integer;
max: real;
begin
max:=0.0;
for ii:=1 to n do
for jj:=1 to n do
if (ii<>jj) and (abs(A[ii,jj])>max) then
begin
max:=abs(A[ii,jj]);
iii:=ii;
jjj:=jj;
end;
end;
begin
assign(f,'po5.m');
reset(f);
Writeln('A = ');
for i:=1 to n do
begin
Write('[ ');
for j:=1 to n do
begin
read(f,A[i,j]);
write(A[i,j]:4:3,' ');
end;
Writeln(']');
end;
Writeln;
Write('Eps = ');
Readln(e);
Writeln;
{metod Yacobi}
while GetSumm > e do
begin
GetMax(it,jt);
if (A[it,it]-A[jt,jt])=0 then fi:=0.785 else
fi:=0.5*arctan(2*A[it,jt]/(A[it,it]-A[jt,jt]));
{kammentariy-pri delenii na nol bydet beskonechnost!!}
for v:=1 to n do
begin
B[v,it]:=A[v,it]*cos(fi)+A[v,jt]*sin(fi);
B[v,jt]:=-A[v,it]*sin(fi)+A[v,jt]*cos(fi);
end;
for v:=1 to n do
for s:=1 to n do
if (s<>it) and (s<>jt) then B[v,s]:=A[v,s];
for s:=1 to n do
begin
A[it,s]:=B[it,s]*cos(fi)+B[jt,s]*sin(fi);
A[jt,s]:=-B[it,s]*sin(fi)+B[jt,s]*cos(fi)
end;
for v:=1 to n do
for s:=1 to n do
if (v<>it) and (v<>jt) then A[v,s]:=B[v,s];
end;
for i:=1 to n do
begin
for j:=1 to n do
Write(abs(A[i,j]):0:4,' ');
Writeln;
end;
Writeln;
for i:=1 to n do
Writeln('l',i,' = ',A[i,i]:0:4);
close(f);
readln;
end.
ссыль: http : // www . cyberforum . ru / delphi-beginners / thread82033 . htmlИсточник:

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Паскаль метод Якоби.
Метод Якоби на Википедии
Посмотрите статью на википедии про Метод Якоби
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*