版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三讲 MATLAB的符号计算 所谓符号计算是指在运算时,无须事先对变量赋值, 而将所得到结果以标准的符号形式来表示。 MathWorks公司以Maple的内核作为符号计算引 擎(Engine),依赖Maple已有的函数库,开发了 实现符号计算的两个工具箱:基本符号工具箱和扩 展符号工具箱。 一、字符串 一个字符串由多个字符组成,用单引号一个字符串由多个字符组成,用单引号( )来界来界 定。字符串是按定。字符串是按行向量行向量进行存储的。进行存储的。 1. 字符串占用的字节字符串占用的字节 每一个字符会占用两个字节。每一个字符会占用两个字节。 str2=I like MATLAB str2=I
2、 like MATLAB % %重复单引号来输入含有单引号的字符串重复单引号来输入含有单引号的字符串 2. 字符串函数字符串函数 length():用来计算字符串的长度。用来计算字符串的长度。 double():用来查看字符串的用来查看字符串的ASCII码储存内容。码储存内容。 char():用来将用来将ASCII码转换成字符串形式。码转换成字符串形式。 class()或或ischar():用来判断某一个变量是否为字符串。用来判断某一个变量是否为字符串。 class函数返回函数返回char则表示为字符串则表示为字符串,而而ischar返回值若为返回值若为1则则 表示为字符串。表示为字符串。 s
3、trcmp(x,y):比较字符串比较字符串x和和y的内容是否相同。返回值若的内容是否相同。返回值若 为为1则相同则相同,为为0则不相同。则不相同。 findstr (x,x1):寻找在某个长字符串寻找在某个长字符串x中的子字符串中的子字符串x1,返返 回其起始位置。回其起始位置。 deblank(x):删除字符串尾部的空格。删除字符串尾部的空格。 3. 3. 使用一个变量来储存多个字符串使用一个变量来储存多个字符串 (1) (1) 多个字符串组成一个新的行向量多个字符串组成一个新的行向量 将多个字符串变量直接用将多个字符串变量直接用“, ,”连接。连接。 (2) (2) 使用二维字符数组使用二
4、维字符数组 每个字符串放在一行构成二维字符数组。每个字符串放在一行构成二维字符数组。 (3)(3)使用使用str2matstr2mat、strvcatstrvcat和和charchar函数构成字符串矩阵函数构成字符串矩阵 总是按最长的设置,不足的末尾用空格补齐。总是按最长的设置,不足的末尾用空格补齐。 例如:例如: str6=str2mat(str1,str2,str3) str6=str2mat(str1,str2,str3) 4. 4. 执行字符串执行字符串 使用使用eval命令直接命令直接“执行执行”某一字符串。某一字符串。 5. 5. 显示字符串显示字符串 直接使用直接使用dispdi
5、sp命令显示字符串。命令显示字符串。 disp( disp(请输入请输入2 2* *2 2的矩阵的矩阵a)a) 二、符号表达式的建立 (一)(一) 定义符号常量定义符号常量 (二)(二) 定义符号变量和符号表达式定义符号变量和符号表达式 (三)(三) 符号矩阵符号矩阵 二、符号表达式的建立二、符号表达式的建立 (一)(一) 定义符号常量定义符号常量 符号常量是不含变量的符号表达式,用符号常量是不含变量的符号表达式,用sym命命 令来创建符号常量。令来创建符号常量。 v格式:格式: sym(常量常量) %创建符号常量创建符号常量 【例例1 1】: a=sym(sin(2) a = sin(2)
6、(绝对准确的符号数值表示)(绝对准确的符号数值表示) v 格式:格式: sym(常量常量,参数参数) %把常量按某种格式转换为符号常量把常量按某种格式转换为符号常量 参数设置参数设置 参数作用作用 d返回最接近的十进制数值返回最接近的十进制数值(默认位数为默认位数为32位位) f 返回该符号值最接近的浮点表示返回该符号值最接近的浮点表示 r 返回该符号值最接近的有理数型,可表示为返回该符号值最接近的有理数型,可表示为p/q、 p*q、10q、pi/q、2q和和sqrt(p)形式之一形式之一 e 返回最接近的带有机器浮点误差的有理值返回最接近的带有机器浮点误差的有理值 二、符号表达式的建立二、符
7、号表达式的建立 【例例2 2】: a=sym(sin(2) a = 8190223105242182*2(-53) a=sym(sin(2),d) a = .90929742682568170941692642372800 二、符号表达式的建立二、符号表达式的建立 (二)(二) 定义符号变量和符号表达式定义符号变量和符号表达式 参与符号运算的对象可以是参与符号运算的对象可以是符号变量、符号表符号变量、符号表 达式或符号矩阵。达式或符号矩阵。符号变量要先定义,后引用。符号变量要先定义,后引用。 可以用可以用sym函数、函数、syms函数将运算量定义为符号函数将运算量定义为符号 型数据。引用符号运
8、算函数时,用户可以指定函型数据。引用符号运算函数时,用户可以指定函 数执行过程中的变量参数;若用户没有指定变量数执行过程中的变量参数;若用户没有指定变量 参数,则使用参数,则使用findsym函数默认的变量作为函数函数默认的变量作为函数 的变量参数。的变量参数。 二、符号表达式的建立二、符号表达式的建立 1、sym函数函数 v 格式:格式: sym(变量变量, 参数参数) %把变量定义为符号对象把变量定义为符号对象 说明:参数用来设置限定符号变量的数学特性,可以选择说明:参数用来设置限定符号变量的数学特性,可以选择 为为 positive、 real和和unreal, positive 表示为
9、表示为“正、正、 实实”符号变量,符号变量, real表示为表示为“实实”符号变量,符号变量, unreal 表表 示为示为“非实非实”符号变量。如果不限定则参数可省略。符号变量。如果不限定则参数可省略。 v 格式:格式: sym(表达式表达式) %创建符号表达式创建符号表达式 (二)(二) 定义符号变量和符号表达式定义符号变量和符号表达式 二、符号表达式的建立二、符号表达式的建立 【例例3 3】作符号计算:作符号计算: a,b,x,ya,b,x,y均为符号运算量。在符号运算前,均为符号运算量。在符号运算前, 应先将应先将a,b,x,ya,b,x,y定义为符号运算量。定义为符号运算量。 1 5
10、 byax byax (二) 定义符号变量和符号表达式 二、符号表达式的建立二、符号表达式的建立 a=sym(a); % %定义定义a a为符号运算量,输出变量为符号运算量,输出变量 名为名为a a b=sym(b); x=sym(x); y=sym(y); x,y=solve(a*x-b*y-1,a*x+b*y-5,x,y) %以以a,b为符号常数,为符号常数,x,y为符号变量为符号变量 即可得到方程组的解:即可得到方程组的解: x =3/a y =2/b (二) 定义符号变量和符号表达式 1 5 byax byax 二、符号表达式的建立二、符号表达式的建立 【例例4 4】已知一复数表达式已
11、知一复数表达式 z=x+iz=x+i* *y, y, 试求其试求其 共轭复数共轭复数, ,并求该表达式与其共轭复数乘积的多并求该表达式与其共轭复数乘积的多 项式。项式。 为了使乘积表达式为了使乘积表达式x2+y2x2+y2非负,这里,非负,这里,把把 变量变量x x和和y y定义为实数定义为实数。 x=sym(x,real); y=sym(y,real); (二) 定义符号变量和符号表达式 二、符号表达式的建立二、符号表达式的建立 z=x+i*y; %定义复数表达式定义复数表达式 conj(z) %求共轭复数求共轭复数 ans = x-i*y expand(z*conj(z) %求表达式与其共
12、轭复数求表达式与其共轭复数 乘积的多项式乘积的多项式 ans = x2+y2 注:注: x = sym(x, unreal)可去掉可去掉x的属性的属性, 将将x创建为纯格式的符号变量创建为纯格式的符号变量,输出结果一样。输出结果一样。 (二) 定义符号变量和符号表达式 二、符号表达式的建立二、符号表达式的建立 2、syms函数函数 syms函数的功能与函数的功能与sym函数类似。函数类似。syms函数可函数可 以在一个语句中同时定义多个符号变量,其一般以在一个语句中同时定义多个符号变量,其一般 格式为:格式为: syms arg1 arg2 argN 用于将用于将arg1, arg2,argN
13、等符号创建为符号型等符号创建为符号型 数据。数据。 (二) 定义符号变量和符号表达式 二、符号表达式的建立二、符号表达式的建立 【例例5 5】使用使用syms命令创建符号变量和符号表达式。命令创建符号变量和符号表达式。 f1=sym(a*x2+b*x+c) f1 = a*x2+b*x+c syms a b c x %创建多个符号变量创建多个符号变量 f2=a*x2+b*x+c %创建符号表达式创建符号表达式 f2 = a*x2+b*x+c syms(a,b,c,x) f3=a*x2+b*x+c; %创建符号表达式创建符号表达式 (二) 定义符号变量和符号表达式 二、符号表达式的建立二、符号表达
14、式的建立 (三)符号矩阵 用用sym和和syms命令也可以创建符号矩阵。命令也可以创建符号矩阵。 【例例6】比较符号矩阵与字符串矩阵的不同。比较符号矩阵与字符串矩阵的不同。 A=sym(a,b;c,d) %创建符号矩阵创建符号矩阵 A = a, b c, d %大小:大小:2*2 sym object B=a,b;c,d %创建字符串矩阵创建字符串矩阵 B = a,b;c,d %大小:大小:1*9 char array C=a,b;c,d ? Undefined function or variable a. 二、符号表达式的建立二、符号表达式的建立 (三)符号矩阵 C=sym(B) %转换为
15、符号矩阵转换为符号矩阵 C = a, b c, d whos Name Size Bytes Class A 2x2 312 sym object B 1x9 18 char array C 2x2 312 sym object Grand total is 25 elements using 642 bytes 二、符号表达式的建立二、符号表达式的建立 三、符号表达式的代数运算 (一)符号表达式的代数运算(一)符号表达式的代数运算 (二)(二)符号数值任意精度控制和运算符号数值任意精度控制和运算 (三)(三)符号对象与数值对象的转换符号对象与数值对象的转换 符号运算与数值运算的主要区别:符号
16、运算与数值运算的主要区别: u 传统的数值型运算因为要受到计算机所保留的有效位传统的数值型运算因为要受到计算机所保留的有效位 数的限制,它的内部表示法总是采用计算机硬件提供的数的限制,它的内部表示法总是采用计算机硬件提供的8 位浮点表示法,因此每一次运算都会有一定的截断误差,位浮点表示法,因此每一次运算都会有一定的截断误差, 重复的多次数值运算就可能会造成很大的累积误差。重复的多次数值运算就可能会造成很大的累积误差。符符 号运算不需要进行数值运算,不会出现截断误差,因此号运算不需要进行数值运算,不会出现截断误差,因此 符号运算是非常准确的。符号运算是非常准确的。 u 符号运算可以得出完全的封闭
17、解或任意精度的数值解。符号运算可以得出完全的封闭解或任意精度的数值解。 u 符号运算的时间较长,而数值型运算速度快。符号运算的时间较长,而数值型运算速度快。 三、符号表达式的代数运算三、符号表达式的代数运算 (一)符号表达式的代数运算(一)符号表达式的代数运算 1. 1. 符号运算中的运算符符号运算中的运算符 (1) (1) 基本运算符基本运算符 u 运算符运算符“”,“”,“* *”,“”,“/”/”,“” 分别实现符号矩阵的加、减、乘、左除、右除、求幂运分别实现符号矩阵的加、减、乘、左除、右除、求幂运 算。算。 u 运算符运算符“. .* *”,“./”./”,“.”.”,“.”.”分别实
18、现符分别实现符 号数组的乘、除、求幂,即数组间元素与元素的运算。号数组的乘、除、求幂,即数组间元素与元素的运算。 u 运算符运算符“”,“.”.”分别实现符号矩阵的共轭转分别实现符号矩阵的共轭转 置、非共轭转置。置、非共轭转置。 三、符号表达式的代数运算三、符号表达式的代数运算 (2) 关系运算符关系运算符 u在符号对象的比较中,在符号对象的比较中,没有没有“大于大于”、“大于等大于等 于于”、“小于小于”、“小于等于小于等于”的概念,而的概念,而只有是只有是 否否“等于等于”的概念。的概念。 u运算符运算符“= =”、“=”分别对运算符两边的符号分别对运算符两边的符号 对象进行对象进行“相等
19、相等”、“不等不等”的比较。当为的比较。当为“真真” 时,比较结果用时,比较结果用1表示;当为表示;当为“假假”时,比较结果则时,比较结果则 用用0表示。表示。 (一)符号表达式的代数运算(一)符号表达式的代数运算 三、符号表达式的代数运算三、符号表达式的代数运算 2. 函数运算函数运算 (1) 三角函数和双曲函数三角函数和双曲函数 三角反函数除了三角反函数除了atan2函数仅能用于数值计算外,其函数仅能用于数值计算外,其 余的函数在符号运算中与数值计算的使用方法相同。余的函数在符号运算中与数值计算的使用方法相同。 (2) 指数和对数函数指数和对数函数 指数函数指数函数sqrt、exp、exp
20、m的使用方法与数值计算的使用方法与数值计算 的完全相同;对数函数在符号计算中的完全相同;对数函数在符号计算中只有自然对数只有自然对数 log(表示表示ln),而,而没有没有数值计算中的数值计算中的log2和和log10。 (一)符号表达式的代数运算(一)符号表达式的代数运算 三、符号表达式的代数运算三、符号表达式的代数运算 (3) 复数函数复数函数 复数的共轭复数的共轭conj、求实部、求实部real、求虚部、求虚部imag和求模和求模 abs函数与数值计算中的使用方法相同。但注意,在函数与数值计算中的使用方法相同。但注意,在 符号计算中,符号计算中,MATLAB没有提供求相角的命令。没有提供
21、求相角的命令。 (4) 矩阵代数命令矩阵代数命令 MATLAB提供的常用矩阵代数命令有提供的常用矩阵代数命令有diag,triu, tril,inv,det,rank, poly,expm,eig等,它们的等,它们的 用法几乎与数值计算中的情况完全一样。用法几乎与数值计算中的情况完全一样。 (一)符号表达式的代数运算(一)符号表达式的代数运算 三、符号表达式的代数运算三、符号表达式的代数运算 【例例7】求矩阵的行列式值、非共轭转置和特征值。求矩阵的行列式值、非共轭转置和特征值。 syms a11 a12 a21 a22 A=a11 a12;a21 a22 %创建符号矩阵创建符号矩阵 A = a
22、11, a12 a21, a22 det(A) %计算行列式计算行列式 ans = a11*a22-a12*a21 (一)符号表达式的代数运算(一)符号表达式的代数运算 三、符号表达式的代数运算三、符号表达式的代数运算 A. %计算非共轭转置计算非共轭转置 ans = a11, a21 a12, a22 eig(A) %计算特征值计算特征值 ans = 1/2*a11+1/2*a22+1/2*(a112-2*a11 *a22 +a222+4*a12*a21)(1/2) 1/2*a11+1/2*a22-1/2*(a112-2*a11*a22 +a222+4*a12*a21)(1/2) (一)符号
23、表达式的代数运算(一)符号表达式的代数运算 三、符号表达式的代数运算三、符号表达式的代数运算 1. Symbolic Math Toolbox中的算术运算方式中的算术运算方式 数值型数值型:MATLAB的浮点运算。的浮点运算。 有理数型:有理数型:Maple的精确符号运算。的精确符号运算。 VPA型:型:Maple的任意精度运算。的任意精度运算。 (二)(二)符号数值任意精度控制和运算符号数值任意精度控制和运算 三、符号表达式的代数运算三、符号表达式的代数运算 2. 任意精度控制任意精度控制 任意精度的任意精度的VPA型运算可以使用型运算可以使用digits和和vpa命令来命令来 实现。实现。
24、 u格式:格式:digits(n) %设定默认的精度设定默认的精度 说明:说明:n为所期望的有效位数。为所期望的有效位数。digits函数可以改变默认的有函数可以改变默认的有 效位数来改变精度,随后的每个进行效位数来改变精度,随后的每个进行Maple函数的计算都以新精函数的计算都以新精 度为准。当有效位数增加时,计算时间和占用的内存也增加。度为准。当有效位数增加时,计算时间和占用的内存也增加。 命令命令“digits”用来显示默认的有效位数,默认为用来显示默认的有效位数,默认为32位。位。 (二)符号数值任意精度控制和运算(二)符号数值任意精度控制和运算 三、符号表达式的代数运算三、符号表达式
25、的代数运算 2. 任意精度控制任意精度控制 u格式:格式: S=vpa(s,n) %将将s表示为表示为n位有效位数的符号对象位有效位数的符号对象 说明:说明:s可以是数值对象或符号对象,但计算的可以是数值对象或符号对象,但计算的 结果结果S一定是符号对象;当参数一定是符号对象;当参数n省略时则以给定的省略时则以给定的 digits指定精度。指定精度。vpa命令只对指定的符号对象命令只对指定的符号对象s按按 新精度进行计算,并以同样的精度显示计算结果,新精度进行计算,并以同样的精度显示计算结果, 但并不改变全局的但并不改变全局的digits参数。参数。 三、符号表达式的代数运算三、符号表达式的代
26、数运算 (二)符号数值任意精度控制和运算(二)符号数值任意精度控制和运算 【例例8】对表达式进行任意精度控制的比较。对表达式进行任意精度控制的比较。 a=sym(2*sqrt(5)+pi) a = 2*sqrt(5)+pi digits %显示默认的有效位数显示默认的有效位数 digits = 32 vpa(a) %用默认的位数计算并显示用默认的位数计算并显示 ans = 7.6137286085893726312809907207421 三、符号表达式的代数运算三、符号表达式的代数运算 (二)符号数值任意精度控制和运算(二)符号数值任意精度控制和运算 vpa(a,20) %按指定的精度计算并
27、显示按指定的精度计算并显示 ans = 7.6137286085893726313 digits(15) %改变默认的有效位数改变默认的有效位数 vpa(a) %按按digits指定的精度计算并显示指定的精度计算并显示 ans = 7.61372860858937 三、符号表达式的代数运算三、符号表达式的代数运算 (二)符号数值任意精度控制和运算(二)符号数值任意精度控制和运算 【例例8续续】用三种运算方式表达式比较用三种运算方式表达式比较2/3的结果。的结果。 a1 =2/3 %数值型数值型 a1 = 0.6667 a2 = sym(2/3) %有理数型有理数型 a2 = 2/3 a3 =v
28、pa(2/3,32) %VPA型型 a3 = .66666666666666666666666666666667 三、符号表达式的代数运算三、符号表达式的代数运算 (二)符号数值任意精度控制和运算(二)符号数值任意精度控制和运算 程序分析程序分析 u 三种运算方式中数值型运算的速度最快。三种运算方式中数值型运算的速度最快。 u 有理数型符号运算的计算时间和占用内存是最大的,产生的有理数型符号运算的计算时间和占用内存是最大的,产生的 结果是非常准确的。结果是非常准确的。 u VPA型的任意精度符号运算比较灵活,可以设置任意有效型的任意精度符号运算比较灵活,可以设置任意有效 精度,当保留的有效位数
29、增加时,每次运算的时间和使用的内精度,当保留的有效位数增加时,每次运算的时间和使用的内 存也会增加。存也会增加。 数值型变量数值型变量a1结果显示的有效位数并不是存储的有效位数,结果显示的有效位数并不是存储的有效位数, 显示的有效位数由显示的有效位数由“format”命令控制。命令控制。 三、符号表达式的代数运算三、符号表达式的代数运算 (二)符号数值任意精度控制和运算(二)符号数值任意精度控制和运算 1. 将数值对象转换为符号对象将数值对象转换为符号对象 sym命令可以把数值型对象转换成有理数型符号命令可以把数值型对象转换成有理数型符号 对象,对象,vpa命令可以将数值型对象转换为任意精度命
30、令可以将数值型对象转换为任意精度 的的VPA型符号对象。型符号对象。 2. 将符号对象转换为数值对象将符号对象转换为数值对象 u格式:格式: N=double(S) %将符号变量将符号变量S转换为数值变量转换为数值变量N N=numeric(S) %将符号变量将符号变量S转换为数值变量转换为数值变量N (三)符号对象与数值对象的转换(三)符号对象与数值对象的转换 三、符号表达式的代数运算三、符号表达式的代数运算 【例例9】将符号变量与数值变量进行转换。将符号变量与数值变量进行转换。 a1=sym(2*sqrt(5)+pi) a1 = 2*sqrt(5)+pi b1=double(a1) %转换
31、为数值变量转换为数值变量 b1 = 7.6137 a2=vpa(sym(2*sqrt(5)+pi),32) a2 = 7.6137286085893726312809907207421 三、符号表达式的代数运算三、符号表达式的代数运算 (三)符号对象与数值对象的转换(三)符号对象与数值对象的转换 【例例9】续续: b2=numeric(a2) %转换为数值变量转换为数值变量 b2 = 7.6137 b3=eval(a1) %由符号变量得出数值结果由符号变量得出数值结果 b3 = 7.6137 三、符号表达式的代数运算三、符号表达式的代数运算 (三)符号对象与数值对象的转换(三)符号对象与数值对
32、象的转换 四、符号表达式的 操作和转换 (一)符号表达式中自由变量的确定(一)符号表达式中自由变量的确定 (二)符号表达式的化简(二)符号表达式的化简 (三)符号表达式的替换(三)符号表达式的替换 (四)(四)求反函数和复合函数求反函数和复合函数 (五)(五)符号表达式的转换符号表达式的转换 1. 自由变量的确定原则自由变量的确定原则 MATLAB将基于以下原则选择一个自由变量:将基于以下原则选择一个自由变量: l 小写字母小写字母i和和j不能作为自由变量不能作为自由变量。 l 符号表达式中如果有多个字符变量,则按照以下顺序选择自符号表达式中如果有多个字符变量,则按照以下顺序选择自 由变量:由
33、变量:首先选择首先选择x作为自由变量作为自由变量;如果没有;如果没有x,则选择在字母,则选择在字母 顺序中最接近顺序中最接近x的字符变量;如果与的字符变量;如果与x相同距离,则在相同距离,则在x后面的优后面的优 先。先。 l 大写字母大写字母比所有的小写字母都比所有的小写字母都靠后靠后。 四、符号表达式的操作和转换四、符号表达式的操作和转换 (一)符号表达式中自由变量的确定(一)符号表达式中自由变量的确定 2. findsym函数函数 如果不确定符号表达式中的自由符号变量,可以用如果不确定符号表达式中的自由符号变量,可以用 findsym函数来自动确定。函数来自动确定。 l 格式:格式: fi
34、ndsym(EXPR,n) %确定自由符号变量确定自由符号变量 说明:说明:EXPR可以是符号表达式或符号矩阵;可以是符号表达式或符号矩阵;n为按顺为按顺 序得出符号变量的个数,当序得出符号变量的个数,当n省略时,则不按顺序得出省略时,则不按顺序得出 EXPR中所有的符号变量。中所有的符号变量。 (一)符号表达式中自由变量的确定(一)符号表达式中自由变量的确定 四、符号表达式的操作和转换四、符号表达式的操作和转换 【例例10】得出符号表达式中的符号变量。得出符号表达式中的符号变量。 f=sym(a*x2+b*x+c) f = a*x2+b*x+c findsym(f) %得出所有的符号变量得出
35、所有的符号变量 ans = a, b, c, x (一)符号表达式中自由变量的确定(一)符号表达式中自由变量的确定 四、符号表达式的操作和转换四、符号表达式的操作和转换 g=sym(sin(z)+cos(v) g = sin(z)+cos(v) findsym(g,1) %得出第一个符号变量得出第一个符号变量 ans = z 说明:符号变量说明:符号变量z和和v距离距离x相同,以在相同,以在x后面的后面的z 为自由符号变量为自由符号变量。 (一)符号表达式中自由变量的确定(一)符号表达式中自由变量的确定 四、符号表达式的操作和转换四、符号表达式的操作和转换 同一个多项式的符号表达式可以表示成三
36、同一个多项式的符号表达式可以表示成三 种形式种形式: 多项式形式:多项式形式: f(x)=x3-6x2+11x-6 因式形式:因式形式:f(x)=(x-1)(x-2)(x-3) 嵌套形式:嵌套形式:f(x)=x(x(x-6)+11)-6 (二)符号表达式的化简(二)符号表达式的化简(Simplificate) 四、符号表达式的操作和转换四、符号表达式的操作和转换 【例例11】三种形式的符号表达式的表示。三种形式的符号表达式的表示。 f=sym(x3-6*x2+11*x-6)%多项式形式多项式形式 f = x3-6*x2+11*x-6 g= sym(x-1)*(x-2)*(x-3) %因式形式因
37、式形式 g = (x-1)*(x-2)*(x-3) h= sym( x*(x*(x-6)+11)-6) %嵌套形式嵌套形式 h = x*(x*(x-6)+11)-6 (二)符号表达式的化简(二)符号表达式的化简(Simplificate) 四、符号表达式的操作和转换四、符号表达式的操作和转换 pretty:给出给出排版排版形式的输出结果形式的输出结果 collect:将表达式写成将表达式写成多项式多项式形式形式 horner:将多项式形式写成将多项式形式写成嵌套嵌套形式形式 factor:将表达式写成因式形式将表达式写成因式形式 3 2 x - 6 x + 11 x - 6 x3-6*x2+1
38、1*x-6 x*(x*(x-6)+11)-6 (x-1)*(x-2)*(x-3) (二)符号表达式的化简(二)符号表达式的化简(Simplificate) 四、符号表达式的操作和转换四、符号表达式的操作和转换 expand:将符号表达式展开成将符号表达式展开成多项式多项式形式形式 simplify:对表达式进行对表达式进行化简化简 例如:例如: k=sym(cos(x)2-sin(x)2) k = cos(x)2-sin(x)2 simplify(k) ans = 2*cos(x)2-1 simple:寻求表达式的多种简化形式,使之包含寻求表达式的多种简化形式,使之包含 最少数目最少数目的字符
39、的字符 (二)符号表达式的化简(二)符号表达式的化简(Simplificate) 四、符号表达式的操作和转换四、符号表达式的操作和转换 subssubs函数:对符号表达式中符号变量的替换。函数:对符号表达式中符号变量的替换。 格式:格式: l subs(s)%用给定值替换符号表达式用给定值替换符号表达式s中的所有变量中的所有变量 l subs(s,new)%用用new替换符号表达式替换符号表达式s中的自由变量中的自由变量 l subs(s,old,new) %用用new替换符号表达式替换符号表达式s中的中的old 变量变量 (三)符号表达式的替换(三)符号表达式的替换(Substitution
40、s) 四、符号表达式的操作和转换四、符号表达式的操作和转换 【例例12】用用subssubs函数对符号表达式函数对符号表达式 进行替换。进行替换。 f=sym(x+y)2+3*(x+y)+5) % %创建符号表达式创建符号表达式 f = (x+y)2+3*(x+y)+5 x=5; f1=subs(f) % %用工作空间的给定值替换用工作空间的给定值替换x x f1 = (5+y)2+20+3*y (x+y)2+3(x+y)+5 (三)符号表达式的替换(三)符号表达式的替换(Substitutions) 四、符号表达式的操作和转换四、符号表达式的操作和转换 f2=subs(f,x+y,s) %
41、%用用s s替换替换x+yx+y f2 = (s)2+3*(s)+5 f3=subs(f,x+y,5) % %用常数用常数5 5替换替换x+yx+y f3 = 45 f4=subs(f,x,z) % %用用z z替换替换x x f4 = (z)+y)2+3*(z)+y)+5 注:可以用来计算多项式的值,以及化简。注:可以用来计算多项式的值,以及化简。 (x+y)2+3(x+y)+5 (三)符号表达式的替换(三)符号表达式的替换(Substitutions) 四、符号表达式的操作和转换四、符号表达式的操作和转换 1. 1. 求反函数求反函数 l g=finverse(f,v) % %对指定自变量
42、对指定自变量v v的函数的函数f(v)f(v)求反函数求反函数 说明:当说明:当v省略,则对默认的自由符号变量求反函数。省略,则对默认的自由符号变量求反函数。 2. 2. 求复合函数求复合函数 运用函数运用函数composecompose可以求符号函数可以求符号函数f(x)f(x)和和g(y)g(y)的复合函的复合函 数。数。 l compose(f,g,z) % %求求f(x)f(x)和和g(y)g(y)的复合函数的复合函数f(g(z)f(g(z) (四)(四)求反函数和复合函数求反函数和复合函数 四、符号表达式的操作和转换四、符号表达式的操作和转换 【例例13】求求tex的反函数。的反函数
43、。 f=sym(t*ex) %原函数原函数 f = t*ex g=finverse(f) %对默认自由变量求反函数对默认自由变量求反函数 g = log(x/t)/log(e) g=finverse(f,t) %对对t求反函数求反函数 g = t/(ex) 注:如果先定义注:如果先定义t为符号变量,则参数为符号变量,则参数t的单引号可去掉。的单引号可去掉。 (四)(四)求反函数和复合函数求反函数和复合函数 四、符号表达式的操作和转换四、符号表达式的操作和转换 【例例14】计算计算tex与与ay2+by+c的复合函数。的复合函数。 f=sym(t*ex); % %创建符号表达式创建符号表达式 g
44、=sym(a*y2+b*y+c); % %创建符号表达式创建符号表达式 h1=compose(f,g) % %计算计算f(g(x) h1 = t*e(a*y2+b*y+c) h2=compose(g,f) % %计算计算g(f(x) h2 = a*t2*(ex)2+b*t*ex+c h3=compose(f,g,z) % %计算计算f(g(z) h3 = t*e(a*z2+b*z+c) ) (四)(四)求反函数和复合函数求反函数和复合函数 四、符号表达式的操作和转换四、符号表达式的操作和转换 1. 1. 符号表达式与多项式的转换符号表达式与多项式的转换 构成多项式的符号表达式构成多项式的符号表
45、达式f(x)f(x)可以与多项式系数构成的可以与多项式系数构成的 行向量进行相互转换,行向量进行相互转换,MATLABMATLAB提供了函数提供了函数sym2poly和和 poly2sym实现相互转换。实现相互转换。 2. 2. 提取分子和分母提取分子和分母 如果符号表达式是一个有理分式如果符号表达式是一个有理分式( (两个多项式之比两个多项式之比) ),可,可 以利用以利用numdennumden函数来提取分子或分母,还可以进行通分。函数来提取分子或分母,还可以进行通分。 l 格式:格式:n,d=numden(f) (五)(五)符号表达式的转换符号表达式的转换 四、符号表达式的操作和转换四、
46、符号表达式的操作和转换 【例例15】将符号表达式将符号表达式2x+3x2+1转换为行向量转换为行向量。 f=sym(2*x+3*x2+1) f = 2*x+3*x2+1 sym2poly(f) % %转换为按降幂排列的行向量转换为按降幂排列的行向量 ans = 3 2 1 (五)(五)符号表达式的转换符号表达式的转换 四、符号表达式的操作和转换四、符号表达式的操作和转换 f1=sym(a*x2+b*x+c) f1 = a*x2+b*x+c sym2poly(f1) ? Error using = sym/sym2poly Input has more than one symbolic var
47、iable. 注:只能对含有一个变量的符号表达式进行转换。注:只能对含有一个变量的符号表达式进行转换。 (五)(五)符号表达式的转换符号表达式的转换 四、符号表达式的操作和转换四、符号表达式的操作和转换 g=poly2sym(1 3 2) % %默认默认x x为符号变量的为符号变量的 符号表达式符号表达式 g = x2+3*x+2 g=poly2sym(1 3 2,y) %y%y为符号变量的为符号变量的 符号表达式符号表达式 g = y2+3*y+2 (五)(五)符号表达式的转换符号表达式的转换 四、符号表达式的操作和转换四、符号表达式的操作和转换 【例例16】用用numden函数来提取符号表
48、达式函数来提取符号表达式 和和 的分子、分母。的分子、分母。 f1=sym(1/(s2+3*s+2) f1 = 1/(s2+3*s+2) f2=sym(1/s2+3*s+2) f2 = 1/s2+3*s+2 23ss 1 2 23s s 1 2 (五)(五)符号表达式的转换符号表达式的转换 四、符号表达式的操作和转换四、符号表达式的操作和转换 n1,d1=numden(f1) n1 = 1 d1 = s2+3*s+2 n2,d2=numden(f2) n2 = 1+3*s3+2*s2 d2 = s2 23ss 1 2 23s s 1 2 (五)(五)符号表达式的转换符号表达式的转换 四、符号表
49、达式的操作和转换四、符号表达式的操作和转换 五、符号极限、微积分 和级数 (一)符号极限(一)符号极限 (二)符号微分(二)符号微分 (三)符号积分(三)符号积分 (四)(四)符号级数符号级数 limit(f)函数的用法函数的用法 五、符号极限、微积分和级数五、符号极限、微积分和级数 (一)(一)符号极限符号极限 求求x在在a点的点的右极限右极限 limit(f,x,a, right) 求求x在在a点的点的左极限左极限 limit(f,x,a,left) 求求x在在a点的极限点的极限,当左右极当左右极 限不相等时极限不存在限不相等时极限不存在 limit(f,x,a) 求求x在在0点的极限点的
50、极限 limit(f) 说明说明 函数格式函数格式 表达式表达式 )(limxf ax )(limxf ax )(lim 0 xf x )(limxf a x 【例例17】分别求分别求1/x在在0处从处从两边两边趋近、从趋近、从左边左边趋近和从趋近和从 右边右边趋近的三个极限值。趋近的三个极限值。 f=sym(1/x) f = 1/x limit(f) %对对x求趋近于求趋近于0的极限的极限 ans = NaN limit(f,x,0) %对对x求趋近于求趋近于0的极限的极限 ans = NaN 五、符号极限、微积分和级数五、符号极限、微积分和级数 (一)(一)符号极限符号极限 limit(f
51、,x,0,left) %左趋近于左趋近于0 ans = -inf limit(f,x,0,right) %右趋近于右趋近于0 ans = inf 注:当左右极限不相等,表达式的极限不存在,为注:当左右极限不相等,表达式的极限不存在,为NaN。 五、符号极限、微积分和级数五、符号极限、微积分和级数 (一)(一)符号极限符号极限 求导和微分都可以由函数求导和微分都可以由函数diff实现:实现: diff(f):求求f对自由变量的对自由变量的一阶一阶微分;微分; diff(f,n):求求f对自由变量的对自由变量的n阶阶微分;微分; diff(f,t):求求f对符号变量对符号变量t的的一阶一阶微分;微
52、分; diff(f,t,n)或或diff(f,n,t) :求求f对符号变量对符号变量t的的n阶阶微分。微分。 五、符号极限、微积分和级数五、符号极限、微积分和级数 (二二)符号微分符号微分 【例例18】分别求函数分别求函数 的一阶和二阶导数。的一阶和二阶导数。 syms x; f=sym(x-1)3/(x+1); B=diff(f) B = 3*(x-1)2/(x+1)-(x-1)3/(x+1)2 C=diff(f,2) C = 6*(x-1)/(x+1)-6*(x-1)2/(x+1)2+2*(x-1)3/(x+1)3 1 ) 1( )( f 3 x x x 五、符号极限、微积分和级数五、符号
53、极限、微积分和级数 (二二)符号微分符号微分 【例例19】已知已知 ,求,求 的的 微分。微分。 cbxaxxf 2 )( )(xf f=sym(a*x2+b*x+c) diff(f) diff(f,a) diff(f,x,2) diff(f,3) 五、符号极限、微积分和级数五、符号极限、微积分和级数 (二二)符号微分符号微分 f=sym(a*x2+b*x+c) f = a*x2+b*x+c diff(f) ans = 2*a*x+b diff(f,a) ans = x2 diff(f,x,2) ans = 2*a diff(f,3) ans = 0 运行结果运行结果: 注:微分函数注:微分函
54、数diff也可以用于也可以用于,其结果,其结果 是是 对矩阵的每一个元素进行微分运算。对矩阵的每一个元素进行微分运算。 【例例2020】对符号矩阵对符号矩阵 求微分。求微分。 syms t x g=2*x t2;t*sin(x) exp(x) %创建符号矩阵创建符号矩阵 g = 2*x, t2 t*sin(x), exp(x) x ext tx )sin( 2 2 五、符号极限、微积分和级数五、符号极限、微积分和级数 (二二)符号微分符号微分 diff(g) %对默认自由变量对默认自由变量x求求一阶一阶微分微分 ans = 2, 0 t*cos(x), exp(x) diff(g,t) %对符
55、号变量对符号变量t求求一阶一阶微分微分 ans = 0, 2*t sin(x), 0 diff(g,2) %对默认自由变量对默认自由变量x求求二阶二阶微分微分 ans = 0, 0 -t*sin(x), exp(x) x ext tx )sin( 2 2 五、符号极限、微积分和级数五、符号极限、微积分和级数 (二二)符号微分符号微分 积分有定积分和不定积分,运用函数积分有定积分和不定积分,运用函数intint可以求得可以求得 符号表达式的积分。符号表达式的积分。 格式:格式: uint(f, t) %求符号变量求符号变量t的不定积分的不定积分 uint(f, t,a,b) %求符号变量求符号变
56、量t的积分的积分 uint(f, t, m, n) %求符号变量求符号变量t的积分的积分 注:注:t为符号变量为符号变量,当,当t省略省略则为则为默认自由变量默认自由变量;a和和b为数为数 值值,a,b为积分区间;为积分区间;m和和n为符号对象为符号对象,m,n为积分区间。为积分区间。 (三)(三)符号积分符号积分 五、符号极限、微积分和级数五、符号极限、微积分和级数 【例例2121】求积分求积分 和和 。 cos(x) cos(x) f=sym(cos(x); int(f) %求不定积分求不定积分 ans = sin(x) int(f,0,pi/3) %求定积分求定积分 ans = 1/2*
57、3(1/2) int(f,a,b) %求定积分求定积分 ans = sin(b)-sin(a) int(int(f) %求多重积分求多重积分 ans = -cos(x) 五、符号极限、微积分和级数五、符号极限、微积分和级数 (三)(三)符号积分符号积分 【例例22】求符号矩阵求符号矩阵 的积分。的积分。 g=2*x t2;t*sin(x) exp(x) %创建符号矩阵创建符号矩阵 g = 2*x, t2 t*sin(x), exp(x) int(g,a,b) %对对x求定积分求定积分 ans = b2-a2, t2*(b-a) -t*cos(b)+t*cos(a), exp(b)-exp(a)
58、 x 2 etsin(x) t2x 五、符号极限、微积分和级数五、符号极限、微积分和级数 (三)(三)符号积分符号积分 1. symsum函数函数 格式:格式: symsum(s,x,a,b) %计算表达式计算表达式s的级数和的级数和 注:注:x为自变量为自变量,x省略则默认为对自由变量求省略则默认为对自由变量求 和;和;s为符号表达式为符号表达式;a,b为参数为参数x的取值范围的取值范围。 (四)(四)符号级数符号级数 五、符号极限、微积分和级数五、符号极限、微积分和级数 【例例23】求级数求级数 和和1+x+x2+xk+的和的和。 syms x k s1=symsum(1/k2,1,10)
59、 %计算级数的前计算级数的前10项和项和 s1 = 1968329/1270080 s2=symsum(1/k2,1,inf) %计算级数和计算级数和 s2 = 1/6*pi2 s3=symsum(xk,k,0,inf) %计算对计算对k为自变量的级数和为自变量的级数和 s3 = -1/(x-1) (四)(四)符号级数符号级数 222 k 1 3 1 2 1 1 五、符号极限、微积分和级数五、符号极限、微积分和级数 2. taylor函数函数 格式:格式: taylor (F,x,n) %求泰勒级数展开求泰勒级数展开 注注:x为为自自变变量量,F为为符号表达式符号表达式;对对F进进行泰行泰 勒
60、勒级级数展开至数展开至n项项,参数,参数n省略省略则则默默认认展开前展开前5项项。 (四)符号级数符号级数 五、符号极限、微积分和级数五、符号极限、微积分和级数 【例例24】求求ex的泰勒展开式。的泰勒展开式。 syms x s1=taylor(exp(x),8) %展开前展开前8项项 s1 = 1+x+1/2*x2+1/6*x3+1/24*x4+1/120*x5+1/7 20*x6+1/5040*x7 s2=taylor(exp(x) %默认展开前默认展开前5项项 s2 = 1+x+1/2*x2+1/6*x3+1/24*x4+1/120*x5 (四)符号级数符号级数 1k32 x k! 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024专业版反担保协议示例总汇版B版
- 2024年专项代理业务合作合同版B版
- 2024年国际间商品买卖所有权移交规定协议版B版
- 江南大学《高级英语(2)》2022-2023学年第一学期期末试卷
- 江南大学《电气工程学科前沿》2022-2023学年第一学期期末试卷
- 佳木斯大学《英语视听说2》2021-2022学年第一学期期末试卷
- 《妇产科考题解析》课件
- 2024专业彩钢瓦屋顶安装服务合同版B版
- 暨南大学《招聘与人才测评》2021-2022学年第一学期期末试卷
- 暨南大学《社会科学研究方法》2021-2022学年第一学期期末试卷
- 监理企业质量管理体系及运行程序
- 冬令膏方在妇科的运用优秀课件
- GB/T 42528-2023时空大数据技术规范
- 工程测绘技术说课公开课一等奖市优质课赛课获奖课件
- 合并多支血管病变地stemi介入治疗策略
- 救护队职责及各类人员岗位责任制
- 资产处置方案怎么写6
- 六年级数学 抓不变量解应用题
- 国家开放大学应用写作(汉语)形考任务1-6答案(全)
- 【幼儿园特色课程创建的实践研究4700字(论文)】
- 倾斜角与斜率
评论
0/150
提交评论