Maple-ch-常微分方程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 / 20

第四章 微分方程

§4.1 常微分方程

4.1.1 常微分方程的解析解

1. 函数dsolve 在微分方程中的应用

在Maple 中,这是一个用途最广的函数——称为通用函数吧,几乎可以求解所有的微 分方程和方程组,既能求解解析解,也能求解数值解,本节只介绍其求微分方程的解析解中的作用:

dsolve (ODE);

dsolve (ODE,y(x),extra_args);

其中,ODE(Ordinary Differential Equation)是一个常微分方程; y(x)为未函数,求解时这个参数可以省略;第三个参数extra_args 是一个可选的参数,主要用来设置最后解析解的形式或求解过程中一些积分的设置,它的选值很广,这里仅举几个参数。

(1) explicit: 求出显式解; (2) implicit: 解可以是隐式;

(3) useInt: 运算中用“Int ”函数代替“int ”函数,可加快运算速度; (4) parametric: 将最后的解析解表达成另外一个自变量的形式。

这些参数的位置很灵活,可以放在除第一个参数位置外的任何位置,并且它们的组合 也很灵活,可以单独作用,也可几何参数合用,只要在中间用逗号隔开,而且参数并不一定需要写在一起,也可以分开。

> eq:='eq': eq:=diff(y(x),x)*(1+y(x)^2)+cos(x)=0; 可以两端都不是零

:= eq = + ⎛⎝ ⎫⎭

⎪⎪∂()y x () + 1()y x 2()cos x 0 > sol1:=dsolve(eq,explicit); 给出显式解

sol1()y x =

:= 12

- ()- - + 12()sin x 12_C12 - + + 3418()cos 2x 72()sin x _C136_C12()

/234

()

- - + 12()sin x 12_C12 - + + 3418()cos 2x 72()sin x _C136_C12()/13,

其中“_C 1”表示第一个任意常数。方程的解是很恐怖的解,这里仅给出了一个解,另

2 / 20

外还有两个更长的解,读者可以在Maple 下执行上面求解过程观察到另外两个解的全貌。这是由于将解转换成显函数造成的,假如我们将参数进行改善:

> sol2:=dsolve(eq,implicit,y(x)); 给出隐式解,式中的y(x)可省略

:= sol2 = + + + ()sin x ()y x 1

()y x 3_C10

再加上一个参数“useInt ”,可以明显感到运算速度非常快,因此,它在求解过程中积分比较复杂时很有用,同时还能使解过程、解结果给出较多的信息: > sol3:=dsolve(eq,implicit,y(x),useInt);

:= sol3 = - + d ⎛⎠⎜()cos x x d ⎛⎠

⎜⎜

()

y x - - 1_a 2_a _C10

其中“_a ”为积分变量.即解为.0)1(cos 2=+---

⎰C dt t xdx y

a

最后加入参数“parametric ”,可以知道经过一段时段运算后的结果: > sol4:=dsolve(eq,implicit,y(x),useInt,parametric);

:= sol4

我们惊讶地发现函数没有给出任何结果,这是因为解太复杂了,函数找不到用参数表示的方法。

下面我们用一个比较简单的例子来说明设置参数以后的结果,大家容易从结果中看出表示的方法:

>dsolve(diff(y(x),x)=-x/y(x), parametric); 圆曲线上切线的斜率

, = ()y x - + x 2_C1 = ()y x -- + x 2_C1

此为圆的上半圆与下半圆曲线表示式.

> dsolve(diff(y(x),x)=-x/y(x),implicit, parametric); 参数式

⎡⎣⎢⎢⎤⎦

⎥⎥, = ()x _T -_T _C1 + 1_T 2 = ()y _T _C1 + 1_T 2

此为圆曲线的参数式,但并不是常用的t a y t a x sin ,cos ==参数式格式. 2. 用函数odetest 检验常微分方程的解

odetest(sol,ODE); ——y(x)可省略 odetest(sol,ODE,y(x));——y(x)最好加上 odetest(solsys,sysODE);——用于方程组

以返回值为“0”给出解为真。 > with(DEtools):

3 / 20

> odetest(sol1[1],eq,y(x)); sol1[1]是方程的解

> odetest(sol1[2],eq,y(x)); sol1[2]是方程的解

> odetest(sol1[3],eq,y(x)); sol1[3]是方程的解

> odetest(sol2,eq,y(x)); sol2是方程的解

> odetest(sol3,eq,y(x)); sol3是方程的解

> odetest(sol4,eq,y(x)); sol4不能代入检验

Error, (in odetest) expecting the second argument to be an ODE or a set or list of ODEs. Received: y(x)

下面验证一个函数是否前面所给方程的解:

> y(x)=x^2; 验证y(x)=x^2是否方程的解,这里的y(x)不能赋给

= ()y x x 2

> odetest(%,eq); 所给函数y(x)=x^2使方程左端不为0,故不是方程的解

+ + 2x 2x 5()cos x

但它是下列方程的解:

> eq:='eq': eq:=diff(y(x),x)=2*x;

:= eq = ∂

()y x 2x

> y(x)=x^2;

= ()y x x 2

> odetest(%,eq);

3.用Deplot 函数来显示微分方程的解的图像

DEplot(deqns,vars,trange,eqns); Deplot(deqns,vars,trange,inits, eqns);

其中 deqns :是待求的微分方程或微分方程组,本节中就是指微分方程;

vars :是一个非独立的变量或变量的集合,如y(x);

trange :设定变量的取值范围;eqns 是一个等式形式的条件,如:

linecolor=blue(设定图像中线的颜色为蓝的);

相关文档
最新文档