第三章MATLAB语言的符号计算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
符号表达式的定义
f=sym(‘a*x^2+b*x+c’)
符号表达式一定要用'' 单引 号括起来MATLAB才能识别。
2019/4/2
5
' ' 的内容可以是符号表达式,也可以是符号方程。 例:
f1=sym('a*x^2+b*x+c')—— 二次三项式 f2= sym('a*x^2+b*x+c=0') —— 方程
2019/4/2 13
>>clear >>syms a b >>subs(a+b,a,4)
%用4替代a+b中的a
>>subs(cos(a)+sin(b),{a,b},{sym('alpha'),2})
%多重替换
>> f=sym('x^2+3*x+2') >> subs(f, ‘x’, 2) %求解f当x=2时的值
去计算并将结果返回给Matlab。 Matlab的符号数学工具箱可以完成几乎所有得符号 运算功能。这些功能主要包括:符号表达式的运算,符号
表达式的复合、化简,符号矩阵的运算,符号微积分、符
号函数画图,符号代数方程求解,符号微分方程求解等。 此外,工具箱还支持可变精度运算,既支持符号运算并以 指定的精度返回结果。
% 对默认的自变量x求微分 %对x求二次微分 %对a求微分 %对a求二次微分
Diff(diff(f),a)
% 对x和a求偏导
微分函数也可以作用于符号矩阵,其结果是对矩阵的每一
个元素进行微分运算。
2019/4/2 18
3.2.3 积分
求积分的函数是int,相关的函数语法
int(f) 返回f对预设独立变量的积分值; int(f,’t’) 返回f对独立变量t的积分值; int(f,a,b) 返回f对预设独立变量的积分值,积分区间为[a,b], a和b为数
2019/4/2 2
数值运算在运算前必须先对变量赋值,再参加运算。 符号运算不需要对变量赋值就可运算,运算结果以标准的符
号形式表达。
2019/4/2
3
2019/4/2
4
3.1 符号变量和符号表达式
使用sym函数可以创建符号变量和表达式 符号变量的定义
x=sym(‘x’) 函数法 syms a b c x 命令法
1 1 1 1 ... ... 2 2 3 3 4 k (k 1)
>> syms k >> symsum(1/k,k,1,inf)
symsum(1/(k*(k+1)),k,1,inf)
求sin(x)的前10项展开式。
>> syms x >> taylor(sin(x),10) x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9
diff(f,t,n)求f对独立变量t的n次微分值
例3-1
已知
f (x) ax2 bx c
求 f ( x ) 的微分
2019/4/2 17
Syms a b c x F=sym(‘a*x^2+b*x+c’)
diff(F)
Diff(f) Diff(f,2) Diff(f,a) Diff(f,a,2)
>> F1=sym('x+y+z=10'); >> F2=sym('x-y+z=0'); >> F3=sym('2*x-y-z=-4'); >> [x,y,z]=solve(F1,F2,F3)
2019/4/2 24
3.3.2 常微分方程
MATLAB解常微分方程式的函数为 Dsolve(‘equation’,’condition’) Equation表示常微分式, condition为初始条件。 Equation中用D来表示求微分,D后跟的数字表示几重微 分,数字后的变量为因变量。
>> simplify(f4)
2019/4/2 12
>>clear >>syms x y
>>finverse(1/tan(x)) >>f = x^2+y; >>finverse(f,y) %求反函数,自变量为y %求反函数,自变量为x
>>clear >>syms x y z t u; >>f = 1/(1 + x^2); g = sin(y); h = x^t; p = exp(-y/u); >>compose(f,g) %求f = f(x) 和 g = g(y)的复合函数 f(g(y))
Limit(f,x, a,’right’)
lim f (x)
2019/4/2
15
2019/4/2
16
3.2.2 微分
求微分的函数是diff,相关的函数语法
用diff(f)求f对预设独立变量的一次微分值 diff(f,t)求f对独立变量t的一次微分值
diff(f,n)求f对预设独立变量的n次微分值
%[m,n],m和n为符号式;
2019/4/2
20
3.2.4 级数
可用于级数的函数 symsum(s,v,a,b),自变量v在[a,b]之间取值时,对
通项s求和;
Taylor(F,v,n)求F对自变量v的泰勒级数展开至n阶。 关键是找通项S
2019/4/2
21
分别求级数
1 1 1 1 ... ... 2 3 k
2.反函数
finverse(f,v)
对指定自变量为v的函数f(v)求反函数
3.复合函数
compose(f,g) compose(f,g,z)
求f=f(x)和g=g(y)的复合函数f(g(y)) 求 f=f(x)和g=g(y)的复合函数f(g(z))
4.表达式替换函数
subs(s)
值式;
int(f,’t’,a,b) 返回f对独立变量t的积分值,积分区间为[a,b],a和b为数
值式;
int(f,’m’,’n’) 返回f对预设独立变量的积分值;积分区间为[m,n],m和
n为符号式;
2019/4/2 19
例3-2对
f ( x) ax2 bx c
求积分
>> clear
f (x) ax bx c
2
>>solve(f)
2019/4/2
23
解代数方程组
Solve(f1,f2,…fn)解由f1,f2…fn组成的代数方程组 例3-6
x y z 10 求方程 的解 x y z 0 2 * x y z 4
第一步定义符号表达式
第三章MATLAB语言的符号计算
教学目标
介绍符号运算的概念及其使用
学习要求
通过本单元的学习应搞清符号变量和符号表达式
的定义,并能够使用符号运算解决一般的微积分 和方程求解问题
2019/4/2
1
Matlab中的符号数学工具箱是建立在Maple基础
上的,当进行Matlab符号运算时,它就请求Maple软件
例3-7求微分方程y’=5 的通解。
>> dsolve('D2y=5*y','y(0)=0')
2019/4/2 25
3.1 符号变量和符号表达式
变量特点,自变量的默认原则(findsym)
合并、化简、展开等函数,反函数,复合函数,表达式替换函 数(collect,factor,simplify,numden,finverse,compose,subs)
7
自变量的默认原则
有x存在,认为x为自变量,将a,b,c等作为常量参数。
可以利用函数findsym来查询
符号表达式 a*x^2+b*x+c
1/(4+cos(t)) 4*x/y 2*a+b
2019/4/2
默认自变量
x
t
x b
8
算术运算
>>clear >>f1 = sym('1/(a-b) '); >>f2 = sym('2*a/(a+b) '); >>f3 = sym(' (a+1)*(b-1)* (a-b) '); >> f1+f2 >> f1*f3 >> f1/f3
3.2 微积分
极限:limit 微分:diff
积分:int
级数:symsum 和taylor
3.3 方程求解
代数方程 常微分方程
2019/4/2 26
maple函数——符号运算的扩展
maple——是专门进行数学运算的软件工具,具有超强的符号运算能力,提
供了几乎包括所有数学领域的专用函数
MATLAB——利用了maple的内核与函数库,扩展了自己的符号运算功能。 MATLAB还设计了对maple库函数的调用功能,使得已有的maple数学功能 可以扩充到MATLAB中,作为自身符号运算能力的扩展。 要进一步利用maple资源,以下五个命令不可不提: maple mfun mfunlist mhelp
2019/4/2
14
3.2 微积分
3.2.1 极限
求极限是微积分的基础,limit函数
表达式 函数格式 备注
lim f (x)
x a
Limit(f,x,a)
若a=0且是对x求极限,可 简写为Limit(f)
左趋近于a 右趋近于a
lim
x a x a
f ( x) Limit(f,x, a,’left’)
2019/4/2 22
3.3 方程求解
3.3.1 代数方程 利用符号表达式解代数方程所需要的函数为solve(f) 解符号方程式f 例3-5求一元二次方程的根
区别solve(f)和solve(f,a)
solve(f)按默认变量求解符号方程式, solve(f,a)指定要求解的变量是a
>> syms a b c x >> f=sym(a*x^2+b*x+c)
>> F=sym('a*x^2+b*x+c')
>> int(F) int(F,’x’)
int(F,'x',0,2)
%返回f对预设独立变量的积分值 %返回f对独立变量t的积分值
%返回f对独立变量t的积分值,积分区间为[a,b],
%a和b为数值式
int(F,‘m’,‘n’)
%返回f对预设独立变量的积分值;积分区间为
2019/4/2
%符号和 %符号积 %符号商
9
syms u v w z Eq=u*z^2+v*z+w; result_1=solve(Eq) findsym(Eq,1)
%
result_1 = -u*z^2-v*z ans = w
result_2 = 1/2/u*(-v+(v^2-4*u*w)^(1/2)) 1/2/u*(-v-(v^2-4*u*w)^(1/2))
f3=sym('Dy+y^2=1') ——微分方程 ※符号表达式或符号方程可以赋给符号变量,以后 调用方便;也可以不赋给符号变量直接参与运算
2019/4/2
6
符号变量和符号表达式在使用前必须说明 sym函数法
>>f1=sym(‘ax^2+bx+c’) 表达式 %创建符号变量f1和一个符号
syms命令方法 >> clear >> syms a b c x >> whos Name Size a 1x1 b 1x1 c 1x1 x 1x1
2019/4/2
Bytes Class 126 sym object 126 sym object 126 sym object 126 sym object
用赋值语句中给定值替换表达式中所有同名变量 用符号或数值变量new替换s中的符号变量old
11
subs (s, old, new)
2019/4/2
>>clear >> f1 =sym('(exp(x)+x)*(x+2)'); >> f2 = sym('a^3-1'); >> f3 = sym('1/a^4+2/a^3+3/a^2+4/a+5'); >> f4 = sym('sin(x)^2+cos(x)^2'); >> f5=collect(f1) >>factor(f5) >>expand(f1) >>factor(f2) >> [m,n]=numden(f3) %m为分子,n为分母 %
result_2=solve(Eq,z)
百度文库
2019/4/2
10
1.合并、化简、展开等函数
collect函数:将表达式中相同幂次的项合并; factor函数:将表达式因式分解;
simplify函数:利用代数中的函数规则对表达式进行化简;
numden函数:将表示式从有理数形式转变成分子与分母形式。
2019/4/2
进入Maple核心,把结果返回MATLAB。 对Maple函数进行数值运算。 列出能被Mfun计算的Maple函数 寻求关于Maple的库函数及其调用方法的帮助 加载Maple程序