第三章 MATLAB的符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.4.2 符号矩阵的运算 1. 符号矩阵的四则运算 在MATLAB中,进行符号运算的四则运算非常方便。 实际上,它与数值矩阵的四则运算完全相同,这大 大地方便了用户的操作。符号表达式的加、减、乘、 除运算可分别有函数symadd、symsub、symmul、 symdiv来实现,也可与矩阵的数值运算一样,用 “+”、“-”、“×”、“÷”符号进行运算,而 符号表达式的幂运算也可以由函数sympow来实现, 也可以由幂运算符“^”来实现。
f ax2 bx c
3.3.2 符号表达式的化简 当通过MATLAB的符号函数运算生成的符号表 达式难于看懂时,可以通过MATLAB的符号 数学工具箱中提供的函数,来对符号表达式 进行化简,把它化成易于看懂的形式。这方 面的函数主要有:pretty、collect、expand、 horner、factor、simplify、simple。
§3.3 符号表达式的操作及转换
3.3.1 符号表达式中自由变量的确定 自由变量的确定原则 A 小写字母i和j不能作为自由变量。 B 符号表达式中如果有多个字符变量,则按照以下顺 序选择自由变量:首先选择x作为自由变量;如果没 有x,则选择在字母顺序中最接近x的字符变量;如 果与x相同距离,则在x后面的优先。 C 大写字母比所有的小写字母都靠后。
3.7.1 符号代数方程的求解 solve(s):求解符号表达式s的代数方程,求解变量为默认变 量。 solve(s,v):求解符号表达式s的代数方程,求解变量为v。 solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式s1,s2,…,sn 组成的代数方程组,求解变量分别v1,v2,…,vn。 说明:s可以是含等号的符号表达式的方程,也可以是不含 等号的符号表达式,但所指的仍是令s=0的方程;当参数v省 略时,默认为方程中的自由变量;其输出结果为结构数组类 型。 例 求方程ax2+bx+c=0和sinx=0的解。 求三元非线性方程组 的解
3.3.3 符号表达式的替换 subs(s)%用给定值替换符号表达式s中的所有变量 subs(s,new)%用new替换符号表达式s中的自由变量 subs(s,old,new) %用new替换符号表达式s中的old变 量 例 用subs函数对符号表达式(x+y)2+3(x+y)+5进行替 换。
3.3.4 符号数值任意精度控制和运算 在MATLAB的符号运算工具箱(Symbolic Math Toolbox)中共包含3种算术运算: A 数值类型 matlab的浮点算术运算 B 有理数类型 精确符号运算 C vpa类型 任意精度算术运算
2. 将数值转换成符号表达式 将数值转换成符号表达式主要是通过函数sym 来实现。 3.符号表达式与多项式的转换 构成多项式的符号表达式f(x)可以与多项式系数 构成的行向量进行相互转换,MATLAB提供 了函数sym2poly和poly2sym实现相互转换。
3.3.6 求反函数和复合函数 1. 求反函数 finverse(f,v) 2. 求复合函数 compose(f,g,x,z)
任意精度的VPA型运算可以使用digits和vpa命 令来实现。 digits(n) %设定默认的精度 说明:n为所期望的有效位数。digits函数可 以改变默认的有效位数来改变精度,随后的 每个进行Maple函数的计算都以新精度为准。
3.3.5 符号与数值间的转换 1. 将符号表达式转换成数值表达式 将符号表达式转换成数值表达式主要是通过函 数numeric或eval来实现
2. 符号矩阵的其他一些基本运算 (1) 符号矩阵的转置运算(transpose) (2)符号矩阵的行列式运算 (determ或det ) (3)符号矩阵的求逆运算 (inv ) (4) 符号矩阵的特征值、特征向量运算 E = eig(X) 返回方阵X的特征值 [V,D] = eig(X) 返回方阵特征值和特征向量矩阵 [V,D] = eigensys(A) 和eig的第二种调用方式相同
§3.1符号对象与符号表达式
3.1.1 符号对象的生成 1.建立符号变量和符号常量 (1) 符号常量的建立 符号常量是不含变量的符号表达式。 sym函数的一般调用形式 sym(‘常量’) %创建符号常量 sym(常量,参数) %把常量按某种格式转换为符 号常量
(2) 符号变量的建立 符号变量就是含有变量的符号表达式。 syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 … 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串 分界符(‘),变量间用空格而不要用逗号分隔。
3.2.1 提取分子分母 numden函数的调用形式如下: [n,d]=numden(a) 提取符号表达式a的分子与分 母,并分别将其存放在n与d中 n=numden(a) 提取符号表达式a的分子与分母, 但只把分子存放在n中 2 ax 例 提取符号表达式 f b x 的分子和分母
3.2.2 符号表达式的基本代数运算 符号表达式的加、减、乘、除四则运算及幂运算等基 本的代数运算,与矩阵的数值运算几乎完全一样。 其中,符号表达式的加、减、乘、除运算可分别有 函数symadd、symsub、symmul、symdiv来实现, 也可与矩阵的数值运算一样,用“+”、“-”、 “×”、“÷”符号进行运算,而符号表达式的幂运 算也可以由函数sympow来实现,也可以由幂运算 符“^”来实现。 例 符号表达式f=2x2+3x+4与g=5x+6的代数运算。
2. 建立符号表达式 符号表达式就是代表数字、函数和变量的 MATLAB字符串或字符串数组,它不要求变 量要有预先定义的值。符号表达式包含符号 函数和符号方程,其中符号函数没有等号, 而符号方程必须带有等号。在MATLAB中建 立符号表达式主要有一下三种方式: (1) 用单引号建立符号表达式 (2) 用sym建立符号表达式 (3) 使用已经定义的符号变量来组成符号表达式
如果我们无法确定表达式中的自由变量,我 们可以使用MATLAB提供的findsym函数来确 定,该函数的一般调用形式为 findsym(EXPR,n) %确定自由符号变量 说明:EXPR可以是符号表达式或符号矩阵; n为按顺序得出符号变量的个数,当n省略时, wk.baidu.com不按顺序得出EXPR中所有的符号变量。 例 使用matlab指令得出 的符号变量
一般来说同一个数学函数可以表示成三种,如 多项式形式的表达方式:f(x)=x3+6x2+11x-6 因式形式的表达方式:f(x)=(x-1)(x-2)(x-3) 嵌套形式的表达方式:f(x)=x(x(x-6)+11)-6
1.pretty函数化简
2. collect函数化简
当有多个符号变量,可以指定按某个符号变量 来合并同类项。
2 2 2
3.5.2 符号微分 diff(s):没有指定变量和导数阶数,则系统按findsym函数指示 的默认变量对符号表达式s求一阶导数。 diff(s,'v'):以v为自变量,对符号表达式s求一阶导数。 diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶 导数,n为正整数。 diff(s,‘v’,n):以v为自变量,对符号表达式s求n阶导数。 例 已知f(x)=ax2+bx+c,求f(x)的微分。 diff还可以用于对数组中的元素进行逐项求差值。
3.7.2 符号常微分方程 dsolve(‘eq’,’con’,’v’) dsolve(‘eq1,eq2…’,’con1,con2…’,’v1,v2…’) 说明:’eq’为微分方程;’con’是微分初始条件, 可省略;’v’为指定自由变量,省略时则默认为x 或t为自由变量;输出结果为结构数组类型。
3.6.2 拉普拉斯变换 1.拉普拉斯正变换 F=laplace(f,t,s) 说明:返回结果F为s的函数,当参数s省略,返回结 果F默认为‘s’的函数;f为t的函数,当参数t省略, 默认自由变量为‘t’。 2. Laplace逆变换 f=ilaplace(F,s,t)
§3.7 符号方程的求解
§3.4 符号矩阵
3.4.1 符号矩阵的生成 1 使用sym 符号矩阵可通过函数sym来生成。符号矩阵 的元素是任何不带等号的符号表达式,各符 号表达式的长度可以不同;符号矩阵中,以 空格或逗号分隔的元素指定的是不同列的元 素,而以分号分隔的元素指定的是不同行的 元素。
2. 用字符串直接创建矩阵 模仿matlab数值矩阵的创建方法 需保证同一列中各元素字符串有相同的长度
§3.5 符号微积分
3.5.1 符号极限 Limit函数
3.5.2 符号级数 求级数和 symsum(s,x,a,b) 说明:x为自变量,x省略则默认为对自由变量 求和;s为符号表达式;[a,b]为参数x的取值 范围。 1 1 1 1 和1+x+x2+…+xk+… 例 求级数 2 3 k 的和
§3.2 符号表达式的运算
符号运算与数值运算的区别主要有以下几点: A 传统的数值型运算因为要受到计算机所保留的有效位数的 限制,它的内部表示法总是采用计算机硬件提供的8位浮点 表示法,因此每一次运算都会有一定的截断误差,重复的多 次数值运算就可能会造成很大的累积误差。符号运算不需要 进行数值运算,不会出现截断误差,因此符号运算是非常准 确的。 B符号运算可以得出完全的封闭解或任意精度的数值解。 C符号运算的时间较长,而数值型运算速度快。
3.5.3 符号积分 int(f) %对findsym函数返回的独立变量求不定 积分,f为符号表达式 int(f,’t’) %求符号变量t的不定积分 int(f,’t’,a,b) %求符号变量t的积分 int(f,’t’,’m’,’n’) %求符号变量t的积分 说明:t为符号变量,当t省略则为默认自由变量;a和 b为数值,[a,b]为积分区间;m和n为符号对象, [m,n]为积分区间 例 求积分 cos(x) 和 cos(x)
§3.6 积分变换
3.6.1 傅立叶变换 1. 使用fourier函数 fourier的一般调用形式为 F=fourier(f,t ,w) 说明:返回结果F是符号变量w的函数,当参数w省略,默认返回结果为w的 函数;f为t的函数,当参数t省略,默认自由变量为x。 2. 使用ifourier ifourier主要用于求傅立叶逆变换,它的一般调用形式为 f=ifourier (F,w,t) 说明:ifourier函数的用法与fourier函数相同。
3. expand函数 给出相应的符号表达式形式。 4. horner函数 给出符号表达式的嵌套形式。 5. factor函数 给出符号表达式的因式形式。 6. simplify函数
例 利用三角函数来简化符号表达式cos2x-sin2x。 7. simple函数 寻求包含最少数目字符的表达式简化形式。 利用simple简化符号表达式cos2x-sin2x。