How to solve det(s^2*M+s*C(s)+K)=0 for s as fast as posible

2 visualizzazioni (ultimi 30 giorni)
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?:
  1. using the symbolic variable "s"
  2. finding the determinant with the command det(s^2*M+s*C(s)+K)
  3. solve the equation using the command solve(det(s^2*M+s*C(s)+K==0,s) and then
  4. 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).

Risposte (1)

Sergey Kasyanov
Sergey Kasyanov il 6 Lug 2018
You can try to use that code from there:
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).

Categorie

Scopri di più su Symbolic Math Toolbox in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by