常微分方程有时很难求解,MATLAB提供了功能强大的工具,可以帮助求解微分方程。函数dsovle计算常微分方程的符号解。因为我们要求解微分方程,就需要用一种方法将微分包含在表达式中。所以,dsovle句法与大多数其它函数有一些不同,用字母D来表示求微分,D2,D3等等表示重复求微分,并以此来设定方程。任何D后所跟的字母为因变量。方程
>> dsolve( ' Dy=1+y^2 ' ) % find the general solution
ans=
-tan(-x+C1)
其中,C1是积分常数。求解初值y(0)=1的同一个方程就可产生:
>> dsolve(' Dy=1+y^2 ',' y(0)=1 ') % add an initial condition
y=
tan(x+1/4*pi)
独立变量可用如下形式指定:
>> dsolve(' Dy=1+y^2 ',' y(0)=1 ',' v ') % find solution to dy/dv
ans=
tan(v+1/4*pi)
让我们举一个二阶微分方程的例子,该方程有两个初始条件:
>> y=dsolve(' D2y=cos(2*x)-y ',' Dy(0)=0 ',' y(0)=1 ')
y=
-2/3*cos(x)^2+1/3+4/3*cos(x)
>> y=simple(y) % y looks like it can be simplified
y=
-1/3*cos(2*x)+4/3*cos(x)
通常,要求解的微分方程含有一阶以上的项,并以下述的形式表示:
通解为:
>> y=solve( 'D2y-2Dy-3*y=0 ')
y=
C1*exp(-x)+C2*exp(3*x)
加上初始条件:y(0)=0和y(1)=1可得到:
>> y=solve( ' D2y-2Dy-3*y=0 ' , ' y(0)=0,y(1)=1 ' )
y=
1/(exp(-1)-exp(3))*exp(-x)-1/(exp(-1)-exp(3))*exp(3*x)
>> y=simple(y) % this looks like a candidate for simplification
y=
-(exp(-x)-exp(3*x))/(exp(3)-exp(-1))
>> pretty(y) % pretty it up
exp(-x)-exp(3 x)
- ---------------------
exp(3) -exp(-1)
现在来绘制感兴趣的区域内的结果。
>> ezplot(y,[-6 2])

|
|
图22.3 符号函数y=-(exp(-x)-exp(3*x))/(exp(3)-exp(-1)) (-6≤x≤2)
微分方程组
函数dsolve也可同时处理若干个微分方程式,下面有两个线性一阶方程。
通解为:
>> [f,g]=dsolve( ' Df=3*f+4*g ' , ' Dg=-4*f+3*g ' )
f=
C1*exp(3*x)*sin(4*x)+C2*exp(3*x)*cos(4*x)
g=
-C2*exp(3*x)*sin(4*x)+C1*exp(3*x)*cos(4*x)
加上初始条件:f(0)=0和g(0)=1,我们可以得到:
>> [f,g]=dsolve( ' Df=3*f+4*g ' , ' Dg=-4*f+3*g ' , ' f(0)=0,g(0)=1 ' )
f=
exp(3*x)*sin(4*x)
g=
exp(3*x)*cos(4*x)

RSS订阅
邮件订阅