C ++ инвертированная матрица - PullRequest
4 голосов
/ 08 марта 2012

Следующий динамический массив содержит несимметричную матрицу n * n (с n <= 100): </p>

int **matrix;
matrix = new int*[n];
for (int i = 0; i < n; i++)
    matrix[i] = new int[n];

Существует ли чрезвычайно простой способ инвертировать его? В идеале я бы использовал что-то из STL или загрузил один заголовочный файл.

Ответы [ 2 ]

9 голосов
/ 08 марта 2012

Использование Eigen.

http://eigen.tuxfamily.org/index.php?title=Main_Page

Вы можете отобразить свой массив на собственную матрицу, а затем выполнить эффективную инверсию матрицы.

Вы должны только включить его.

Я добавляю, что обычно, если вам нужно выполнить инверсию для решения линейной системы, лучше использовать матричную декомпозицию, основанную на свойствах матрицы, которую вы можете использовать.

http://eigen.tuxfamily.org/dox/TutorialLinearAlgebra.html

3 голосов
/ 08 марта 2012

Не чрезвычайно просто, но работает: Числовые рецепты в c стр. 48, с использованием разложения LU.

...