MATLAB与Maple的符号运算

转载 2004年08月18日 23:12:00
MATLAB与Maple的符号运算
Chinamaker
http://www.dytrol.com 动力学与控制技术论坛

一 访问Maple函数
Maple命令非常之多,有几千个,使用都非常灵活多变。考虑到本书的特点,就不详细赘述,只介绍两种最常用的调用格式:maple(statement)和maple('function',arg1,arg2,…)。函数maple用于调用Maple中的符号计算“引擎”和它庞大的函数库,其中的输入参数即可以是符号变量,也可以是数值变量,其输出结构和输入参数的类型相同。
1.maple(statement)
该命令的功能是把对变量、表达式以及函数等的描述(statement)传递到MATLAB的符号运算引擎——Maple V中去,由这个引擎来完成计算任务,返回字符型结果。此函数功能非常强,它可以调用出图像处理函数外的所有函数。例如:
dsolve函数是Maple中解微分方程的函数,可以是单个微分方程,也可以是微分方程组。
【实例1】
>> maple(dsolve('(Dy)^2+y^2=1','y(0)=0.5'))
ans =
[ sin(t+1/6*pi)]
[ cos(t+1/3*pi)]
2. maple('function',arg1,arg2,…)
该命令是MATLAB调用Maple函数库的标准形式。输入参数function是函数的名,arg1,arg2,…是function函数的参数,参数个数根据function函数具体确定。
【实例2】
>>maple('mtaylor(exp(x),[x=0],5)')
ans =
mtaylor(exp(x),[x = 0],5)
注意:Maple有些函数在MATLAB启动时,并没有自动调入内存当中。上面的例子中并没有进行分解,所以在调用这些函数时候必须先读取Maple函数库。
【实例3】
>> maple('readlib(mtaylor)')
ans =
proc () local f, k, v, m, n, s, t, w; option `Copyright (c) 1991 by………………
然后我们就重新调用maple('mtaylor(exp(x),[x=0],5)')如下:
>> maple('mtaylor(exp(x),[x=0],5)')
ans =
1+x+1/2*x^2+1/6*x^3+1/24*x^4

二 运行MAPLE程序
在实际的计算中,也许一般情况下,我们运行单个maple命令即可满足要求,在更复杂的情况下,我们就不得不采用Maple编写的程序。前一种情况,上一节我们已经见过了,而后一种情况就必须有procread和maple配合才能完成。
下面采用配合实例的方法对其用法进行讲解。
【实例4】设计求取一般隐含数f(x,y)=0的导数y'解析解的程序,并要求该程序能像Maple原有函数一样被调用。
读者可参照以下步骤进行:
(1)SRC源代码文件的编写;
编写文件DYTROL.src,把它存放在MATLAB的工作目录下(可以放在MATLAB任意可以搜索到的目录下),文件内容为:
DYTROL:=proc(f)
local Eq,deq,imderiv;
Eq:='Eq';
Eq:=f;
deq:=diff(Eq,x);
readlib(isolate);
imderiv:=isolate(deq,diff(y(x),x));
end;
(2)将源代码装入Maple工作空间;
运行以下命令把DYTROL.src安装到Maple工作空间:
procread('DYTROL.src')  %转换SRC代码,装入Maple工作空间
运行后得到:
ans =
dytrol := proc (f) local Eq, deq, imderiv; Eq := 'Eq'; Eq := f; deq := diff(Eq,x); readlib(isolate); imderiv := isolate(deq,diff(y(x),x)) end
(3)借助maple命令调用驻留在内存中的新函数文件;
在MATLAB命令窗口输入命令会立即得到结果,如下:
>> s1=maple('DYTROL(x=sin(x+y(x)));')
s2=maple('DYTROL(x^2*y(x)-log(2*x)=sin(y(x)))')
s3=maple('DYTROL','sin(x+log(y(x)))=cos(y(x))')
s1 =
diff(y(x),x) = 1/cos(x+y(x))-1
s2 =
diff(y(x),x) = (-2*x*y(x)+1/x)/(x^2-cos(y(x)))
s3 =
diff(y(x),x) = -cos(x+log(y(x)))*y(x)/(cos(x+log(y(x)))+sin(y(x))*y(x))
(4)将DYTROL.src进行预编辑,就成为Maple的内码文件,保存在bin目录中。
上面的程序有个缺点,每次启动MATLAB后都要执行:
procread('DYTROL.src')
为了避免这种情况,可遵循以下步骤:
1)清理Maple的工作空间;
2)向该空间中装入源代码;
3)将SRC文件转换成Maple的内码M文件,并保存在mallab/bin目录中;
以DYTROL.src为例,指令集如下:
clear maplemex
procread('DYTROL.src');
maple('save('DYTROL.m')');
(5)调用Maple自建的内码文件。
maple('read','DYTROL.m');
ss3=maple('DYTROL','sin(x+log(y(x)))=cos(y(x))')
s3 =
diff(y(x),x) = -cos(x+log(y(x)))*y(x)/(cos(x+log(y(x)))+sin(y(x))*y(x))
说明:当Maple源文件被procread处理之后,或者M文件被Maple读入工作空间之后,就可以随时使用了,而不必每次都再次读入。

12.3 小  结
版权所有:动力学与控制技术论坛 http://www.dytrol.com (转载说明出处)
本节主要提到MATLAB如何调用Maple函数,这也是MATLAB本身功能的一个延伸和增强。MATLAB之所以有如此强大的符号运算功能,完全归功于MathWork公司收购了Maple的内核,为MATLAB发展起到如虎添翼的作用。

Maple 4 -- 小巧的符号计算软件

  • 2009年04月30日 19:23
  • 7.77MB
  • 下载

maple 16安装后,matlab 2010b符号引擎的选择方法

2012年2月,maple 16出炉! 2012年4月,下到破解版! 安装过程中,检测到MATLAB R2010B(即MATLAB 7.11)! 安装完成后,自动创建环境变量MATLAB_SYM...
  • lishoubox
  • lishoubox
  • 2012年05月13日 13:32
  • 4693

Matlab------ Matlab 2012b 使用Maple 17内核进行符号计算及Mupad与maple内核的切换

Maple 进行符号计算的速度确实比Matlab自带的Mupad的速度要快多了,本人是编程需要得到比double更多的有效数字而考虑采用Maple内核进行符号计算的,用到的函数为Digits和vpa,...
  • yf210yf
  • yf210yf
  • 2014年06月01日 10:49
  • 7302

用Maple把Laplace算子从直角坐标系转为球坐标系形式

方法之一 restart; f:=g(r,theta,phi); tx :=sin(theta)*cos(phi)*diff(f,r)+((cos(theta)*cos(phi))/r)*diff...
  • stereohomology
  • stereohomology
  • 2015年09月09日 14:15
  • 1163

Maxima符号计算系统简介

Introduction之前的一篇文章简单介绍了符号计算系统下MATLAB的代替品Python/Numpy/Scipy等,但是像Mathematica、Maple这类的以符号计算的的数学软件,其实也有...
  • ouening
  • ouening
  • 2016年11月08日 20:49
  • 1188

matlab符号运算

  • 2012年11月09日 17:55
  • 559KB
  • 下载

matlab 符号运算

  • 2014年02月28日 18:05
  • 4.53MB
  • 下载

MATLAB6.x符号运算及其应用

  • 2008年04月22日 09:01
  • 6.85MB
  • 下载

MATLAB的符号运算.ppt

  • 2013年05月09日 19:48
  • 362KB
  • 下载

MATLAB 6.x符号运算及其应用[刘宏友].pdf

  • 2013年05月07日 21:58
  • 6.85MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MATLAB与Maple的符号运算
举报原因:
原因补充:

(最多只允许输入30个字)