matlabppt第三讲

上传人:tian****1990 文档编号:71700840 上传时间:2019-01-21 格式:PPT 页数:37 大小:304KB
返回 下载 相关 举报
matlabppt第三讲_第1页
第1页 / 共37页
matlabppt第三讲_第2页
第2页 / 共37页
matlabppt第三讲_第3页
第3页 / 共37页
matlabppt第三讲_第4页
第4页 / 共37页
matlabppt第三讲_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《matlabppt第三讲》由会员分享,可在线阅读,更多相关《matlabppt第三讲(37页珍藏版)》请在金锄头文库上搜索。

1、第三讲,MATLAB的符号计算,符号表达式: 非数字的数学表达式。由符号常量,符号变量,符号函数,符号操作等构成。 符号表达式严格按照代数,微积分等课程中的规则,公式进行运算,并尽可能给出解析表达式.,一 符号对象的定义 二 符号计算中的基本运算和函数 三 符号数值任意精度控制和运算 四 符号表达式中自由变量的确定 五 符号对象的操作与转换 六 符号函数绘图,一 符号对象的定义,sym syms,例1: y=sym(2*sin(x)*cos(x) %符号表达式y sym(x,real) % 定义一个实数的符号变量x,例2: syms a b c x % 定义多个符号变量 f=a*x2+b*x+

2、c % 用符号变量生成符号表达式 f,例3 : syms(x,b,c,x) f=a*x2+b*x+c,argv=sym(arg,flag)-按flag指定的要求把字符串arg定义为符号对象argv,arg=sym(arg,flag)中的arg是字符时, flag可取限定选项 positive-限定arg是“正,实”符号变量 real-限定arg是“实”符号变量 unreal- arg是非实符号变量,附录: sym命令用法说明:,syms(argv1, argv2, argvk)-把字符argv1, argv2, argvk定义为基本符号对象,syms argv1 argv2 argvk-上述格

3、式的简洁形式,各符号对象间不得有逗号,附录: syms命令用法说明:,二 符号计算中的算符和基本函数,由于新版matlab采用了重载技术,使得用来构成符号计算表达式的算符和基本函数,无论在形状, 名称上,还是使用方法上,都与数值计算中的算符和基本函数几乎完全相同,这给编程带来了极大的方便。,(2) 关系运算符 在符号对象的比较中,没有大于,大于等于,小于,小于等于的概念,而只有是否等于的概念. ”=“ “=“分别用来对算符两边的对象进行相等和不等的比较,返回为逻辑量,(3) 三角函数,双曲线函数以及他们的反函数,除atan2只能用于数值计算外,另外的在两种运算中使用方法相同,(1) 基本运算符

4、 算符”+”,”-”,”*”, ”, “/”,“”分别构成矩阵的加,减,乘,左除,右除,求幂运算.算符”.*”, “./”, “.”, “.” 分别实现元素对元素的数组乘,除,求幂运算算符” ”, “ . ”分别实现矩阵的共轭转置,非共轭转置,(4) 指数,对数函数 函数sqrt, exp, expm在两者中用法相同符号计算中只有自然对数,而没有数值计算中的log2, log10,(5) 复数函数 conj,imag, real, abs在两者中用法相同.但在符号计算中没有求相角的指令.,(6) 矩阵代数指令 在符号计算中, matlab提供的常用矩阵代数指令有:diag, triu, tri

5、l, inv, det, rank, rref, null, colspace, expm, poly, eig, svd,例: 求矩阵,的行列式,逆和特征值,解: syms a11 a12 a21 a22; A=a11,a12;a21,a22; DA=det(A), IA=inv(A), EA=eig(A),三 符号数值任意精度控制和运算,符号运算与数值运算的区别主要有以下几点: 数值型运算每一次运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差。 符号运算不会出现截断误差,符号运算可以得出完全的封闭解或任意精度的数值解。 符号运算的时间较长,而数值型运算速度快。,dig

6、its(n) %设置以后的数值计算以n位相对精度进行 xs=vpa(x) %在digits指定精度下,给出x的数值型符号结果xs xs=vpa(x,n) %在n位相对精度下,给出x的数值型符号结果xs,说明: 除了vpa(x,n)对特定符号对象指定具体精度外,所有vpa(x)的精度都受 到其前面的digits指令控制,digits指令缺省精度为32位 x可以是符号对象或数值对象,但运行后所得结果xs一定是符号对象,1 数值符号对象精度的控制:,double(x) %把符号常数转化为16位相对精度的浮点数值对象,符号对象转数值对象:,例:,x=sym(sqrt(5) digits digits(

7、12) vx=vpa(x) dx=double(x) eval(x),附录:符号对象与其他数据对象间的转换,数值,符号,字符是matlab中三种不同的数据类型,matlab为每种数据类型提供了各自特定的生成指令和操作指令.为实现不同数据类型间的交互, matlab 提供了一系列的转换指令,数值型 符号结果,符号常数,数值,符号量(表达式),字符串(表达式),ASCII码,vpa,double,vpa,sym,double,str2num,str2double, sscanf,int2str, num2str, mat2str,char,sym,char,abs, double,eval,四 符

8、号表达式中自由变量的确定,findsym(expr) %确认表达式expr中所有自由符号变量 findsym(expr, n) %从表达式expr中确认出靠x最近的n个独立自变量,(1) 生成符号变量,syms a b x X Y; k=sym(3); z=sym(c*sqrt(delta)+y*sin(theta); expr=a*z*X+(b*x2+k)*Y;,(2) 找出expr中的全部自由符号变量,findsym(expr),ans = X, Y, a, b, c, delta, theta, x, y,例: 对独立自由符号变量的自动辨认,(3) 从expr中确定1,2,3个自由变量,

9、findsym(expr,1), findsym(expr,2), findsym(expr,3),ans = x,ans = x, y,ans = x, y, theta,findsym 确认的是表达式中的”自由” ”独立”的符号变量,由于k不是自由的,z不是独立的,所以该指令不将其作为自由变量。,该指令把expr表达式中n个最靠近x的自由符号变量确认为“独立自由变量”,并且认为大写字母离x的距离总大于所有小写字母离x的距离,MATLAB将基于以下原则选择一个自由变量: 小写字母i和j不能作为自由变量。 符号表达式中如果有多个字符变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果

10、没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。 大写字母比所有的小写字母都靠后。,五 符号对象的操作与转换,1 符号表达式的操作 2 置换操作 3 复合函数和反函数 4 微积分 5 符号代数方程/微分方程求解,1 符号表达式的操作,例 简化,syms x; f=(1/x3+6/x2+12/x+8)(1/3); g1=simple(f) g2=simple(g1),g1 = (2*x+1)/x,g2 = 2+1/x,验证: f2=g23; expand(f2),2 置换操作,作用:把复杂表达式中所含的多个相同子表达式用一个符号代替,使表达简洁,指令格式: RS

11、, ssub=subexpr(S, ssub)-运用符号变量ssub置换子表达式,重写S为RS,说明:被置换的子表达式是机器自动寻找的,置换原则为:只有比较长的子表达式才被置换,比较短的子表达式,即使出现多次,也不被置换,1) 子表达式置换操作,RES=subs(ES, old, new)-用new置换ES中的old后产生RES,RES=subs(ES, new)-用new置换ES中的自由变量后产生RES,2) 通用置换指令,例: subs置换规则示例,(1) 产生符号函数,syms a x; f=a*sin(x)+5;,(2) 符号变量置换,f1=subs(f, sin(x), sym(y)

12、,(3) 符号常数置换,f2=subs(f,a,x,2,sym(pi/3),f1 = a*y+5,a=2,x=pi/3,f2 = 3(1/2)+5,double(f2),(4) 双精度数值转换(所有自由变量被双精度数值取代)自定义函数的赋值,f3=subs(f,a,x,2,pi/3),f3 = 6.7321,(5) 数值数组置换一 (取a=2,x=0:pi/6:pi),f4=subs(subs(f,a,2),x,0:pi/6:pi),f4 = 5.0000 6.0000 6.7321 7.0000 6.7321 6.0000 5.0000,(6) 数值数组置换二 (取a=0:6, x=0:pi

13、/6:pi ),f5=subs(f, a,x,0:6, 0:pi/6:pi),f5 = 5.0000 5.5000 6.7321 8.0000 8.4641 7.5000 5.0000,3 符号表达式的复合函数和反函数,1) 复合函数运算, compose(f, g) %返回复合函数f(g(y), 这里f=f(x), g=g(y), compose(f,g,z) %返回自变量为z的复合函数f(g(z),这里f=f(x), g=g(y),2) 反函数, g=finverse(f) % 返回符号函数f的反函数g,满足g(f(x)=x, g=finverse(f,v) % 返回自变量为v的符号函数f

14、的反函数使得g(f(v)=v,当f包含不止一个符号变量时,使用这种格式,4 符号微积分,1) 符号极限,limit(F,x,a)-计算F在xa时的极限 limit(F,x,a,left/right)-计算左/右极限,2) 符号序列求和,对于数学上的求和,可用matlab的求和指令解决其指令为:,s=symsum(f,v,a,b) %求通式f字指定变量v取遍a,b中所有整数时的和,说明:, f是矩阵时,求和对矩阵的元素逐个进行,但自变量定义在整个矩阵上。, v缺省时 f中的自变量由findsym自动辨认;b可以取有限整数,也可以 取无穷大inf, a,b可同时缺省,此时默认求和的自变量区间为0,

15、v-1,例 求,syms n; f=n2, 1/n2; s1=symsum(f(1),1,100) s2=symsum(f(2),1,inf),s1 = 338350 s2 = 1/6*pi2,s=symsum(f,v,a,b)-求通式f字指定变量v取遍a,b中所有整数时的和,3) 符号微分,求导数,高阶导数,偏导数是数学分析的重要内容,有机器实现求导的指令有:,dfdvn=diff(f,v,n)-求,说明:, f是矩阵时,求导对矩阵的元素逐个进行,但自变量定义在整个矩阵上, v缺省时,自变量会自动由findsym确认,n缺省时,默认n=1, 在数值计算中,指令diff是用来求差分的,例:求,解: syms a t x; f=a, t3; t*cos(x),log(x); df=diff(f), dfdt2=diff(f,t,2), dfdxdt=diff(diff(f,x),t),4) 符号积分,与数值积分相比,符号积分指令简单,适应性强,但可能占用机器时间很长.,intf=int(f,v)-f对v的不定积分,intf=int(f,v,a,b)- f对v的定积分,说明: 当f是矩阵时,积分对矩阵的元素逐个进行 v缺省时,积分对findsym确认的变量进行 a,b分别是积分的上下限

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号