符号数学快速入门

  • 创建符号数、变量和表达式
    • 创建符号数
    • 创建符号变量
    • 创建符号表达式
    • 重用符号对象的名称
  • 创建符号函数
  • 创建符号数组
    • 使用现有符号变量
    • 创建矩阵时生成元素
    • 创建符号数字矩阵
  • 执行符号计算
    • 对符号表达式求微分
      • 带有一个变量的表达式
      • 偏导数
      • 二阶偏导数和混合导数
    • 对符号表达式求积分
      • 一元表达式的不定积分
      • 多变量表达式的不定积分
      • 定积分
      • 如果MATLAB找不到一个积分的近似形式
    • 解方程
      • 用一个符号变量解代数方程组
      • 用多个符号变量求解代数方程组
      • 解代数方程组
    • 化简符号表达式
    • 符号表达式中的替换
      • 用数字代替符号变量
      • 多元表达式中的替换
      • 用一个符号变量替换另一个符号变量
      • 将矩阵代入多项式
      • 替换符号矩阵的元素
    • 符号函数作图
      • 显式函数图
      • 隐函数图
      • 三维绘图
      • 创建曲面图
  • 对符号变量使用假设
    • 默认假设
    • 设置假设
    • 检查现有假设
    • 删除符号对象及其假设

创建符号数、变量和表达式

此页显示如何创建符号数字、变量和表达式。

创建符号数

您可以使用 sym 创建符号数字。与浮点数不同,符号数字是精确表示。
使用 sym 创建一个符号数,并将其与同一个浮点数进行比较。

sym(1/3)
ans =

1 3 \frac{1}{3} 31​

1/3
ans = 0.3333

符号数字以完全有理形式表示,而浮点数字是十进制近似值。符号结果不缩进,而标准MATLAB®结果缩进。
符号数的计算是精确的。通过符号和数字的方法来证明这种精确性。符号结果是精确的,而数值结果是近似值。

sin(sym(pi))
ans = 0
sin(pi)
ans = 1.2246e-16

创建符号变量

可以使用syms或sym创建符号变量。这些功能的典型用途包括:

  • sym ——创建带编号的符号变量或在MATLAB函数中创建符号变量。
  • syms ——为交互式符号工作流创建新的符号变量,即在MATLAB命令行或MATLAB live脚本中创建符号变量。新的符号变量没有任何假设。

syms命令是sym语法的简写,但是这两个函数处理假设的方式不同。分别使用syms和sym创建符号变量x和y。

syms x
y = sym('y')
y = y

第一个命令在MATLAB工作空间中创建一个符号变量x,将值x赋给变量x。第二个命令用值y创建符号变量y。
使用syms,您可以在一个命令中创建多个变量。创建变量a、b和c。

clear
A = sym('a', [1 20])
A =

( a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 18 a 19 a 20 ) \left(\begin{array}{cccccccccccccccccccc} a_1 & a_2 & a_3 & a_4 & a_5 & a_6 & a_7 & a_8 & a_9 & a_{10} & a_{11} & a_{12} & a_{13} & a_{14} & a_{15} & a_{16} & a_{17} & a_{18} & a_{19} & a_{20} \end{array}\right) (a1​​a2​​a3​​a4​​a5​​a6​​a7​​a8​​a9​​a10​​a11​​a12​​a13​​a14​​a15​​a16​​a17​​a18​​a19​​a20​​)

whos
  Name      Size            Bytes  Class    AttributesA         1x20                8  sym

A是一个由20个符号变量组成的1×20数组。通过组合sym和syms,可以在MATLAB工作空间中创建许多新的符号变量,并使用相应的变量名。
清除工作区。创建新的符号变量a1,…,a10,并分别为它们指定MATLAB变量名a1,…,a10。在MATLAB工作空间中显示变量。

clear
syms(sym('a', [1 10]))
whos
  Name      Size            Bytes  Class    Attributesa1        1x1                 8  sym                a10       1x1                 8  sym                a2        1x1                 8  sym                a3        1x1                 8  sym                a4        1x1                 8  sym                a5        1x1                 8  sym                a6        1x1                 8  sym                a7        1x1                 8  sym                a8        1x1                 8  sym                a9        1x1                 8  sym

MATLAB工作区包含10个符号变量的MATLAB变量。
syms命令是sym语法的一个方便的速记,它的典型用法是为交互式符号工作流创建新的符号变量。使用sym语法创建以下内容:

  • MATLAB函数中的符号变量
  • 多个编号符号变量
  • 其值与MATLAB工作区中的同名变量不同的符号变量
  • 符号数,如 sym(5)
  • 从先前使用的同名符号变量继承假设的符号变量。

创建符号表达式

假设要使用符号变量来表示黄金分割率 φ = 1 + 5 2 \varphi=\frac{1+\sqrt{5}}{2} φ=21+5 ​​,以下指令

clear
phi = (1 + sqrt(sym(5)))/2;

达到了这个目的。现在你可以在 phi 上执行各种数学运算。例如:

f = phi^2 - phi - 1
f =

( 5 2 + 1 2 ) 2 − 5 2 − 3 2 {{\left(\frac{\sqrt{5}}{2}+\frac{1}{2}\right)}}^2 -\frac{\sqrt{5}}{2}-\frac{3}{2} (25 ​​+21​)2−25 ​​−23​
现在假设您想研究二次函数 f = ax² + bx + c 。首先,创建符号变量a、b、c和x:

syms a b c x

然后,将表达式赋给 f :

f = a*x^2 + b*x + c
f =

a x 2 + b x + c a\,x^2 +b\,x+c ax2+bx+c

  • 提示
    要创建符号数字,请使用 sym 命令。不要使用 syms 函数创建常量符号表达式。例如,要创建值为 5 的表达式,请输入 f = sym(5) 。命令 f = 5 没有将 f 定义为符号表达式。

重用符号对象的名称

如果将变量设置为符号表达式,然后对变量应用syms命令,MATLAB软件将从变量中删除先前定义的表达式。例如,

clear
syms a b
f = a + b
f = a + b

如果接着键入

syms f
f
f = f

然后,MATLAB从表达式 f 中删除值 a+b 。可以使用 syms 命令清除先前在MATLAB会话中分配给它们的定义变量。 syms 清除了变量的假设:复数、实数、整数和正数。这些假设与符号对象分开存储。但是,使用 sym 重新创建变量并不能清除它的假设。

创建符号函数

符号函数表示数学函数。使用符号函数进行微分、积分、求解常微分方程(ODE)和其他数学运算。使用 syms 创建符号函数。
使用 syms 创建带有变量 x 和 y 的符号函数f。创建f会自动创建 x 和 y 。

clear
syms f(x,y)

给 f 指定一个数学表达式:

f(x,y) = x^2*y
f(x,y) =

x 2 y x^2 \,y x2y
找到 f(3,2) 处的函数值:

f(3,2)
ans = 18

符号函数接受数组输入。计算 x 和 y 的多个值的 f :

xVal = 1:5;
yVal = 3:7;
f(xVal, yVal)
ans =

( 3 16 45 96 175 ) \left(\begin{array}{ccccc}3 & 16 & 45 & 96 & 175\end{array}\right) (3​16​45​96​175​)
您可以区分符号函数,集成或简化它们,用值替换它们的参数,以及执行其他数学运算。例如,求 f(x,y) 对 x 的导数,结果 dfx 也是一个符号函数。

dfx = diff(f,x)
dfx(x, y) =

2 x y 2\,x\,y 2xy
计算 x = y + 1 时的 df(x,y):

dfx(y+1,y)
ans =

2 y ( y + 1 ) 2\,y\,{\left(y+1\right)} 2y(y+1)
如果要创建一个常量函数,例如 f(x,y) = 1 ,则必须首先创建 f(x,y) 。如果不创建 f(x,y) ,那么赋值 f(x,y) = 1 抛出一个错误。

创建符号数组

使用现有符号变量

循环矩阵具有这样的性质:每一行都是通过循环置换前一行来获得的。例如,使用以下命令创建元素为 a 、 b 和 c 的符号循环矩阵:

clear
syms a b c
A = [a b c; c a b; b c a]
A =

( a b c c a b b c a ) \left(\begin{array}{ccc} a & b & c\\ c & a & b\\ b & c & a \end{array}\right) ⎝⎛​acb​bac​cba​⎠⎞​
由于矩阵 A 是循环的,所以每行每列的元素之和是相同的。求第一行所有元素的和:

sum(A(1,:))
ans = a + b + c

要检查第一行元素的总和是否等于第二列元素的总和,请使用 isAlways 函数:

isAlways(sum(A(1,:)) == sum(A(2,:)))
ans = logical1

总和是相等的。从这个例子中,您可以看到使用符号对象与使用常规MATLAB®数字对象非常相似。

创建矩阵时生成元素

sym 函数还允许您定义符号矩阵或向量,而无需事先定义其元素。在这种情况下, sym 函数在创建矩阵的同时生成符号矩阵的元素。该函数使用相同的形式显示所有生成的元素:基(必须是有效的变量名)、行索引和列索引。使用 sym 的第一个参数指定生成元素名称的基。可以使用任何有效的变量名作为基。要检查名称是否是有效的变量名,请使用 isvarname 函数。默认情况下, sym 通过下划线分隔行索引和列索引。例如,使用元素A1_1,…,A2_4创建 2 乘 4 矩阵 A :

clear
A = sym('A', [2 4])
A =

( A 1 , 1 A 1 , 2 A 1 , 3 A 1 , 4 A 2 , 1 A 2 , 2 A 2 , 3 A 2 , 4 ) \left(\begin{array}{cccc} A_{1,1} & A_{1,2} & A_{1,3} & A_{1,4} \\ A_{2,1} & A_{2,2} & A_{2,3} & A_{2,4} \end{array}\right) (A1,1​A2,1​​A1,2​A2,2​​A1,3​A2,3​​A1,4​A2,4​​)
要控制生成的矩阵元素名称的格式,请在第一个参数中使用 %d :

A = sym('A%d%d', [2 4])
A =

( A 11 A 12 A 13 A 14 A 21 A 22 A 23 A 24 ) \left(\begin{array}{cccc} A_{11} & A_{12} & A_{13} & A_{14} \\ A_{21} & A_{22} & A_{23} & A_{24} \end{array}\right) (A11​A21​​A12​A22​​A13​A23​​A14​A24​​)

创建符号数字矩阵

sym 的一个特别有效的用法是将矩阵从数字形式转换为符号形式。如下命令生成3×3希尔伯特矩阵。

 clear
A = hilb(3)
A = 3x31.0000    0.5000    0.33330.5000    0.3333    0.25000.3333    0.2500    0.2000

通过将 sym 应用于 A ,可以获得3×3希尔伯特矩阵的精确符号形式:

A = sym(A)
A =

( 1 1 2 1 3 1 2 1 3 1 4 1 3 1 4 1 5 ) \left(\begin{array}{ccc} 1 & \frac{1}{2} & \frac{1}{3}\\ \frac{1}{2} & \frac{1}{3} & \frac{1}{4}\\ \frac{1}{3} & \frac{1}{4} & \frac{1}{5} \end{array}\right) ⎝⎛​121​31​​21​31​41​​31​41​51​​⎠⎞​

执行符号计算

对符号表达式求微分

使用Symbolic Math Toolbox™ 软件,你可以求解

  • 单变量表达式的导数
  • 偏导数
  • 二阶及高阶导数
  • 混合导数

带有一个变量的表达式

要求解符号表达式的微分,请使用 diff 命令。以下示例说明如何获取符号表达式的一阶导数:

clear
syms x
f = sin(x)^2;
diff(f)
ans = 2cos(x)sin(x)

偏导数

对于多变量表达式,可以指定微分变量。如果未指定任何变量,MATLAB®会根据其与字母 x 的接近程度选择默认变量:

syms x y
f = sin(x)^2 + cos(y)^2;
diff(f, y)
ans = -2cos(y)sin(y)

二阶偏导数和混合导数

要获取符号表达式 f 相对于变量 y 的二阶导数,请输入:

syms x y
f = sin(x)^2 + cos(y)^2;
diff(f, y, 2)
ans =

2 s i n ( y ) 2 − 2 c o s ( y ) 2 2\,{\mathrm{sin}\left(y\right)}^2 -2\,{\mathrm{cos}\left(y\right)}^2 2sin(y)2−2cos(y)2
用导数两次得到相同的结果: diff(diff(f, y)) 。要获取混合导数,请使用两个微分命令。例如:

syms x y
f = sin(x)^2 + cos(y)^2;
diff(diff(f, y), x)
ans = 0

对符号表达式求积分

你可以执行符号表达式的积分操作,包括:

  • 不定积分与定积分
  • 多变量表达式的积分

一元表达式的不定积分

假设您要积分一个符号表达式。第一步是创建符号表达式:

clear
syms x
f = sin(x)^2;

要求不定积分,请输入

int(f)
ans =

x 2 − s i n ( 2 x ) 4 \frac{x}{2}-\frac{\mathrm{sin}\left(2\,x\right)}{4} 2x​−4sin(2x)​

多变量表达式的不定积分

如果表达式依赖于多个符号变量,则可以指定一个积分变量。如果未指定任何变量,MATLAB将根据字母 x 的接近程度选择默认变量:

syms x y n
f = x^n + y^n;
int(f)
ans =

x y n + x x n n + 1 x\,y^n +\frac{x\,x^n }{n+1} xyn+n+1xxn​
也可以将表达式 f=xn+yn 与 y 积分

int(f, y)
ans =

x n y + y y n n + 1 x^n \,y+\frac{y\,y^n }{n+1} xny+n+1yyn​
如果积分变量是 n ,输入

int(f, n)
ans =

x n l o g ( x ) + y n l o g ( y ) \frac{x^n }{\mathrm{log}\left(x\right)}+\frac{y^n }{\mathrm{log}\left(y\right)} log(x)xn​+log(y)yn​

定积分

要求定积分,请将积分极限作为int函数的最后两个参数:

int(f, 1, 10)

{ l o g ( 10 ) + 9 y if n = − 1 10 10 n − 1 n + 1 + 9 y n if n ≠ − 1 \left\lbrace \begin{array}{cl} \mathrm{log}\left(10\right)+\frac{9}{y} & \;\textrm{if}\;\;n=-1\\ \frac{10\,{10}^n -1}{n+1}+9\,y^n & \;\textrm{if}\;\;n\not= -1 \end{array}\right. {log(10)+y9​n+11010n−1​+9yn​ifn=−1ifn​=−1​

如果MATLAB找不到一个积分的近似形式

如果 int 函数无法计算积分,则返回未解析的积分:

syms x
int(sin(sinh(x)))
ans =

∫ s i n ( s i n h ( x ) ) d x \int \mathrm{sin}\left(\mathrm{sinh}\left(x\right)\right)\textrm{d}x ∫sin(sinh(x))dx

解方程

可以求解不同类型的符号方程,包括:

  • 单符号变量代数方程
  • 具有多个符号变量的代数方程
  • 代数方程组

用一个符号变量解代数方程组

使用双等号(==)定义一个等式。然后,您可以通过调用 solve 函数来求解方程。例如,求解此方程:

clear
syms x
solve(x^3 - 6*x^2 == 6 - 11*x)
ans =

( 1 2 3 ) \left(\begin{array}{c} 1\\ 2\\ 3 \end{array}\right) ⎝⎛​123​⎠⎞​
如果不指定方程的右侧,则 solve 假定它为零:

solve(x^3 - 6*x^2 + 11*x - 6)
ans =

( 1 2 3 ) \left(\begin{array}{c} 1\\ 2\\ 3 \end{array}\right) ⎝⎛​123​⎠⎞​

用多个符号变量求解代数方程组

如果一个方程包含多个符号变量,则可以指定一个变量来求解该方程。例如,求解关于 y 的多变量方程:

syms x y
solve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y)
ans =

( 1 2 x − 3 x ) \left(\begin{array}{c} 1\\ 2\,x\\ -3\,x \end{array}\right) ⎝⎛​12x−3x​⎠⎞​
如果不指定任何变量,则会得到按字母顺序最接近 x 变量的方程的解。

解代数方程组

你也可以解方程组。例如:

syms x y z
[x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2)
x =

( 0 2 ) \left(\begin{array}{c} 0\\ 2 \end{array}\right) (02​)

y =

( 0 2 ) \left(\begin{array}{c} 0\\ 2 \end{array}\right) (02​)

z =

( 0 8 ) \left(\begin{array}{c} 0\\ 8 \end{array}\right) (08​)

化简符号表达式

Symbolic Math Toolbox提供了一组简化函数,允许您操作符号表达式的输出。例如,下面的多项式的黄金比率 φ \varphi φ(phi)

clear
phi = (1 + sqrt(sym(5)))/2;
f = phi^2 - phi - 1
f =

( 5 2 + 1 2 ) 2 − 5 2 − 3 2 {{\left(\frac{\sqrt{5}}{2}+\frac{1}{2}\right)}}^2 -\frac{\sqrt{5}}{2}-\frac{3}{2} (25 ​​+21​)2−25 ​​−23​
您可以通过输入如下指令来化简这个答案并得到一个简短的结果:

simplify(f)
ans = 0

符号化简并不总是那么直截了当。没有普遍的简化函数,因为一个符号表达式的最简单表示的含义无法明确定义。不同的问题需要同一数学表达式的不同形式。知道什么形式对解决你的特定问题更有效,你可以选择适当的简化函数。
例如,为了表示多项式的阶数或对多项式进行符号微分或积分,请使用标准多项式形式,将所有括号相乘,并将所有相似项相加。要重写标准形式的多项式,请使用 expand 函数:

syms x
f = (x^2 - 1)*(x^4 + x^3 + x^2 + x + 1)*(x^4 - x^3 + x^2 - x + 1);
expand(f)
ans = x*10 - 1

factor 化简函数显示多项式根。如果一个多项式不能被有理数分解,那么 factor 函数的输出就是标准多项式形式。例如,要计算如下三阶多项式的因式,请输入:

g = x^3 + 6*x^2 + 11*x + 6;
factor(g)
ans =

( x + 3 x + 2 x + 1 ) \left(\begin{array}{ccc} x+3 & x+2 & x+1 \end{array}\right) (x+3​x+2​x+1​)
多项式的嵌套(Horner)表示对于数值计算是最有效的:

h = x^5 + x^4 + x^3 + x^2 + x;
horner(h)
ans =

x ( x ( x ( x ( x + 1 ) + 1 ) + 1 ) + 1 ) x\,{\left(x\,{\left(x\,{\left(x\,{\left(x+1\right)}+1\right)}+1\right)}+1\right)} x(x(x(x(x+1)+1)+1)+1)

符号表达式中的替换

用数字代替符号变量

可以使用 subs 函数将符号变量替换为数值。例如,在点 x=1/3 处计算符号表达式 f :

clear
syms x
f = 2*x^2 - 3*x +1;
subs(f, 1/3)
ans =

2 9 \frac{2}{9} 92​
subs 函数不会更改原始表达式 f :

f
f =

2 x 2 − 3 x + 1 2\,x^2 -3\,x+1 2x2−3x+1

多元表达式中的替换

当表达式包含多个变量时,可以指定要对其进行替换的变量。例如,用 x=3 替换符号表达式中的值

syms x y
f = x^2*y + 5*x*sqrt(y);

输入如下指令

subs(f, x, 3)
f =

9 y + 15 y 9\,y+15\,\sqrt{y} 9y+15y ​

用一个符号变量替换另一个符号变量

也可以用一个符号变量替换另一个符号变量。例如,要将变量 y 替换为变量 x ,请输入

subs(f, y, x)
ans =

x 3 + 5 x 3 2 x^3 +5\,x^{\frac{3}{2}} x3+5x23​

将矩阵代入多项式

也可以将矩阵代入具有数值系数的符号多项式。将矩阵代入多项式有两种方法:逐元素和按矩阵乘法规则。
逐元素替换。要在每个元素处代入矩阵,请使用 subs 命令:

syms x
f = x^3 - 15*x^2 - 24*x + 350;
A = [1 2 3; 4 5 6];
subs(f,A)
ans =

( 312 250 170 78 − 20 − 118 ) \left(\begin{array}{ccc} 312 & 250 & 170\\ 78 & -20 & -118 \end{array}\right) (31278​250−20​170−118​)
可以对矩形矩阵或正方形矩阵进行逐元素替换。
矩阵意义上的替代。如果你想用标准的矩阵乘法规则把一个矩阵替换成多项式,那么矩阵必须是平方的。例如,可以将幻方 A 替换为多项式 f :
1.创建多项式:

syms x
f = x^3 - 15*x^2 - 24*x + 350;

2.创建幻方矩阵:

A = magic(3)
A = 3x38     1     63     5     74     9     2

3.得到一个包含多项式 f 的数值系数的行向量:

b = sym2poly(f)
b = 1x41   -15   -24   350

4.将幻方矩阵 A 代入多项式 f 。矩阵 A 替换多项式中 x 的所有出现。常数乘以单位矩阵 eye(3) 代替f的常数项:

A^3 - 15*A^2 - 24*A + 350*eye(3)
ans = 3x3-10     0     00   -10     00     0   -10

polyvalm 命令提供了获得相同结果的简单方法:

polyvalm(b,A)
ans = 3x3-10     0     00   -10     00     0   -10

替换符号矩阵的元素

要替换符号矩阵中的一组元素,还可以使用 subs 命令。假设你想替换符号循环矩阵 A 的一些元素

syms a b c
A = [a b c; c a b; b c a]
A =

( a b c c a b b c a ) \left(\begin{array}{ccc} a & b & c\\ c & a & b\\ b & c & a \end{array}\right) ⎝⎛​acb​bac​cba​⎠⎞​
要将 A 的 (2, 1) 元素替换为 β \beta β(beta) ,将矩阵中的变量 b 替换为变量 α \alpha α(alpha) ,请输入

alpha = sym('alpha');
beta = sym('beta');
A(2,1) = beta;
A = subs(A,b,alpha)
A =

( a α c β a α α c a ) \left(\begin{array}{ccc} a & \alpha & c\\ \beta & a & \alpha \\ \alpha & c & a \end{array}\right) ⎝⎛​aβα​αac​cαa​⎠⎞​

符号函数作图

Symbolic Math Toolbox提供以下作图函数:

  • fplot 在笛卡尔坐标系中创建符号表达式、方程式或函数的二维绘图。
  • fplot3 创建三维参数化绘图。
  • ezpolar 以极坐标创建绘图。
  • fsurf 创建曲面图。
  • fcontour 创建等高线图。
  • fmesh 创建网格图。

显式函数图

使用 fplot 创建二维线图。打印表达式 x 3 − 6 x 2 + 11 x − 6 x^3 - 6\,x^2 + 11\,x - 6 x3−6x2+11x−6。

clear
syms x
f = x^3 - 6*x^2 + 11*x - 6;
fplot(f)

为 x 轴和 y 轴添加标签。使用 texlabel(f) 生成标题。

xlabel('x')
ylabel('y')
title(texlabel(f))
grid on

隐函数图

用 fimplicit 绘制方程和隐函数。
绘制方程在区间的图线。

syms x y
eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;
fimplicit(eqn, [-1 1])

三维绘图

用 fplot3 绘制三维参数线。
绘制参数式曲线 { x = t 2 sin ⁡ ( 10 t ) y = t 2 cos ⁡ ( 10 t ) z = t \left\{ \begin{array}{c} x=t^2\sin \left( 10t \right)\\ y=t^2\cos \left( 10t \right)\\ z=t\\ \end{array} \right. ⎩⎨⎧​x=t2sin(10t)y=t2cos(10t)z=t​:

syms t
fplot3(t^2*sin(10*t), t^2*cos(10*t), t)

创建曲面图

使用 fsurf 创建三维曲面。
绘制抛物面 z = x 2 + y 2 z=x^2+y^2 z=x2+y2。

syms x y
fsurf(x^2 + y^2)

对符号变量使用假设

默认假设

在Symbolic Math Toolbox™中,默认情况下,符号变量是复数变量。例如,如果声明 z 如下

syms z

那么MATLAB®将假设 z 是一个复数变量。您可以通过使用 assumptions 来检查符号变量是否假定为复数变量或实数变量。如果 z 是复数,assumptions(z) 返回一个空的符号对象:

assumptions(z)
ans = Empty sym: 1-by-0

设置假设

要对符号变量设置假设,请使用 assume 函数。例如,假设变量 x 为非负:

syms x
assume(x >= 0)

假设用新假设替换了之前对变量的所有假设。如果要将新假设添加到现有假设中,请使用 assumeAlso 。例如,添加假设x也是一个整数。现在变量x是一个非负整数:

assumeAlso(x,'integer')

assume 和 assumeAlso 还允许您声明变量或表达式属于以下集合之一:整数(integer)、正数(positive)、有理数(rational)和实数(real)。
或者,可以在使用sym或syms声明符号变量时设置假设。例如,创建实符号变量 a 和 b ,以及正符号变量 c :

a = sym('a', 'real');
b = sym('b', 'real');
c = sym('c', 'positive');

或更高效地:

syms a b real
syms c positive

检查现有假设

若要查看对符号变量设置的所有假设,请使用带有变量名称的 assumptions 函数作为输入参数。例如,此命令返回当前用于变量 x 的假设:

assumptions(x)
ans =

( x ∈ Z 0 ≤ x ) \left(\begin{array}{cc} x\in \mathbb{Z} & 0\le x \end{array}\right) (x∈Z​0≤x​)

删除符号对象及其假设

符号对象及其假设分别存储。当你设定一个符号实数 x 如下:

syms x
assume(x, 'real')

你实际上创建了一个符号对象x,并假设这个对象是实数。对象存储在MATLAB工作空间中,假设存储在符号引擎(symbolic engine)中。使用如下语句从MATLAB工作区中删除符号对象时

clear x

x 是实的假设仍然存在于符号引擎中。如果稍后使用 sym 声明一个新的符号变量 x ,它将继承 x 是实数的假设,而不是默认的假设。如果以后用符号变量 x 来求解方程并简化表达式,可能会得到不完整的结果。
注意:如果使用 syms 声明变量,则清除现有假设。如果使用 sym 声明变量,则不会清除现有假设。
例如,假设 x 是实数,则多项式 x2+1 没有根:

syms x real
clear x
x = sym('x');
solve(x^2 + 1 == 0, x)
ans = Empty sym: 1-by-0

这个多项式的复根消失了,因为符号变量x仍然假设x是实存储在符号引擎中。要清除假设,请输入

syms x

此时

solve(x^2 + 1 == 0, x)
ans =

( − i i ) \left(\begin{array}{c} -\mathrm{i}\\ \mathrm{i} \end{array}\right) (−ii​)
清除假设后,符号对象将保留在MATLAB工作空间中。如果要同时删除符号对象及其假设,请使用两个命令:

syms a b c z
clear x a b c z
whos
  Name      Size            Bytes  Class    Attributesans       2x1                 8  sym

Matlab符号数学Symbolic Math Toolbox™帮助文档(全)相关推荐

  1. Matlab中提供了符号计算工具箱(Symbolic Math Toolbox),可以进行符号运算

    Matlab中提供了符号计算工具箱(Symbolic Math Toolbox),可以进行符号运算.以下是一些常见的符号运算示例: 定义符号变量 要定义一个符号变量,可以使用 syms 函数.例如,要 ...

  2. MATLAB Symbolic Math Toolbox

    Symbolic Math Toolbox 是MATLAB进行符号运算的工具箱,其符号运算引擎是MuPAD,具有比较强大的符号计算功能.但与专业的符号运算软件Mathematics比较,还是有欠缺,具 ...

  3. matlab绘制sign函数,MATLAB的Symbolic Math Toolbox详解

    MATLAB 符号数学工具箱 入门 创建符号数字,变量和表达式 创建符号数字 创建符号变量 创建符号表达式 重复使用符号对象名 创建符号函数 创建符号矩阵 使用存在的符号变量 创建矩阵的同时生成元素 ...

  4. matlab simulink 数学符号,MATLAB符号数学

    符号数学定义对符号(不是数字!)进行数学运算.例如, a + a为2a.符号数学函数位于MATLAB的Symbolic Math Toolbox中.工具箱包含相关功能, 并且是MATLAB的附加组件. ...

  5. JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载

    JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载 JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet ...

  6. JAVA帮助文档全系列

    JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境.它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运 ...

  7. Python爬虫实战 下载原力创付费文档---全屏阅览式

    下载原力创付费文档-全屏阅览式 一.项目需求: 从目标网址下载付费文档,并保存为word形式 网址点这里 二.思路 1.利用selenium实现异步加载,获取图片url 2.爬取图片 3.将图片写进w ...

  8. Matlab符号数学(Symbolic Math with MATLAB)MATLAB解方程

    创建符号变量 用符号而不是数值表示数字. 存储数字符号 % 你可以把一个数存储为数值格式,就像我们经常做的那样 x = 3; % 你也可以把这个数存储为符号格式,使用sym()函数 xsym = sy ...

  9. 计算机中人民币符号在哪儿,人民币符号电脑怎么打(如何在文档中输入人民币符号)...

    2021-07-12   访客:次 这篇文章跟大家分享如何在Word文档中输入人民币和美元货币符号.下图左一为单横线人民币符号,左二为双横线人民币符号,右一为美元货币符号. 一.单横线人民币符号 在中 ...

最新文章

  1. Response.getWriter() 和Response.getOutputStream冲突
  2. android 牛人必修 ant 编译android工程
  3. VMware中装Win2012并配置Hyper-v
  4. HTML5-响应式的实现方式-弹性布局浅谈
  5. 在Kmplayer中设置多字幕
  6. 页面金额显示两位小数点问题
  7. Activiti最全入门教程
  8. sql常用crud命令
  9. python学习——把计算GC含量的代码封装成函数
  10. Redis(十三):Redis实现乐观锁
  11. 博客园的祥和需要大家共同努力
  12. 什么是分布式事务?2PC、XA、3PC、TCC
  13. delphi Hi 和 High
  14. HIT CSAPP 大作业
  15. 数据库 | PostgreSQL从入门到精通
  16. CAJ转换有免费的工具吗?
  17. mysql 离线安装
  18. 软件安全期末考试试题21SZ回忆版
  19. 治理企业“数据悬河”,阿里云DataWorks全链路数据治理新品发布
  20. not executable: 64-bit ELF file 已解决

热门文章

  1. idea报错:org.codehaus.plexus.component.repository.exception.ComponentLookupException
  2. boostrap插件
  3. 诸葛java_java - 诸葛_子房的个人空间 - OSCHINA - 中文开源技术交流社区
  4. 代理对推广网站的四个作用
  5. 开源项目-AMS资产管理系统
  6. Shiro授权--注解式开发
  7. 女程序员职业发展的特别之处
  8. 小鸟伏特加怎么用计算机,小鸟伏特加是什么意思,它是怎么火起来的(网络用语)...
  9. 经典算法应用之七----10亿数据中取最大的100个数据
  10. 中信银行信用卡中心风险管理(非技术岗)群面