Computing the inverse of a matrix without using the 'backslash' command
9 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
So I am trying to compute the inverse of a matrix, and multiply it by another matrix. When I evaluate my code I get two answers on the order of 10^20. It is because the matrix is singular, and cannot be easily inverted. Is there a way my code can be evaluated to obtain correct values?
function solver=partone(Aee, Aet, Ate, Att, De, Dt)
A=[Aee Aet;Ate Att];
d=[De;Dt];
I=eye(2);
solver=(I-A)\d;
In my code I am using A=[.5 .3;.3 .82] and d=[110000;-40000]
2 Commenti
Sebastian Holmqvist
il 12 Lug 2012
"A square matrix that is not invertible is called singular or degenerate. A square matrix is singular if and only if its determinant is 0."
So is it singular or not? You can not invert a singular matrix since there's no inverse.
Risposta accettata
Puneet Rana
il 12 Lug 2012
You can use the Moore-Penrose pseudoinverse as follows:
solver=pinv(I-A)*d
2 Commenti
Richard Brown
il 13 Lug 2012
You do realise that this is still not a "solution" to your equations though, right? They have no solution, because they are inconsistent.
Because they are inconsistent, the best you can do is find an x that minimises the (Euclidean norm of) the residual (I - A)*x - d. Because your system has rank 1, there is a 1D subspace of R^2 that has this property. The pinv solution presented here finds the x of minimum norm from this set of minimisers.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Linear Algebra in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!