Is it possible to avoid symbolic math for below query
3 次查看(过去 30 天)
显示 更早的评论
I have two matrices a and b. I need to find the value of x such that the determinant of (a + bx) is 0. The size of the matrices is 4x4. So in effect I need the roots of 4th order polynomial in variable x.
I did it by using the symbolic math tool box and below code :
syms l; char_matrix=a + l*b; determinant=det(char_matrix); R=solve(determinant);
This code is working but its taking too long for solving . Is there any way I can avoid symbolic math in such a situation as I think symbolic math takes longer than numerical math. Thank you for your time.
0 个评论
采纳的回答
Andrew Newell
2011-6-8
As long as B has a nonzero determinant, you could recast it as an eigenvalue problem:
det(A+Bx) = det(B)*det(inv(B)*A+Ix) = 0,
where I is the identity, and you could use the following code:
x = -eig(B\A)
更多回答(2 个)
Jan
2011-6-8
You can do it numerically:
R = fzero(@(x) det(a + x * b), x0)
with a suiting initial value x0.
John D'Errico
2011-6-9
If A and B are known, then this is a simple problem using roots. I'll use my sympoly toolbox to show what is happening, and a way to solve it. Pick two arbitrary matrices.
>> A = magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> B = round(rand(4)*5)
B =
1 2 2 3
4 3 3 3
5 2 2 1
0 2 4 5
See that the determinant is a polynomial of 4th degree in x.
>> det(A+B*x)
ans =
1125*x^2 + 406*x^3 + 4*x^4
>> roots(det(A+B*x))
ans =
0
0
-98.649
-2.851
There are 4 solutions here as you would expect. They need not all be real.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear Algebra 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!