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 
 К началу страницы 
+ Ответить 
-marwell-
сообщение 24.12.2012 4:23
Сообщение #2


Гость






Эх я, в последнем цикле кажется корни забыл обнулять wacko.gif
 К началу страницы 
+ Ответить 
-marwell-
сообщение 24.12.2012 6:28
Сообщение #3


Гость






Цитата(-marwell- @ 24.12.2012 4:23) *

Эх я, в последнем цикле кажется корни забыл обнулять wacko.gif

гм, нет, не помогло sad.gif
 К началу страницы 
+ Ответить 
marwell
сообщение 24.12.2012 21:06
Сообщение #4


Бывалый
***

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

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


а надо то было всего лишь обнулять в начале norma := 0; smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 22.05.2013 15:43
Сообщение #5


Гость






Цитата(marwell @ 24.12.2012 21:06) *

а надо то было всего лишь обнулять в начале norma := 0; smile.gif

извините, вы можете написать метод простых итераций код в программе Дельфи?
 К началу страницы 
+ Ответить 

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

 

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