Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2012, 23:16   #1
Fialka2012
Новичок
Джуниор
 
Регистрация: 16.11.2012
Сообщений: 1
По умолчанию Решение СЛАУ методом простой итерации.

Код программы.

Program MetodProstIter; {метод простых итераций}
const n=3;eps=0.0001;
Var
A:string;
i,j:integer;
C:array [1..n,1..n] of real; {матрица коэффициентов}

b,d:array[1..n] Of real; {вектор-столбец свободных членов}

Err:Boolean; {переменная, по значению которой после выполнения процедуры проверки}

{сходимости определяется соответствие-несоответствие условию сходимости}

X:array[1..n] of Real; {вектор неизвестных}



procedure InputA(var n:integer); {ввод матрицы А}

var
i,j:Integer;

begin

SetLength(A,n); {именно эта встроенная процедура задает правую границу массива}

{в зависимоти от количества переменных}

for i:=0 To n-1 Do

begin

SetLength(A[i],n); {многомерные массивы в PascalABC можно определять как массивы массивов}

end;

for i:=0 To n-1 Do

begin

for j:=0 To n-1 Do

begin

read(A[i,j]);

end;

writeln('');

end;

end;





procedure InputB(var n:integer); {ввод вектора B}

var

i:Integer;

begin

SetLength(b,n);

for i:=0 To n-1 Do

begin

readln(b[i]);

end;

end;





Procedure IterForm(A:array of Array of real;b:array of real;n:integer);

{получение итерационной формы системы}

var i,j:Integer;

begin

SetLength(C,n);

for i:=0 To n-1 Do

begin

Setlength(C[i],n);

end;

SetLength(d,n);

for i:=0 To n-1 Do

begin

for j:=0 To n-1 Do

begin

if i=j then

C[i,j]:=0

else

C[i,j]:=-A[i,j]/A[i,i];

end;

d[i]:=b[i]/a[i,i];

end;

end;





Procedure ProverkaShodimosti(C:array of array of real;d:array of real;n:integer);

{проверка системы на сходимость}

var i,j:Integer;

summ:real;

begin

summ:=0;

for i:=0 To n-1 Do

begin

for j:=0 To n-1 Do

begin

summ:=summ+C[i,j]*C[i,j];

end;

end;

if SQRT(Abs(summ))>1 then

begin

writeln('Данная система не удовлетворяет условию сходимости');

Err:=True;

end

Else Err:=False;

end;





Procedure ProstIterMetode(C:array of array of real;d:array of real;n:integer);

{cобственно, сама стратегия метода простых итераций}

var i,j:Integer;

X0:array of real;

delta:real;

E:array of real;

begin

SetLength(X0,n);

SetLength(X,n);

Setlength(E,n);

X0:=Copy(d);

repeat

begin

for i:=0 To n-1 Do

begin

X[i]:=0;

for j:=0 To n-1 Do

begin

X[i]:=X[i]+C[i,j]*X0[j];

end;

X[i]:=X[i]+d[i];

E[i]:=Abs(X[i]-X0[i]);

end;

delta:=E[0];

for i:=1 To n-1 Do

begin

if delta<E[i] then delta:=E[i];

end;

X0:=Copy(X);

end;

Until delta<=0.000001;

writeln('решение системы равно вектору:');

For i:=0 To n-1 Do

begin

Writeln(X[i]);

end;

end;



BEGIN

Err:=False;

writeln('Введите количество переменных');

Readln(n);

writeln('Введите матрицу коэффициентов');

InputA(n);

writeln('введите матрицу свободных членов');

InputB(n);

IterForm(A,b,n);

ProverkaShodimosti(C,d,n);

if Err=False then ProstIterMetode(C,d,n);

END.
Выдает ошибку (тип фактического параметра-переменного char отличается от типа формального параметра string). Подскажите пожалуйста,как исправить ошибку.
Fialka2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СЛАУ методом Якоби (простой итерации) C++ Defiler Помощь студентам 0 14.05.2012 18:24
Решение СЛАУ методом итерации Dezolyator Фриланс 3 20.03.2012 19:04
Решение СЛАУ методом итерации (Pascal) mambr Помощь студентам 9 08.02.2011 21:29
Решение СЛАУ. Метод простой итерации Alexander886 Помощь студентам 5 24.03.2010 18:43
Решение СЛАУ методом простой итерации (Delphi) giga_person Помощь студентам 8 06.03.2010 21:11