How to solve det(s^2*M+s*C(s)+K)=0 for s as fast as posible
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Sergey Kasyanov
2018-7-6
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!