triplequad(Fun,a,b,c,d,m,n,?) %三重积分dxdyf(x,y,z)dz
bdn???acm
8.代数方程与常微分方程的求解 (1)代数方程的图解法 如:求解方程:
e?x?10
x2ezplot('exp(x)-x^2-10',[0,5]) hold on ,line([0,5],[0,0])
注:通过局部放大图形,可得到原方程的解,直到曲线与x轴的交点附近完全一致。如下图红圈所示。
(2)代数方程的符号解
solve(eqn) %求解方程eqn=0,输入变量eqn可以是符号表达式或字符串
solve(eqn,'x') %对指定变量x求解eqn(x)=0
solve(eqn1,eqn2, ... ,eqnn) %求解方程:eqn1=0,eqn2=0, ... ,eqnn=0
32
1使用solve函数求解方程:x+4x-4x-1=0 如:○
solve('x^3+4*x^2-4*x-1')
2使用solve函数求解方程组:x+y=1,x-3y=5。 ○
[x,y]=solve('x+y=1','x-3*y=5')
(3)一般非线性方程数值解 x=fsolve(Fun,x0)
其中,Fun应该用M函数文件或inline函数按指定的格式描述,x0为搜索点的初值,方程求根程序从该值开始逐步减小误差搜索出满足方程的实根x。
如:先用图解法观察方程5x2sinx-e-x=0在区间[0,10]内有多少解,然后试用数值方法求之。
ezplot('5*x^2*sin(x)-exp(-x)',[0,10]) hold on line([0,10],[0,0])
从图中可以看出在[0,10]内共有4个解,分别在0,3,6,9附近
从而可以使用fsolve函数求其数值解
fun=inline('5*x.^3.*sin(x)-exp(-x)'); fsolve(fun,[0,3,6,9])
例:求解方程组:x-0.7sinx-0.2cosy=0, y-0.7cosx+0.2siny=0 解:先编制函数文件fu.m function y=fu(x)
y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2))=0; y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2))=0; y=[y(1),y(2)];
在命令窗口调用fu函数,并计算: x=fsolve('fu',[0.5,0.5])
结果为: x=
0.5265 0.5079
(4)常微分方程的符号解(解析解) dsolve(f1,f2, ... fn) dsolve(f1,f2, ... Fn,'x')
其中,fi既可以描述微分方程,又可以描述初始条件或边界条件。在描述微分方程,可以用D4y表示y(4)(t),还可以用D2y(2)=3表示y''(2)=3。如火自变量不是t而是x,则可以用后一个语句指明自变量。
如:求解微分方程y''-y'-ex=0的通解及在初始条件y(0)=1;y'(0)=2下的特解。
dsolve('D2y-Dy-exp(x)=0','x') ans =
C3*exp(x) + exp(x)*(x + C2*exp(-x))
在初始条件y(0)=1;y'(0)=2下:
dsolve('D2y-Dy-exp(x)=0','y(0)=1','Dy(0)=2','x') ans =
exp(x) + x*exp(x)
(5)常微分方程的数值解法
[T,Y]=ode45(Fun,[t0,tf],y0) %在区间[t0,tf]上,用初始条件y0求解显式微分方程:y'=f(t,y),t0默认为0
例:求解微分方程y'=-2y+2x2+2x,0?x?0.5,y(0)=1 fun=inline('-2*y+2*x^2+2*x','x','y'); [x,y]=ode45(fun,[0,0.5],1); plot(x,y) %绘制解函数曲线图
例:考虑描述振荡器的经典Van der Pol方程:
ddt2y2??(y2dy?1)?y?0dt
在初始条件y(0)=1y'(0)=0的解(取μ=7)