Is it possible to avoid symbolic math for below query
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
Respuesta aceptada
  Andrew Newell
      
 el 8 de Jun. de 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 comentarios
Más respuestas (2)
  Jan
      
      
 el 8 de Jun. de 2011
        You can do it numerically:
R = fzero(@(x) det(a + x * b), x0)
with a suiting initial value x0.
  John D'Errico
      
      
 el 9 de Jun. de 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.
0 comentarios
Ver también
Categorías
				Más información sobre Linear Algebra en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



