首页 理论教育 如何在Matlab中修改弹簧-重物-阻尼器动力学系统参数

如何在Matlab中修改弹簧-重物-阻尼器动力学系统参数

时间:2023-06-27 理论教育 版权反馈
【摘要】:一个弹簧-重物-阻尼器动力学系统如图2-1所示。Matlab提供了一种交互式的应用环境,可以在指令窗口随时修改ωn,ζ1和ζ2值并再次运行unforced.m程序。由于传递函数是多项式的比值,所须在Matlab指令中指定。例如多项式p=1s3+3s2+0s1+4s0,按图2-65的格式输入p=[1 3 0 4],请注意,尽管s的系数为0,它也一定要包含在确定p的行向量中。图2-66 Matlab的conv()函数和polyval()函数

如何在Matlab中修改弹簧-重物-阻尼器动力学系统参数

一个弹簧-重物-阻尼器动力学系统如图2-1所示。重物M 的位移由y(t)表示,用微分方程描述如下

该系统在初始位移作用下的瞬态响应为

其中θ=cos﹣1ζ,初始位移是y(0)。系统的瞬态响应当ζ<1时为欠阻尼,当ζ>1时为过阻尼,当ζ=1时为临界阻尼。考虑

过阻尼情况:

欠阻尼情况:

利用Matlab程序——unforced.m,可以显示初始位移为y(0)的物体自由运动曲线,如图2-63所示。在unforced.m程序中,变量y(0),ωn,t,ζ1和ζ2的值由指令直接输入工作区,然后运行unforced.m程序就可以产生响应曲线。Matlab提供了一种交互式的应用环境,可以在指令窗口随时修改ωn,ζ1和ζ2值并再次运行unforced.m程序。在上述欠阻尼和过阻尼情况下的响应曲线如图2-64所示。可以看到程序运行后阻尼系数的值被标注在不同的曲线上,以防止混淆。

对于弹簧-重物-阻尼器系统,利用Matlab求微分方程的解是容易而有效的。一般说来,当分析一个具有多样性的输入和初始条件以及元件参数的闭环反馈控制系统时,欲直接得到这些因素与系统响应的关系是比较困难的。在这种情况下,可以利用Matlab非常有效的数值计算能力,反复运行Matlab程序并绘出曲线图,就可以得出结论。

图2-63 分析弹簧-重物-阻尼器的Matlab指令

图2-64 弹簧-重物-阻尼器的自由运动曲线(www.xing528.com)

Matlab可以用来分析以传递函数形式描述的系统。由于传递函数是多项式的比值,所须在Matlab指令中指定。以如何处理多项式是Matlab首先需要解决的问题。请记住,分子多项式和分母多项式都必

在Matlab中多项式由行向量组成,而这些行向量包含了降次排列的多项式系数。例如多项式p(s)=1s3+3s2+0s1+4s0,按图2-65的格式输入p=[1 3 0 4],请注意,尽管s的系数为0,它也一定要包含在确定p(s)的行向量中。

图2-65 输入多项式并求根

如果p是一个包含降幂排列的p(s)系数的行向量,那么roots(p)是一个包含多项式根的列向量。相反的,如果r是一个包含多项式根的列向量,那么,poly(r)是一个包含降幂排列多项式系数的行向量,见图2-65。我们可以用上述的roots()函数计算多项式p(s)的根,但是当多项式有重根时,函数rootsl()能给出更精确的结果。

矩阵乘法由Matlab的conv()函数完成。假设我们要把两个多项式相乘合并成一个多项式n(s),即

n(s)=(3s2+2s+1)(s+4)=3s3+14s2+9s+4

与此运算相关的Matlab函数就是conv(),如图2-66所示。函数polyval()用来计算多项式的值。多项式n(s)在s=﹣5处的值为n(﹣5)=﹣66,见图2-66。

图2-66 Matlab的conv()函数和polyval()函数

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈