Armadillo: matrix.i (true) против matrix.i () — одна логическая ошибка, другая нет?

Матрица ввода выглядит следующим образом:

[ 1 2 4 ]
[ 4 5 6 ]
[ 7 8 9 ]

(MAT1)

Wolfram Alpha подтверждает, что имеет обратное. С помощью matrix.i() (что означает, что он использует быстрый инверт) дает примерно правильный результат

[  1.0000 -4.6667  2.6667 ]
[ -1.0000  6.3333 -3.3333 ]
[  1.0000 -2.0000  1.0000 ]

(MAT2)

Но включив медленный режим, написав matrix.i(true) заставляет его бросить logic_error, Любая причина, которая сделала бы это?

Причина, по которой я попытался включить его, состоит в том, что умножение инвертированной матрицы на вектор

[ 15 ]
[ 24 ]
[ 35 ]

(Mat3)

дает неправильный ответ

[ -3.6667 ]
[ 20.3333 ]
[  2.0000 ]

(Mat4)

когда это должно быть это, или же

[ -3.6667 ]
[  5.3333 ]
[  2.0000 ]

(Mat5)

Проверка непосредственно перед умножением подтвердила, что вход (Mat3) было правильно, что привело меня к мысли, что быстрое обращение создало неправильную матрицу в качестве вывода (mat4 вместо mat5).

… Теперь, когда я думаю об этом, быстрое обратное является правильным, и нет никаких причин для того, чтобы оно не было правильным … Это затруднение.

Главный вопрос, как написано выше,

Какой-либо причине matrix.i(true) вызывает логическую ошибку, в то время как matrix.i() не делает?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector