IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Метод простой итерации, Нужно написать программу решения системы линейных алгебраических уравн
сообщение
Сообщение #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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 1:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name