Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.10;
Скачать: 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 вся ветка

Текущий архив: 2002.10.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
8-31919
Leo^Sun
2002-06-02 22:33
2002.10.10
Растознование речи


14-31977
VID
2002-09-14 12:18
2002.10.10
Ищу славную статью


1-31702
lety
2002-09-30 22:59
2002.10.10
запуск приложения один раз


7-32034
ValeX
2002-08-01 15:27
2002.10.10
write/read COM port в Win2000 :(


1-31882
Newguy
2002-09-30 03:44
2002.10.10
Richedit