Вниз
Скачать: CL | DM;

Определитель   Найти похожие ветки 

← →
Magic ©   (2002-09-27 17:32) [0]

Не могу понять, почему?!
Написал алгоритм определения детерминанта матрицы:
const
A: array [1..3,1..3] of real =
((11,8,-1),
(-1,-3,2),
( 3, 2,3));
var
i,j,n,v: integer;
m,q,w,e: real;
begin
n:=1;
for i:=1 to 2 do
begin
for j:=i+1 to 3 do
begin
m:=A[i,n]/A[j,n];
for v:=n to 3 do
begin
q:=-1*A[j,v]*m;
w:=A[i,v];
e:=q+w;
A[j,v]:=A[i,v]+(-1)*A[j,v]*m;
end
end;
n:=n+1
end
end.
Если элемент A[1,1] заменить на 13, то ни чего не выходит. В других случаях работает нормально. Переменные q, w и e я ввел просто для того, чтобы наблюдать шаги вычисления. Этот алгоритм я проверял и на простом паскале: то же самое. Не пойму в чем проблема.


← →
pasha_golub ©   (2002-09-27 20:11) [1]


> m:=A[i,n]/A[j,n];

А почему поделить? В детерминанте только умножение и вычитание!!!


← →
Magic ©   (2002-10-01 11:45) [2]

Потому что это LU-разложение (метод Гаусса). Ошибка только в том, что нужно запоминать все множители m, чтобы поделить на него получившийся определитель... В общем, это математика.
Но проблема не в этом. Я не пойму, почему + работает не правильно? Попробуй сам.


← →
han_malign   (2002-10-01 12:06) [3]

поробуй заменить циклы на while, потому как я не раз напарывался на то, что оптимизатор самовольно меняет параметры for местами и идет от большего к меньшему(а инкремент n у тебя делается руками и от оптимизатора не зависит).


← →
Kopetr ©   (2002-10-01 12:09) [4]

А в алгоритме ошибки нет? Что-то я не вижу ни L, ни U.
(Для матрицы А вычисляется разложение вида А = L*U, где L, U - треугольные матрицы, матрица L имеет единичные диагональные элементы....)


← →
Magic ©   (2002-10-01 12:51) [5]

Хорошо, согласен, Kopetr. Матриц нет. Но это точно метод Гаусса для решения систем уравннений. Хотя, в общем, это не имеет значения. Просто мне нужно привести матрицу к треугольному виду.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-31686
Андреев Павел
2002-09-30 15:13
2002.10.10
properties


6-31930
MAYOR
2002-08-02 20:15
2002.10.10
Как обработать ошибку соединения


3-31602
BD
2002-09-18 20:10
2002.10.10
Как создать новую базу данных на Access e через ADO.


3-31671
Krez
2002-09-18 15:08
2002.10.10
Ячейка в DBGrid


1-31746
Осирис
2002-10-01 13:51
2002.10.10
Событие при клике на иконке в трее




   Наверх