How can I get inverse matrix at 50 x 50 sparse matrix?

5 vues (au cours des 30 derniers jours)
Esther Kang
Esther Kang le 18 Oct 2024
Commenté : Bruno Luong le 18 Oct 2024
Hello,
I have a square sparse matrix A (50 x 50), and I need to get the inverse matrix of A.
for example, at A x B = C, I know A and C so I have to know matrix B. So I have to get A's inverse matrix.
But if I use inv(A) at the code, every matrix element of inv(A) get 'inf'.
How could I get this inverse matrix? Do I have other method to get matrix B?
  1 commentaire
Bruno Luong
Bruno Luong le 18 Oct 2024
Typically this happens when you try to solve on non invertible matrix. Small example
A=[1 2; 1 2]
A = 2×2
1 2 1 2
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
inv(A)
Warning: Matrix is singular to working precision.
ans = 2×2
Inf Inf Inf Inf
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
B=rand(2);
C=A*B
C = 2×2
1.5628 0.6109 1.5628 0.6109
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
B = A\C
Warning: Matrix is singular to working precision.
B = 2×2
NaN NaN NaN NaN
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Connectez-vous pour commenter.

Réponses (1)

Walter Roberson
Walter Roberson le 18 Oct 2024
If inv(A) is all inf then chances are that A is singular. You should check rank(A) before proceeding.
You should probably not be forming inv(A) explicitly. You should probably be using
B = A\C;
The \ operator will find a solution that minimizes the sum of squares
Note that the inverse of a sparse matrix is typically a dense matrix. But that isn't going to matter if you use the \ operator.
  3 commentaires
Angelo Yeo
Angelo Yeo le 18 Oct 2024
@Esther Kang, can you give us a sample data to reproduce the issue?
Esther Kang
Esther Kang le 18 Oct 2024
Thank you for your reply @Angelo Yeo, I solved this problem by initial condition just before!
I had to calculate power flow using newton Raphson, and I set initial votage to 0. So I couldn't get the inverse of matrix A.(actually it was Jacobian matrix in power flow) I set initial voltage to 1, and now it works!!

Connectez-vous pour commenter.

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by