齐次弦振动方程的MATLAB解法
【摘要】
弦振动问题是一个典型的波动方程的建立与求解问题。本文通过利用MATLAB特有的方程求解与画图功能,有效地构造和求解了齐次弦振动方程。并通过图像,可以直观感受方程的解,从而加深对这一问题物理意义的理解。
【关键词】
振动方程 MATLAB求解 数学物理方法
【正文】
在细弦上任意取微元分析其受力情况,通过Newton定律建立细弦振动的运动方程,可以求得弦振动的泛定方程为utt?a2uxx。
要得出振动方程的解,除了泛定方程外,我们还需要知道具体问题的初始条件与边界条件。在弦振动问题里,初始条件可以从初始位移和初始速度考虑,即:
??u???utt?0t?0??(x)??(x)
边界条件是描述物理问题在边界上受约束的状态,在弦振动方程里可以归结为三类边界问题:
1
(1) 第一类边界问题:u(2) 第二类边界问题:uuxx?Lx?0?0,ux?L?0, 称为固定端。
F(t),特别的,若F(t)?0,SYx?0?0,uxx?L??0,称x?L为自由端。
(3) 第三类边界问题:第一类和第二类边界问题的线性组合。
一、 两端固定的弦振动问题
两端固定的弦振动方程的定解问题可表示如下:
??u2tt?auxx,0?x?L,t?0?ux?0?0,ux?L?0?x),u ?ut?0??(tt?0??(x)1、初始位移不为0,初始速度为0 不妨设:
?7?3l4l?(x)???sin?lx,(7?x?7),?(x)??0,(otherwise)0
(1)特征函数求解解 由d’Alembert公式:
u(x,t)?12[?(x?at)??(x?at)]
从而我们可以得到方程的级数解:
A4n?1(7?n)?[sin(7?n)?7?sin(7?n)?37]?14
(7?n)?[sin(7?n)?7?sin(7?n)?37],?n?7?
2
而我们知道,弦振动的泛定方程属于本征问题:
X''??X?0? ?X?0,X?0x?L?x?0它在两个边界上都有第一类其次边界条件,它的本征值与本征函数为:
n2?2n???2,sinx,n?1,2,3?
ll将系数带入方程,级数中每一项都是一个驻波,定义子程序wfun.m计算不同n的求和各项,再用主程序jxj将它们加起来,得到动画图形。
(MATLAB代码见附录1(1))
(2)差分方程求解
利用差分方程同样可以求出问题的解。令x?i?x,t?j?t,将微分方程改写成差分方程,即有
ui,l?1?c(ui?1,l?ui?1,l)?2(1?c)ui,j?ui,j?1
其中,
2??t? c?a2??x?2于是,初始条件可以表示为:
ui,1?? 1ui,2?[c(ui?1,1?ui?1,1)?2(1?c)ui,1]2作图时,先画出??x?的图形,然后再用x?at或x?at代替其中的x,改变at的值,就画出了不同时刻?(x?at),?(x?at)3
的图形。
(MATLAB代码见附录1(2))
解得的动态图形如下:
4
2、初始位移为0,初始速度不为0 设初始速度为:
4l?3l?1,(?x?)?((x)??77
??0,otherwise(1) 特征函数求解
通过求本征函数与本征值的方法我们可以得到方程的解析解:
n?an?u??Bnsintsinx
lln?1?其中系数,Bn?34(cosna?cosna),类似的,用函数计算级22n?a772l数中的各项,再在主函数中调用便可得解。 (MATLAB代码见附录2(1))
(2) 差分方程求解
类似于问题1,我们还可以采用差分方程求解,不过需要注意的是,题目中的初始条件应表示为:ui,2???t。
5