Inverse of Dynamic Matrix

I need to get the inverse of a matrix but I don’t know the dimensions of it at compile time. The only thing I do know is that it will be a square matrix and will have a non-zero determinate.

The functions `try_inverse` and `inverse` work on stack allocated matrices like `Matrix4`, but they don’t seem to be implemented for dynamically allocated types like `MatrixVec`. Is there something I’m missing? Like a trait I need to import or maybe I’m using the wrong type? Any help would be greatly appreciated.

Using the `matrix.try_inverse()` method instead of the function at the crate root should work. There are several functions at the crate root that I will deprecate sinte they work only on statically-sized matrices.

@sebcrozet I did do `matrix.try_inverse()`, sorry I should have specified. Here’s the code:

``````use nalgebra::MatrixVec;

let elements = vec![...]; // has n x n elements
let mat = MatrixVec::new(Dynamic::new(n), Dynamic::new(n), elements);

if let Some(inv) = mat.try_inverse() {
// use inv
}
``````

I get the error:

``````error[E0599]: no method named `try_inverse` found for type `nalgebra::MatrixVec<f64, nalgebra::Dynamic, nalgebra::Dynamic>` in the current scope
``````

I originally assumed I just needed to import some trait, but after looking through the documentation I couldn’t find anything. If it helps I’m using version 0.15.3 which I believe is the latest.

I didn’t realize you were using `MatrixVec`. This is a type of a matrix data storage, i.e., one of the possible types for the `S` type parameter of the abstract `Matrix` type (see this). For a dynamically-sized matrix, you should use the `DMatrix` type alias instead.

2 Likes