# Is it possible to avoid symbolic math for below query

4 views (last 30 days)
Sakshi on 8 Jun 2011
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.

Andrew Newell on 8 Jun 2011
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 CommentsShowHide 1 older comment
Andrew Newell on 9 Jun 2011

### More Answers (2)

Jan on 8 Jun 2011
You can do it numerically:
R = fzero(@(x) det(a + x * b), x0)
with a suiting initial value x0.
##### 1 CommentShowHide None
Sakshi on 9 Jun 2011
Thank you sir. However, I would not be able to give an initial value of x0. I will keep both the solutions in mind for future. Thank you once again for your time.

John D'Errico on 9 Jun 2011
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.