76
第第第 MATLAB 第第第第第 第第第第第第第第第第第第第第第第第 第第第第第第第第第第第第第第第 第第 第第第第第第第第第第第第第第第第第第第第 、。 第 Matlab7.0 第 第第第第第第第第第第第第第第第第第第 第 ,, 第第第第第第第第第第第第第第第Matlab 第第第第第第第第第第第第第 Symbolic Math Toolbox 第

第三讲 MATLAB 的符号运算

  • Upload
    ziven

  • View
    160

  • Download
    0

Embed Size (px)

DESCRIPTION

第三讲 MATLAB 的符号运算. 科学与工程技术中的数值运算固然重要,但自然科学理论分析中各种各样的公式、关系式及其推导就是符号运算要解决的问题。 在 Matlab7.0 中,符号计算虽以数值运算的补充身份出现,但它们都是科学计算研究的重要内容。 Matlab 开发了实现符号计算的工具包 Symbolic Math Toolbox 。. 符号数学工具箱中的工具是建立在功能强大的 Maple 的基础上。 它最初是由加拿大的滑铁卢 (Waterloo) 大学开发出来的。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第三讲  MATLAB 的符号运算

第三讲 MATLAB 的符号运算• 科学与工程技术中的数值运算固然重要,但自

然科学理论分析中各种各样的公式、关系式及其推导就是符号运算要解决的问题。

• 在 Matlab7.0 中,符号计算虽以数值运算的补充身份出现,但它们都是科学计算研究的重要内容。

• Matlab 开发了实现符号计算的工具包 Symbolic Math Toolbox 。

Page 2: 第三讲  MATLAB 的符号运算

• 符号数学工具箱中的工具是建立在功能强大的 Maple 的基础上。

• 它最初是由加拿大的滑铁卢 (Waterloo) 大学开发出来的。

• 如果要求 Matlab7.0 进行符号运算,那么首先由 Maple 计算并将结果返回到 Matlab7.0 命令窗口。

Page 3: 第三讲  MATLAB 的符号运算

两个数学分析的可视化界面• 图示化符号计算器 ( 由命令 funtool 引出 )

• 泰勒级数逼近分析界面 ( 由命令 taylortool 引出 )

Page 4: 第三讲  MATLAB 的符号运算

图示化符号计算器• 由三个独立的窗口构成,通过函数运算

控制窗口来演示另外两个图形窗口,任何时候,只有一个窗口属于激活状态。而被激活的函数图像可随运算控制窗口的操作而做相应的变化。

• 下面给出运算控制窗口的键位功能。

Page 5: 第三讲  MATLAB 的符号运算
Page 6: 第三讲  MATLAB 的符号运算

• 前两行是函数 f 和 g 的具体解析式,第三行是自变量 x 的取值范围和常数 a 的值。

• 第四行只对 f 起作用,如求导、积分、简化、提取分子和分母、倒数、反函数。

• 第五行是处理 f 和 a 的加减乘除等运算。• 第六行前四个进行 f 和 g 之间的运算,后

三个分别是:求复合函数;把 f 传递给 ;swap 是实现 f 和 g 功能的交换。

• 最后一行是对计算器自身进行操作。

Page 7: 第三讲  MATLAB 的符号运算

• Funtool 计算器存有一张函数列表 fxlist 这 7 个功能键分别是:• Insert :把当前激活窗的函数写入列表• Cycle :依次循环显示 fxlist 中的函数• Delete :从 fxlist 列表中删除激活窗的函

数• Reset :使计算器恢复到初始调用状态• Help :获得关于界面的在线提示说明• Demo :自动演示• Close :关闭整个计算器

Page 8: 第三讲  MATLAB 的符号运算

泰勒级数逼近分析• 该界面用于观察函数 f(x) 在给定区间被

N 阶泰勒多项式 Tn(x) 逼近的情况。• f(x) 的输入可由命令 taylortool(fx) 引入,

或者在栏中直接输入表达式,回车确定。• N 默认值为 7 , a 是级数的展开点。• 函数的观察区间默认为 (-2pi , 2pi) 。

Page 9: 第三讲  MATLAB 的符号运算
Page 10: 第三讲  MATLAB 的符号运算

符号运算的功能

• 符号表达式、符号矩阵的创建• 符号线性代数• 因式分解、展开和简化• 符号代数方程求解• 符号微积分• 符号微分方程

Page 11: 第三讲  MATLAB 的符号运算

一、符号运算的基本操作

1. 什么是符号运算• 与数值运算的区别 ※ 数值运算中必须先对变量赋值,

然后才能参与运算。  ※ 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。

Page 12: 第三讲  MATLAB 的符号运算

• 特点: 运算对象可以是没赋值的符号变量,以推理解析的方

式进行,因此不受计算误差累积所带来的困扰。 可以给出完全正确的封闭解或任意精度的数值解 ( 当封闭解不存在时 ) 。

③符号计算指令的调用简单,和经典教科书公式相近。④计算所需的时间较长。• Symbolic Math Toolbox—— 符号运算工具包通过调用

Maple软件实现符号计算的。• Maple软件——主要功能是符号运算,它占据符号软件的主导地位。  

Page 13: 第三讲  MATLAB 的符号运算

2. 字符串与符号变量、符号常量字符串对象 f = 'sin(x)+5x'

f —— 字符串名sin(x)+5x—— 函数表达式' '—— 字符串标识字符串表达式一定要用 ' '单引

号括起来 Matlab才能识别。用 class( ) 来返回对象的数据类型。

Page 14: 第三讲  MATLAB 的符号运算

‘ ’ 里的内容可以是函数表达式,也可以是方程。例: f1='a*x^2+b*x+c' —— 二次三项式 f2= 'a*x^2+b*x+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程※函数表达式或方程可以赋给字符串或符号变量,以后方便调用。

Page 15: 第三讲  MATLAB 的符号运算

符号变量• 符号变量是内容可变的符号对象。• 符号变量通常是指一个或几个特定的字

符,不是指符号表达式,甚至可以将一个符号表达式赋值给一个符号变量。

• 符号变量有时也称自由变量,它的命名规则和数值变量的命名规则相同。

• 相关指令为: sym( ) 和 syms( )

( symbolic 的缩写)

Page 16: 第三讲  MATLAB 的符号运算

例:用函数命令 sym( ) 和 syms( ) 来创建符号对象并检测数据类型。

a=sym('a') 注意两个 a 的区别b=sym('c')classa=class(a)classb=class(b) 可看出两个变量均为符号对象

syms a b c d e f g hwhos 也可以查看所有变量类型从上述比较来看:当需要同时定义多个符号

变量时,使用 syms( )更简洁一些。

Page 17: 第三讲  MATLAB 的符号运算

符号常量• 当数值常量作为 sym( ) 的输入参量时,

就建立了一个符号对象——符号常量。• 虽然看上去是一个数值量,但已经是一

个符号对象了。例: a=3/4; b='3/4'; c=sym(3/4); d=sym('3/4');

whos 查看变量类型a 为实双精度浮点数值类型; b 为实字符类型; c 和 d 都是符号对象类型。

Page 18: 第三讲  MATLAB 的符号运算

由符号变量构成的符号函数和符号方程

• 符号表达式是由符号常量、符号变量、符号函数运算符以及专用函数连接起来的符号对象。

• 包括:符号函数和符号方程。判断看带不带等号。例: syms x y z; f1=x*y/z;

f2=x^2+y^2+z^2; f3=f1/f2;

e1=sym('a*x^2+b*x+c')

e2=sym('sin(x)^2+2*cos(x)=1')

e3=sym('Dy-y=x')

Page 19: 第三讲  MATLAB 的符号运算

3. 符号矩阵的创建 数值矩阵 clear clc A=[1,2;3,4]

A=[a,b;c,d] —— 不识别 用 Matlab 函数 sym创建矩阵命令格式: A=sym('[ ]')

※ 符号矩阵内容同数值矩阵 ※ 需用 sym指令定义,需用 ' '标识 ※ 注意与 '[a,b;c,d]' 的区别

Page 20: 第三讲  MATLAB 的符号运算

例如: A = sym('[a , 2*b ; 3*a , 0]')

A =

[ a, 2*b]

[3*a, 0]

这就完成了一个符号矩阵的创建。注意:符号矩阵的每一行的两端都有方 括号,这是与 Matlab 数值矩阵

的 一个重要区别。

Page 21: 第三讲  MATLAB 的符号运算

用字符串直接创建矩阵

模仿Matlab 数值矩阵的创建方法 需保证同一列中各元素字符串有相 同的长度。例: A =['[ a,2*b]'; '[3*a, 0]']

A =

[ a, 2*b]

[3*a, 0]

Page 22: 第三讲  MATLAB 的符号运算

符号矩阵的修改 a. 直接修改 可用、 键找到所要修改的矩阵,

直接修改 b.指令修改 用 A1=subs(A, 'new', 'old') 来修改

Page 23: 第三讲  MATLAB 的符号运算

例如: A =[ a, 2*b]

[3*a, 0]

A(2,2)='4*b'A1 = [ a, 2*b]

[3*a, 4*b]

A2=subs(A1, 'c', 'b')

A2 =[ a, 2*c]

[3*a, 4*c]

Page 24: 第三讲  MATLAB 的符号运算

将数值矩阵转化为符号矩阵 函数调用格式: sym(A)clear A=[1/3,2.5;1/0.7,2/5]A = 0.3333 2.5000 1.4286 0.4000sym(A)ans =[ 1/3, 5/2][10/7, 2/5]

符号矩阵与数值矩阵的转换

Page 25: 第三讲  MATLAB 的符号运算

将符号矩阵转化为数值矩阵函数调用格式: numeric(A)???

A =

[ 1/3, 5/2]

[10/7, 2/5]

numeric(A)ans = 0.3333 2.5000 1.4286 0.4000

Page 26: 第三讲  MATLAB 的符号运算

由于 Matlab7.0采用了重载技术,使得符号计算表达式的运算符和基本函数,无论在形状、名称上,还是在使用方法上,都与数值计算中的运算符和基本函数几乎完全相同。这无疑给用户带来了极大的方便。

例外:在符号对象的比较中,没有”大于”、 ”大于等于”、 ”小于”、 ”小于等于”的概念,而只有是否“等于”的概念。

二、符号运算

Page 27: 第三讲  MATLAB 的符号运算

1. 符号矩阵运算

数值运算中,所有矩阵运算操作指令都比较直观、简单。例如: a=b+c; a=a*b ; A=2

*a^2+3*a-5 等。符号运算中,很多方面在形式上同数值计

算都是相同的,没必要重新学习新的规则。

Page 28: 第三讲  MATLAB 的符号运算

2. 任意精度的数学运算

在 symbolic 中有三种不同的算术运算:

1. 数值类型 matlab 的浮点算术运算

2. 有理数类型 maple 的精确符号运算

3. vpa类型 maple 的任意精度算术

运算

Page 29: 第三讲  MATLAB 的符号运算

• 浮点算术运算format long -- ( 定义输出格式 ) 1/2+1/3

ans =

0.83333333333333

• 符号运算sym(1/2)+(1/3)

或 sym(1/2+1/3)

ans =

5/6 --精确解

Page 30: 第三讲  MATLAB 的符号运算

• 任意精度算术运算digits(n) —— 设置近似解的精读为 n 位有效数字,

默认 32 位有效数字。vpa(x,n) —— 求符号解的近似解,该近似解的有效位数由 n 来决定。

digits(25)

vpa(1/2+1/3)

ans =

.8333333333333333333333333

Page 31: 第三讲  MATLAB 的符号运算

vpa(5/6,40) ans =.8333333333333333333333333333333333333333 a=sym('[1/4,exp(1);log(3),3/7]')a =[ 1/4,exp(1)][log(3), 3/7]vpa(a,10)ans =[.2500000000, 2.718281828][1.098612289, .4285714286]

Page 32: 第三讲  MATLAB 的符号运算

3. 符号表达式的化简• 可以对符号计算结果进行简化,诸如因

式分解、同类项合并、符号表达式的展开、符号表达式的化简和通分等等。

• 合并同类项 collect(v) ---- 将表达式 v 的相同次幂的项合并。例: syms x t % 定义基本变量 f=(x-1)*(x-2)*(x-3) %定义符号表达式 collect(f) %合并 f 中 x 的同类项

Page 33: 第三讲  MATLAB 的符号运算

• expand(s) 将 s 中的各项进行展开,用于多项式,三角函数、指数函数、对数函数。 例: syms x y;

f=(x+y)^3;

f1=expand(f)

f1 =

x^3+3*x^2*y+3*x*y^2+y^3

例: h=cos(x-y)

expand(h)

Page 34: 第三讲  MATLAB 的符号运算

• factor(S) 将系数为有理数的多项式(矩阵 )S ,表示成低阶多项式相乘的形式,如果不能分解,则返回 S本身。例: syms x y

factor(x^3-y^3)

• simplify( ) 该函数是一个强有力的具有普遍意义的工具,它利用 Maple 化简规则对表达式进行简化。例: S=sym('[(x^2+5*x+6)/(x+2);sqrt(16)]')

simplify(S)

Page 35: 第三讲  MATLAB 的符号运算

• simple( ) 用几种不同的算术简化规则对符号表达式进行简化,使其用最少的字符来表示。

• 虽然并非表达式中的字符越少,表达式就越简单,但采用这个标准往往能够得到满意的结果,尤其是对于包含三角函数的表达式。例: sym x

simple(cos(x)^2+sin(x)^2)

• 从结果看出, simple比较这些不同函数的结果,最终把最少字符作为标准。

Page 36: 第三讲  MATLAB 的符号运算

• diff(f) — 对缺省变量求 f 的微分

• diff(f,v) — 对指定变量 v 求微分

• diff(f,n) — 对默认变量求 n 阶微分

• diff(f,v,n) — 对指定变量 v 求 f 的 n 阶微分

例: syms a x

f=sin(a*x)

df=diff(f) dfa=diff(f,a,2)

4. 符号微积分与积分变换

Page 37: 第三讲  MATLAB 的符号运算

符号表达式的极限• limit(F,x,a) 求当 x→a 时,表达式 F 的极限• limit(F, a) 默认自变量时,趋于 a 的极限• limit(F) 默认自变量,默认 a=0

• limit(F,x,a, 'left') 取 F 的左极限• limit(F,x,a, 'right') 取 F 的右极限例: syms h n x

dc=limit((sin(x+h)-sin(x))/h,h,0)

%按照导数的定义求 sin 的导数

Page 38: 第三讲  MATLAB 的符号运算

注意:对于极限不存在,返回 NaN

例: limit(1/x,x,0)

limit(1/x,x,0, 'left')

limit(1/x,x,0, 'right')

结果分别为:• ans =

NaN

• ans =

-Inf

• ans =

Inf

Page 39: 第三讲  MATLAB 的符号运算

• int(f) — 对 f 表达式的缺省变量求不定积分

• int(f,v) — 对 f 表达式的 v 变量求不定积分

• int(f,v,a,b) — 对 f 表达式的 v 变量在( a,b)

区间求定积分

findsym(f) — 可以找出 f 中的每个变量

注意:当函数的积分不存在时, Matlab7.0 将简单地返回原来的积分表达式。

符号表达式的积分

Page 40: 第三讲  MATLAB 的符号运算

int( ' 被积表达式 ' , ' 积分变量 ' , ' 积分上限 ' , ' 积分下限 ')—— 定积分

——缺省时为不定积分例: int(-2*x/(1+x^2)^2)

ans =

1/(1+x^2)

int(log(x))

int(log10(x))

int(sin(x),x,-pi,pi)

Page 41: 第三讲  MATLAB 的符号运算

• taylor(f,n,v) —— n 阶泰勒级数展开例: syms x

f=1/(2+cos(x))

r=taylor(f,8)

• symsum(f,v,a,b) — 表达式 f 中变量 v 从 a变到 b 时的有限和例: syms x k

s1=symsum(1/k^2,1,inf)

s2=symsum(x^k,k,0,inf)

上述都是求无穷级数的和

Page 42: 第三讲  MATLAB 的符号运算

符号积分变换• ztrans(f) —— Z 变换• Invztrans(f) —— 反 Z 变换• Laplace(f) —— 拉氏变换• Invlaplace(f) —— 反拉氏变换• fourier(f) —— 付氏变换• Invfourier(f) —— 反付氏变换 注意 :上述函数均缺省了部分参数

Page 43: 第三讲  MATLAB 的符号运算

例 1. 计算二重不定积分 dxdyxe xy

F=int(int('x*exp(-x*y)','x'),'y')

例 2. 计算 f='x*exp(-x*10)' 的 Z 变换 F=ztrans(f) F= z*exp(-10)/(z-exp(-10))^2

符号积分的例子

Page 44: 第三讲  MATLAB 的符号运算

>> syms x y>> F=int(int(x*exp(-x*y),x),y)F =1/y*exp(-x*y)>> syms x>> f=x*exp(-x*10);>> F=ztrans(f)>> F=ztrans(x*exp(-x*10);F =z*exp(-10)/(z-exp(-10))^2

Page 45: 第三讲  MATLAB 的符号运算

例 3. 计算指数函数 eAt 。用拉氏反变换法计算 eAt 的公式为: eAt = L-1[(SI-A)-1]

系统矩阵 A=

32

10

tttt

tttt

eeee

eeee

22

22

222

2eAt =

结果:

Page 46: 第三讲  MATLAB 的符号运算

>> a=[0 1;-2 -3];

>> syms s

>> b=(s*eye(2)-a)

b =

[ s, -1]

[ 2, s+3]

>> B=inv(b)

[ (s+3)/(s^2+3*s+2), 1/(s^2+3*s+2)]

[ -2/(s^2+3*s+2), s/(s^2+3*s+2)]

Page 47: 第三讲  MATLAB 的符号运算

>> b11=ilaplace(sym(b,1,1));b(1,1)=b11;

>> b12=ilaplace(sym(b,1,2));b(1,2)=b12;

>> b21=ilaplace(sym(b,2,1));b(2,1)=b21;

>> b22=ilaplace(sym(b,2,2));b(2,2)=b22;

>> b

b =

[ -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t)]

[ -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t)]

Page 48: 第三讲  MATLAB 的符号运算

5. 符号代数方程求解

Matlab 符号运算能够解一般的线性方程、非线性方程、超越方程。当方程组不存在符号解时,又无其他自由参数,则给出数值解。命令格式:solve(f,v) —— 求一个方程 f=0 的解

Solve(f1,f2, …fn) —— 求 n 个方程的解

Page 49: 第三讲  MATLAB 的符号运算

例 1. f = ax2+bx+c 求解f='a*x^2+b*x+c';

• solve(f) —— 对缺省变量 x 求解ans =

[1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[1/2/a*(-b-(b^2-4*a*c)^(1/2))]

计算机格式

a

acbb

2

42 一般格式

Page 50: 第三讲  MATLAB 的符号运算

例 2. 符号方程 cos(x)=sin(x)

tan(2*x)=sin(x) 求解f1=solve('cos(x)=sin(x)'),

f1 =

1/4*pi f2=solve('tan(2*x)=sin(x)')

• solve(f , 'b' ) —— 对指定变量 b 求解

' ' 加与不加效果一样

Page 51: 第三讲  MATLAB 的符号运算

例 3. 解方程组 x+y+z=1

x-y+z=2

2x-y-z=1

g1='x+y+z=1',g2='x-y+z=2',g3='2*x-y-z=1'

f=solve(g1,g2,g3)

f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')

f =

z = 5/6, y = -1/2, x = 2/3

Page 52: 第三讲  MATLAB 的符号运算

f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')f = x: [1x1 sym] f.x

ans =2/3 y: [1x1 sym] f.y ans =-1/2 z: [1x1 sym] f.z

ans =5/6 [x,y,z]=solve('x+y+z=1','x-y+z=2','2*x-y-z=

1') x = 2/3 y =-1/2 z =5/6

Page 53: 第三讲  MATLAB 的符号运算

6. 符号微分方程求解 —— 用一个函数可以方便地得到微 分方程的符号解符号微分方程求解指令: dsolve

命令格式: dsolve(f,g)

• f —— 微分方程,可多至 12 个微分方程的求

解; g 为初始条件• 默认自变量为 'x', 可任意指定自变量 't', 'u' 等• 微分方程的各阶导数项以大写字母 D 表示

Page 54: 第三讲  MATLAB 的符号运算

dt

dy

dx

dy

2

2

dt

yd

n

n

dt

yd

2

2

dx

yd

n

n

dx

yd

y 的一阶导数—— Dy

y 的二阶导数—— D2y

y 的 n 阶导数—— Dny

[y1,y2…]=dsolve(x1,x2,…xn) —— 返回 微分方程的解

Page 55: 第三讲  MATLAB 的符号运算

一阶微分方程dsolve('Dx=y','Dy=x','x(0)=0','y(0)=1')

ans =

x(t) = sin(t), y(t) = cos(t)二阶微分方程dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')

ans =

cos(a*x)

Page 56: 第三讲  MATLAB 的符号运算

例 .

y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')

ans =

exp(-x)*cos(x)+exp(-x)*sin(x)

ezplot(y) —— 方程解 y(t) 的时间曲线图

2

2

dx

yd

dx

dy2 02 y

00 )(dx

dy,1)0( y 求该方程的解

Page 57: 第三讲  MATLAB 的符号运算

-6 -4 -2 0 2 4

0

50

100

150

200

250

300

x

exp(-x)*cos(x)+exp(-x)*sin(x)

Page 58: 第三讲  MATLAB 的符号运算

-6 -4 -2 0 2 4

0

50

100

150

200

250

t

exp(-t) sin(t)+exp(-t) cos(t)

Page 59: 第三讲  MATLAB 的符号运算

三、 maple 函数——符号运算的扩展maple—— 是专门进行数学运算的软件工具, 具有超强的符号运算能力,提供了 几乎包括所有数学领域的专用函数matlab—— 依赖于 maple 的内核与函数库,扩

展了自己的符号运算功能。 matlab还设计了对 maple库函数的调用功

能使得已有的 maple 数学功能,可以扩充 matla

b

中 , 作为自身符号运算能力的扩展。

Page 60: 第三讲  MATLAB 的符号运算

1. maple 内核访问函数可以访问 maple 内核的 matlab 函数 :

maple ——— 访问 maple 内核函数 mapleinit —— maple 函数初始化 mpa ———— maple 函数定义 mhelp ——— maple 函数帮助命令 procread —— maple 函数程序安装

Page 61: 第三讲  MATLAB 的符号运算

. maple 的调用格式maple(' 表达式 ') —— 将表达式送至 maple 内核, 返回符号表达式结果。maple ( ' 函数 ' ,变量 1 ,变量

2) ——调用 maple 函数,传递给定 变量。

Page 62: 第三讲  MATLAB 的符号运算

例 1. 展开 5 阶 bernoulli 多项式,计算 x=3 时 bernoulli 数。

a=maple('bernoulli(5,x)')

a =

-1/6*x+5/3*x^3+x^5-5/2*x^4

a=maple('bernoulli(5,3)')

a =

85

Page 63: 第三讲  MATLAB 的符号运算

例 2. 化简三角函数式 sin2x+cos2x

a=maple('simplify(sin(x)^2+cos(x)^2);')

a =

1

例 4. 求 f(t)=e-3tsint 的拉式变换f=maple('laplace(exp(-3*t)*sin(t),t,s);')

f =

1/((s+3)^2+1)

Page 64: 第三讲  MATLAB 的符号运算

例 4. 寻找二次多项式的完全平方 f (x) = x2+2x+2a=maple('completesquare(x^2+2*x+2)')a =completesquare(x^2+2*x+2) 将工具包

装入内存maple('with(student);')

a=maple('completesquare(x^2+2*x+2)')

a =

(x+1)^2+1

Page 65: 第三讲  MATLAB 的符号运算

• maple软件中的所有函数,在初始化时并没有完全装入内存,可用 readlib指令把库函数读入内存,或用 with指令将应用工具包装入内存。

• 调用格式maple('readlib( 函数名 );')

maple('with( 工具包名 );')

Page 66: 第三讲  MATLAB 的符号运算

例 5. 求 sin(x2+y2) 在 x=0,y=0 处泰勒级数展开式, 8 阶截断。

maple('mtaylor(sin(x^2+y^2),[x=0,y=0],8)')

ans =

mtaylor(sin(x^2+y^2),[x = 0, y = 0],8)

maple('readlib(mtaylor);')maple('mtaylor(sin(x^2+y^2),[x=0,y=0],8)')

ans =

x^2+y^2-1/6*x^6-1/2*y^2*x^4-1/2*y^4*x^2-1/6*y^6

Page 67: 第三讲  MATLAB 的符号运算

2. mpa —— maple 变量定义• 任何一个 matlab 定义的函数 f ,可使用

mpa语句直接调用,还可把 f 定义成 maple 变量 v 。

• maple 的工作空间与 matlab 工作空间是相互独立的, 所以 f 与 v 是属于不同工作空间中的变量

• mpa 的调用格式: mpa('v',f)

mpa v f f 为 matlab 工作空间中已存在的变量

Page 68: 第三讲  MATLAB 的符号运算

例 . 电磁力计算公式为

试 I=0.5 , x=0.1邻域展开泰勒级数, 3 阶截

断,令常数 ,

1. 直接调用

maple('readlib(mtaylor);')

maple('mtaylor(k*I^2/x^2,[I=0.5,x=0.1],3);')

2

20

4

)(),(

x

NISxIF

4

20NS

k

2

2

),(x

kIxIF

Page 69: 第三讲  MATLAB 的符号运算

2. 定义符号函数 f(matlab6.1无 map 函数 )f='k*I^2/x^2';maple('mtaylor(f,[I=0.5,x=0.1],3);')ans =mtaylor(f,[I = .5, x = .1],3)mpa('u',f)maple('mtaylor(u,[I=0.5,x=0.1],3);')ans =25.*k-.50e3*k*(x-.1)+.10e3*k*(I-.5)+7500.0

00000000000*k*(x-.1)^2+.1e3*k*(I-.5)^2-.20e4*k*(I-.5)*(x-.1)

Page 70: 第三讲  MATLAB 的符号运算

注意: matlab 符号运算时,可以识

别 matlab 定义的符号变量,但在调

用 maple 函数时,需将 matlab 变量

定义为 maple 变量后,所调用的函数方可识别和执行

Page 71: 第三讲  MATLAB 的符号运算

3.mhelp —— maple 函数帮助命令

mhelp 是协助检索 maple库函数的专用命令调用格式: mhelp 相关词条例如: mhelp intro — maple介绍 mhelp maple — maple 命令格式 mhelp tutorial —maple 入门 mhelp index —maple检索

工具词条函数词条

Page 72: 第三讲  MATLAB 的符号运算

mhelp index 用于工具包检索library ——maple标准库函数packages —— 应用工具包libmisc —— 其它库函数statements —— maple语句描述expressions —— maple 表达式datatypes —— maple 数据格式tables —— maple 表格和阵列procedures —— maple 程序misc —— maple 其它应用

Page 73: 第三讲  MATLAB 的符号运算

一般帮助文本主要包括以下部分

• FUNCTION—— 函数功能说明

• CALLING SEQUENCE—— 调用格式

• PARAMETERS —— 调用参数说明

• SYNOPSIS —— 语法说明

• EXAMPLES —— 应用举例

• SEE ALSO —— 相关词条

Page 74: 第三讲  MATLAB 的符号运算

4.maple库函数maple库函数共分四类maple 内部函数:驻留函数任何条件下都可调用 mhelp index[internal]

maple 的外部函数—读库定义部分: 调用时先执行读库命令,因此与内部函 数一样可直接调用 mhelp index[external]

Page 75: 第三讲  MATLAB 的符号运算

maple 的外部函数—读库装入部分 maple 其余外部函数需要在使用前执行 maple('readlib( 函数名 );') 命令将其装入内存

mhelp index[libmisc]

maple 的惰性函数—不能直接调用,还需一些函数如 mod,evala,evalf 等才能调用

mhelp index[intert]

Page 76: 第三讲  MATLAB 的符号运算

小 结 本节介绍了 matlab语言的符号运算功能,通过学习应该掌握:• 掌握如何创建、修改符号矩阵• 掌握符号运算功能• maple 函数调用• mhelp检索