




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB的 符号计算 教学目标 n本章将介绍MATLAB 的符号运算功能。 n通过对本章的学习,应掌握符号表达式和符 号矩阵的操作、符号微积分、符号线性方程和 符号微分方程等的运算。 教学重点 n符号表达式和符号矩阵的操作 n符号微积分 n符号线性方程 n符号微分方程 符号运算与数值运算的区别 数值运算中必须先对变量赋值, 然后才能参与运算。 符号运算无须事先对独立变量赋 值,运算结果以标准的符号形式表达。 nMathWorks公司以Maple的内核作为符号计 算引擎,依赖Maple已有的函数库,开发了实现 符号计算的两个工具箱:基本符号工具箱和扩 展符号工具箱. n使得matlab 不仅具有数值运算功能,还有符 号计算的工具包Symbolic Math Toolbox ,这个 符号计算工具包是通过调用Maple软件实现符号 计算的。 nmaple软件主要功能是符号运算,它占据 符号软件的主导地位。 一、符号计算基础 (一)定义符号变量 n参与符号运算的对象可以是符号变量、符 号表达式或符号矩阵。 n符号变量要先定义,后引用。可以用sym 函数、syms函数将运算量定义为符号型数据 。 n引用符号运算函数时,可以指定函数执行 过程中的变量参数;若没有指定变量参数, 则使用findsym函数默认的变量作为函数的 变量参数。 1、sym函数 n sym函数的主要功能是创建单个符号变量,符号 字符串可以是常量、变量、函数或表达式,也可以 用于创建符号表达式或符号矩阵。用sym函数创建 符号变量的一般格式为: x = sym(x) n目的是将x创建为符号变量,以x作为输出变量名 。每次调用该函数, 可以定义一个符号变量。 【例】作符号计算: na,b,x,y均为符号运算量。在符号运算前,应 先将a,b,x,y定义为符号运算量 na=sym(a); %定义a为符号运算量,输 出变量名为a nb=sym(b); x=sym(x); ny=sym(y); %(后面会介绍同时定义多个符 号运算量的命令) nx,y=solve(a*x-b*y-1,a*x+b*y-5,x,y) %以a,b为符号常数,x,y为符号变量 即可得到方程组的解:x =3/a,y =2/b 【例】已知一复数表达式 z=x+i*y, 试求其共轭复数, 并求该表达式与其共轭复数乘积的多项式。 为了使乘积表达式x2+y2非负,把变量x和y定义为实 数。 nx=sym(x,real);y=sym(y,real); nz=x+i*y; %定义复数表达式 nconj(z) %求共轭复数 nexpand(z*conj(z) %求表达式与其共轭复数乘积的多 项式 nans = x2+y2 n若要去掉x的属性,可以使用下面语句 x = sym(x,unreal) 将x创建为纯格式的符号变量。 说明: 如f = sin(x)+5x,其中 f 符号变量名 sin(x)+5x 符号表达式 符号标识 v符号表达式一定要用 单引号括起来 matlab才能识别。 的内容可以是符号表达式,也可以是符号 方程。 例: f1=ax2+bx+c 二次三项式 f2= ax2+bx+c=0 方程 f3=Dy+y2=1 微分方程 符号表达式或符号方程可以赋给符号变量,以 后调用方便;也可以不赋给符号变量直接参与运 算 2、syms函数 n函数sym一次只能定义一个符号变量,使用 不方便。MATLAB提供了另一个函数syms, 一次可以定义多个符号变量。syms函数的功 能与sym函数类似,其一般格式为: syms arg1 arg2 argN n用于将arg1, arg2,argN等符号创建为符号 型数据。 n用这种格式定义符号变量时不要在变量名上 加字符串分界符(),变量间用空格而不要用逗 号分隔。 (二)默认符号变量 n在数学表达式中,一般习惯于使用排在字 母表中前面的字母作为变量的系数,而用排 在后面的字母表示变量。例如: f=ax2+bx+c n表达式中的a,b,c通常被认为是常数,用作 变量的系数;而将x看作自变量。 例如,数学表达式 f=xn g=sin(at+b) n根据数学式中表示自变量的习惯,默认a,b,c为符 号常数,x为符号变量。 n若在MATLAB中表示上述表达式,首先用syms 函 数定义a,b,n,t,x为符号对象。在进行导数运算 时,由于没有指定符号变量,则系统采用数学习惯 来确定表达式中的自变量,默认a,b,c为符号常数,x ,t为符号变量。 即 : 对函数f求导为:df/dx 对函数g求导为:dg/dt (三) 符号变量的基本操作 nfindsym函数用于寻找符号变量 n数值型变量与符号型变量的转换形式 符号表达式中变量的确定 n为了了解函数引用过程中使用的符号变量个 数及变量名,可以用findsym函数查询默认的 变量。该函数的引用格式为:findsym(f, n) n该函数返回符号表达式f中的n个符号变量. nf为用户定义的符号函数,n为正整数,表示 查询变量的个数。n=i表示查询i个系统默认变 量。n值省略时表示查询符号函数中全部系统 默认变量。 例 用findsym函数寻找符号变量 n syms a alpha b x1 y n findsym(alpha+a+b) nans = a, alpha, b n findsym(cos(alpha)*b*x1 + 14*y,2) nans = x1,y n findsym(y*(4+3*i) + 6*j) nans = y 例 查询符号函数f=xn, g=sin(at+b)中的系 统默 认变量。 nsyms a b n t x %定义符号变量 nf=xn; %给定符号函数 ng=sin(a*t+b); nfindsym(f,1) %在f函数中查询1个系统默认 变量 nans= x 表示f函数中查询的1个系统默认变量为x。 (四) 符号表达式 含有符号对象的表达式称为符号表达式。建立符 号表达式有以下3种方法: (1)利用单引号来生成符号表达式。 (2)用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。 n符号表达式由符号变量、函数、算术运算符等组成 。符号表达式的书写格式与数值表达式相同。例如, 数学表达式 其符号表达式为: 1+sqr(5*x)/2 n注意,在定义表达式前应先将表达式中的字符x定 义为符号变量。 生成符号函数 n将表达式中的自变量定义为符号变量后, 赋值给符号函数名,即可生成符号函数。例 如有一数学表达式: 用符号表达式生成符号函数fxy的过程为: n syms a b c x y %定义符号运算量 n fxy=(a*x2+b*y2)/c2 %生成符号函 数 生成符号函数fxy后,即可用于微积分等符 号计算。 例 定义一个符号函数 fxy=(a*x2+b*y2)/c2 ,分别求该函数对x、y的导数和对x的积分 。 nsyms a b c x y %定义符号变量 nfxy=(a*x2+b*y2)/c2; %生成符号函数 ndiff(fxy,x) %符号函数fxy对x求导 数 ans =2*a*x/c2 ndiff(fxy, y) %符号函数fxy对y求导 数 ans =2*b*y/c2 nint(fxy, x) %符号函数fxy对x求积 分 ans =1/c2*(1/3*a*x3+b*y2*x) (五)符号表达式(符号函数)的操作 n符号表达式的四则运算 n合并符号表达式的同类项 n符号多项式的因式分解 n符号表达式的简化 nsubs函数用于替换求值 n反函数的运算 n复合函数的运算 1、符号表达式的四则运算 n符号表达式的加、减、乘、除运算 n syms x y a b n fun1=sin(x)+cos(y) n fun2=a+b n fun1+fun2 nans = sin(x)+cos(y)+a+b nfun1*fun2 nans = (sin(x)+cos(y)*(a+b) 2、合并符号表达式的同类项 collect(s):对符号表达式s合并同类项。 collect(s,v):对符号表达式s按变量v合并同类项。 n syms x y n collect(x2*y + y*x - x2 - 2*x) n ans = (y-1)*x2+(y-2)*x n f = -1/4*x*exp(-2*x)+3/16*exp(-2*x); n collect(f) n ans = -1/4*x*exp(-2*x)+3/16*exp(-2*x) 3符号表达式的因式分解与展开 MATLAB提供了符号表达式的因式分解与展开 的函数,函数的调用格式为: factor(s):对符号表达式s分解因式。 expand(s):对符号表达式s进行展开。 因式分解 factor函数的功能为:把多项式S分解 为多个因式,各多项式的系数均为有理数。 格式为:factor(s) 例、将表达式(x9-1)分解为多个因式。 nsyms x nfactor(x9-1) ans = (x-1)*(x2+x+1)*(x6+x3+1) 4.嵌套 将符号多项式s用嵌套形式表示,即用多 层括号的形式表示。Horner函数可以实现此 功能。该函数的格式为:horner(s) 【例】将表达式x3-6*x2+11*x-6用嵌套形 式表示。 nsyms x nhorner(x3-6*x2+11*x-6) ans = -6+(11+(-6+x)*x)*x 5符号表达式的化简 MATLAB提供的对符号表达式化简的函数有: simplify(s):应用函数规则对s进行化简。 simple(s):调用MATLAB的其他函数对表达式进行综 合化 简,并显示化简过程。 n syms x n fun1=(1/x+7/x2+12/x+8)(1/3) n sfy1=simplify(fun1) nsfy1 = (13*x+7+8*x2)/x2)(1/3) 6、subs函数用于替换求值 n syms x y nf = x2*y + 5*x*sqrt(y) n subs(f, x, 3) nans = 9*y+15*y(1/2) n subs(f, y, 3) nans = 3*x2+5*x*3(1/2) 又如 nsubs(a+b,a,4) returns 4+b. n subs(cos(a)+sin(b),a,b,sym(alpha),2) returns cos(alpha)+sin(2) n subs(exp(a*t),a,-magic(2) returns exp(-t), exp(-3*t) exp(-4*t), exp(-2*t) 7、复合函数的运算 (compose) n syms x y z t u n f = 1/(1 + x2) n g = sin(y) n h = xt n p = exp(-y/u) n compose(f,g) nans = 1/(1+sin(y)2) n compose(f,g,t) nans = 1/(1+sin(t)2) 8、符号表达式的提取分子和分母运算 如果符号表达式是一个有理分式或可以展 开为有理分式,可利用numden函数来提取符号 表达式中的分子或分母。其一般调用格式为: n,d=numden(s) 该函数提取符号表达式s的分子和分母,分 别将它们存放在n与d中。 (六)符号矩阵的生成和运算 符号矩阵也是一种符号表达式,前面介绍的符号 表达式运算都可以在矩阵意义下进行。但应注意这些函 数作用于符号矩阵时,是分别作用于矩阵的每一个元素 。 由于符号矩阵是一个矩阵,所以符号矩阵还能进 行有关矩阵的运算。MATLAB还有一些专用于符号矩阵 的函数,这些函数作用于单个的数据无意义。例如 transpose(s):返回s矩阵的转置矩阵。 determ(s):返回s矩阵的行列式值。 许多应用于数值矩阵的函数,如diag、triu、tril、 inv、det、rank、eig等,也可直接应用于符号矩阵。 1、符号矩阵的创建 数值矩阵A=1,2;3,4 A=a,b;c,d 不识别 用matlab函数sym创建矩阵(symbolic 的缩写),命令格式:A=sym( ) 符号矩阵内容同数值矩阵 需用sym指令定义 需用 标识 例如:A = sym(a , 2*b ; 3*a , 0) A = a, 2*b 3*a, 0 这就完成了一个符号矩阵的创建。 注意:符号矩阵的每一行的两端都有方括号, 这 是与 matlab数值矩阵的一个重要区别。 又如用sym函数直接生成符号矩阵 n a1=sym(1/3 2/3 5/7;9/11 11/13 13/17;17/19 19/23 23/29) na1 = 1/3, 2/3, 5/7 9/11, 11/13, 13/17 17/19, 19/23, 23/29 用字符串直接创建矩阵 v 模仿matlab数值矩阵的创建方法 v 需保证同一列中各元素字符串有相同的长度。 例:A = a,2*b; 3*a, 0 A = a, 2*b 3*a, 0 符号矩阵的修改 v a.直接修改 用、 键找到所要修改的矩阵,直接修 改 v b.指令修改 用A1=subs(A, new, old)来修改 例如:A = a, 2*b 3*a, 0 A1=subs(A, c, b) A1 = a, 2*c 3*a, 4*c 2、用生成子矩阵的方法生成符号矩阵 n a=100,cos(x);1/s,x na = 100,cos(x) 1/s,x 3、由数值矩阵转换为符号矩阵 n M=30 1 1 1;6 1 5 9;9 8 25 4;32 45 62 0 n S=sym(M) nS = 30, 1, 1, 1 6, 1, 5, 9 9, 8, 25, 4 32, 45, 62, 0 n此时,虽然矩阵形 式没有发生改变,但 是在MATLAB 的工 作区间内,系统已经 生成了一个新的矩阵 ,其数据类型为符号 型。 v将数值矩阵转化为符号矩阵调用函数: sym(A) A=1/3,2.5;1/0.7,2/5 A = 0.3333 2.5000 1.4286 0.4000 sym(A) ans = 1/3, 5/2 10/7, 2/5 符号矩阵与数值矩阵的转换 符号矩阵运算 数值运算中,所有矩阵运算操作指令都比较 直 观、简单。例如:a=b+c; a=a*b ; A=2*a2+3*a-5 等。 而符号运算就不同了,所有涉及符号运算的 操作 都有专用函数来进行 4、符号运算 符号矩阵的秩 (rank) n a=sym(1,1/x,x2;sin(x),cos(x),tan(x);log(x),2,9) na = 1, 1/x, x2 sin(x), cos(x), tan(x) log(x), 2, 9 n rank(a) nans = 3 二、微积分 (一) 微积分函数 1.求极限 函数limit用于求符号函数f的极限。系统 可以根据用户要求,计算变量从不同方向趋 近于指定值的极限值。该函数的格式及功能 : n limit(f,x,a):求符号函数 f(x)的极限值 。即计算当变量 x 趋近于常数 a 时,f(x) 函数的极限值。 n limit(f,a):求符号函数 f(x)的极限值。 由于没有指定符号函数 f(x)的自变量,则 使用该格式时,f(x)的变量为函数 findsym(f) 确定的默认自变量,即变量 x 趋 近于 a。 nlimit(f):求符号函数 f(x)的极限值。符 号函数 f(x)的变量为函数findsym(f)确定 的默认变量;没有指定变量的目标值时,系 统默认变量趋近于0,即a=0的情况。 nlimit(f,x,a,right):求符号函数f的极限值 。right表示变量x从右边趋近于a。 nlimit(f,x,a,left):求符号函数f的极限值。 left表示变量x从左边趋近于a。 例 求极限 nsyms x; %定义符号变量 nf=(x*(exp(sin(x)+1)-2*(exp(tan(x)- 1)/sin(x)3; %确定符号表达式 nw=limit(f) %求函数的极限 w = -1/2 例: syms x; f=x*(sqrt(x2+1)-x); limit(f,x,inf,left) ans = 1/2 例: syms x; f=(sqrt(x)-sqrt(2)-sqrt(x-2)/sqrt(x*x-4); limit(f,x,2,right) ans = -1/2 2. 微分函数 ndiff函数用于对符号表达式s求微分。该函数的一般 引用格式为: diff(s,v,n) 说明: nDiff(s)没有指定微分变量和微分阶数,则系统按 findsym函数的默认变量对符号表达式s求一阶微分 。 nDiff(s,v) 或 diff(s,sym(v) 格式表示以v为自 变量,对符号表达式s求一阶微分。 ndiff(s,n)格式,表示对符号表达式s求n阶微分, n为正整数。 ndiff(s,v,n)diff(s,n,v) 格式,表示以v为自 变量,对符号表达式 s 求 n 阶微分。 例 求导数: nx = sym(x); %定义符号变量 ndiff(sin(x2) %求导运算 ans = 2*cos(x2)*x 3积分函数 n积分函数int(s ,v,a,b)可以对被积函数或 符号表达式s求积分。其引用格式为: int(s ,v,a,b) n应用int(s)格式,表示没有指定积分变量和积 分阶数时,系统按findsym函数指示的默认变量 对被积函数或符号表达式s求一阶积分。 n应用int(s,v)格式,表示以v为自变量,对被 积函数或符号表达式s求一阶不定积分。 n应用积分函数时,如果给定 a、b两项,表示是 进行定积分运算。a、b分别表示定积分的下限和 上限。不指定积分的下限和上限表示求不定积分 。 int(被积表达式,积分变量,积分上限, 积分下限) 定积分 缺省时为不定积分 例 求积分: nsyms x nint(1/(1+x2) ans = atan(x) 例.计算二重不定积分 F=int(int(x*exp(-x*y),x),y) F= 1/y*exp(-x*y) 4 .积分变换 常见的积分变换有傅立叶变换、拉普拉斯 变换和Z变换。 ztrans(f) Z变换 Invztrans(f) 反Z变换 Laplace(f) 拉氏变换 Invlaplace(f) 反拉氏变换 fourier(f) 傅氏变换 Invfourier(f) 反傅氏变换 5. 级数(级数求和) 级数求和运算是数学中常见的一种运算。例 如 f(x)=a0+a1x+a2x2+a3x3+anxn。求无穷级数 的和 需要符号表达式求和函数symsum。 该函数的引用格式为:symsum(s, a, b)级数 的通 项式s,变量的变化范围a和b。或 symsum(s,v,n,m) s表示一个级数的通项,是一个符号表达式。v 是求 和变量,v省略时使用系统的默认变量。n和m 是求 和的开始项和末项。 例、求级数的和 1/12+1/22+1/32+1/42+ nsyms k nsymsum(1/k2,1,Inf) %k值为1到无穷大 ans = 1/6*pi2 结果为:1/12+1/22+1/32+1/42+ =2/6 函数的泰勒级数 MATLAB提供了taylor函数将函数展开为幂 级 数,其调用格式为:taylor(f,v,n,a) 该函数将函数f按变量v展开为泰勒级数,展 开到 第n项(即变量v的n-1次幂)为止,n的缺省值为6 。V 的缺省值与diff函数相同。参数a指定将函数f在 自变 量v=a处展开,a的缺省值是0。 或是mtaylor(f,n) 泰勒级数展开 三、解方程 1、符号方程求解 matlab符号运算能够解一般的线性方程、 非线性方程及一般的代数方程、代数方程组。 当方程组不存在符号解时,又无其他自由参数 ,则给出数值解。 (1)符号代数方程求解 在MATLAB中,求解用符号表达式表示的代 数方 程可由函数solve实现,其调用格式为: solve(s):求解符号表达式s的代数方程,求解变 量为默认变量。 solve(s,v):求解符号表达式s的代数方程,求解 变量为v。 solve(s1,s2,sn,v1,v2,vn):求解符号表 达式s1,s2,sn组成的代数方程组,求解变量 分别v1,v2,vn。 说明: 若不指明符号表达式 s1,s2,.,sn的值, 系统默认为0。例如给出一个表达式x2-3*x- 8,则系统将按x2-3*x-8=0进行运算. 例、解代数方程:a*x2-b*x-6=0. nsyms a b x nsolve(a*x2-b*x-6) ans = 1/2/a*(b+(b2+24*a)(1/2) 1/2/a*(b-(b2+24*a)(1/2) n即该方程有两个根: x1=1/2/a*(b+(b2+24*a)(1/2); x2=1/2/a*(b-(b2+24*a)(1/2) 例. f = ax2+bx+c 求解 f=a*x2+b*x+c; solve(f) 对缺省变量x求解 ans =1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) solve(f , b ) 对指定变量b求解 ans = -(a*x2+c)/x 计算机 格式 一般格式 例. 求符号方程tan(2*x)=sin(x)的解 f2=solve(tan(2*x)=sin(x) nf2 =%matlab4.2的解 0 acos(1/2+1/2*3(1/2) acos(1/2 -1/2*3(1/2) f3=solve(tan(2*x)=sin(x) f3= matlab6.5的解 0 pi atan(1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2) atan(-1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2) atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)+pi -atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)-pi numeric(f3) ans = 0 3.1416 0 + 0.8314i 0 - 0.8314i 1.9455 -1.9455 numeric(f2) ans = 0 0 + 0.8314i 1.9455 matlab4.2版与6.5版 的对比 使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湛江市重点中学2024-2025学年初三下学期第二学段模块考试英语试题试卷含答案
- 上海出版印刷高等专科学校《Unix系统原理与应用》2023-2024学年第二学期期末试卷
- 山东女子学院《机能实验学》2023-2024学年第二学期期末试卷
- 浙江东方职业技术学院《综合商务英语技能训练》2023-2024学年第一学期期末试卷
- 昆明学院《幼儿舞蹈与编创》2023-2024学年第二学期期末试卷
- 郑州软件职业技术学院《电影技术概论》2023-2024学年第一学期期末试卷
- 郑州信息科技职业学院《纪录片创作》2023-2024学年第一学期期末试卷
- 重庆三峡职业学院《现代生物医药研究进展》2023-2024学年第二学期期末试卷
- 佳木斯职业学院《数据分析与语言》2023-2024学年第二学期期末试卷
- 山西机电职业技术学院《精神病护理学》2023-2024学年第二学期期末试卷
- 农贸市场计量管理制度(3篇)
- 拼音bpmfdtnl课件教学课件最新
- 一级建造师《港口与航道工程管理与实务》课件专业工程技术
- 国家开放大学《社会心理学》形考任务1-4参考答案
- 《工程制图》期末考试试卷附答案
- 重症患者的容量管理课件
- 二年级下册道德与法治 课件-9 小水滴的诉说 部编版 (共16张PPT)
- 生产设备点检记录表
- 转化膜与着色技术
- DL∕T 1286-2021 火电厂烟气脱硝催化剂检测技术规范
- 水利工程管理单位定岗标准(试点)
评论
0/150
提交评论