Я использую библиотеку BOOST для инвертирования матрицы, и она дает мне плохие результаты, такие как -1. # IND
Мне было интересно, сталкивался ли кто-нибудь с этой проблемой.
код такой:
void tryLib(){
AG_Matrix AG_Matrix_1=AG_Matrix(4,4,3.0);
AG_Matrix AG_Matrix_4=AG_Matrix_1.Inverse();
std::cout<<AG_Matrix_4(1,1)<<'\n';
}
AG_Matrix
это определение типа и вывод консоли это:
-1.#IND
Press any key to continue . . .
Я изменил код, и теперь результаты хорошие, но я не совсем уверен, в чем причина. Я укажу причину здесь, когда я обнаружу это … Определитель был нулевым, это была проблема, как ответил ниже г-н Ллама …
Матрица 4×4 со всеми значениями, равными 3,0, является особая матрица и не имеет обратного, следовательно, неверная плавающая точка, которая возвращается.
Я бы порекомендовал проверить определитель матрицы, прежде чем запускать инвертирование.
Ваша проблема не проблема кода, это математическая проблема.