找到具有符号系数的多项式的根

时间:2014-11-03 11:31:14

标签: matlab symbolic-math polynomials

作为任务的一部分,我必须推导出汽车悬架系统的运动方程。基本上它是弹簧质量阻尼器问题。汽车质量,M1,车轮质量,M2,弹簧常数,k1&的值。没有给出k2和阻尼常数c。我已经推导出运动方程并导出了一个将路面(输入)与得到的车体位移(输出)相关联的传递函数。 我必须确定这个传递函数的极点,因此我需要找到特征方程(分母)的根。问题是我没有上述变量的任何值,我试图在MATLAB中象征性地分解我的四阶多项式或直接计算根。 我不能假设任何值,它必须象征性地解决,但我不知道这是否可能在MATLAB中。

我没有很多MATLAB的经验,所以我不知道它的所有功能。

我想解决的特征方程是:

(M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s + ((k1*k2)-(k2^2))

提前谢谢你。

2 个答案:

答案 0 :(得分:1)

你的等式中有一些错误;

 c(M1+M2)*s^3 -> c*(M1+M2)*s^3
 + +k1*c*s -> + k1*c*s

但是如果你想解决多元方程,你可以这样做;

syms M1 M2 c k1 k2 s
eqn = (your equation) == 0;
roots = solve(eqn, s);

此处提供更多信息:solve

答案 1 :(得分:0)

现在你只需要按照这个步骤,以防你只想计算方程的根,这与前面的注释类似:

1. syms c s
2. roots=solve((M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s + ((k1*k2)-(k2^2)),s)
or
roots=solve((M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s +((k1*k2)-(k2^2)),c)
or 
roots=solve((M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s + ((k1*k2)-(k2^2)),s,c)

取决于您想要的解决方案