Главная страница
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.108 c
4-32104
3dVadim
2002-08-28 12:55
2002.10.10
Как убрать из трея ярлык запущенной программы


3-31608
Artur K
2002-09-18 21:23
2002.10.10
Paradox по сети как работать?


7-32050
Dynamit
2002-07-25 14:01
2002.10.10
Messages & TThread


3-31633
roadrunner
2002-09-13 14:38
2002.10.10
Paradox и DBase


7-32021
Big_Rom
2002-07-30 14:05
2002.10.10
Авто отрыв в дос печати