符号计算new.doc
《符号计算new.doc》由会员分享,可在线阅读,更多相关《符号计算new.doc(16页珍藏版)》请在咨信网上搜索。
1、第六章 符号计算6.1 符号对象的创建6.1.1 符号对象的生成符号计算工具箱定义了一种新的MATLAB数据类型,叫做符号对象。在MATLAB内部,符号对象的数据存储格式是符号字符串。sym函数用于创建符号对象,包括符号常量、符号变量和符号表达式。【调用格式】f = sym(arg)把数值、字符串或者表达式arg转换为符号对象ff = sym(argn, flagn)把数值或者数值表达式argn转换为flagn格式的符号对象f = sym(argv, flagv)把字符串argv按照flagv的格式转换为符号对象syms argv1 argv2 .定义argv1、argv2等为符号对象syms
2、 arg1 arg2 . flagv定义arg1、arg2等为flagv格式的符号对象【说明】1. 对于数值或者数值表达式argn,flagn可以取以下值:d最接近的十进制浮点精度表示e带估计误差的有理表示f十六进制浮点数表示r最接近的有理表示,MATLAB的缺省表示方法2. 对于字符串变量名argv,flagv可以取以下“限定”项:positive“正实数”符号变量real“实数”符号变量unreal“非实数”符号变量3. syms是sym函数的简化书写方式,各符号对象之间只能用空格分开。6.1.2 符号常量用sym函数可以定义符号常量对象,包括符号标量对象和符号常量数组对象,定义符号常量对
3、象的同时也可以指定数值常量的表示方法。例6.1.1 符号常量的定义a=1/3, sqrt(5), pi+sqrt(2);%定义数值数组s1=sym(1/3, sqrt(5), pi+sqrt(2), d);%用十进制方式表示符号常量s2=sym(1/3, sqrt(5), pi+sqrt(2);%用最接近的有理方式表示符号常量s3=sym(1/3, sqrt(5), pi+sqrt(2);%绝对准确的符号数值表示,输入为字符串6.1.3 符号变量与符号表达式1. 定义符号变量和符号表达式例6.1.2 符号变量和符号表达式的定义 x = sym(x, real);%定义实数符号变量x sym y
4、 real;%定义实数符号变量y z=x+i*y;%定义符号表达式对象z conj(z)%符号变量求共轭复转置f = z*conj(z);%符号表达式对象 f=simple(f)%符号表达式对象化简f = x2+y2例6.1.3 符号变量与符号矩阵 syms a b c;%定义符号变量a,b,c A=a,b,c; b,c,a; c,a,b ;%定义符号矩阵A sum(A(:,1);%求矩阵A第一列的元素的和 sum(A(1,:)=sum(A(:,2)%符号对象的关系运算 det(A);%矩阵求行列式 syms alpha beta;%定义符号变量alpha和beta A(1,3)=beta;%
5、矩阵元素赋值 A=subs(A,a,alpha)%符号表达式的替换操作,矩阵A中的a用alpha代替2. 符号表达式中自变量的确定在数学表达式或者数学函数中,一般都含有自变量。为了便于进行数学运算,通常要显示的指定表达式中的自变量,如果不指定自变量,MATLAB会根据上下文关系,识别表达式中默认的自变量(独立自由的符号变量)。识别表达式中自变量的基本原则是:按照字母表中靠近小写字母x的顺序识别,最靠近字母x的变量被第一个识别为自变量。MATLAB还提供了自变量识别函数findsym。【调用格式】findsym(exp)识别表达式exp中所有的自由符号变量findsym(exp, n)识别表达式
6、exp中最靠近x的n个独立自由变量【说明】1. 表达式可以是符号矩阵,此时变量识别是对整个矩阵进行的。2. 函数识别的是“独立的”“自由的”符号变量,符号常量或者非独立的符号变量无法被识别。3. 识别次序是按照靠近x的远近进行的,区分大小写,总认为大写字母距离x的距离大于所有小写字母。例6.1.4 符号表达式中自变量的识别 syms a b x X Y;%定义符号变量 k=sym(2.5); z=sym(c*sqrt(alpha)+y*sin(beta);%定义符号表达式对象(变量)z exp=a*z*X+k*Y+bx%定义符号表达式变量expexp = a*(c*alpha(1/2)+y*s
7、in(beta)*X+5/2*Y+bx? k=sym(2.5);%定义符号常量k,无法被识别 findsym(exp)%自动识别所有自由独立变量,k为常量,z为非独立findsym(exp,3)%识别exp中前3个靠近x的独立自由变量6.1.4符号数学函数在MATLAB中,可以定义表示数学函数的符号对象,既能建立具有详细运算关系的函数,又能建立抽象数学函数。定义符号数学函数有2种方法:1. 用符号表达式2. 用函数M文件(在函数M文件中用符号变量作为输入变量)例6.1.5 用符号表达式定义符号数学函数 syms x y z%定义函数自变量 r = sqrt(x2 + y2 + z2);%定义函
8、数r t = atan(y/x);%定义函数t f = sin(x*y)/(x*y);%定义函数f例6.1.6 用函数M文件来定义符号数学函数,下列代码定义了函数。function z = sinc(x)%SINC 符号函数% sin(x)/x 数学计算公式% 接受符号变量作为输入变量if isequal(x,sym(0)%如果自变量值为符号0,则函数值为1 z = 1;else z = sin(x)/x;end例6.1.7 建立抽象的符号数学函数 f = sym(f(x)%建立抽象函数f(x) syms x h; df = (subs(f, x, x+h) -f)/h%建立抽象函数df,表示
9、f(x)的导数表达式df = (f(x+h)-f(x)/h g=subs(df, f, sin)%建立sin(x)的导数函数的定义 g = (sin)(x+h)-(sin)(x)/h limit(g,h,0)%根据导数定义,求sin(x)的导数 ans = cos(x)6.1.5 符号数值计算的精度数值计算受计算机字长的限制,每次数值计算都会产生截断误差。在MATLAB中,数值计算的精度大约为16位数字。对于符号计算来说,只要能获得解析结果,其计算结果是绝对准确的,不包含任何误差。但是当将符号数值对象转换成数值数据时,就会产生误差,涉及到转换精度问题。MATLAB的符号计算工具箱提供3种算术运
10、算:1. 数值运算(16位数字精度)2. 符号运算(绝对准确)3. 任意精度运算(用户指定运算精度)有关符号运算精度的函数及其调用方法如下:【调用格式】n = digits获取当前采用的数值计算精度digits(n)设置数值计算精度的有效位为n,除非再次设定,否则始终有效xs = vpa(x)在当前精度下,给出变量x的数值符号结果xsxs = vpa(x,n)在n位精度下,给出变量x的数值符号结果xs【说明】1. 相对精度位数n表示有效数字位数。2. x可以是符号常量,也可以是数值对象。3. 返回值xs是符号结果,一定是符号对象。例6.1.8 符号数值计算精度 z = 1.0e-16 x =
11、1.0e+2 digits(14)%设置数值运算精度为14位 y = vpa(x*z+1)%在14位精度下计算y6.1.6 符号对象与其他数据类型之间的转换数值、字符和符号是MATLAB中3种不同的数据类型。MATLAB提供了不同数据类型之间的转换指令。表6.1.1介绍了MATLAB中实现符号对象到数值、字符串之间的转换指令。表6.1.1 符号对象和其他数据类型之间的转换指令表函数名称功能函数名称功能char将符号对象转换为字符串uint32将符号对象转换为32位无符号整数double将符号对象转换为双精度数值uint64将符号对象转换为64位无符号整数int8将符号对象转换为8位整数sing
12、le将符号对象转换为单精度数值int16将符号对象转换为16位整数sym2poly将符号多项式转换为数值系数向量int32将符号对象转换为32位整数poly2sym多项式系数向量转换为符号多项式int64将符号对象转换为64位整数vpa转换为符号运算结果uint8将符号对象转换为8位无符号整数sym转为为符号对象uint16将符号对象转换为16位无符号整数pretty转换为易读的显示方式例6.1.9 多项式和符号对象之间的转换 sym x; f = x4-3*x2+3-5*x%定义符号多项式对象 p1=sym2poly(f)%将符号多项式对象转换为数值系数向量p1 = 1 0 -3 -5 3
13、p1s=poly2str(p1, y);%将多项式数值系数向量转换为多项式字符串格式 f2=poly2sym(p1);%将多项式数值系数向量转换为多项式符号对象 pretty(f2, s);%将多项式符号对象显示为易读格式6.2 符号对象的代数运算6.2.1 符号对象的运算1.符号对象的基本代数运算符号对象的基本代数运算和普通数值变量一样,可以使用算术运算符、关系运算符(仅能使用和=),其运算符的定义和数值运算相同。例6.2.1 符号矩阵的基本代数运算syms t;G = cos(t), sin(t); -sin(t), cos(t);A = G*G;%符号矩阵的乘法A = simple(A)
14、;%化简为最简表达式I = G. *G;%符号数组乘法I = simple(I);%化简为最简表达式I = 1, 0 0, 1F= cos(t), -sin(t); sin(t), cos(t);(F+G)/2;%符号矩阵加法和符号矩阵与标量的除法2.符号对象的函数运算数值计算使用的函数基本上也可以用于符号计算,包括三角函数(atan2除外)、指数函数、对数函数(log2、log10除外)、复数函数(angle除外)、线性代数函数和矩阵函数。例6.2.2 符号矩阵的函数运算H = hilb(3);%生成33的希尔伯特数值矩阵H = sym(H);%将数值矩阵转为符号常数矩阵inv(H);%符号
15、矩阵求逆det(H)%符号矩阵求行列式的值ans = 1/2160syms sH(1,1) = s;%将符号元素赋值为符号变量s,使矩阵变为非奇异矩阵Z = det(H)%带有符号变量的符号矩阵求行列式的值Z = 1/240*s-1/270sol = solve(Z)%求行列式的根sol = 8/9H = subs(H,s,sol);%将矩阵行列式的根代入符号矩阵,使矩阵变为奇异矩阵det(H);%奇异矩阵的行列式值inv(H);%奇异矩阵求逆 eig(H);%符号矩阵的特征值6.2.2符号表达式分解、展开与化简MATLAB提供了符号表达式的因式分解、展开和化简函数。【调用格式】collect
16、(expr, v)合并符号表达式expr中符号对象v的同类项系数expand(expr)对表达式expr进行多项式、三角函数、指数对数等函数展开factor(expr)对符号表达式expr做因式分解horner(expr)把多项式expr分解为嵌套形式n,d=numden(expr)提取表达式最小分母公因子d和相应的分子多项式nsimplify(expr)用多种恒定变换对表达式expr进行综合化简simple(expr)把expr化简为最简表达式【说明】上述表达式expr可以是符号矩阵,此时函数对符号矩阵的每个元素进行相应操作。例6.2.3 符号表达式的展开和分解f=sym (x3-6*x2+
17、10*x-5)+(x-1);%定义原始的符号表达式 fc=collect(f);%符号表达式合并同类项 ff=factor(f);%符号表达式因式分解 fh=horner(f);%符号表达式的嵌套分解 fe=expand(fh);%符号表达式的展开 factor(1025);%正整数的质数分解,10255541例6.2.4 写出矩阵各元素的分子多项式和分母多项式 syms x; A=1/4, 1/(2*x-1)+1/(x+1); 2/(x2-1), 3*x+2; n,d=numden(A);%提取表达式最小分母公因子d和相应的分子多项式n pretty(simplify(n./d);例6.2.
18、5 化简解:用simplify进行多次化简也得不到最简结果,用simple化简可以得到最简结果 syms x; f= (1+3/x+3/x2+1/x3)(1/3); sfy1=simplify(f); sfy2=simplify(sfy1); sp1=simple(f); sp2=simple(sp1) sp2 = 1+1/x6.2.3符号表达式的置换操作MATLAB提供了子表达式的置换函数。通常在这几种情况下使用子表达式的置换函数:第一,符号计算结果中多次出现同一个表达式,为了阅读方便,可以把这个表达式用符号变量来置换;第二,可以用符号常量对象置换表达式中的自变量,实现表达式求值;第三,通过
19、置换某些表达式可以生成新的表达式。1.自动置换函数【调用格式】RS,vn=subexpr(S,vn)用符号变量vn置换S中的子表达式,并重写S为RS。RS,vn=subexpr(S, vn)例6.2.6 对一元三次方程的符号解进行子表达式的置换。 t = solve(a*x3+b*x2+c*x+d = 0); r,s = subexpr(t,s)2.通用置换函数【调用格式】RS=subs(S, old, new)用new置换S中old,生成RS【说明】1. old是被替换的子表达式,可以是符号变量,也可以是字符串表达式。2. new是替换old的值,可以是符号常量、符号变量、符号表达式,也可以
20、是数值。3. 如果要替换多个子表达式,则old和new为细胞数组。例6.2.7 通用置换函数。 syms a x; f=a*cos(x)+1; f1=subs(f, cos(x), sym(y);%用符号变量替换 f2=subs(f, a, x, 3, sym(pi/4)%用符号常量替换, f3=subs(f, a, x, 3, pi/4);%用双精度数替换 f4=subs(f, a, x, 0:3, 0:pi/3:pi);%用双精度数组替换 f5=subs(f, x , sym(exp(-t)%用符号表达式替换 f5 = a*cos(exp(-t)+16.2.4 符号函数的反函数【调用格式】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 符号 计算 new
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。