matlab-note-7

matlab-note-7

Charles Lv7

matlab-note-7

image-20230208173448515

符号计算

符号对象

符号对象的建立

sym函数用于建立单个符号对象,其常用调用格式为:$name=sym(A)$。将由A来建立符号对象。其中A可以是一个数值常量、数值矩阵或者数值表达式(不加单引号),此时符号对象为一个符号常量;A也可以是一个变量名(加单引号),这时符号对象为一个符号变量。

1
2
3
4
t = sym(2);
t + 1/2
sin(sym(pi / 3))
sin(pi / 3)
1
2
3
4
5
6
7
a = 5;
b = -8;
x = sym('a');
y = sym('b');
w = (a + b) * (a - b)
s = (x + y) * (x - y)
eval(s)

syms命令用于一次定义多个符号变量。

1
syms a b c d

符号对象的运算

四则运算:与之前相同

关系运算:lt()(<),le()(<=),gt()(>),ge()(>=),eq()(==),ne()(~=)

  • 在进行符号对象的运算前,可用assume函数对符号对象设置值域。

逻辑运算:and(a,b)、or(a,b)、not(a)和xor(a,b)

因式分解与展开运算:

  • MATLAB提供了符号表达式的因式分解与展开的函数,函数的调用格式为:
    ①factor(s):对符号表达式s分解因式。
    ②expand(s):对符号表达式s进行展开。
    ③collect(s):对符号表达式s合并同类项。
    ④collect(s,v):对符号表达式s按变量v合并同类项。

其他运算:

  • ①提取有理分式的分子分母:[n,d]=numden(s)。
    ②提取符号表达式的系数:c=coeffs(s,x)。
    ③符号表达式化简:simplify(s)。
    ④符号多项式与多项式系数向量之间的转换:
  • 符号多项式转换为多项式系数向量:p=sym2poly(s)。
    • 多项式系数向量转换为符号多项式:s=poly2sym§。

符号矩阵

符号矩阵也是一种符号表达式,所以符号表达式运算都可以在矩阵意义下进行。

符号微积分

符号函数的极限

求符号函数极限的命令为limit,其调用格式为:$limit(f,x,a)$即求函数f关于变量x在a点的极限。

  • limit函数的另一种功能是求单边极限,其调用格式为:
    $limit(f,x,a,‘right’)$
    $limit(f,x,a,‘left’)$
1
2
3
4
5
syms a m x n;
f = (x ^ (1 / m) - a ^ (1 / m)) / (x - a);
limit(f, x, a)
g = (1 + 1 / n) ^ n;
limit(g, n, inf)

符号函数的导数

MATLAB中的求导函数为:$diff(f,x,n)$ 即求函数f关于变量x的n阶导数。
参数x的用法同求极限函数limit,可以缺省,默认值与limit相同,n的默认值是1。

符号函数的积分

不定积分

在MATLAB中,求不定积分的函数是int(),其常用的调用格式为:$int(f,x)$即求函数f对变量x的不定积分。

定积分

在MATLAB中,定积分的计算也使用int()函数,但调用格式有区别:$int(f,x,a,b)$
其中,a、b分别表示定积分的下限和上限。

  • 当函数f关于变量x在闭区间[a,b]可积时,函数返回一个定积分结果。
  • 当a、b中有一个是inf时,函数返回一个广义积分。
  • 当a、b中有一个符号表达式时,函数返回一个符号函数。

级数

级数求和

求无穷级数的和需要符号表达式求和函数symsum(),其调用格式为:$symsum(s,v,n,m)$
其中,s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和变量v的初值和末值。

1
2
3
4
5
6
7
8
9
syms n;
s1 = symsum(n ^ 2, 1, 100)

s2 = symsum((-1) ^ (n - 1) / n, 1, inf)

s3 = symsum((-1) ^ (n - 1) / (2 * n - 1), n, 1, inf)

hypergeom([-1/2, 1], 1/2, -1)
eval(s3) * 4

泰勒级数

MATLAB提供了taylor()函数将函数展开为幂级数,其调用格式为:$taylor(f,v,a,Name,Value)$
该函数将函数f按变量v在a点展开为泰勒级数,v的默认值与diff函数相同,a的默认值是0。Name和Value为选项设置,经常成对使用,前者为选项名,后者为该选项的值。

Name有3个可取字符串:
①’ExpansionPoint’:指定展开点,对应值可以是标量或向量。未设置时,展开点为0。
②’Order’:指定截断参数,对应值为一个正整数。未设置时,截断参数为6,即展开式的最高阶为5。
③’OrderMode’:指定展开式采用绝对阶或相对阶,对应值为’Absolute’或’Relative’。未设置时取’Absolute’。

1
2
3
syms x;
f = (1 + x + x ^ 2) / (1 - x + x ^ 2);
taylor(f, x, 1, 'Order', 6)

符号方程求解

代数方程符号求解

在MATLAB中,求解用符号表达式表示的代数方程可由函数solve()实现,其调用格式为:
①solve(s):求解符号表达式s的代数方程,求解变量为默认变量。
②solve(s,v):求解符号表达式s的代数方程,求解变量为v。
③solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式s1,s2,…,sn组成的代数方程组,求解变量分别为v1,v2,…,vn。

常微分方程符号求解

在MATLAB中,用大写字母D表示导数。例如,Dy表示y’,D2y表示y’’,Dy(0)=5表示y’(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y’’’+y’’+y’-x+5=0。

  • 符号常微分方程求解可以通过函数dsolve()函数来实现,其调用格式为:$dsolve(e,c,v)$

    用于求解常微分方程e在初值条件c下的特解。参数v是方程中的自变量,省略时按默认原则处理,若没有给出初值条件c,则求方程的通解。

  • dsolve在求常微分方程组时的调用格式为:$dsolve(e1,e2,…,en,c1,c2,…,cn,v)$

    用于求解常微分方程组e1, e2, …, en在初值条件c1, c2, …, cn下的特解,若不给出初值条件,则求方程组的通解。v给出求解变量,如果没有指定自变量,则采用默认自变量t。

  • Title: matlab-note-7
  • Author: Charles
  • Created at : 2023-02-03 22:41:03
  • Updated at : 2023-08-17 09:48:22
  • Link: https://charles2530.github.io/2023/02/03/matlab-note-7/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments