How to solve det(s^2*M+s*C(s)+K)=0 for s as fast as posible
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello, I want to solve the equation:
det(s^2*M+s*C(s)+K)=0
for s. In this equation M, C and K are big (at least 100x100), sparse matrices and C depends on s (it has the term (50/(s+50)) in it). Is there a faster way to solve this besides the following procedure?:
- using the symbolic variable "s"
- finding the determinant with the command det(s^2*M+s*C(s)+K)
- solve the equation using the command solve(det(s^2*M+s*C(s)+K==0,s) and then
- vpa(solve(det(s^2*M+s*C(s)+K)==0,s))
I tried to use polyeig(s^2*M+s*C(s)+K) as an alternative, but it just solves the equation for a constant C and not for C(s).
0 comentarios
Respuestas (1)
Sergey Kasyanov
el 6 de Jul. de 2018
A=GaussElimination(s^2*M+s*C+K,'');
[~,d]=numden(A(end,end));
Solution=solve(d,s);
You must define C as symbolic matrix. Also I don't ensure that it will be work right, but you can rewrite GaussElimination() for your purpose (function GaussElimination() was wrote fast and for solving another narrow problem, but sometimes I use it for determinant calculation).
0 comentarios
Ver también
Categorías
Más información sobre Symbolic Math Toolbox 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!