IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> метод простой итерации для решения слау
marwell
сообщение 23.12.2012 22:12
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


доброго времени суток
задача: реализовать метод простой итерации для решения слау
вроде бы как легкий метод, теорию взял отсюда(файл в pdf!)
пока не смог выяснить, почему программа зацикливается

const
n=6;
e=0.000001;

type
Tmass=array[1..n] of real;
Tmatrix=array[1..n] of TMass;

var
korni, betta, z, old:Tmass;
ish_matr:TMatrix; svob_koeffs:TMass;
alpha: TMatrix;
max: double;

...

function usl(a,b:TMass):boolean; //условие завершения итераций
var i: integer;
flag: boolean;
jin: TMass;
norma: double;
begin
flag:=True;
for i := 1 to n do jin[i] := a[i] - b[i];
for i := 1 to n do norma := norma + abs(jin[i]);
if norma>( (e*(1-max))/max ) then flag:=False;
Result:=flag;
end;

...

var i, j: integer;
s, v, m: double;
error: boolean;
begin
...
for i := 1 to n do
for j := 1 to n do
if i = j then alpha[i,j] := 0
else alpha[i,j] := -ish_matr[i,j]/ish_matr[i,i];
for i:=1 to n do
betta[i] := svob_koeffs[i]/ish_matr[i,i];
for j := 1 to n do
for i := 1 to n do
z[j]:=z[j]+abs(alpha[i,j]);
max:=z[1];
for i := 1 to n do
if z[i] > max then max := z[i];
if max>=1 then showmessage ('Метод простых итераций не сходится!')
else begin
old := betta;
for i := 1 to n do begin
for j := 1 to n do
korni[i] := korni[i] + alpha[i,j]*old[i];
korni[i] := korni[i] + betta[i];
end;
repeat
old := korni;
for i := 1 to n do begin
for j := 1 to n do
korni[i] := korni[i] + alpha[i,j]*old[i];
korni[i] := korni[i] + betta[i];
end;
until usl(korni, old)=True;

end;
...
end;


в ish_matr коэффициенты исходной матрицы, svob_koeffs столбец свободных членов
может я условие завершения итераций понял неправильно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.11.2024 20:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"