计算机代数系统第4章-方程求解(3)

2019-03-28 08:52

1.2.3 递归方程的求解

在Maple中, 可以求解有限差分方程(也称递归方程), 所需调用的函数是rsolve, 该函数使用的是一些比较通用的方法, 例如产生函数法、z变换法以及一些基于变量替换和特征方程的方法. 作为例子, 求解Fibonacci多项式: > eq:=f(n)=f(n-1)+2*f(n-2);

eq := f(n)???f(n???1)???2f(n???2)

> rsolve({eq,f(0)=1,f(1)=1},f(n)); 12(-1)???2 33nn当然, 并不是所有的递归形式的函数方程的解可以写成解析形式, 如果不能, Maple将保留原来的调用形式. 此时, 可用asympt函数获得它的渐进表达式, 也就是1/n的级数解. 例如, 对于一个具有超越形式的递归函数方程, 仍然可以得到解的渐进形式: > rsolve(u(n+1)=ln(u(n)+1),u(n)); rsolve(u(n???1)???ln(u(n)???1),u(n)) > asympt(%,n,5);

- 110 -

21???n_C???211122?2ln(n)???_C???_C2?????_C???ln(n)???ln(n)2????39329?9?3?1???????O??n4??n2n3?? 1.2.4 不等式(组)求解

求解一元不等式方程(组)使用命令solve: > solve((x-1)*(x-2)*(x-3)<0,x);

> solve((x-1+a)*(x-2+a)*(x-3+a) < 0, {x});

{x???1???a},{2???a???x,x???3???a}

> solve(exp(x)>x+1);

RealRange(??,Open(0)),RealRange(Open(0),?)

> solve({x^2*y^2=0,x-y=1,x<>0});

{y???0,x???1},{y???0,x???1}

对于由不等式方程组约束的最优问题的求解使用“线性规则”工具包simplex:

> with(simplex): > cnsts:={3*x+4*y-3*z<=23,

RealRange(??,Open(1)),RealRange(Open(2),Open(3))- 111 -

5*x-4*y-3*z<=10,7*x+4*y+11*z<=30};

cnsts := {3x???4y???3z???23,5x???4y???3z???10,7x???4y???11z???30}

> obj:=-x+y+2*z;

> maximize(obj,cnsts union {x>=0,y>=0,z>=0}); 149{z???,y???,x???0} 28obj := ?x???y???2z2 常微分方程求解

微分方程求解是数学研究与应用的一个重点和难点. Maple能够显式或隐

式地解析地求解许多微分方程求解. 在常微分方程求解器dsolve中使用了一些传统的技术例如laplace变换和积分因子法等, 函数pdesolve则使用诸如特征根法等经典方法求解偏微分方程. 此外, Maple还提供了可作摄动解的所有工具, 例如Poincare-Lindstedt法和高阶多重尺度法.

帮助处理常微分方程(组)的各类函数存于Detools软件包中, 函数种类主要有:可视化类的函数, 处理宠加莱动态系统的函数, 调整微分方程的函数, 处理积分因子、李对称法和常微分方程分类的函数, 微分算子的函数, 利用

- 112 -

可积性与微分消去的方法简化微分方程的函数, 以及构造封闭解的函数等. 更重要的是其提供的强大的图形绘制命令Deplot能够帮助我们解决一些较为复杂的问题.

2.1 常微分方程的解析解

求解常微分方程最简单的方法是利用求解函数dsolve. 命令格式为: dsolve(ODE);

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

dsolve({ODE, ICs}, y(x), extra_args); dsolve({sysODE, ICs}, {funcs}, extra_args);

其中, ODE—常微分方程, y(x)—单变量的任意变量函数, Ics—初始条件, {sysODE}—ODE方程组的集合, {funcs}—变量函数的集合, extra_args—依赖于要求解的问题类型.

例如, 对于一阶常微分方程xy??yln(xy)?y可用dsolve直接求得解析解: > ODE:=x*diff(y(x),x)=y(x)*ln(x*y(x))-y(x);

- 113 -

???ODE := x???xy(x)?????y(x)ln(xy(x))???y(x) ??> dsolve(ODE,y(x)); y(x)???e?x???_C1????x 可以看出, dsolve的第一个参数是待求的微分方程, 第二个参数是未知函数. 需要注意的是, 无论在方程中还是作为第二个参数, 未知函数必须用函数的形式给出(即:必须加括号, 并在其中明确自变量), 这一规定是必须的, 否则Maple将无法区分方程中的函数、自变量和参变量, 这一点和我们平时的书写习惯不一致. 为了使其与我们的习惯一致, 可用alias将函数用别称表示: > alias(y=y(x)); > ODE:=x*diff(y,x)=y*ln(x*y)-y; - 114 -


计算机代数系统第4章-方程求解(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:应用现代汉语

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: