第3章 符号运算功能

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

符号变量有时也称自由变量,它的命名规则和 数值变量的命名规则相同。
4
MATLAB提供了两个建立符号变量的函数: sym和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号变量,一般调 用格式为: 符号变量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串 可以是常量、变量、函数或方程。
2
特点:
运算对象可以是没赋值的符号变量,以推理 解析的方式进行,因此不受计算误差累积所 带来的困扰。
可以给出完全正确的封闭解或任意精度的数 值解(当封闭解不存在时)。 ③符号计算指令的调用简单,和经典教科书公 式相近。
④计算所需的时间较长。
3
3.1 建立符号对象 1.建立符号变量和符号常量 a.符号变量 符号变量是内容可变的符号对象。 符号变量通常是指一个或几个特定的字符,不 是指符号表达式,甚至可以将一个符号表达式 赋值给一个符号变量。
8
例如:
创建符号函数 f='log(x)' 创建符号方程 equation='a*x^2+b*x+c=0' 创建符号微分方程 diffeq='Dy-y=x' %符号中不能随意增减 空格 f=sym('sin(x)') %只能定义一个变量 f=sym('sin(x)^2=0') syms x y %不能用来创建符号方程 f=sin(x)+cos(y)
10
例 x=sym('x');
f=x-cos(x);
f1=subs(f,x,'pi') digits(25) vpa(f1) double(f1)
11
3.3 符号函数的运算 3.3.1复合函数运算 compose %函数复合函数 compose(f,g) %把g的 关系代入f当中 compose(f,g,z) %把g的关系代入f当中, 且以z为自变量 compose(f,g,x,z) %把f中的x用g的关系代 入,且用z表示g中的自变量 compose(f,g,x,y,z) %f中的x用g的关系代 入,g中的y用z代入
25
3.6.4 符号导数
diff函数用于对符号表达式求导数。该函数的一般调用 格式为: diff(s):没有指定变量和导数阶数,则系统按findsym函 数指示的默认变量对符号表达式s求一阶导数。 diff(s,'v'):以v为自变量,对符号表达式s求一阶导数。 diff(s,n):按findsym函数指示的默认变量对符号表达式s 求n阶导数,n为正整数。 diff(s,'v',n):以v为自变量,对符号表达式s求n阶导数。 例 >> syms x t >> diff(sin(x^2)) ans = 2*cos(x^2)*x >> diff(t^6,6) ans = 720
9
3.2 符号和数值之间的转换 digits(D) %设置有效数字个数为D的近 似解精度 vpa(s) %符号表达式s在digits函数设 置下的精度的数值解 vpa(s,D) %s 在D精度下的数值解 subs(s,OLD,NEW) %将s中的旧变量 替换为新变量 例 s=solve('3*x^2-exp(x)=0'); vpa(s) vpa(s,6)
20
3.6.2 符号积分
>> syms x x1 u t >> A=[cos(x*t),sin(x*t);-sin(x*t),cos(x*t)]; >> int(A,t) ans = [ 1/x*sin(x*t), -cos(x*t)/x] [ cos(x*t)/x, 1/x*sin(x*t)] >> int(A) ans = [ 1/t*sin(x*t), -cos(x*t)/t] [ cos(x*t)/t, 1/t*sin(x*t)] >> int(x1*log(1+x1),0,1) ans = 1/4
13
3.3.2 反函数的运算
g=finverse(f) % x为自变量求反函数,且用x代替f g=finverse(f,v) %v为自变量求反函数,且用v代替f 例 syms x y; f=x^2+y; finverse(f,y) 3.4 符号矩阵的创立 3.4.1 使用sym 函数直接创立符号矩阵 a=sym('[1/(s+x),sin(x),cos(x)^2/(b+x);9,exp(x^2 +y^2),log(tanh(y))]')
5
(2) syms函数 函数sym一次只能定义一个符号变量, 使用不方便。MATLAB提供了另一个函数 syms,一次可以定义多个符号变量。 syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 … 符号变 量名n 用这种格式定义符号变量时不要在变 量名上加字符串分界符('),变量间用空格 而不要用逗号分隔。
15
3.5 符号矩阵的运算
3.5.1 基本运算 1 四则运算 加 减 乘 除 转置 2 行列式运算 det(a) 3 逆 inv(b) 4 秩 rank(a) 5 幂运算 a^2 6 指数运算 exp(b) expm(b)
16

3.5.2 符号矩阵的简化 1 因式分解 factor(s) 例 syms x;factor(x^9-1) 2 符号矩阵的展开 expand(s) 例 syms x y expand((x+1)^3) expand(sin(x+y))
7
2.建立符号表达式 符号表达式是由符号常量、符号变量、符号 函数运算符以及专用函数连接起来的符号对 象。 包括:符号函数和符号方程。判断看带不带 等号。 建立符号表达式有以下3种方法: (1)利用单引号来生成符号表达式。 (2)用sym函数建立符号表达式。 (3)使用已经定义的符号变量组成符号表达式。
19
由函数int来实现。该函数的一般调用格式为: int(s):系统按findsym函数指示的默认变量对被 积函数或符号表达式s求不定积分。 int(s,v):以v为自变量,对被积函数或符号表达 式s求不定积分。 int(s,v,a,b):求定积分运算。求被积函数在区间 [a,b]上的定积分。a和b可以是两个具体的数, 也可以是一个符号表达式,还可以是无穷(inf)。 当函数s关于变量v在闭区间[a,b]上可积时,函 数返回一个定积分结果。当a,b中有一个是inf 时,函数返回一个广义积分。当a,b中有一个 符号表达式时,函数返回一个符号函数。 int(s, a,b) 计算符号表达式S对默认变量从a到b 的定积分。
14
3.4.2 用创建子阵的方法创建符号矩阵 ms=['[1/s,sin(x)]';'[1,exp(x)]'] b=[a; '[exp(-i) 3 x^3+y^9]'] 3.4.3 将数值矩阵转化为符号矩阵 a=[2/3 sqrt(2) 0.222 ; 1.4 1/0.23 log(3)] b=sym(a) 3.4.4 符号矩阵的索引与修改 b(2,3) b(2,3)='log(9)'
22
>> syms x y z >> s=x+y^2+z*x; >> fourier(s,x,z) ans = 2*i*pi*Dirac(1,z)+2*y^2*pi*Dirac(z)+2*i*z*pi*Dirac(1,z) >> ifourier(s,z,x) ans = x*Dirac(x)+y^2*Dirac(x)-i*x*Dirac(1,x) >> y=x^2 y= x^2 >> ifourier(y,x,z) ans = -Dirac(2,z)
6
b.符号常量 当数值常量作为sym( )的输入参量时,就建 立了一个符号对象——符号常量。 虽然看上去是一个数值量,但已经是一个符 号对象了。 例:a=3/4; b='3/4'; c=sym('3/4'); whos 查看变量类型 a为实双精度浮点数值类型;b为实字符类 型;c是符号对象类型。
17
3 合并同类项 collect(s) collect(s,v)
例 syms x y;collect(x^2*y+y*x-x^2-2*x) syms x y z;s=x*y+y^2+z*y; collect(s,y) ans = y^2+(x+z)*y simple(s) simplify(s)
4 符号简化 例
simplify(sin(x)^2+cos(x)^2)
simple(x^2+exp(x^3)-cos(x)) 5 分式通分 [N,D]=numden(A) 例 [n,d]=numden(x/y+y/x)
18
3.6 符号微分方程 3.6.1符号极限 limit(F,x,a) 计算当变量x趋近于常数a时,F(x)函 数的极限值。 limit(F,x,a,'right') 求符号函数F的极限值。'right' 表示变量x从右边趋近于a。 limit(F,x,a ,'left') 求符号函数F的极限值。'left' 表示变量x从左边趋 近于a。 limit(f,a) 求符号函数f(x)的极限值。由于没有指定 符号函数f(x)的自变量,则使用该格式时,符号函数f(x) 的变量为函数findsym(f)确定的默认自变量,即变量x趋 近于a。 limit(f) 求符号函数f(x)的极限值。符号函数f(x)的 变量为函数findsym(f)确定的默认变量;没有指定变量 的目标值时,系统默认变量趋近于0,即a=0的情况。 例 syms x a t; limit(sin(x)/x) limit((1+2*t/x)^(3*x),x,inf) limit(1/x,x,0,'right')
23

求函数的傅立叶变换及其逆变换。
2.拉普拉斯(Laplace)变换
在MATLAB中,进行拉普拉斯变换的函数是: laplace(f,x,t):求函数f(x)的拉普拉斯像函数F(t)。 ilaplace(F,t,x):求拉普拉斯像函数F(t)的原函数f(x)。 例 计算y=x3的拉普拉斯变换及其逆变换。 >> syms x t >> y=x^3; >> laplace(y,x,t) ans = 6/t^4 >> ilaplace(y,t,x) ans = x^3*Dirac(x) >> ilaplace(6/t^4,t,x) ans = x^3
例 求下列积分。
21
3.6.3 积分变换
常见的积分变换有傅立叶变换、拉普拉斯 变换和Z变换。 1.傅立叶(Fourier)变换 在MATLAB中,进行傅立叶变换的函数是: fourier(f,x,t):求函数f(x)的傅立叶像函数 F(t)。 ifourier(F,t,x):求傅立叶像函数F(t)的原函 数f(x)。
24
3.Z变换
当函数f(x)呈现为一个离散的数列f(n)时,对数列 f(n)进行z变换的MATLAB函数是: ztrans(fn,n,z):求fn的Z变换像函数F(z)。 iztrans(Fz,z,n):求Fz的z变换原函数f(n)。 例 求数列 fn=e-2n的Z变换及其逆变换。 >> syms n z f=exp(-2*n) ; ztrans(f,n,z) ans = z/exp(-2)/(z/exp(-2)-1) >> iztrans(f,z,n) ans = charfcn[0](n)/exp(n)^2 >> iztrans(z/exp(-2)/(z/exp(-2)-1),z,n) ans = (1218991862308979/9007199254740992)^n
12
例: syms x y z t u
f=1/(1+x^2); g=sin(y); h=x^t;p=exp(-y/u); compose(f,g) compose(f,g,t) compose(h,g,x,z) compose(h,g,t,z) compose(h,p,t,u,z) compose(h,p,x,y,z)
第3章 符号运算功能
科学与工程技术中的数值运算固然重要, 但自然科学理论分析中各种各样的公式、 关系式及其推导就是符号运算要解决的问 题。 MATLAB实现符号计算功能三种途径: 1、通过调用自身开发的各种功能函数。 2、与Maple接口。 3、符号函数计算器。
1
符号运算的基本操作
什么是符号运算? 与数值运算的区别 ※ 数值运算中必须先对变量赋值,然后才 能参与运算。 ※ 符号运算无须事先对独立变量赋值,运 算结果以标准的符号形式表达。
相关文档
最新文档