2024年4月7日发(作者:戈依波)
教 案
课题
名称
6.4 MATLAB 符 号 计 算
应
知
应
会
重
点
难
点
进 度
时 数
2
教
学
目
标
简单了解MATLAB符号表达式的基本运算函数和化简函数及替
换函数。
会运用Matlab求符号微积分、符号方程、及级数
MATLAB的符号微积分和符号方程求解
MATLAB的泰勒级数
讲授
教学
教学
资源
内
教材、网上资源
容
教
具
投影仪
时间分配
10’
5’
5’
5’
5’
5’
10’
10’
10’
10’
10’
5’
教
材
分
析
教学方
法
一、
符号对象
1、创建符号变量和符号矩阵
2、符号表达式的基本运算函数
3、符号表达式的化简函数
4、符号表达式的替换函数
二、符号微积分
1、符号极限
2、符号求导
3、符号积分
4、积分变换
三、符号方程求解
1、代数方程
2、符号微分方程求解
四、级数
1、级数的符号求和
2、函数的泰勒级数
作业
教
学
后
记
1
内容 备 注
6.4 MATLAB 符 号 计 算
一、符号对象
1、创建符号变量和符号矩阵
MATLAB的符号数学工具箱提供了两个sym和syms基本函数,用来创建
符号变量和符号矩阵。
函数sym的调用格式为:
符号变量名=sym(‘表达式’)
说明:函数sym可创建一个符号变量,表达式可以是字符、字符串、数学
表达式或字符表达式等。
函数syms的调用格式:
syms 符号变量名1 符号变量名2 符号变量名3 …
说明:函数syms可一次创建多个符号变量。
例6.25创建符号变量。
>> a=sym('matlab')
a =
matlab
>> b=sym('3*x^2+4*x+7')
b =
3*x^2+4*x+7
在工作空间浏览器上可以看到A、B、C三个符号变量。使用sym函数和
syms函数也可以创建符号矩阵。符号矩阵是一个数组,它的元素是符号表达式。
MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否
则,这些符号表达式几乎完全像基本的MATLAB命令。
例6.26 创建符号矩阵。
>> e=[1 3 5;2 4 6;7 9 11]; %建立数值矩阵
>> m=sym(e) %创建符号矩阵
m =
[ 1, 3, 5]
[ 2, 4, 6]
[ 7, 9, 11]
在命令窗口的显示中,数值矩阵只显示元素的数值,而符号矩阵的每行元
2
素放在一对方括号内;在工作空间窗口显示的变量图标两者也不同,数值矩阵
的图标为 ,符号矩阵(也称为符号对象)的图标为 ,二者很容易区分。
2、符号表达式的基本运算函数
符号表达式的运算与普通数值运算的方式不同,它的运算结果是符号表达
式或符号矩阵。在MATLAB运算中,浮点运算速度最快,而符号计算占用时
间和内存都比较多,但它的计算结果最精确。在默认情况下,当用函数sym生
成符号变量后,MATLAB将对这些变量进行符号计算。在MATLAB符号计算
工具箱中提供来了很多函数用于符号计算。下面将介绍一些常用的符号运算函
数,如表6-6所示。
表6-6 常用的符号函数
函数格式
symadd(S
1
,S
2
)
symsub(S
1
,S
2
)
symmul(S
1
,S
2
)
symdiv(S
1
,S
2
)
sympow(S,p)
说明
符号表达式S
1
加上符号表达式S
2
符号表达式S
1
减去符号表达式S
2
符号表达式S
1
乘上符号表达式S
2
符号表达式S
1
除符号表达式S
2
符号表达式S
1
的p次幂,p可以是表达式
例6.27 计算表达式x
3
-1与表达式x-1的和、差、积、商和乘方。
>> syms x
>> s1=x^3-1;
>> s2=x-1;
>> symadd(s1,s2)
ans =
x^3-2+x
>> symsub(s1,s2)
ans =
x^3-x
>> symmul(s1,s2)
ans =
(x^3-1)*(x-1)
>> symdiv(s1,s2)
ans =
(x^3-1)/(x-1)
>> sympow(s1,s2)
ans =
3
(x^3-1)^(x-1)
3、符号表达式的化简函数
符号数学工具箱提供了符号表达式的因式分解、展开、合并、化简、通分
等函数,见表6-7所示。
表6-7 符号表达式的化简函数
函数格式
collect(s,x)
expand(s)
factor(s)
numden(s)
说明
合并自变量x的同幂系数
符号表达式s的展开
因式分解
符号表达式s的分式通分
3
函数格式
simple(s)
simplify(s)
radsimp(s)
horner(s)
说明
寻找表达式的最简型
符号表达式的化简
对含根式的表达式s化简
符号表达式s的嵌套形式
例6.28 对表达式
fx1
进行因式分解。
>> syms x %在命令窗口创建符号变量x
>> f=factor(x^3-1)
f =
(x-1)*(x^2+x+1)
例6.29 展开三角表达式sin(a+b)。
>> s=sym('sin(a+b)'); %用sym函数创建符号变量
>> expand(s)
ans =
sin(a)*cos(b)+cos(a)*sin(b)
例6.30化简分式(4x
2
+8x+3)/(2x+1)。
>> syms x
>> s=(4*x^2+8*x+3)/(2*x+1);
>> simplify(s)
ans =
2*x+3
4、符号表达式的替换函数
MATLAB的符号数学工具箱提供了两个符号表达式的替换函数subexpr和
subs,可以通过符号替换使表达式的输出形式化简,得到一个简单的表达式。
函数Subexpr的调用格式为:
[R,SYM]=subexpr(S,SYM)
说明:此函数用变量SYM(字符或字符串)的值代替符号表达式S中重复出现
4
的字符串,R是返回替换后的结果。
函数subs的调用格式:
R=subs(S,old,new)
说明:该函数是用新的符号变量new替换原来符号表达式S中的变量old,
R是替换后的符号表达式。需要注意的,当变量new是数值形式时,显示的结
果虽然是数值,但它事实上是符号变量。要强制地求值需要用vpa函数。
3x
3
x
2
1
例6.31 求表达式在x=1时的代数值。
x
2
1
>>clear
>>clc
>> syms x
>> s=(3*x^3+x^2-1)/(x^2+1);
>> r=subs(s,'x','1')
r =
(3*(1)^3+(1)^2-1)/((1)^2+1)
>> vpa(r) %强制求值
ans =
1.5000000
二、符号微积分
1、符号极限
极限是微积分的基础,在MATLAB中,极限的求解是由limit函数实现的,
其主要格式如表6-8所示。
表6-8 符号极限的函数格式
函数格式
limit(s)
limit(s,a)
limit(s,x,a)
limit(s,x,a,‘right’)
limit(F,x,a,‘left’)
说明
s为符号表达式。在系统默认表达式中的自变量趋向于0时的极限。
a为常数。计算符号表达式s中由默认自变量趋向于a条件下的极限。
计算符号表达式s在x趋向于a条件下的极限。
计算符号表达式s在x趋向于a条件下的右极限
计算符号表达式s在x趋向于a条件下左的极限
x
sin(x)
11
1
例6.32 分别计算表达式
lim
、
lim
、
lim
、
lim
1
和
x0
x
x0
x
x0
x
x
x
5
x0
x
lim
e
。
先在命令窗口创建符号变量a和x,再分别计算上面各表达式的极限。
>>clear
>>clc
>> syms x a;
>> limit(1/x,x,0, 'right')
ans =
inf
>> limit(1/x,x,0, 'left' )
ans =
-inf
>> limit (sin(x)/x)
ans =
1
>> limit((1+1/x)^x,x,inf,'left')
ans =
exp(1)
>> limit(exp(-x),x,0,'left')
ans =
1
2、符号求导
在符号数学工具箱中,表达式的导数由函数diff实现,其调用格式为:
diff(s,x,n)
说明:其中s为符号表达式,x为自变量,n为求导的阶数。
例6.33 分别计算表达式x
5
的一阶导数和三阶导数。
>>clear
>>clc
>> syms x
>> diff(x^5)
ans =
5*x^4
>> diff(x^5,3)
ans =
60*x^2
3、符号积分
6
积分算法是非结构性的,许多函数的原函数存在,但不可用有限解析式表
达式表示,即使可以求积分的函数,其求积分过程也可能很复杂,但利用
MATLAB求积分就非常容易。在MATLAB的符号数学工具箱中,表达式的积
分由函数int实现,该函数可求不定积分和定积分,其调用格式如表6-9所示。
表6-9 符号积分的函数格式
函数格式
int(s)
int(s,x)
int(s,a,b)
int(s,x,a,b)
说明
求符号表达式s对于默认自变量的不定积分。
求符号表达式s对于自变量x的不定积分
求符号表达式s对于默认自变量从a到b的定积分。
求符号表达式s对于自变量x从a到b的定积分。
例6.34 分别计算下列表达式的积分:
2
3
x
x
x
dx
dy
(4)
dx
(3)
(1)
(43x)dx
(2)
1
x2
xy
xy
22
在命令窗口创建符号变量x和y,分别计算上面各表达式的积分。
>>clear
>>clc
>> syms x y
>> s=(4-3*x^2)^2;
>> int(s)
ans =
9/5*x^5-8*x^3+16*x
>> int(x/(x+y),x)
ans =
x-y*log(x+y)
>> int(x/(x+y),y)
ans =
x*log(x+y)
>> int(x^2/(x+2),x,1,3)
ans =
4*log(5)-4*log(3)
>> double(ans)
ans =
2.0433
4、积分变换
积分变换就是通过积分运算把一个函数f(原函数)变成另外一个函数F
7
(像函数)。变化的过程是:
F(t)
f(x)K(x,t)dx
a
b
其中二元函数
K(x,t)
称为变换的核,变换的核决定了变换的不同名称。在
一定的条件下原函数和像函数之间是一一对应的,可以相互转化。积分变换的
意义是换一个角度来认识函数,积分变换的一项基本应用是解微分方程,求解
过程是基于这样一种想法:假如不容易从原方程直接求得解f,则对原方程进
行变换,如果能从变换后的方程中求得解F,则对F进行逆变换,即可求得原
方程的解f,当然,在选择变换的核时,应该使得变换以后的方程比原方程容
易求解。MATLAB提供的变换函数如表6-10所示。
表6-10 常用的积分变换函数
函数名称 函数格式
fourier(fx,x,t)
傅立叶变换
ifourier(Fw,t,x) Fw为函数F(t)的符号表达式、t为自变量、x为原函数f(x)
的自变量。结果为函数F(t)的傅立叶原函数f(x)
拉普拉斯变换
laplace(fx,x,t)
ilaplace(Fw,t,x)
Z变换
ztrans(fx,x,t)
iztrans(Fw,t,x)
2
说明
Fx为函数f(x)的符号表达式、x为自变量、t像函数F(t)
的自变量。结果为函数f(x)的傅立叶像函数F(t)
结果为函数f(x)的拉普拉斯像函数F(t)
结果为函数F(t)的拉普拉斯原函数f(x)
结果为函数f(x)的Z变换像函数F(t)
结果为函数F(t)的Z变换原函数f(x)
例6.35 求函数
ye
x
的傅立叶变换及其逆变换。
>> syms x t
>> y=exp(-x^2);
>> Ft=fourier(y,x,t) %傅立叶变换
Ft =
pi^(1/2)*exp(-1/4*t^2)
>> fx=ifourier(Ft,t,x) %傅立叶逆变换
fx =
1/2*4^(1/2)*exp(-x^2)
三、符号方程求解
1、代数方程
代数方程是指未涉及微积分运算的方程,相对比较简单。在MATLAB符号数
8
学工具箱中,求解用符号表达式表示的代数方程可由函数solve实现,其调用
格式如表6-11所示。
表6-11 符号方程的函数
函数格式
solve(s)
solve(s,x)
solve(s
1
,s
2,
…s
n
,x
1
,x
2
,...x
n
)
说明
求解符号表达式s=0的代数方程,自变量为默认自变量
求解符号表达式s=0的代数方程,自变量为x
求解由符号表达式s
1
,s
2,
…s
n
组成的代数方程组,自变量分别为x
1
,x
2
,...x
n
例6.36 分别求解代数方程ax
2
+bx+c=0。
在命令窗口创建符号变量a、b、c和x。
>>clear
>>clc
>> syms a b c x
>> s=a*x^2+b*x+c;
>> solve(s)
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
例6.37 求解代数方程组:
2x
2
y
2
3z4
xz3
x2y3z
在命令窗口创建符号变量x、y、z,求解方程组。
>> syms x y z
>> s1=2*x^2+y^2-3*z-4;
>> s2=y+z-3;
>> s3=x-2*y-3*z;
>> [x,y,z]=solve(s1,s2,s3)
x =
[ 7/2+1/6*i*699^(1/2)]
[ 7/2-1/6*i*699^(1/2)]
y =
[ 11/2-1/6*i*699^(1/2)]
[ 11/2+1/6*i*699^(1/2)]
z =
[ -5/2+1/6*i*699^(1/2)]
9
[ -5/2-1/6*i*699^(1/2)]
2、符号微分方程求解
在MATLAB中,用大写字母D来表示微分方程的导数。例如:Dy表示
y
,
D2y表示
y
。D2y+Dy+x-10=0表示微分方程
y
y
x100
。Dy(0)=3
表示
y
(0)3
。
在符号数学工具箱中,求解表达式微分方程的符号解由函数dsolve实现,其调
用格式为:
r=dsolve(‘eq’,‘cond’, ‘var’)
说明:式中eq代表常微分方程,cond代表常微分方程的边界条件或初始
条件,var代表自变量,缺省是按系统默认原则处理。该函数可求解微分方程
的特解。
r=dsolve(‘eq1’, ‘eq2’…‘eqN’,‘cond1’, ‘cond2’…‘condN’,
‘var1’…‘varN’)
说明:该函数求解由eq1,eq2,…指定的常微分方程组在条件cond1,
cond2,…,condN下的符号解,若不给出初始条件,则求方程组的通解。var1,…,
varN为求解变量,如果不指定,将为默认自变量。
dyt
2
y
2
例6.38 求微分方程的通解。
dt
2t
2
在命令窗口分别输入表达式,求解方程。
>> y=dsolve('Dy-(t^2+y^2)/t^2/2','t') %方程右端的零可以不写
y =
t*(-log(t)+2+C1)/(-log(t)+C1) %通解
例6.39 求微分方程
dy
2xy
2
的通解,和当y(0)=1时的特解。
dx
在命令窗口输入表达式,求解方程。
>> y=dsolve('Dy=2*x*y^2','x') %求通解
y =
-1/(x^2-C1)
>> y=dsolve('Dy=2*x*y^2','y(0)=1','x') %求特解
y =
-1/(x^2-1)
10
四、级数
1、级数的符号求和
数值级数和函数级数是高等数学的重点研究内容,也是物理学以及其他工
程技术学科的重要理论基础和分析工具。在MATLAB符号数学工具中,级数表
达式的求和由函数symsum实现,其调用格式如表6-12。
表6-12 级数求和函数
函数格式
symsum(S)
symsum(S,x)
symsum(S,a,b)
symsum(S,x,a,b)
说明
计算符号表达式S(表示级数的通项)对于默认自变量的不定和。
计算符号表达式S对于自变量x的不定和。
计算符号表达式S对于默认自变量从a到b的有限和。
计算符号表达式S对于自变量x从a到b的有限和。
10
x
k
例6.40 分别计算表达式
k
、
(k3)
、
。
k1
k
0
2
在命令窗口创建符号变量k和x,分别计算上面各表达式。
>>clear
>>clc
>> syms x k
>> symsum(k)
ans =
1/2*k^2-1/2*k
>> symsum(k^2-3,0,10)
ans =
352
>> symsum(x^k/k,k,1,inf)
ans =
-log(1-x)
2、函数的泰勒级数
泰勒级数可以将一个任意函数表示为一个幂级数,并且,在许多情况下,
只需要取幂级数的前有限项来表示该函数,这对于大多数工程应用问题来说,
精度已经足够。在MATLAB符号数学工具中,表达式的Taylor级数展开由函数
11
taylor实现,其调用格式如表6-13所示。
表6-13 泰勒级数函数格式
函数格式
taylor(s)
taylor(s,n)
taylor(f,n,a)
taylor(f,x,n,a)
说明
计算符号表达式s在默认自变量等于0处的5阶Taylor级数展开式。
计算符号表达式s在默认自变量等于0处的n-1阶Taylor级数展开式。
计算符号表达式s在默认自变量等于a处的n-1阶Taylor级数展开式
计算符号表达式s在自变量x等于a处的n-1阶Taylor级数展开式
1xx
2
例6.41 分别计算表达式的5阶泰勒级数展开式和12阶泰勒级
1xx
2
数展开式。
在命令窗口创建符号变量,分别计算上面各表达式。
>>clear
>>clc
>> syms x
>> s=(1-x+x^2)/(1+x+x^2);
>> taylor(s)
ans =
1-2*x+2*x^2-2*x^4+2*x^5
>> taylor(s,x,12)
ans =
1-2*x+2*x^2-2*x^4+2*x^5-2*x^7+2*x^8-2*x^10+2*x^11
12
2024年4月7日发(作者:戈依波)
教 案
课题
名称
6.4 MATLAB 符 号 计 算
应
知
应
会
重
点
难
点
进 度
时 数
2
教
学
目
标
简单了解MATLAB符号表达式的基本运算函数和化简函数及替
换函数。
会运用Matlab求符号微积分、符号方程、及级数
MATLAB的符号微积分和符号方程求解
MATLAB的泰勒级数
讲授
教学
教学
资源
内
教材、网上资源
容
教
具
投影仪
时间分配
10’
5’
5’
5’
5’
5’
10’
10’
10’
10’
10’
5’
教
材
分
析
教学方
法
一、
符号对象
1、创建符号变量和符号矩阵
2、符号表达式的基本运算函数
3、符号表达式的化简函数
4、符号表达式的替换函数
二、符号微积分
1、符号极限
2、符号求导
3、符号积分
4、积分变换
三、符号方程求解
1、代数方程
2、符号微分方程求解
四、级数
1、级数的符号求和
2、函数的泰勒级数
作业
教
学
后
记
1
内容 备 注
6.4 MATLAB 符 号 计 算
一、符号对象
1、创建符号变量和符号矩阵
MATLAB的符号数学工具箱提供了两个sym和syms基本函数,用来创建
符号变量和符号矩阵。
函数sym的调用格式为:
符号变量名=sym(‘表达式’)
说明:函数sym可创建一个符号变量,表达式可以是字符、字符串、数学
表达式或字符表达式等。
函数syms的调用格式:
syms 符号变量名1 符号变量名2 符号变量名3 …
说明:函数syms可一次创建多个符号变量。
例6.25创建符号变量。
>> a=sym('matlab')
a =
matlab
>> b=sym('3*x^2+4*x+7')
b =
3*x^2+4*x+7
在工作空间浏览器上可以看到A、B、C三个符号变量。使用sym函数和
syms函数也可以创建符号矩阵。符号矩阵是一个数组,它的元素是符号表达式。
MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否
则,这些符号表达式几乎完全像基本的MATLAB命令。
例6.26 创建符号矩阵。
>> e=[1 3 5;2 4 6;7 9 11]; %建立数值矩阵
>> m=sym(e) %创建符号矩阵
m =
[ 1, 3, 5]
[ 2, 4, 6]
[ 7, 9, 11]
在命令窗口的显示中,数值矩阵只显示元素的数值,而符号矩阵的每行元
2
素放在一对方括号内;在工作空间窗口显示的变量图标两者也不同,数值矩阵
的图标为 ,符号矩阵(也称为符号对象)的图标为 ,二者很容易区分。
2、符号表达式的基本运算函数
符号表达式的运算与普通数值运算的方式不同,它的运算结果是符号表达
式或符号矩阵。在MATLAB运算中,浮点运算速度最快,而符号计算占用时
间和内存都比较多,但它的计算结果最精确。在默认情况下,当用函数sym生
成符号变量后,MATLAB将对这些变量进行符号计算。在MATLAB符号计算
工具箱中提供来了很多函数用于符号计算。下面将介绍一些常用的符号运算函
数,如表6-6所示。
表6-6 常用的符号函数
函数格式
symadd(S
1
,S
2
)
symsub(S
1
,S
2
)
symmul(S
1
,S
2
)
symdiv(S
1
,S
2
)
sympow(S,p)
说明
符号表达式S
1
加上符号表达式S
2
符号表达式S
1
减去符号表达式S
2
符号表达式S
1
乘上符号表达式S
2
符号表达式S
1
除符号表达式S
2
符号表达式S
1
的p次幂,p可以是表达式
例6.27 计算表达式x
3
-1与表达式x-1的和、差、积、商和乘方。
>> syms x
>> s1=x^3-1;
>> s2=x-1;
>> symadd(s1,s2)
ans =
x^3-2+x
>> symsub(s1,s2)
ans =
x^3-x
>> symmul(s1,s2)
ans =
(x^3-1)*(x-1)
>> symdiv(s1,s2)
ans =
(x^3-1)/(x-1)
>> sympow(s1,s2)
ans =
3
(x^3-1)^(x-1)
3、符号表达式的化简函数
符号数学工具箱提供了符号表达式的因式分解、展开、合并、化简、通分
等函数,见表6-7所示。
表6-7 符号表达式的化简函数
函数格式
collect(s,x)
expand(s)
factor(s)
numden(s)
说明
合并自变量x的同幂系数
符号表达式s的展开
因式分解
符号表达式s的分式通分
3
函数格式
simple(s)
simplify(s)
radsimp(s)
horner(s)
说明
寻找表达式的最简型
符号表达式的化简
对含根式的表达式s化简
符号表达式s的嵌套形式
例6.28 对表达式
fx1
进行因式分解。
>> syms x %在命令窗口创建符号变量x
>> f=factor(x^3-1)
f =
(x-1)*(x^2+x+1)
例6.29 展开三角表达式sin(a+b)。
>> s=sym('sin(a+b)'); %用sym函数创建符号变量
>> expand(s)
ans =
sin(a)*cos(b)+cos(a)*sin(b)
例6.30化简分式(4x
2
+8x+3)/(2x+1)。
>> syms x
>> s=(4*x^2+8*x+3)/(2*x+1);
>> simplify(s)
ans =
2*x+3
4、符号表达式的替换函数
MATLAB的符号数学工具箱提供了两个符号表达式的替换函数subexpr和
subs,可以通过符号替换使表达式的输出形式化简,得到一个简单的表达式。
函数Subexpr的调用格式为:
[R,SYM]=subexpr(S,SYM)
说明:此函数用变量SYM(字符或字符串)的值代替符号表达式S中重复出现
4
的字符串,R是返回替换后的结果。
函数subs的调用格式:
R=subs(S,old,new)
说明:该函数是用新的符号变量new替换原来符号表达式S中的变量old,
R是替换后的符号表达式。需要注意的,当变量new是数值形式时,显示的结
果虽然是数值,但它事实上是符号变量。要强制地求值需要用vpa函数。
3x
3
x
2
1
例6.31 求表达式在x=1时的代数值。
x
2
1
>>clear
>>clc
>> syms x
>> s=(3*x^3+x^2-1)/(x^2+1);
>> r=subs(s,'x','1')
r =
(3*(1)^3+(1)^2-1)/((1)^2+1)
>> vpa(r) %强制求值
ans =
1.5000000
二、符号微积分
1、符号极限
极限是微积分的基础,在MATLAB中,极限的求解是由limit函数实现的,
其主要格式如表6-8所示。
表6-8 符号极限的函数格式
函数格式
limit(s)
limit(s,a)
limit(s,x,a)
limit(s,x,a,‘right’)
limit(F,x,a,‘left’)
说明
s为符号表达式。在系统默认表达式中的自变量趋向于0时的极限。
a为常数。计算符号表达式s中由默认自变量趋向于a条件下的极限。
计算符号表达式s在x趋向于a条件下的极限。
计算符号表达式s在x趋向于a条件下的右极限
计算符号表达式s在x趋向于a条件下左的极限
x
sin(x)
11
1
例6.32 分别计算表达式
lim
、
lim
、
lim
、
lim
1
和
x0
x
x0
x
x0
x
x
x
5
x0
x
lim
e
。
先在命令窗口创建符号变量a和x,再分别计算上面各表达式的极限。
>>clear
>>clc
>> syms x a;
>> limit(1/x,x,0, 'right')
ans =
inf
>> limit(1/x,x,0, 'left' )
ans =
-inf
>> limit (sin(x)/x)
ans =
1
>> limit((1+1/x)^x,x,inf,'left')
ans =
exp(1)
>> limit(exp(-x),x,0,'left')
ans =
1
2、符号求导
在符号数学工具箱中,表达式的导数由函数diff实现,其调用格式为:
diff(s,x,n)
说明:其中s为符号表达式,x为自变量,n为求导的阶数。
例6.33 分别计算表达式x
5
的一阶导数和三阶导数。
>>clear
>>clc
>> syms x
>> diff(x^5)
ans =
5*x^4
>> diff(x^5,3)
ans =
60*x^2
3、符号积分
6
积分算法是非结构性的,许多函数的原函数存在,但不可用有限解析式表
达式表示,即使可以求积分的函数,其求积分过程也可能很复杂,但利用
MATLAB求积分就非常容易。在MATLAB的符号数学工具箱中,表达式的积
分由函数int实现,该函数可求不定积分和定积分,其调用格式如表6-9所示。
表6-9 符号积分的函数格式
函数格式
int(s)
int(s,x)
int(s,a,b)
int(s,x,a,b)
说明
求符号表达式s对于默认自变量的不定积分。
求符号表达式s对于自变量x的不定积分
求符号表达式s对于默认自变量从a到b的定积分。
求符号表达式s对于自变量x从a到b的定积分。
例6.34 分别计算下列表达式的积分:
2
3
x
x
x
dx
dy
(4)
dx
(3)
(1)
(43x)dx
(2)
1
x2
xy
xy
22
在命令窗口创建符号变量x和y,分别计算上面各表达式的积分。
>>clear
>>clc
>> syms x y
>> s=(4-3*x^2)^2;
>> int(s)
ans =
9/5*x^5-8*x^3+16*x
>> int(x/(x+y),x)
ans =
x-y*log(x+y)
>> int(x/(x+y),y)
ans =
x*log(x+y)
>> int(x^2/(x+2),x,1,3)
ans =
4*log(5)-4*log(3)
>> double(ans)
ans =
2.0433
4、积分变换
积分变换就是通过积分运算把一个函数f(原函数)变成另外一个函数F
7
(像函数)。变化的过程是:
F(t)
f(x)K(x,t)dx
a
b
其中二元函数
K(x,t)
称为变换的核,变换的核决定了变换的不同名称。在
一定的条件下原函数和像函数之间是一一对应的,可以相互转化。积分变换的
意义是换一个角度来认识函数,积分变换的一项基本应用是解微分方程,求解
过程是基于这样一种想法:假如不容易从原方程直接求得解f,则对原方程进
行变换,如果能从变换后的方程中求得解F,则对F进行逆变换,即可求得原
方程的解f,当然,在选择变换的核时,应该使得变换以后的方程比原方程容
易求解。MATLAB提供的变换函数如表6-10所示。
表6-10 常用的积分变换函数
函数名称 函数格式
fourier(fx,x,t)
傅立叶变换
ifourier(Fw,t,x) Fw为函数F(t)的符号表达式、t为自变量、x为原函数f(x)
的自变量。结果为函数F(t)的傅立叶原函数f(x)
拉普拉斯变换
laplace(fx,x,t)
ilaplace(Fw,t,x)
Z变换
ztrans(fx,x,t)
iztrans(Fw,t,x)
2
说明
Fx为函数f(x)的符号表达式、x为自变量、t像函数F(t)
的自变量。结果为函数f(x)的傅立叶像函数F(t)
结果为函数f(x)的拉普拉斯像函数F(t)
结果为函数F(t)的拉普拉斯原函数f(x)
结果为函数f(x)的Z变换像函数F(t)
结果为函数F(t)的Z变换原函数f(x)
例6.35 求函数
ye
x
的傅立叶变换及其逆变换。
>> syms x t
>> y=exp(-x^2);
>> Ft=fourier(y,x,t) %傅立叶变换
Ft =
pi^(1/2)*exp(-1/4*t^2)
>> fx=ifourier(Ft,t,x) %傅立叶逆变换
fx =
1/2*4^(1/2)*exp(-x^2)
三、符号方程求解
1、代数方程
代数方程是指未涉及微积分运算的方程,相对比较简单。在MATLAB符号数
8
学工具箱中,求解用符号表达式表示的代数方程可由函数solve实现,其调用
格式如表6-11所示。
表6-11 符号方程的函数
函数格式
solve(s)
solve(s,x)
solve(s
1
,s
2,
…s
n
,x
1
,x
2
,...x
n
)
说明
求解符号表达式s=0的代数方程,自变量为默认自变量
求解符号表达式s=0的代数方程,自变量为x
求解由符号表达式s
1
,s
2,
…s
n
组成的代数方程组,自变量分别为x
1
,x
2
,...x
n
例6.36 分别求解代数方程ax
2
+bx+c=0。
在命令窗口创建符号变量a、b、c和x。
>>clear
>>clc
>> syms a b c x
>> s=a*x^2+b*x+c;
>> solve(s)
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
例6.37 求解代数方程组:
2x
2
y
2
3z4
xz3
x2y3z
在命令窗口创建符号变量x、y、z,求解方程组。
>> syms x y z
>> s1=2*x^2+y^2-3*z-4;
>> s2=y+z-3;
>> s3=x-2*y-3*z;
>> [x,y,z]=solve(s1,s2,s3)
x =
[ 7/2+1/6*i*699^(1/2)]
[ 7/2-1/6*i*699^(1/2)]
y =
[ 11/2-1/6*i*699^(1/2)]
[ 11/2+1/6*i*699^(1/2)]
z =
[ -5/2+1/6*i*699^(1/2)]
9
[ -5/2-1/6*i*699^(1/2)]
2、符号微分方程求解
在MATLAB中,用大写字母D来表示微分方程的导数。例如:Dy表示
y
,
D2y表示
y
。D2y+Dy+x-10=0表示微分方程
y
y
x100
。Dy(0)=3
表示
y
(0)3
。
在符号数学工具箱中,求解表达式微分方程的符号解由函数dsolve实现,其调
用格式为:
r=dsolve(‘eq’,‘cond’, ‘var’)
说明:式中eq代表常微分方程,cond代表常微分方程的边界条件或初始
条件,var代表自变量,缺省是按系统默认原则处理。该函数可求解微分方程
的特解。
r=dsolve(‘eq1’, ‘eq2’…‘eqN’,‘cond1’, ‘cond2’…‘condN’,
‘var1’…‘varN’)
说明:该函数求解由eq1,eq2,…指定的常微分方程组在条件cond1,
cond2,…,condN下的符号解,若不给出初始条件,则求方程组的通解。var1,…,
varN为求解变量,如果不指定,将为默认自变量。
dyt
2
y
2
例6.38 求微分方程的通解。
dt
2t
2
在命令窗口分别输入表达式,求解方程。
>> y=dsolve('Dy-(t^2+y^2)/t^2/2','t') %方程右端的零可以不写
y =
t*(-log(t)+2+C1)/(-log(t)+C1) %通解
例6.39 求微分方程
dy
2xy
2
的通解,和当y(0)=1时的特解。
dx
在命令窗口输入表达式,求解方程。
>> y=dsolve('Dy=2*x*y^2','x') %求通解
y =
-1/(x^2-C1)
>> y=dsolve('Dy=2*x*y^2','y(0)=1','x') %求特解
y =
-1/(x^2-1)
10
四、级数
1、级数的符号求和
数值级数和函数级数是高等数学的重点研究内容,也是物理学以及其他工
程技术学科的重要理论基础和分析工具。在MATLAB符号数学工具中,级数表
达式的求和由函数symsum实现,其调用格式如表6-12。
表6-12 级数求和函数
函数格式
symsum(S)
symsum(S,x)
symsum(S,a,b)
symsum(S,x,a,b)
说明
计算符号表达式S(表示级数的通项)对于默认自变量的不定和。
计算符号表达式S对于自变量x的不定和。
计算符号表达式S对于默认自变量从a到b的有限和。
计算符号表达式S对于自变量x从a到b的有限和。
10
x
k
例6.40 分别计算表达式
k
、
(k3)
、
。
k1
k
0
2
在命令窗口创建符号变量k和x,分别计算上面各表达式。
>>clear
>>clc
>> syms x k
>> symsum(k)
ans =
1/2*k^2-1/2*k
>> symsum(k^2-3,0,10)
ans =
352
>> symsum(x^k/k,k,1,inf)
ans =
-log(1-x)
2、函数的泰勒级数
泰勒级数可以将一个任意函数表示为一个幂级数,并且,在许多情况下,
只需要取幂级数的前有限项来表示该函数,这对于大多数工程应用问题来说,
精度已经足够。在MATLAB符号数学工具中,表达式的Taylor级数展开由函数
11
taylor实现,其调用格式如表6-13所示。
表6-13 泰勒级数函数格式
函数格式
taylor(s)
taylor(s,n)
taylor(f,n,a)
taylor(f,x,n,a)
说明
计算符号表达式s在默认自变量等于0处的5阶Taylor级数展开式。
计算符号表达式s在默认自变量等于0处的n-1阶Taylor级数展开式。
计算符号表达式s在默认自变量等于a处的n-1阶Taylor级数展开式
计算符号表达式s在自变量x等于a处的n-1阶Taylor级数展开式
1xx
2
例6.41 分别计算表达式的5阶泰勒级数展开式和12阶泰勒级
1xx
2
数展开式。
在命令窗口创建符号变量,分别计算上面各表达式。
>>clear
>>clc
>> syms x
>> s=(1-x+x^2)/(1+x+x^2);
>> taylor(s)
ans =
1-2*x+2*x^2-2*x^4+2*x^5
>> taylor(s,x,12)
ans =
1-2*x+2*x^2-2*x^4+2*x^5-2*x^7+2*x^8-2*x^10+2*x^11
12