资源描述:
《MATLAB第四章符号运算2-微分方程求解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章MATLAB符号运算彭朝霞Email:pengzhaoxia@buaa.edu.cn北京航空航天大学交通科学与工程学院2014年10月23日彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日1/1本章主要内容彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日2/1线性方程组的解析解线性方程组的解析解♣代数方程(非线性)求解:solves=solve(f,v):求方程关于指定自变量的解s=solve(f):求方程关于默认自变量的解f可以是用字符串,或符号表达式来表
2、示的方程z若f是字符串,可以不含等号,表示解方程f=0z若f是符号表达式,不能含等号彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日3/1线性方程组的解析解代数方程的求解solve3解方程x−3*x+1=0.zf是符号表达式¿¿symsx;f=x^3-3*x+1;s=solve(f,x)注意:不能写成s=solve(f=0,x)zf是字符串¿¿s=solve(’x^3-3*x+1’,’x’)¿¿s=solve(’x^3-3*x+1=0’,’x’)注意:可以不含等号,表示解方程f=0,但是也
3、可以含等号。彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日4/1线性方程组的解析解符号积分变换2求解一元二次方程a*x+b*x+c=0的解。¿¿f=sym(’a*x^2+b*x+c=0’);¿¿xf=solve(f)彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日5/1线性方程组的解析解代数方程求解solve也可以用来解方程组solve(’eqn1’,’eqn2’,…,’eqnN’,’var1,var2,…,varN’)求解由’eqn1’,’eqn2’,…,’e
4、qnN’组成的方程组关于变量’var1,var2,…,varN’的解例如:¿¿[x,y,z]=solve(’x+2*y-z=27’,’x+z=3’,...’x^2+3*y^2=28’,’x’,’y’,’z’)输出变量的顺序要书写正确!solve在得不到解析解时,会给出数值解彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日6/1线性方程组的解析解求下列线性代数方程组的解。x1cos(sita)−x2sin(sita)=ax1sin(sita)+x2cos(sita)=b¿¿symsx1x2a
5、bsita;¿¿L1=x1*cos(sita)-x2*sin(sita)-a;¿¿L2=x1*sin(sita)+x2*cos(sita)-b;¿¿[x1,x2]=solve(L1,L2,x1,x2)运行结果:x1=cos(sita)*a+b*sin(sita)x2=-a*sin(sita)+cos(sita)*b彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日7/1线性方程组的解析解求下列非线性代数方程组以y、z作变量的解。2uy+vz+w=0y+z+w=0¿¿symsyzuvw;¿¿e
6、q1=u*y^2+v*z+w;¿¿eq2=y+z+w;¿¿[yz]=solve(eq1,eq2,y,z)y=[-1/2/u*(-2*u*w-v+(4*u*w*v+v^2-4*u*w)^(1/2))-w][-1/2/u*(-2*u*w-v-(4*u*w*v+v^2-4*u*w)^(1/2))-w]z=[1/2/u*(-2*u*w-v+(4*u*w*v+v^2-4*u*w)^(1/2))][1/2/u*(-2*u*w-v-(4*u*w*v+v^2-4*u*w)^(1/2))]彭朝霞(北京航空航天大学)MATLAB基础及
7、工程应用2014年10月23日8/1微分方程解析解微分方程的解析解函数dsolve用来解符号微分方程、方程组。dsolve的使用y=dsolve(‘方程1’,‘方程2’,…‘方程n’,‘初始条件’,‘自变量’)如果没有初始条件,则求出通解,如果有初始条件,则求出特解。1微分方程中用D表示对自变量的导数/微分,如:′′′′′′求高阶微分:Dy→y;D2y→y;D3y→y。任何D后面所跟的字母为因变量。2如果省略初值条件,则表示求通解;3如果省略自变量,则默认自变量为tdsolve(’Dy=2*x’,’x’);%dy/
8、dx=2xdsolve(’Dy=2*x’);%dy/dt=2x彭朝霞(北京航空航天大学)MATLAB基础及工程应用2014年10月23日9/1微分方程解析解微分方程的解析解dy−x2求微分方程+2xy=xe的通解,并验证。dx通解的MATLAB程序为:¿¿y=dsolve(’Dy+2*x*y=x*exp(-x^2)’,’x’)¿¿whosNameSizeBy