资源描述
TMU_BME_2013,Topic:如何使用MATLAB求解常微分方程(组),a.What?,微分方程指描述未知函数的导数与自变量之间的关系的方程。未知函数是一元函数的微分方程称作常微分方程。未知函数是多元函数的微分方程称作偏微分方程。MATLAB(matrix%表明其为列向量xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);xdot(2)=1/C*x(1);end,方式二:无额外参数functiondC=odefun(t,C)dC=0.1*C(3)+37.5-2.52*C(1);%直接书写列矩阵1.68*C(1)-0.01*C(2);0.004*C(2)-0.1*C(3);end,Examples,E.g.1求下列微分方程组的通解x=2x-3y+3zy=4x-5y+3zz=4x-4y+2z,输入命令:x,y,z=dsolve(Dx=2*x-3*y+3*z,Dy=4*x-5*y+3*z,Dz=4*x4*y+2*z,t)x=simple(x);y=simple(y);z=simple(z);%化简结果,运行结果为:x=(c1-c2+c3+c2e-3t-c3e-3t)e2ty=-c1e-4t+c2e-4t+c2e-3t-c3e-3t+c1-c2+c3)e2tz=(-c1e-4t+c2e-4t+c1-c2+c3)e2t,Examples,E.g.2求解y=-t*y+et*y+3sin(2t)。已知3.9t4.0,y(0)=2,y(0)=8,函数文件odefun.m的建立functiony=odefun(t,x)y=zeros(2,1);%列向量y(1)=x(2);y(2)=-t*x(1)+exp(t)*x(2)+3*sin(2*t);end求解程序关键步骤t,y=ode45(odefun,3.94.0,28),程序执行结果,E.g.3求解人体中不同形式的碘浓度的三房室模型。已知碘在三房室之间的转换速率为:k21=0.84/d,k01=1.68/d,k32=0.01/d,k13=0.08/d,k03=0.02/d,f10=150g/d,f30=0g/d。初始条件为:x1(0)=81.2g,x2(0)=6821g,x3(0)=682g,v1=4L,v2=2L,v3=5L。仿真时间为30d。,Examples,通过列写方程组,建立odefun.m文件即方程组文件functiondC=odefun(t,C)dC=0.1*C(3)+37.5-2.52*C(1);1.68*C(1)-0.01*C(2);0.004*C(2)-0.1*C(3);end程序关键部分列写如下:t,C=ode15s(fun1,0,30,20.3,3410.5,136.4),E.g.3结果,Examples,E.g.4求解方程y+1000(y2-1)y+y=0。已知初值y(0)=2,y=0,自变量0t3000。,该方程为刚性方程,在使用Simulink模块求解时通过设置Configuration中solver选项为ode15s来求解方程,并设置仿真时间为0到3000。,执行结果,请您指正,THANKS!,
展开阅读全文