Решение систем линейных уравнений методом простой итерации - Turbo Pascal
Формулировка задачи:
Решить систему линейных уравнений методом простой итерации
Решение задачи: «Решение систем линейных уравнений методом простой итерации»
textual
Листинг программы
program metod_prostoi_iterachii; label 1; var a,x:array[1..200,1..200] of real; b:array[1..200] of real; n,i,j,q,k:integer; sum, max,p,e:real; begin writeln(' введіть к-ть невідомих n<200'); read(n); writeln(' введіть ел. матриці А '); for i:=1 to n do for j:=1 to n do begin readln(a[i,j]); end; writeln(' введіть ел. в-ра b'); for i:=1 to n do begin readln(b[i]); end; writeln(' введіть відносну похибку'); readln(e); q:=0; for i:=1 to n do begin sum:=0; for j:=1 to n do if j<>i then sum:=sum+a[i,j]; if a[i,i]>sum then q:=q+1; end; if q<>n then writeln('Iтераційний процес розбіжний') else begin for i:=1 to n do x[i,1]:=b[i]/a[i,i]; k:=2; 1 : for i:=1 to n do begin x[i,k]:= x[i,1]; for j:=1 to n do if i<>j then x[i,k]:= x[i,k]+(-a[i,j]/a[i,i])*x[j,k-1]; end; max:=abs(x[1,k]-x[1,k-1]); for i:=2 to n do if abs(x[i,k]-x[i,k-1])>max then max:=abs(x[i,k]-x[i,k-1]); p:=x[1,k]; for i:=2 to n do if abs(x[i,k])>p then p:=abs(x[i,k]); if max/p>e then begin k:=k+1; goto 1; end else begin writeln('розвязок СЛАР:'); for i:=1 to n do writeln('x[',i,']=',x[i,k]:4:7); end; end; end.
Объяснение кода листинга программы
- Программа начинается с объявления переменных и постановки задачи.
- Затем происходит чтение входных данных: количество неизвестных n, матрицы A и правой части b.
- Далее происходит итерационный процесс решения системы линейных уравнений методом простой итерации.
- В цикле for i=1 до n происходит суммирование элементов матрицы A, которые не равны i, и вычисление относительной ошибки.
- Если сумма больше текущей относительной ошибки, то происходит увеличение счетчика q.
- Если q не равно n, то выводится сообщение о том, что итерационный процесс разбежен.
- Если q равно n, то вычисляется максимальная ошибка и обновляется значение переменной max.
- Затем происходит повторный расчет значения x[1,k] и обновление значения переменной p.
- Если новая ошибка больше текущей максимальной ошибки, то обновляется значение переменной max.
- Если max больше e, то происходит увеличение k и переход к началу цикла.
- Если max меньше или равно e, то выводится решение системы линейных уравнений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д