Метод простой итерации, Нужно написать программу решения системы линейных алгебраических уравн |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Метод простой итерации, Нужно написать программу решения системы линейных алгебраических уравн |
paxanchos |
10.12.2011 21:19
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: 0 |
Задача
Дана матрица A размером 50 на 50, на главной диагонали элементы равны 200 , на 2-ой наддиагонали элементы равны 30, на 25-ой надддиагонали элементы равны 40. вектор b задаётся формулой bi=i*n+n, где n=50.Нужно решить систему Ax=b методом простой иттерации.Метод заключается в том, что мы приводим систему к виду Xk=B*Xk-1+c.Я написал программу но она не выдаёт мне результат, я пробовал её отлаживать и мне кажется матрица B не умножается на Xk-1, а Xk каждый раз присвается значение вектора с.Помогите, не знаю в чём проблема? вот текст программы: procedure TForm1.Button1Click(Sender: TObject); var A: array [1..50,1..50] of double; b: array [1..50] of double; x: array [1..50] of double; B1: array [1..50,1..50] of double; c:array [1..50] of double; x1:array [1..50] of double; x2:array [1..50] of double; i,j,k,iter:integer; sum:double; begin iter:=0; for i :=1 to 50 do begin for j := 1 to 50 do begin if i=j then begin A[i,j]:=200; end; if i=j+2 then begin A[i,j]:=30; end; if i=j+25 then begin A[i,j]:=40; end; begin if i<>j then if i<>j+2 then if i<>j+25 then Begin A[i,j]:=0; End; end; end; end; for j := 1 to 50 do begin b[j]:=50*j+50; end; for i := 1 to 50 do begin for j := 1 to 50 do begin B1[i,j]:=-A[i,j]/A[i,i]; if i=j then B1[i,j]:=0; end; end; for i := 1 to 50 do for j := 1 to 50 do c[j]:=b[j]/A[j,j]; for j := 1 to 50 do x[j]:=0; sum:=100; while (35/65)*sum>1e-4 do begin for i := 1 to 50 do for j := 1 to 50 do x1[i]:=B1[i,j]*x[j]+c[i]; iter:=iter+1; for j := 1 to 50 do x2[j]:=x[j]-x1[j]; for j := 1 to 50 do x[j]:=x1[j]; sum:=abs(x2[1]); for j := 1 to 50 do if abs(x2[j])>abs(x2[1]) then sum:=abs(x2[j]); end; end; end. |
Текстовая версия | 23.09.2024 8:08 |