[收稿日期] 2007 03 12
[作者简介] 刘亦斌 (1970 ) , 男 , 1992 大学毕业 , 讲师 , 现主要从事计算机与高等数学方面的教学与研究工作 。
基 于 Maple 系 统 的 Riccati 方 程 自 动 求 解 的 实 现
刘亦斌
(泉州师范学院高职学院 ,福建 泉州 362000)
[摘要] 利用非线性演化方程的精确行波解的手工推导和计算的原理 , 结合计算机符号计算 ,在计算机代
数系统 M aple 上 ,开发了基于非线性代数方程组吴文俊消元法的非线性演化方程精确行波解的自动求解
软件包 ,实现了非线性方程 (组) 的求解过程的完全自动化 。
[关键词] 非线性演化方程 (组) ;行波解 ; 计算机代数系统 M aple ; Riccati 方程
[中图分类号] TP319 [文献标识码] A [文章编号] 1673 1409 (2007) 02 N011 04 N
目前对基于单个 Riccati 方程 、 耦合的 Riccati 方程和三耦合的 Ricatti 方程构造非线性演化方程的精
确行波解的计算 , 往往采用作行波变换 , 再通过导数代换 ,利用吴文俊消元法来求出行波解
[1]
。 这种手
工推算的代数方法计算繁冗 , 使得该方法的应用受到很大的局限性 。
要实现基于 Riccati 方程的非线性演化方程 (组) 精确行波解的计算机自动推导 , 有 3 个关键问题
需待解决 。首先要自动推导出行波解的阶数 m ;其次要有效地求解待定系数 a
i
等 ,待定常数 k ,c 和方程
(组) 中的
p
,
q
,r ,s 等的非线性代数方程组 ;最后要保证解集的最小化 , 即自动判断并删除所有的特解 。
Dmain 由以下 6 个模块构成 : ① 主模块 Dmain () , 完成一些初始化工作以及对其他几个子模块的
调用 ; ② Fdlst () , 根据方程中函数的自变量产生行波变量 , 同时将偏微分方程 (组) 转化为常微分方
程 (组) ; ③ find _ m _ n () , 通过平衡方程组中各个方程的线性最高阶导数项和最高阶非线性的阶数 ,
确定行波解的阶数 ; ④ coeff () , 导出行波解系数所满足的非线性代数方程组 ; ⑤ sol () , 简化和分组
非线性代数方程组 , 利用吴文俊消元法求解 , 并根据用户的要求去除所有的特解 ; ⑥ Print () , 删除特
解及重复解 , 并依特定的格式输出最终的行波解 。 将 Dmain 制成 M aple 上的一个共享包 “Dmain畅 m” ,
通过调用 Dmain (参数 1 , 参数 2 , 参数 3) 求解非线性演化方程 (组) 。
1 方程 (组) 参数的输入
主模块 Dmain()的参数 1 要求以列表的形式给出 ,即方程列表 。 列表的每个方程必须以等式的形式
给出 。 参数 2 是用来控制是否保留平凡解(在程序中由 c_key 控制) 、是否保留复解(由 c_
p
ar 控制) ,当参
数 2 的值为 1(即 c_key = 0 ,c_
p
ar = 0)时 ,方程组的解必须去除所有平凡解和复解 ;当参数 2 的值为 2(即 c
_key = 1 ,c_
p
ar = 0)时 ,方程组的解保留了平凡解 ,去除复解 ;当参数 2 的值为 3(即_key = 0 ,c_
p
ar = 1)时 ,
方程组的解保留了复解 ,去除平凡解 ;当参数 2 的值为 4(即 c_key = 1 ,c_
p
ar = 1)时 ,方程组的解保留了所
有的平凡解和复解 。 至于参数 3(在程序中由
p
_key 控制) ,当其值为 1 时 ,最终输出的方程(组)的形式是
基于单个 Riccati 方程的 ;值为 2 时 ,最终输出的方程组的形式是基于耦合的 Riccati 方程的 ;值为 3 时 ,最
终输出的方程组的形式是基于三耦合的 Riccati 方程的 。
1畅1 参数检查
如果错误的参数输入通过了 M aple 并不很严格的参数审查 ,可能导致出现错误的结果而用户毫不知
情 。 参数的类型在变量类型声明后由 M aple 系统自行检查 ,参数的数目由程序验证 。 如果出错 ,则给出
相应的错误提示信息 。
1畅2 处理参数 1 ,即方程列表
首先对方程列表中的每个方程通分 ,并取其分子 。这样做的目的是在保持方程解不变的情况下消除
·11·
长江大学学报 (自科版) 理工卷
2007 年 6 月 第 4 卷 第 2 期
Journal of Yangtze University (Nat Sci Edit) Sci & Eng V Jun畅2007 , Vol畅4 No畅2