Computing the inverse of a matrix without using the 'backslash' command
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Sebastian Holmqvist
am 12 Jul. 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.
Akzeptierte Antwort
Puneet Rana
am 12 Jul. 2012
You can use the Moore-Penrose pseudoinverse as follows:
solver=pinv(I-A)*d
2 Kommentare
Richard Brown
am 13 Jul. 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!