MATLAB:【7】符号计算

7.1符号对象

符号对象的建立

  • 符号对象名 = sym(A) 用于建立单个符号对象,将由A来建立符号对象.其中,A可以是一个数值常量,数值矩阵或数值表达式(不加单引号),此时符号对象为一个符号常量;A也可以是一个变量名,这时符号对象为一个符号变量.
  • syms 符号变量名1 符号变量名2 ··· 符号变量名n ;其中变量之间使用空格隔开

符号对象的运算

  • 四则运算: 符号表达式的四则运算与数值运算一样,用+,-,*,/,^运算符实现,其运算结果依然是一个符号表达式
  • 关系运算: <    <=    >    >=    ==    ~= 对应6个函数 lt    le    gt    ge    eq    ne
  • 在进行符号对象的运算前,可用assume函数对符号对象设置值域

assume(condition)

assume(expr, set) 

第一张格式指定变量满足条件,第二种格式指定表达式expr属于集合set

  • 逻辑运算:三种逻辑运算符&(与)  |(或)   ~(非) 四个逻辑运算函数and(a,b)    or(a,b)    not(a)    xor(a,b)
  • 因式分解与展开运算

factor(s): 对符号表达式分解因式

expand(s) : 对符号表达式s进行展开

collect(s) : 对符号表达式s合并同类项

collect(s,v) : 对符号表达式s按变量v合并同类项

  •  其他运算

[n, d] = numden(s) 提取有理分式的分子分母

c = coeffs(s, x) 提取符号表达式的系数

simplify(s) 符号表达式化简

sym2poly 符号多项式转换为多项式系数向量

poly2sym 多项式系数向量转换为符号多项式

  •  符号运算中变量确定

如果没有明确指定自变量,MATLAB将按以原则确定主变量并对其进行相应运算:

  1. 寻找除i,j之外,在字母顺序上最接近x的小写字母
  2. 若表达式中有连个符号变量与x 的距离相等,则ASCII码大者优先

symvar函数可以用于查找一个符号表达式中的符号变量,函数的调用格式为 symvar(s,n) 返回符号表达式s中的n个变量

符号矩阵

  • 符号矩阵也是一种符号表达式,所以符号表达式运算都可以在矩阵意义下进行
  • 注意,这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素

7.2符号微积分

符号函数的极限

  • limit(f, x, a)  求函数f关于变量x在a点的极限
  • limit(f, x, a, 'right')    limit(f, x, a, 'left')    求单边极限 

符号函数的导数

  • diff(f, x, n) 求函数f关于变量x的n阶导数

符号函数的积分

  • int(f, x) 求函数f对变量x的不定积分
  • int(f, x, a, b) a,b分别表示定积分的下限和上限;当a,b中有一个为inf时,返回一个广义积分;a,b中有一个符号表达式时,返回一个符号函数

7.3级数

级数求和

  • symsum(s, v, n, m ) 其中,s表达一个级数的通项,是一个符号表达式,v是求和变量,v省略时使用系统的默认变量.n和m是求和变量v的初值和末值

泰勒级数

  • MATLAB提供了taylor函数将函数展开为幂级数
  • taylor(f, v, a, Name, Value) 将函数f按变量v在a点展开为泰勒级数,v的默认值与diff函数相同,a 的默认值是0.Name和Value为选项设置,经常成对使用,前者为选项名,后者为该选项的设置:
  1. 'ExpansionPoint' : 指定展开点,对应值可以实标量或向量.未设置时,展开点为0
  2. 'Order' : 指定截断参数,对应值为一个正整数.未设置时,阶段参数为6,即展开式的最高阶为5
  3. 'OrderMode' : 指定展开式采用绝对阶或相对阶,对应值为'Absolute'或'Relative',未设置时取前者 
  •  泰勒级数可以让复杂的函数近似为简单的形式,便于参与运算

7.4符号方程求解

代数方程求解

  • solve(s) 求解符号表达式s的代数方程,求解变量为默认变量
  • solve(s, v) 求解符号表达式s的代数方程,求解变量为v
  • solve(s1, s2, ..., sn , v1, v2, ..., vn) 求解符号表达式s1, s2, ..., sn 组成的代数方程组, 求解变量分别为v1, v2, ..., vn

常微分方程求解

  • 在MATLAB中,用大写字母D表示导数.D3y表示y''',Dy(0)=5表示y'(0)=5
  • dsolve(e, c, v) 用于求解常微分方程e在初始条件下c的特解,参数v是方程中的自变量,省略时按默认原则处理,若没有给处初始条件c,则求方程中的通解.
  • dsolve(e1, e2, ..., en, c1, ..., cn, v )  用于求解常微分方程组e1, ..., en 在初始条件c1, ..., cn下的特解,若不给出初始条件,则求解方程组的通解.v给出求解变量,如果没有指定自变量,则采用默认自变量

猜你喜欢

转载自blog.csdn.net/Alex497259/article/details/104605503