




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 微分方程 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; 可以两端都不是零 sol1:=dsolve(eq,explicit); 给出显式解其中“_C1”表示第一个任意常数。方程的解是很恐怖的解,这里仅给出了一个解,另外还有两个更长的解,读者可以在Maple下执行上面求解过程观察到另外两个解的全貌。这是由于将解转换成显函数造成的,假如我们将参数进行改善: sol2:=dsolve(eq,implicit,y(x); 给出隐式解,式中的y(x)可省略 再加上一个参数“useInt”,可以明显感到运算速度非常快,因此,它在求解过程中积分比较复杂时很有用,同时还能使解过程、解结果给出较多的信息: sol3:=dsolve(eq,implicit,y(x),useInt);其中“_a”为积分变量.即解为 最后加入参数“parametric”,可以知道经过一段时段运算后的结果: sol4:=dsolve(eq,implicit,y(x),useInt,parametric);我们惊讶地发现函数没有给出任何结果,这是因为解太复杂了,函数找不到用参数表示的方法。下面我们用一个比较简单的例子来说明设置参数以后的结果,大家容易从结果中看出表示的方法:dsolve(diff(y(x),x)=-x/y(x), parametric); 圆曲线上切线的斜率此为圆的上半圆与下半圆曲线表示式. dsolve(diff(y(x),x)=-x/y(x),implicit, parametric); 参数式 此为圆曲线的参数式,但并不是常用的参数式格式.2. 用函数odetest检验常微分方程的解odetest(sol,ODE); y(x)可省略odetest(sol,ODE,y(x);y(x)最好加上odetest(solsys,sysODE);用于方程组以返回值为“0”给出解为真。 with(DEtools): odetest(sol11,eq,y(x); sol11是方程的解 odetest(sol12,eq,y(x); sol12是方程的解 odetest(sol13,eq,y(x); sol13是方程的解 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)=x2; 验证y(x)=x2是否方程的解,这里的y(x)不能赋给 odetest(%,eq); 所给函数y(x)=x2使方程左端不为0,故不是方程的解但它是下列方程的解: eq:=eq: eq:=diff(y(x),x)=2*x; y(x)=x2; odetest(%,eq);3用Deplot函数来显示微分方程的解的图像DEplot(deqns,vars,trange,eqns);Deplot(deqns,vars,trange,inits, eqns);其中 deqns:是待求的微分方程或微分方程组,本节中就是指微分方程;vars:是一个非独立的变量或变量的集合,如y(x); trange:设定变量的取值范围;eqns是一个等式形式的条件,如: linecolor=blue(设定图像中线的颜色为蓝的);stepsize=0.05(变量的取值步长);inits:是微分方程的初值条件,如果有多个初值条件,用集合表示,并且每个初值条件都必须用方括号起来,如果不给初始值,函数将等间隔的取最后解中的常数为某值。请看下面的例子: with(DEtools): eq:=eq: eq:=diff(y(x),x)*(1+y(x)2)+cos(x)=0; DEplot(eq,y(x),x=-10.10,y=0.3,linecolor=blue,stepsize=0.05); 这个例子中没有为微分方程设定初始值,所以函数用一些箭头来表示解的趋势,假如我们设方程的初始值是y(0)=2。图像将变为: DEplot(eq,y(x),x=-10.10,y(0)=2,y=0.3,linecolor=blue,stepsize=0.05); y(0)=2这个初始条件也可放在“y=0.3”的后面图形中的粗线就是满足初始条件的解的图形,假如我们对这个图形是不是刚才求得的解的图形有疑问的话,我们可以用另外一个作图函数contourplot来验证一下,这个函数在plots程序包里: with(plots): f:=sin(x)+1/3*y3+y: contourplot(f,x=-10.10,y=-3.3,coloring=red,blue);显然,过y(0)=2这点的图形跟上面图形中篮粗线对应的图形是一样的,说明我们的求解没有错。如果将这个图的范围适当调整,尽量得到过y(0)=2的那条曲线,显示效果会更好些。实际上,只要将作图中y的范围改为-2.552.55即可达到目的.4用各种特定函数求解各种微分方程P176odeadvisor(ODE); 在Detools程序包中这是一个判断微分方程类型的函数,可用来判分离变量、一阶线性、全微分方程还是普通方程。最常见的返回参数和中文含义如下:separable 可分离变量方程,用separablesol(lode,v)求解,其中v为未知函数linear 线性方程, 用linearsol(lode,v)homogeneous 齐次型方程,用homogeneous(lode,v)bernoulli 贝努里exact 全微分方程Abel 阿贝尔方程Quadrature 积分形式的微分方程(如dy=xdx),是可离变量方程中最简单的(1)可分离变量的方程解:(Maple-lx4-解法参考) eq:=eq: eq:=x*y(x)*(1-x*diff(y(x),x)=x+y(x)*diff(y(x),x); with(DEtools): 调用程序包 odeadvisor(eq); 判断方程类型 方程为可分离变量的方程 separablesol(eq,y(x); 用程序包中的分离变量法求解法2: 仍用dsolve求解: dsolve(eq,explicit); 用通用函数求解.接上方程,结果与上法相同法3: 将方程改为求隐式解: diffy:=diffy: 初始化变量,这步一要定做 diffy=solve(eq,diff(y(x),x); 解出y的导数 f:=f: g:=g: f:=x-x/(x2+1);g:=y-y/(y-1); 构造函数f(x),g(y) 这里的y视为单变量,不要写成y(x) RHS:=int(g(y),y);LHS:=int(f(x),x); 赋表达式分别得左、右两端 LHS=RHS+C; 给出隐式解 solve(%,y); 求出显式解(2)齐次型的方程解 (Maple-lx4-1)法1: (按齐次方程专用求解函数求解) eq:=eq; eq:=diff(y(x),x)=y(x)/x+tan(y(x)/x); with(DEtools): 调程序包 odeadvisor(eq); 判断类型 齐次型方程的A种,是一阶、线性对称方程 genhomosol(eq); 用齐次方程的求解函数求解,得以下两个通解法2: 用通用函数求解: dsolve(eq,explicit);法3: 按解齐次型方程的求解方法求解: y:=y:x:=x:u:=u: 如果不是新打开的Maple工作窗口,最好要这一步 y:=u*x: one:=expand(eq); 试将方程中“y/x”直接换成u后给出新方程 two:=subs(diff(x(x),x)=1,x(x)=x,one); 简化方程 diffu:=solve(two,diff(u(x),x); 化为可分离变量的方程 left:=int(1/tan(u),u);right:=int(1/x,x); 按可分离变量方法求解,这里的u不能写成u(x),因为要把它当单变量进行积分 y:=y: 初始化变量y,此前它是”ux” subs(u=y/x,left)=right+_C1; solve(%,y);这一结果与前的解仅在于任意常数的写法上不同而已.法4: 本人的解法化为分离变量方程的求解函数进行求解: y(x):=y(x):x:=x:u(x):=u(x): y(x):=u(x)*x: 注意函数关系,如果用y=ux或(x)=u*x,得不到下面的形式 eq1:=subs(y(x)/x=u(x),eq); 替换完毕,再对方程化简上式两端可不再化简,解过程用时相近 separablesol(eq1,u(x); 用分离变量法函数求解方程,得两个同样的通解 a:=subs(u(x)=y/x,%); 换回原变量,如果不将两个通解赋值给集合a,就不能用“solve”对集合中的两个非方程组的函数关于同一变量求解 y1:=solve(op(1,a),y);y2:=solve(op(2,a),y); 给出两个显式解上面用了提出集合元素的函数“op”,参第一章“1.1.3 集合”. 也可用分离方程中变量的函数isolate,执行“isolate(op(1,a),y);”得到第一个通解中的y的表达式.请试之.Ex.2 解齐次型(C)的微分方程 答案:解 (Maple-lx4-2)也可以用通用求解函数dsolve()求解.这里选用求齐次型方程的求解函数进行求解: eq:=eq: eq:=diff(y(x),x)=(x-y(x)+1)/(x+y(x)-2); with(DEtools): a:=genhomosol(eq); 用齐次型方程的求解函数求解,解用集合表示,其解需要按元素取出使用,为此,将解赋给集合“a”由于x与y的隐式关系很简单,而这里的显示结果即较为复杂,为此,如以下化简: subs(_C1=C,a1):subs(y(x)=z,a1):subs(_C1=C,%); 替换 map(simplify,%); 对上式两端化简。因为上式根号中的内容计算机不认识,现在认识的是它的如下根式中的化简结果,所以,要想解出根式下面的表达式,要先化简 isolate(%,8*C2*x2-8*C2*x+2*C2+1); 解出根式下面的表达式 simplify(lhs(%)-rhs(%)=0; 取出上式的左右两端作差的方程,目的是消去相同项 sort(%,z); 对变量z按降幂排此代数方程的两端 simplify(lhs(%)+14*C2-1)=-4*C2*_C1; 用solve解出后两项行吗? factor(%)/(-4*C2); 先分解因式,再除以分母才可以得到下面的结果 subs(z=y,%):subs(_C1=C,%);注: 这个结果用通用求解函数也不能简单给出,而是给出 dsolve(eq,implicit);问题: 试将此结果化为如上多项式形式的“标准”答案。(3)一阶线性方程Ex. 3 解一阶线性微分方程 答案:解 (Maple-lx4-3) eq:=eq: eq:=diff(y(x),x)+y(x)/x=sin(x)/x;法1: (用通用函数求解,解出后的检验略) dsolve(eq);法2: (用特定求解方程的函数求解,解出后的检验略) with(DEtools): linearsol(eq);法3: (用的通解公式求解) P(x):=1/x;Q(x):=sin(x)/x; y(x)=exp(-int(P(x),x)*(int(Q(x)*exp(int(P(x),x),x)+C);(4) 贝努里方程Ex. 4 解贝努里微分方程解(Maple-lx4-4) restart; eq:=eq: eq:=diff(y(x),x)=6*y(x)/x-x*y(x)2;法1:(用通用函数求解) dsolve(eq); 用通用函数求解法2: (按贝努里方程专用求解函数求解) with(DEtools): bernoullisol(eq); 法3: (按解贝努里方程的推导方法求解) eq1:=subs(y(x)=1/z(x),eq); with(DEtools): odeadvisor(eq1,z(x); simplify(%); 如用通用函数或专用求解函数求解,这步不需要 factor(%)*(-z(x)2); 如用通用函数或专用求解函数求解,这步不需要 linearsol(%); 上面已经判断为线性方程,就可用线性方程专用求解函数 subs(z(x)=1/y(x),%); solve(%,y(x); 也可用simplify(%)(5) 全微分方程解 (Maple-lx4-4) restart; eq:=eq: eq:=diff(y(x),x)=(2+y(x)*exp(x*y(x)/(2*y(x)-x*exp(x*y(x);法1:(用通用求解函数求解) eq1:=eq1: eq1:=(2*y(x)-x*exp(x*y(x)*diff(y(x),x)=2+y(x)*exp(x*y(x); with(DEtools): sol1:=dsolve(eq); 系统用隐式给出了通解 odetest(sol1,eq); 验隐式解是正确的 sol2:=dsolve(eq,explicit); 要求给出显式解 odetest(sol2,eq); 验显式解是正确的法2: (用专用求解函数求解) odeadvisor(eq,y(x); 判断方程类型(给出结果不知是何类型但从原方程观察应为全微分方程(exact) odeadvisor(eq1,y(x); 转换成“eq1”判断为全微分方程(是否都需这样转化) exactsol(eq1); 用全微分方程的专用求解函数求解法3:(按全微分方程的求解步骤进行求解) M:=M:N:=N: M:=(x,y)-2+y*exp(x*y);N:=(x,y)-(2*y-x*exp(x*y); eq2:=eq2: eq2:=M(x,y(x)+N(x,y(x)*diff(y(x),x)=0; 化为M(x,y)dx+N(x,y)dy=0格式 testeq(diff(N(x,y),x),diff(M(x,y),y); 方程为全微分方程的充要条件是 exactsol(eq2); 方程的隐式解为Ex.5 解 (Maple-lx4-6) 要求: 用3种方法给出通解,并将答案化成下式。答案:(6) 高阶常系数线性(非)齐次微分方程Maple: P188193(7) 级数解(默认为5阶展式)Maple: P193195dsolve(ODE,y(x),4.1.1 常微分方程的解析解4.1.2 常微分方程组的解析解求解函数与求解常微分方程所用的函数一样,它的参数形式如下:dsolve(sysODE,Ics,func,extra_args);其中各参数的意义如下: sysODE 方程组的集合 Ics 初始条件的集合 Func 待求的函数集合 Exgra_args 设置解的形式 解 sysOde:=sysOde: sysOde:=D(x)(t)=x(t)+y(t)+exp(-t),D(y)(t)=y(t); dsolve(sysOde,x(t),y(t); 解 sysOde:=sysOde: sysOde:=D(x)(t)=y(t)-z(t),D(y)(t)=z(t),D(z)(t)=y(t); dsolve(sysOde,x(t),y(t),z(t),implicit); odetest(%,sysOde); 验法1 a:=dsolve(sysOde,x(t),y(t),z(t); 验法2 odetest(a,sysOde);4.1.3 常微分方程定解问题的求解很多时候求定解问题是先求出通解,再求定解。但用Maple在大多数情形下可直接求解。所用求解函数仍是dsolve:dsolve(ODE,ICs,y(x),extra_args);dsolve(sysODE,sysICs,func,extra_args);注意: 在使用上面第二个命令求方程组定解问题时,“sysODE,sysICs”的内容都要以元素给出,而不能用子集合分别给出“sysODE”、“sysICs”。1 一个方程的定解问题解: (一阶方程的定解问题) restart; eq:=eq: eq:=D(y)(x)+4*x*y(x)/(x2-1)=x*sqrt(y(x); 简化方程再求解 sol1:=dsolve(eq,y(0)=4,y(x); 给出含RootOf(查帮助)的解 sol1:=allvalues(sol1); 将RootOf表达的解化为常见式法2: (隐式解可以避开RootOf函数,但解过程稍复杂) sol2:=dsolve(eq,y(x),implicit); 求隐式解 isolate(subs(x=0,y(0)=4,sol2),_C1); 确定任意常数_C1 simplify(%); isolate(subs(_C1=-2,sol2),y(x); 将任意常数_C1代入解sol2中解: (高阶方程的定解问题) restart; eq:=eq: eq:=diff(x(t),t,t)-2*diff(x(t),t)+x(t)=4*t*exp(t); dsolve(eq,x(0)=2,D(x)(0)=2,x(t);2方程组的定解问题解: (方程组的定解问题) sysOde:=sysOde: sysOde:=D(x)(t)=x(t)+y(t)+exp(-t),D(y)(t)=y(t); dsolve(sysOde1,sysOde2,x(0)=0,y(0)=0,x(t),y(t);4.1.4 常微分方程的数值解除了上面介绍的几种特殊的常微方程以外,大部分常微方程都很难求解析解,如下面这个简单的一阶方程: eq:=eq: eq:=D(y)(x)=cos(x*y(x); dsolve(eq,y(x);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年店铺经营考试题目及答案
- RAD-FHR-peptide-生命科学试剂-MCE
- racemic-5-6-EET-Ethanolamide-生命科学试剂-MCE
- PROTAC-HDAC6-degrader-5-生命科学试剂-MCE
- 井下配电工考试题及答案
- 建筑结构优化设计方案
- 2025湖南岳阳市平江县第四人民医院公开招聘临聘人员5人考前自测高频考点模拟试题及答案详解(必刷)
- 邮政收件员面试题及答案
- 2025甘肃平凉市灵台县第二批城镇公益性岗位人员招聘114人模拟试卷附答案详解(典型题)
- 医学法学考试试题及答案
- 麦肯锡的《问题分析与解决技巧》课件
- 加油站新进员工培训计划方案
- CJJ-T 135-2009 (2023年版) 透水水泥混凝土路面技术规程
- 武汉天河机场招聘笔试题及答案
- 湿陷性黄土湿陷量计算表
- 在课堂教学中寻找发展学生科学思维的生长点课件
- 因离婚给孩子申请改姓协议书
- 大众蔚揽保养手册
- 中共一大会址
- 01第一章-稻谷的加工汇总课件
- 六年级LOGO小海龟编程
评论
0/150
提交评论