Computing the inverse of a matrix without using the 'backslash' command
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
Sebastian Holmqvist
2012-7-12
"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.
采纳的回答
Puneet Rana
2012-7-12
You can use the Moore-Penrose pseudoinverse as follows:
solver=pinv(I-A)*d
2 个评论
Richard Brown
2012-7-13
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.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!