|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.11.2012, 23:16 | #1 |
Новичок
Джуниор
Регистрация: 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). Подскажите пожалуйста,как исправить ошибку. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
СЛАУ методом Якоби (простой итерации) 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 |