Система линейных алгебраических уравнений(Решить методом Зейделя) - Turbo Pascal
Формулировка задачи:
Решить Методом Зейделя
-5x1+x2+x3=-3
2x1+5x2-x3=6
x1+2x2+4x3=7
(x1=x2=x3=1)
Решение задачи: «Система линейных алгебраических уравнений(Решить методом Зейделя)»
textual
Листинг программы
uses crt; const a: array [1..3] of real = (-5,2,1); b: array [1..3] of real = (1,5,2); c: array [1..3] of real = (1,-1,4); f: array [1..3] of real = (-3,6,7); var i,k,m: integer; e: real; x1,x2,x3,max: array [0..20] of real; b1,c1,f1: array [1..3] of real; { a,b,c,f: array [1..3] of real; } a2,b2,c2,f2: real; {Если нужен ручной ввод (убрать массивы констант и раскомментировать строки} } begin clrscr; { writeln('Ввод коэффициентов:'); for i:=1 to 3 do begin write('a[',i,'] = '); readln(a[i]); write('b[',i,'] = '); readln(b[i]); write('c[',i,'] = '); readln(c[i]); write('f[',i,'] = '); readln(f[i]); end; } writeln('Введите точность: '); readln(e); writeln(a[1],'*x1 + ',b[1],'*x2 + ',c[1],'*x3 = ',f[1]); writeln(a[2],'*x1 + ',b[2],'*x2 + ',c[2],'*x3 = ',f[2]); writeln(a[3],'*x1 + ',b[3],'*x2 + ',c[3],'*x3 = ',f[3]); x1[0]:=0; x2[0]:=0; x3[0]:=0; for i:=1 to 3 do begin if i=1 then begin b1[i]:=(b[i]/a[i]); c1[i]:=(c[i]/a[i]); f1[i]:=(f[i]/a[i]); end; if i=2 then begin b1[i]:=(a[i]/b[i]); c1[i]:=(c[i]/b[i]); f1[i]:=(f[i]/b[i]); end; if i=3 then begin b1[i]:=(a[i]/c[i]); c1[i]:=(b[i]/c[i]); f1[i]:=(f[i]/c[i]); end; end; i:=0; repeat x1[k+1]:=-x2[k]*b1[1]-x3[k]*c1[1]+f1[1]; x2[k+1]:=-x1[k+1]*b1[2]-x3[k]*c1[2]+f1[2]; x3[k+1]:=-x1[k+1]*b1[3]-x2[k+1]*c1[3]+f1[3]; max[0]:=abs(x1[k+1]-x1[k]); max[1]:=abs(x2[k+1]-x2[k]); max[2]:=abs(x3[k+1]-x3[k]); m:=i; for i:=0 to 2 do if max[i]>max[m] then m:=i; inc(k); until max[m]<e; writeln('x[1] = ',x1[k]:3:3); writeln('x[2] = ',x2[k]:3:3); writeln('x[3] = ',x3[k]:3:3); writeln('Итераций: ',k); readln; end.
Объяснение кода листинга программы
- Создаются три массива переменных типа real с именами a, b и c, которые представляют собой коэффициенты системы линейных алгебраических уравнений.
- Создается переменная i, которая будет использоваться для итерационного процесса.
- Создается переменная k, которая будет использоваться для отслеживания текущей итерации.
- Создается переменная m, которая будет использоваться для определения наименьшего значения из максимальных абсолютных разностей между последовательными элементами.
- Создается массив x, который будет использоваться для хранения промежуточных результатов.
- В цикле вводятся коэффициенты системы уравнений.
- Вводится точность, до которой должны быть приближены решения системы уравнений.
- Запускается цикл итераций. На каждой итерации вычисляются значения x1, x2 и x3 с использованием формулы из системы уравнений.
- Вычисляется максимальная абсолютная разность между текущим и предыдущим значением x1, x2 или x3.
- Если максимальная абсолютная разность больше заданной точности, то обновляется значение m.
- После завершения цикла итераций выводятся значения x1, x2 и x3, а также количество итераций.
- Программа завершается, ожидая ввода от пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д