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!