第七章_matlab_第1页
第七章_matlab_第2页
第七章_matlab_第3页
第七章_matlab_第4页
第七章_matlab_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-6-231 第第7章章 MATLAB符号处理符号处理 Matlab 不仅具有数值运算功能,还不仅具有数值运算功能,还 开发了在开发了在matlab环境下实现符号计算的工环境下实现符号计算的工 具包具包Symbolic Math Toolbox. 2021-6-232 本章内容介绍 1. 符号运算简介符号运算简介 2. 符号表达式的化简与替换符号表达式的化简与替换 3. 符号函数图形绘制符号函数图形绘制 4. 符号微积分符号微积分 5. 符号方程的求解符号方程的求解 6. 符号积分变换符号积分变换 7. MAPLE 函数的调用函数的调用 8. 符号函数计算器符号函数计算器 符号微积分符

2、号微积分 符号方程的求解符号方程的求解 2021-6-233 7.1 符号运算的简介符号运算的简介 7.1.1 符号对象符号对象 v 符号对象是符号工具箱中定义的另一种数据类型符号对象是符号工具箱中定义的另一种数据类型。符号对。符号对 象象是符号的字符串表示是符号的字符串表示。 v 在符号工具箱中符号对象用于表示符号变量、表达式和方在符号工具箱中符号对象用于表示符号变量、表达式和方 程。下例说明了符号对象和普通的数据对象之间的差别。程。下例说明了符号对象和普通的数据对象之间的差别。 v 例例 7-1 符号对象和普通数据对象之间的差别符号对象和普通数据对象之间的差别 在命令窗口中输入如下命令在命

3、令窗口中输入如下命令 sqrt(2) ans = 1.4142 x=sqrt(sym(2) x = 2(1/2) 返回数值结 果 返回符号结 果 当采用符号运算时,并不计算出表达式的结果,而是给出符号表达。当采用符号运算时,并不计算出表达式的结果,而是给出符号表达。 2021-6-234 v如果查看符号如果查看符号 x 所表示的值,在窗口中输入:所表示的值,在窗口中输入: double(x) ans = 1.4142 不同数据类型的不同数据类型的 变量对应的符号变量对应的符号 2021-6-235 v对符号进行的数学运算与对数值进行的数学运算对符号进行的数学运算与对数值进行的数学运算 也不相同

4、也不相同 v例例 7-2 符号运算和数值运算之间的差别符号运算和数值运算之间的差别 sym(2)/sym(5) ans = 2/5 两个符号进行运算,结果为分数形式两个符号进行运算,结果为分数形式 2021-6-236 2/5 + 1/3 ans = 0.7333 sym(2)/sym(5) + sym(1)/sym(3) ans = 11/15 double(sym(2)/sym(5) + sym(1)/sym(3) ans = 0.7333 数值运算结果为数值运算结果为double 类型,采用符号运算,结果类型,采用符号运算,结果 为为sym类型类型 2021-6-237 7.1.2 符号

5、变量、表达式的生成符号变量、表达式的生成 v使用使用sym函数生成符号变量、符号表达式函数生成符号变量、符号表达式syms用用 于生成多个符号变量于生成多个符号变量 v1. sym 函数函数 功能:功能:用于生成单个的符号变量或者符号表达式用于生成单个的符号变量或者符号表达式 调用格式为:调用格式为: x = sym(x),该命令创建一个符号变量,该变,该命令创建一个符号变量,该变 量的内容为量的内容为 x,表达为,表达为 x。 x = sym(x,real),指定符号变量,指定符号变量 x 为实数。为实数。 x = sym(x,unreal),指定,指定 x 为一个纯为一个纯 粹的变量,而不

6、具有其他属性。粹的变量,而不具有其他属性。 2021-6-238 S = sym(A),如果参数,如果参数 A 为字符串,则返回为字符串,则返回 的结果为一个符号变量或者一个符号数值;如的结果为一个符号变量或者一个符号数值;如 果果 A 是一个数字或矩阵,则返回结果为该参数是一个数字或矩阵,则返回结果为该参数 的符号表示。的符号表示。 S = sym(A,flag),其中参数,其中参数 flag 可以为可以为 r, d, e, 或者或者 f 中的一个。函数将数中的一个。函数将数 值标量或者矩阵转化为参数形式,第二个参数值标量或者矩阵转化为参数形式,第二个参数 用于指定浮点数转化的方法。用于指定

7、浮点数转化的方法。 函数各个取值的意义如表所示。函数各个取值的意义如表所示。 2021-6-239 参数参数说明说明 r有理数有理数 d十进制数十进制数 e估计误差估计误差 f 浮点数,将数值表示为浮点数,将数值表示为 1.F*2(e) 或或 者者 -1.F*2(e) 的格式,其中的格式,其中 F 为为13 位十六位十六 进制数,进制数,e 为整数为整数 2021-6-2310 sym(abdcd) ans = abdcd A=magic(3) A = 8 1 6 3 5 7 4 9 2 sym(A) ans = 8, 1, 6 3, 5, 7 4, 9, 2 a=sym(a);e=sym(e

8、);x=sym(x); b=sym(b); f=a*ex+b*sin(x) f = b*sin(x) + a*ex g=sym(2*ex+h*sin(x) g = 2*ex + h*sin(x) 整体定义更快 捷方便 2021-6-2311 e=sqrt(2) e = 1.4142 r=sym(e) r = 2(1/2) a=2.5,1.333;4,10.4 a = 2.5000 1.3330 4.0000 10.4000 b=sym(a) b = 5/2, 1333/1000 4, 52/5 c=sym(a,e) c = 5/2, 1333/1000 - (21*eps)/125 4, (8

9、*eps)/5 + 52/5 2021-6-2312 sym创建符号矩阵格式:创建符号矩阵格式: A = sym(a , 2*b ; 3*a , 0) A = a, 2*b 3*a, 0 2021-6-2313 2:syms函数函数 syms用于一次生成多个符号变量,但是用于一次生成多个符号变量,但是不能不能 生成表达式。生成表达式。 syms a b c a+b+c*a ans = a + b + a*c 2021-6-2314 创建复数符号变量创建复数符号变量 vMATLAB 中一种特殊的符号表达式为复数,创建中一种特殊的符号表达式为复数,创建 复数符号变量可以有两种方法:复数符号变量可以

10、有两种方法: 直接创建法直接创建法 间接创建法间接创建法 2021-6-2315 直接法:直接法: z=sym(x+i*y) z = x + y*i conj(z) %求求z得共轭得共轭 ans = conj(x) - conj(y)*i expand(z2) %表达式的展开表达式的展开 ans = x2 + 2*x*y*i - y2 abs(z) ans = abs(x + y*i) abs(sym(2+3*i) ans = 13(1/2) 间接法:间接法: syms x y real z=x+y*i z = x + y*i 2021-6-2316 7.1.3 两个重要函数两个重要函数 1:

11、findsym 函数函数 功能:该函数用于确定一个表达式中的符号变量功能:该函数用于确定一个表达式中的符号变量 findsym 函数通常由系统自动调用,在进行符号函数通常由系统自动调用,在进行符号 运算时,系统调用该函数确定表达式中的符号变运算时,系统调用该函数确定表达式中的符号变 量,执行相应的操作。量,执行相应的操作。 2021-6-2317 syms a b c x f=a*x2+b*x+c f = a*x2 + b*x + c findsym(f) ans = a,b,c,x g=2*x+3*x2 g = 3*x2 + 2*x findsym(g) ans = x A=sym(a ,

12、2*b ; 3*a , 0) A = a, 2*b 3*a, 0 findsym(A) ans = a,b 2021-6-2318 vsubs 函数:函数:Symbolic substitution. 功能:功能:将符号表达式中的符号变量用数值代替。将符号表达式中的符号变量用数值代替。 在对多变量符号表达式使用在对多变量符号表达式使用 subs 函数时,如函数时,如 果不指定变量,则系统选择默认变量进行计算。果不指定变量,则系统选择默认变量进行计算。 默认变量的选择规则为:默认变量的选择规则为:对于只包含一个字符对于只包含一个字符 的变量,选择靠近的变量,选择靠近 x 的变量作为默认变量;如的

13、变量作为默认变量;如 果有两个变量和果有两个变量和 x 之间的距离相同,则选择字之间的距离相同,则选择字 母表后面的的变量作为默认变量。母表后面的的变量作为默认变量。 2021-6-2319 f f = a*x2 + b*x + c subs(f,2) %默认的符号变量为默认的符号变量为x ans = 4*a + 2*b + c g=subs(f,b,3) %将符号变量将符号变量b用用3代替代替 g = a*x2 + 3*x + c h=subs(g,5) h = 25*a + c + 15 2021-6-2320 7.1.4 符号和数值之间的转化符号和数值之间的转化 v在符号变量生成一节中已

14、经介绍在符号变量生成一节中已经介绍sym函数,该函函数,该函 数用于生成符号变量,也可以将数值转化为符号数用于生成符号变量,也可以将数值转化为符号 变量。转化的方式由参数变量。转化的方式由参数“flag”确定。确定。flag的取的取 值及具体意义在上面的一节中已经叙述过。值及具体意义在上面的一节中已经叙述过。 vsym的另一个重要作用为将数值矩阵转化为符号的另一个重要作用为将数值矩阵转化为符号 矩阵。矩阵。 2021-6-2321 t=0.2 t = 0.2000 sym(t) ans = 1/5 sym(t,r) ans = 1/5 sym(t,f) ans = 36028797018963

15、97/18014398509481984 sym(t,e) ans = eps/20 + 1/5 2021-6-2322 7.1.5 任意精度的计算任意精度的计算 v符号计算的一个非常显著的特点是:符号计算的一个非常显著的特点是:在计算过程在计算过程 中不会出现舍入误差,中不会出现舍入误差,从而可以得到任意精度的从而可以得到任意精度的 数值解。如果希望计算结果精确,可以用符号计数值解。如果希望计算结果精确,可以用符号计 算来获得足够高的计算精度。算来获得足够高的计算精度。符号计算相对于数符号计算相对于数 值计算而言,需要更多的计算时间和存储空间。值计算而言,需要更多的计算时间和存储空间。 vM

16、ATLAB 工具箱中有三种不同类型的算术运算:工具箱中有三种不同类型的算术运算: 数值型:数值型:MATLAB 的浮点数运算;的浮点数运算; 有理数类型:有理数类型:Maple 的精确符号运算;的精确符号运算; VPA 类型:类型:Maple 的任意精度算术运算。的任意精度算术运算。 2021-6-2323 1/2+1/3 ans = 0.8333 %4位小数位小数 format long 1/2+1/3 ans = 0.833333333333333 %15位小数位小数 2021-6-2324 digits(25) %25位小数位小数 vpa(1/2+1/3) ans = 0.8333333

17、333333333333333333 digits(26) vpa(1/2+1/3) ans = 0.83333333333333333333333333 digits(20) vpa(1/2+1/3) ans = 0.83333333333333333333 2021-6-2325 v 在三种运算中,浮点运算速度最快,所需的内存空间小,在三种运算中,浮点运算速度最快,所需的内存空间小, 但是结果精确度最低。双精度数据的输出位数由但是结果精确度最低。双精度数据的输出位数由 format 命令控制,但是在内部运算时采用的是计算机硬件所提供命令控制,但是在内部运算时采用的是计算机硬件所提供 的八位

18、浮点运算。而且,在浮点运算的每一步,都存在一的八位浮点运算。而且,在浮点运算的每一步,都存在一 个舍入误差,如上面的运算中存在三步舍入误差:计算个舍入误差,如上面的运算中存在三步舍入误差:计算 1/3 的舍入误差,计算的舍入误差,计算 1/2+1/3 的舍入误差,和将最后结的舍入误差,和将最后结 果转化为十进制输出时的舍入误差。果转化为十进制输出时的舍入误差。 v 符号运算中的有理数运算,其时间复杂度和空间复杂度都符号运算中的有理数运算,其时间复杂度和空间复杂度都 是最大的,但是,只要时间和空间允许,能够得到任意精是最大的,但是,只要时间和空间允许,能够得到任意精 度的结果。度的结果。 v 可

19、变精度的运算运算速度和精确度均位于上面两种运算之可变精度的运算运算速度和精确度均位于上面两种运算之 间。其具体精度由参数指定,参数越大,精确度越高,运间。其具体精度由参数指定,参数越大,精确度越高,运 行越慢。行越慢。 2021-6-2326 7.1.6 创建符号方程创建符号方程 1创建抽象方程创建抽象方程 vMATLAB 中可以创建抽象方程,即中可以创建抽象方程,即只有方只有方 程符号程符号,没有具体表达式的方程。若要创,没有具体表达式的方程。若要创 建方程,并计算其一阶微分的方法如下:建方程,并计算其一阶微分的方法如下: f=sym(f(x); syms x h; df = (subs(f

20、,x,x+h)-f)/h df = (f(x+h)-f(x)/h 2021-6-2327 2创建符号方程创建符号方程 v创建符号方程的方法有两种:创建符号方程的方法有两种: 利用符号表达式创建利用符号表达式创建 先创建符号变量,通过符号变量的运算生成符号函先创建符号变量,通过符号变量的运算生成符号函 数数 直接生成符号表达式直接生成符号表达式 创建创建 M 文件文件 利用利用 M 文件创建的函数,可以接受任何符号变量作文件创建的函数,可以接受任何符号变量作 为输入,作为生成函数的自变量为输入,作为生成函数的自变量 2021-6-2328 syms a b x f=a*sin(x)+b*cos(

21、x) f = b*cos(x) + a*sin(x) g=sym(a*b*x) g = a*b*x 2021-6-2329 M文件文件 %sinc.m %创建符号方程创建符号方程sin(x)/x,当当x=0时函数值为时函数值为1 %函数可以接受任何符号变量作为输入参数函数可以接受任何符号变量作为输入参数 function z=sinc(x) if isequal(x,sym(0) z=1; else z=sin(x)/x; end 在命令窗口中输入如下命令:在命令窗口中输入如下命令: syms a b x sinc(b) %符号变量符号变量b作为函数输入作为函数输入 ans = sin(b)/

22、b sinc(0) %0作为函数输入作为函数输入 ans = 1 sinc(pi/2) ans = 0.63662 2021-6-2330 7.2符号表达式的化简与替换符号表达式的化简与替换 多项式表示方法:多项式表示方法: (1)(2)(3)xxx 32 6116xxx 6(11 ( 6) )x x x 常用表示方法 因式相乘,便于求根 嵌套形式,求多项式的值 对符号表达式的化简是数学中经常用到的,本节介绍对符号表达式的化简是数学中经常用到的,本节介绍 MATLAB提供的符号表达式的化简函数。提供的符号表达式的化简函数。 2021-6-2331 符号表达式的化简符号表达式的化简 vMATLA

23、B中下列函数可以实现符号表达式中下列函数可以实现符号表达式 的化简的化简 collect:合并同类项:合并同类项 expand:符号表达式的展开:符号表达式的展开 horner:将函数转化为嵌套格式:将函数转化为嵌套格式 factor:因式分解:因式分解 simplify:表达式的化简:表达式的化简 simple:自动选择化简所选择的方法:自动选择化简所选择的方法 2021-6-2332 collect: Collect coefficients u 功能:合并同类项功能:合并同类项 u 调用格式:调用格式: 1. R = collect(S),合并,合并S中每个元素的同类项。中每个元素的同类

24、项。 其中其中 S 可以是数组,数组的每个元素为符号可以是数组,数组的每个元素为符号 表达式。表达式。 2. R = collect(S,v),对指定的变量,对指定的变量 v 进行进行 合并,如果不指定,则默认为对合并,如果不指定,则默认为对 x 进行合并,进行合并, 或者由或者由 findsym 函数返回的结果进行合并。函数返回的结果进行合并。 2021-6-2333 S=sym(x2*y+x2+2*x*y+x+x*y2+y2+y) S = x2*y + x2 + x*y2 + 2*x*y + x + y2 + y S1=collect(S) %按照按照x的次方进行同类项合并的次方进行同类项

25、合并 S1 = (y + 1)*x2 + (y2 + 2*y + 1)*x + y2 + y S2=collect(S,y) %指定对指定对y进行合并同类项进行合并同类项 S2 = (x + 1)*y2 + (x2 + 2*x + 1)*y + x2 + x pretty(S1) %将将S1用手写的形式展现用手写的形式展现 2 2 2 (y + 1) x + (y + 2 y + 1) x + y + y pretty(S2) 2 2 2 (x + 1) y + (x + 2 x + 1) y + x + x 2021-6-2334 expand: uSymbolic expansion of

26、 polynomials and elementary functions u功能:符号表达式的展开,其操作对象可功能:符号表达式的展开,其操作对象可 以是多种类型,如多项式、三角函数、指以是多种类型,如多项式、三角函数、指 数函数等。数函数等。 u调用格式:调用格式: expand(s):用户可以对任意的符号表达式用户可以对任意的符号表达式 进行展开。进行展开。 2021-6-2335 syms x y; f=(x+y)3 f = (x + y)3 ef=expand(f) ef = x3 + 3*x2*y + 3*x*y2 + y3 es=expand(sin(x+y) es = cos(

27、x)*sin(y) + cos(y)*sin(x) 2021-6-2336 horner uHorner nested polynomial representation u功能:将函数转化为嵌套格式。功能:将函数转化为嵌套格式。嵌套格式嵌套格式 在多项式求值中可以降低计算的时间复杂在多项式求值中可以降低计算的时间复杂 度。度。 u调用格式:调用格式: R = horner(P),其中,其中 P 为由符号表达式组成为由符号表达式组成 的矩阵,该命令将的矩阵,该命令将 P 中的所有元素转化为相应中的所有元素转化为相应 的嵌套形式。的嵌套形式。 2021-6-2337 f=(x+y)3 f = (

28、x + y)3 g=(x+1)*(x+2) g = (x + 1)*(x + 2) h=horner(g) h = x*(x + 3) + 2 horner(f,g) ans = y3 + x*(x*(x + 3*y) + 3*y2), x*(x + 3) + 2 2021-6-2338 factor: Factorization u功能:实现因式分解功能,功能:实现因式分解功能,如果输入的参数为正如果输入的参数为正 整数,则返回此数的素数因数。整数,则返回此数的素数因数。 factor(h) %h= x*(x + 3) + 2 ans = (x + 2)*(x + 1) factor(72)

29、 ans = 2 2 2 3 3 factor(sym(72) ans = 23*32 2021-6-2339 simplify:Symbolic simplification u功能:实现表达式的化简,化简所选用的方法为功能:实现表达式的化简,化简所选用的方法为 Maple 中的化简方法。中的化简方法。 S=sym(x2*y+x2+2*x*y+x+x*y2+y2+y) S = x2*y + x2 + x*y2 + 2*x*y + x + y2 + y simplify(S) ans = (x + y)*(x + 1)*(y + 1) 2021-6-2340 simple uSearch fo

30、r simplest form of symbolic expression u功能:实现表达式的化简,并且该函数可以自动选择化简功能:实现表达式的化简,并且该函数可以自动选择化简 所选择的方法,最后返回表达式的最简单的形式。所选择的方法,最后返回表达式的最简单的形式。 u函数的化简方法包括:函数的化简方法包括:simplify、combine(trig) uradsimp、convert(exp)、collect、factor、expand 等。等。 u调用格式:调用格式: u1:r = simple(S),该命令尝试多种化简方法,显示全部化简结果,该命令尝试多种化简方法,显示全部化简结果,

31、 并且返回最简单的结果;如果并且返回最简单的结果;如果 S 为矩阵,则返回使矩阵最简单的为矩阵,则返回使矩阵最简单的 结果,但是对于每个元素而言,则并不一定是最简单的。结果,但是对于每个元素而言,则并不一定是最简单的。 u2:r,how = simple(S),该命令在返回化简结果的同时返回化简,该命令在返回化简结果的同时返回化简 所使用的方法。所使用的方法。 2021-6-2341 r,how=simple(2*cos(x)2-sin(x)2) r = 2 - 3*sin(x)2 how = simplify h,how=simple(S) h = (x + y)*(x + 1)*(y +

32、1) how = simplify 2021-6-2342 simple(S) simplify: (x + y)*(x + 1)*(y + 1) radsimp: x2*y + x2 + x*y2 + 2*x*y + x + y2 + y simplify(100): (x + y)*(x + 1)*(y + 1) combine(sincos): x2*y + x2 + x*y2 + 2*x*y + x + y2 + y combine(sinhcosh): x2*y + x2 + x*y2 + 2*x*y + x + y2 + y combine(ln): x2*y + x2 + x*y

33、2 + 2*x*y + x + y2 + y factor: (y + 1)*(x + 1)*(x + y) 2021-6-2343 expand: x2*y + x2 + x*y2 + 2*x*y + x + y2 + y combine: x2*y + x2 + x*y2 + 2*x*y + x + y2 + y rewrite(exp): x2*y + x2 + x*y2 + 2*x*y + x + y2 + y rewrite(sincos): x2*y + x2 + x*y2 + 2*x*y + x + y2 + y rewrite(sinhcosh): x2*y + x2 + x*

34、y2 + 2*x*y + x + y2 + y rewrite(tan): x2*y + x2 + x*y2 + 2*x*y + x + y2 + y mwcos2sin: x2*y + x2 + x*y2 + 2*x*y + x + y2 + y collect(x): (y + 1)*x2 + (y2 + 2*y + 1)*x + y2 + y ans = (x + y)*(x + 1)*(y + 1) 2021-6-2344 7.2.2 符号表达式的替换符号表达式的替换 v MATLAB 中,可以通过符号替换使表达式的形式简化。中,可以通过符号替换使表达式的形式简化。 符号工具箱中提供了

35、两个函数用于表达式的替换:符号工具箱中提供了两个函数用于表达式的替换: subexpr 和和 subs。 v 1subexpr v Rewrite symbolic expression in terms of common subexpressions 该函数自动将表达式中重复出现的字符串用变量替换,该该函数自动将表达式中重复出现的字符串用变量替换,该 函数的调用格式为:函数的调用格式为: Y,SIGMA = subexpr(X,SIGMA),指定用符号变量,指定用符号变量 SIGMA 来代来代 替符号表达式(可以是矩阵)中重复出现的字符串。替换后的结替符号表达式(可以是矩阵)中重复出现的字

36、符串。替换后的结 果由果由 Y 返回,被替换的字符串由返回,被替换的字符串由 SIGMA 返回;返回; Y,SIGMA = subexpr(X,SIGMA),该命令与上面的命令不同之,该命令与上面的命令不同之 处在于第二个参数为字符串,该命令用来替换表达式中重复出现处在于第二个参数为字符串,该命令用来替换表达式中重复出现 的字符串。的字符串。 2021-6-2345 f=(x2*a+a*x+1)2+(x2*a+a*x+1)*8 f = 8*a*x + (a*x2 + a*x + 1)2 + 8*a*x2 + 8 r=subexpr(f) sigma = x2 r = (a*sigma + a*

37、x + 1)2 + 8*a*sigma + 8*a*x + 8 y,sigma=subexpr(f,sigma) y = (a*sigma + a*x + 1)2 + 8*a*sigma + 8*a*x + 8 sigma = x2 2021-6-2346 v 2subs v Symbolic substitution in symbolic expression or matrix v 功能:功能: subs 可以用指定符号替换表达式中的某一特定符可以用指定符号替换表达式中的某一特定符 号。号。 v 调用格式为:调用格式为: R = subs(S),对于,对于 S 中出现的全部符号变量,如果

38、在调用函数中出现的全部符号变量,如果在调用函数 或工作区间中存在相应值,则将值代入,如果没有相应值,则对或工作区间中存在相应值,则将值代入,如果没有相应值,则对 应的变量保持不变;应的变量保持不变; R = subs(S, new),用新的符号变量替换,用新的符号变量替换 S 中的默认变量,即有中的默认变量,即有 findsym 函数返回的变量;函数返回的变量; R = subs(S,old,new),用新的符号变量替换,用新的符号变量替换 S 中的变量,被替中的变量,被替 换的变量由换的变量由 old 指定,如果指定,如果 new 是数字形式的符号,则数值代替是数字形式的符号,则数值代替 原

39、来的符号计算表达式的值,所得结果仍是字符串形式,如果原来的符号计算表达式的值,所得结果仍是字符串形式,如果 new 是矩阵,则将是矩阵,则将 S 中的所有中的所有 old 替换为替换为 new,并将,并将 S 中的常中的常 数项扩充为与数项扩充为与 new 维数相同的常数矩阵。维数相同的常数矩阵。 2021-6-2347 f=a*2+b*sin(x) f = 2*a + b*sin(x) subs(f,3) %默认替换默认替换x ans = 2*a + b*sin(3) subs(f,b,3) ans = 2*a + 3*sin(x) f=a*2+b*cos(z) f = 2*a + b*co

40、s(z) subs(f,3) %默认替换最靠近默认替换最靠近x的符号变量的符号变量 ans = 2*a + b*cos(3) 2021-6-2348 f=2*x f = 2*x subs(f,3) ans = 6 subs(f,ones(3) ans = 2 2 2 2 2 2 2 2 2 2021-6-2349 7.3 符号函数图形绘制符号函数图形绘制 本节内容:本节内容: 1. 符号函数曲线的绘制符号函数曲线的绘制 2. 符号函数曲面网格图及表面图的绘制符号函数曲面网格图及表面图的绘制 3. 等值线的绘制等值线的绘制 2021-6-2350 7.3.1 符号函数曲线的绘制符号函数曲线的绘制

41、 v MATLAB 中,可以实现符号函数二维和中,可以实现符号函数二维和3 维曲线的绘制分别用维曲线的绘制分别用ezplot 函数和函数和 ezplot3 函数。函数。 1: ezplot 函数功能:函数功能: 绘制显函数的图形绘制显函数的图形 绘制隐函数的图形绘制隐函数的图形 绘制参数方程的图形绘制参数方程的图形 2021-6-2351 对于显函数,其调用格式有:对于显函数,其调用格式有: ezplot(f),绘制函数,绘制函数 f 在区间在区间 内的图内的图 形。形。 ezplot(f,min,max),绘制函数,绘制函数 f 在指定区间在指定区间 min,max 内的图形。该函数打开标签

42、为内的图形。该函数打开标签为 Figure No. 1 的图形窗口,并显示图像。如果的图形窗口,并显示图像。如果 已经存在图形窗口,在该函数在标签数最大的已经存在图形窗口,在该函数在标签数最大的 窗口中显示图形。窗口中显示图形。 ezplot(f,xmin xmax,fign),在指定的窗口,在指定的窗口 fign 中绘制函数的图像。中绘制函数的图像。 2 ,2 2021-6-2352 fcos=cos(x) fcos = cos(x) ezplot(fcos) grid %为图形添加网格为图形添加网格 ylabel(fcos=cos(x0) %y轴注释轴注释 ylabel(fcos=cos(

43、x) %x轴注释轴注释 title(the figer of cos(x) % 标题标题 2021-6-2353 ezplot(f),绘制函数,绘制函数f(x,y)=0在区间在区间 的图形;的图形; ezplot(f,xmin,xmax,ymin,ymax),绘制函在,绘制函在 xmin x xmax、ymin y ymax 的图形;的图形; ezplot(f,min,max),绘制函数在,绘制函数在 min x max、min y syms x y ezplot(x2-y4) grid 2021-6-2355 对于参数方程,对于参数方程,ezplot 函数的调用格式有:函数的调用格式有: e

44、zplot(x,y),绘制参数方程,绘制参数方程 x = x(t)、y = y(t) 在的曲线;在的曲线; ezplot(x,y,tmin,tmax),绘制参数方程,绘制参数方程 x = x(t)、y = y(t) 在的曲线;在的曲线; 2021-6-2356 ezplot3 函数函数 vezplot3 函数用于绘制三维参数曲线。该函数的函数用于绘制三维参数曲线。该函数的 调用格式为:调用格式为: ezplot3(x,y,z),在默认区间内绘制参数方程,在默认区间内绘制参数方程 x = x(t), y = y(t),z = z(t) 的图像;的图像; ezplot3(x,y,z,tmin,tm

45、ax),在区间,在区间 tmin t figure x=sin(t);y=cos(t);z=t; ezplot3(x,y,z,0,6*pi) ezplot3(x,y,z,0,6*pi,animate) 2021-6-2358 7.3.2 符号函数曲面网格图及表面图的绘制符号函数曲面网格图及表面图的绘制 v MATLAB 中,函数中,函数 ezmesh、ezmeshc、ezsurf及及 ezsurfc 实现三维曲面的绘制。实现三维曲面的绘制。 v 1ezmesh、ezsurf 功能:功能: ezmesh用于绘制三维网格图用于绘制三维网格图 ezsurf 绘制三维表面图绘制三维表面图 调用格式:两

46、个函数的用法相同。调用格式:两个函数的用法相同。 ezmesh函数的调用格式为:函数的调用格式为: ezmesh(f),绘制函数,绘制函数 f(x,y) 的图像;的图像; ezmesh(f,domain),在指定区域绘制函数,在指定区域绘制函数 f(x,y) 的图像;的图像; ezmesh(x,y,z),在默认区域绘制三维参数方程的图像;,在默认区域绘制三维参数方程的图像; ezmesh(x,y,z,smin,smax,tmin,tmax) or ezmesh(x,y,z,min,max),在指定区域绘制三维参数方程的图像。,在指定区域绘制三维参数方程的图像。 2021-6-2359 例:在图

47、形窗口中绘制函数例:在图形窗口中绘制函数 的网格图和表面图的网格图和表面图 syms x y; z=x*exp(-x2-y2); subplot(1,2,1), ezmesh(z,-3,3,10); colormap(0 0 1) %图形颜色矩阵图形颜色矩阵 subplot(1,2,2),ezsurf(z,-2.5,2.5,30); 22 ( , ) xy f x yxe 2021-6-2360 v 2ezmeshc、ezsurfc v 这两个函数用于在在绘制三维曲面的同时绘制等值线。下这两个函数用于在在绘制三维曲面的同时绘制等值线。下 面以面以 ezmeshc 函数为例介绍这两个函数的用法。

48、函数为例介绍这两个函数的用法。 ezmeshc(f),绘制二元函数在默认区域,的图形。,绘制二元函数在默认区域,的图形。 ezmeshc(f,domain),绘制函数在指定区域的图形,绘图区域由,绘制函数在指定区域的图形,绘图区域由 domain 指定,其中指定,其中 domain 为为 41 数组或者数组或者 21 数组,如数组,如 xmin, xmax, ymin, ymax 表示表示 min x max,,min y max,min, max 表示表示 min x max,,min y f=y/(1+x2+y2); ezcontour(f) ezcontourf(f) 2021-6-23

49、65 7.4 符号微积分符号微积分 微积分在工程实际中应用非常广泛,是大微积分在工程实际中应用非常广泛,是大 学数学的一个重要内容。本节介绍如下内容:学数学的一个重要内容。本节介绍如下内容: 1.符号表达式求极限符号表达式求极限 2.符号微分符号微分 3.符号积分符号积分 4.级数求和级数求和 5.Taylor 级数级数 2021-6-2366 7.4.1 符号表达式求极限符号表达式求极限 v极限是微积分的基础,微分和积分都是极限是微积分的基础,微分和积分都是“无穷逼无穷逼 近近”时的结果。在时的结果。在 MATLAB 中函数中函数 limit 用于求用于求 表达式的极限。该函数的调用格式为:

50、表达式的极限。该函数的调用格式为: limit(F,x,a),当,当 x 趋近于趋近于 a 时表达式时表达式 F 的极限;的极限; limit(F,a),当,当 F 中的自变量趋近于中的自变量趋近于 a 时时 F 的极限,自的极限,自 变量由变量由 findsym 函数确定;函数确定; limit(F),当,当 F 中的自变量趋近于中的自变量趋近于 0 时时 F 的极限,自变的极限,自变 量由量由 findsym 函数确定;函数确定; limit(F,x,a,right),当,当 x 从右侧趋近于从右侧趋近于 a 时时 F 的极限;的极限; limit(F,x,a,left),当,当 x 从左

51、侧趋近于从左侧趋近于 a 时时 F 的极限;的极限; 2021-6-2367 syms x h limit(sin(x)/x) ans = 1 limit(sin(x+h)-sin(x)/h,h,0) ans = cos(x) f=sym(f(x); g=subs(f,x,x+h)-f g = f(h + x) - f(x) g=g/h g = (f(h + x) - f(x)/h limit(g,h,0) ans = D(f)(x) f=sin(x) f = sin(x) g=subs(f,x,x+h)-f g = sin(h + x) - sin(x) g=g/h g = (sin(h +

52、 x) - sin(x)/h limit(g,h,0) ans = cos(x) 2021-6-2368 7.4.2 符号微分符号微分 微分:微分:differential v MATLAB 中函数中函数 diff 实现函数求导和求微分,可以实现实现函数求导和求微分,可以实现 一元函数求导和多元函数求偏导。该函数在前面的一元函数求导和多元函数求偏导。该函数在前面的 MATLAB 的数学功能一章已有介绍,用于计算向量或矩的数学功能一章已有介绍,用于计算向量或矩 阵的差分。当输入参数为符号表达式时,该函数实现符号阵的差分。当输入参数为符号表达式时,该函数实现符号 微分,其调用格式为:微分,其调用格

53、式为: diff(S),实现表达式,实现表达式 S 的求导,自变量由函数的求导,自变量由函数 findsym 确定;确定; diff(S,v),实现表达式对指定变量,实现表达式对指定变量 v 的求导,该语句还可以写为的求导,该语句还可以写为 diff(S,sym(v); diff(S,n),求,求 S 的的 n 阶导;阶导; diff(S,v,n),求,求 S 对对 v 的的 n 阶导,该表达式还可以写为阶导,该表达式还可以写为 diff(S,n,v)。 2021-6-2369 syms x y f1=sin(x) f1 = sin(x) f1d=diff(f1) f1d = cos(x) f

54、2=sin(x)+cos(x) f2 = cos(x) + sin(x) f2d=diff(f2) f2d = cos(x) - sin(x) 2021-6-2370 f3=y*sin(x)+x*sin(y) f3 = x*sin(y) + y*sin(x) f3d=diff(f3) f3d = sin(y) + y*cos(x) f3yd=diff(f3,y) f3yd = sin(x) + x*cos(y) 2021-6-2371 v微积分中一个非常的重要概念为微积分中一个非常的重要概念为 Jacobian 矩阵,矩阵, 计算函数向量的微分。计算函数向量的微分。 v如果如果 v则的则的 J

55、acobian 矩阵为:矩阵为: 11121 21222 12 /./ /./ . /./ n n mmmn fxfxfx fxfxfx fxfxfx 1212 (,.,),( ,.,) min Fffffx xx 2021-6-2372 vMATLAB 中函数中函数 jacobian 用于计算用于计算 Jacobian 矩阵。该函数的调用格式为:矩阵。该函数的调用格式为: R = jacobian(f,v),如果,如果 f 是函数向量,是函数向量,v 为自为自 变量向量,则计算变量向量,则计算 f 的的 Jacobian 矩阵;如果矩阵;如果 f 是标量,则计算是标量,则计算 f 的梯度,如

56、果的梯度,如果 v 也是标量,也是标量, 则其结果与则其结果与 diff 函数相同。函数相同。 2021-6-2373 syms x y z T=x*y*z;y;x+z T = x*y*z y x + z v=x y z v = x, y, z R=jacobian(T,v) R = y*z, x*z, x*y 0, 1, 0 1, 0, 1 111 222 333 / / / fxfyfz fxfyfz fxfyfz 2021-6-2374 7.4.3 符号积分符号积分 v积分:积分:integrate v与微分对应的是积分,在与微分对应的是积分,在 MATLAB 中,函数中,函数 int

57、用于实现符号微分运算。该函数的调用格式为:用于实现符号微分运算。该函数的调用格式为: R = int(S),求表达式求表达式 S 的不定积分的不定积分,自变量由,自变量由 findsym 函数确定;函数确定; R = int(S,v),求表达式,求表达式 S 对自变量对自变量 v 的不定积分;的不定积分; R = int(S,a,b),求表达式,求表达式 S 在区间上的在区间上的定积分定积分,自变,自变 量由量由 findsym 函数确定;函数确定; R = int(S,v,a,b),求表达式,求表达式 S 在区间上的定积分,自在区间上的定积分,自 变量为变量为 v。 2021-6-2375

58、syms x y f=x2 f = x2 int(f) ans = x3/3 int(f,0,1) ans = 1/3 2021-6-2376 7.4.4 级数求和级数求和 vsymsum 函数用于级数的求和。该函数的调用格函数用于级数的求和。该函数的调用格 式为:式为: r = symsum(s),自变量为,自变量为 findsym 函数所确定的符函数所确定的符 号变量,设其为号变量,设其为 k,则该表达式计算,则该表达式计算 s 从从 0 到到 k-1 的的 和;和; r = symsum(s,v),计算表达式,计算表达式 s 从从 0 到到 v-1 的和;的和; r = symsum(s

59、,a,b),计算自变量从,计算自变量从 a 到到 b 之间之间 s 的的 和;和; r = symsum(s,v,a,b),计算,计算 v 从从 a 到到 b 之间的之间的 s 的和。的和。 2021-6-2377 y=x2 y = x2 symsum(y) ans = x3/3 - x2/2 + x/6 symsum(y,x,0,2) ans = 5 2021-6-2378 7.4.5 Taylor 级数级数 v函数函数 taylor 用于实现用于实现 Taylor 级数的计算。级数的计算。 该函数的调用格式为:该函数的调用格式为: r = taylor(f),计算表达式,计算表达式 f 的

60、的 Taylor 级数,级数, 自变量由自变量由 findsym 函数确定,计算函数确定,计算 f 的在的在 0 的的 6 阶阶 Taylor 级数;级数; r = taylor(f,n,v),指定自变量,指定自变量 v 和阶数和阶数 n; r = taylor(f,n,v,a),指定自变量,指定自变量 v、结束、结束 n, 计算计算 f 在在 a 的级数。的级数。 2021-6-2379 %函数g泰勒级数展开与g对比 %展开阶数越高,近似越好 syms x g=exp(x*sin(x); t=taylor(g,12,2); xd=1:0.05:3; yd=subs(g,x,xd); plot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论