Top.Mail.Ru
Ответы

Помощь с проблемой кода Pascal Метод LU разложения матрицы для решения СЛАУ

Не могу понять в чем заключается ошибка, помогите разобраться.

program Praktika;
uses crt;
const n=3;
type
Mat=array [1..n,1..n] of real;
MatA=array [1..n] of real;
var i,j,k:integer;
A,L,U:Mat;
x,y,b:MatA;
s,s2,t:real;
begin
CLRSCR;
writeln ('ввод матрицы');
for i:=1 to n do
begin
for j:=1 to n do
begin
write ('введите элементы матрицы a(',i,',',j,'):');
readln (A[i,j]);
end;
begin
write ('vvedite elem b(',i,'):');
readln (b[i]);
end;

end;
for i:=1 to n do
begin
L[j,i]:=A[j,1]/u[1,1];
U[i,i]:=a[i,j];
for k:=i+1 to n do
begin
L[i,k]:=A[i,k];
U[k,i]:=A[k,i]/A[i,i];
t:=A[i,k]/A[k,k];
for j:=k+1 to n do
A[i,j]:=A[i,j]-A[k,j]*t;
end;
end;
writeln ('матрица l[i,j]:');
writeln;
for i:=1 to n do
begin
for j:=1 to n do
writeln (l[i,j]:2:2, ' ');
end;
writeln ('матрица u[i,j]:');
writeln;
for i:=1 to n do
begin
for j:= 1 to n do
writeln(u[i,j]:2:2);
end;

y[1]:=b[1];
s:=0;
for i:=1 to n do
begin
for k:=1 to i-1 do begin
S:=S+L[i,k]*y[k];
y[i]:=(b[i]-S);
end;
end;
for i:=1 to n do
writeln ('y',i,'=',y[i]);
writeln ('otvet:');
x[n]:=y[n]/u[n,n];
for i:=k-1 downto 1 do begin
S2:=0;
for k:=i+1 to n do
S:=S+U[i,k]*x[k];
x[i]:=(y[i]-S)/U[i,i];
end;
for i:=1 to n do
writeln ('x',i,'=',x[i]);
end.

По дате
По рейтингу
Аватар пользователя
Новичок

Вы ввели элементы матрицы А и вектора В. Хорошо. Кстати, при вводе вектора не понятно назначение пары begin .. end. Ну да ладно, начинаем считать

for i:=1 to n do begin
L[j,i]:=A[j,1]/u[1,1]; // как вы думаете, какое значение будет иметь индекс j и элемент матрицы u[1,1]? Эта матрица определена?
U[i,i]:=a[i,j];
for k:=i+1 to n do begin

Дальше уже не важно.