主要内容

syms

创建符号标量变量和函数以及矩阵变量和函数

说明

符号标量变量

syms var1 ... varN 创建 sym 类型的符号标量变量 var1varN。用空格分隔不同的变量。此语法会清除 var1 ... varN 的所有先前定义。

示例

syms var1 ... varN [n1 ... nM] 创建由符号标量变量 var1 ... varN 组成的数组,其中每个数组的大小为 n1×...×nM,并且包含自动生成的符号标量变量作为其元素。例如,syms a [1 3] 会在 MATLAB® 工作区中创建符号数组 a = [a1 a2 a3] 以及符号标量变量 a1a2a3。对于多维数组,这些元素具有前缀 a,后跟元素的索引并使用 _ 作为分隔符,例如 a1_3_2

示例

syms var1 ... varN n 创建由符号标量变量组成的 n×n 矩阵,这些变量用自动生成的元素填充。

syms ___ set 设置的假设为:创建的符号标量变量属于 set,并清除其他假设。此处,set 可以是 realpositiveintegerrational。您还可以使用空格组合多个假设。例如,syms x positive rational 会创建一个具有正有理数值的符号标量变量 x。除了上述语法中的任何输入参量组合之外,还可使用此选项。

示例

符号标量函数

syms f(var1,...,varN) 创建 symfun 类型的符号函数 f,以及 sym 类型的符号标量变量 var1,...,varN(表示 f 的输入参量)。此语法会清除 var1,...,varN 的所有先前定义,包括符号假设。计算的符号函数 f(var1,...,varN) 的类型为 sym

示例

syms f(var1,...,varN) [n1 ... nM] 使用自动生成的符号函数作为元素,创建一个 n1×...×nM 符号数组。此语法还可生成符号标量变量 var1,...,varN,表示 f 的输入参量。例如,syms f(x) [1 2] 会在 MATLAB 工作区中创建符号数组 f(x) = [f1(x) f2(x)]、符号函数 f1f2 以及符号标量变量 x。对于多维数组,这些元素具有前缀 f,后跟元素的索引并使用 _ 作为分隔符,例如 f1_3_2

syms f(var1,...,varN) n 创建由符号函数组成的 n×n 矩阵,这些符号函数用自动生成的元素填充。

示例

符号矩阵变量

syms var1 ... varN [nrow ncol] matrix 创建 symmatrix 类型的符号矩阵变量 var1 ... varN,其中每个符号矩阵变量的大小为 nrow×ncol(自 R2021a 起)

示例

syms var1 ... varN n matrix 创建 n×n 符号矩阵变量。(自 R2021a 起)

示例

符号矩阵函数

syms f(var1,...,varN) [nrow ncol] matrix 创建 symfunmatrix 类型的符号矩阵函数 fsym 类型的符号标量变量 var1,...,varN。计算的符号矩阵函数 f(var1,...,varN) 的类型为 symmatrix,大小为 nrow×ncol。此语法会清除 var1,...,varN 的所有先前定义,包括符号假设。(自 R2022a 起)

syms f(var1,...,varN) [nrow ncol] matrix keepargs 会在工作区中保留 var1,...,varN 的现有定义。如果工作区中不存在任何 var1,...,varN 变量,则此语法会将它们创建为 sym 类型的符号标量变量。计算的符号矩阵函数 f(var1,...,varN) 的大小为 nrow×ncol(自 R2022a 起)

示例

syms f(var1,...,varN) n matrix 创建方阵符号函数,其中计算的符号矩阵函数 f(var1,...,varN) 的大小为 n×n。此语法会清除 var1,...,varN 的所有先前定义,包括符号假设。(自 R2022a 起)

syms f(var1,...,varN) n matrix keepargs 会在工作区中保留 var1,...,varN 的现有定义。如果工作区中不存在任何 var1,...,varN 变量,则此语法会将它们创建为 sym 类型的符号标量变量。(自 R2022a 起)

符号对象数组

syms(symArray) 创建 symArray 中包含的符号标量变量和函数,其中 symArray 是由符号标量变量组成的向量或由符号标量变量和函数组成的元胞数组。此语法会清除 symArray 中指定的变量的所有先前定义,包括符号假设。仅当此类函数由另一个函数(例如,solvesymReadSSCVariables)返回时才使用此语法。

示例

符号对象的名称

syms 列出 MATLAB 工作区中所有符号标量变量、函数、矩阵变量、矩阵函数和数组的名称。

示例

S = syms 返回由所有符号标量变量、函数、矩阵变量、矩阵函数和数组的名称组成的元胞数组。

示例

示例

全部折叠

创建符号标量变量 xy

syms x y
x
x = x
y
y = y

使用自动生成的元素 a1,,a4 创建一个由符号标量变量组成的 1×4 向量 a。此命令还会在 MATLAB 工作区中创建符号标量变量 a1, …, a4

syms a [1 4]
a
a = (a1a2a3a4)
whos
  Name      Size            Bytes  Class    Attributes

  a         1x4                 8  sym                
  a1        1x1                 8  sym                
  a2        1x1                 8  sym                
  a3        1x1                 8  sym                
  a4        1x1                 8  sym                

您可以使用格式化字符向量更改生成的元素的命名格式。通过将每个变量名称放入单引号中来声明符号标量变量。syms 将格式字符向量中的 %d 替换为元素的索引,以生成元素名称。

syms 'p_a%d' 'p_b%d' [1 4]
p_a
p_a = (pa1pa2pa3pa4)
p_b
p_b = (pb1pb2pb3pb4)

使用自动生成的元素创建一个由符号标量变量组成的 3×4 矩阵。这些元素的形式为 Ai,j,会生成符号矩阵变量 A1,1,,A3,4

syms A [3 4]
A
A = 

(A1,1A1,2A1,3A1,4A2,1A2,2A2,3A2,4A3,1A3,2A3,3A3,4)

创建符号标量变量 xy,并假设它们是整数。

syms x y integer

创建另一个标量变量 z,并假设它具有正有理数值。

syms z positive rational

检查假设。

assumptions
ans = (xZyZzQ0<z)

或者,检查关于每个变量的假设。例如,检查对变量 x 设置的假设。

assumptions(x)
ans = xZ

清除关于 xyz 的假设。

assume([x y z],"clear")
assumptions
 
ans =
 
Empty sym: 1-by-0
 

创建一个 1×3 符号数组 a,并假设数组元素具有实数值。

syms a [1 3] real
assumptions
ans = (a1Ra2Ra3R)

创建具有一个和两个参量的符号函数。

syms s(t) f(x,y)

sf 都是抽象符号函数。这些函数没有分配给它们的符号表达式,因此这些函数的主体分别是 s(t)f(x,y)

f 指定一个公式。

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

计算 x = 1y = 2 时函数的值。

f(1,2)
ans = 5

使用由符号标量变量组成的矩阵来创建符号函数并指定其公式。

syms x
M = [x x^3; x^2 x^4];
f(x) = M
f(x) = 

(xx3x2x4)

计算 x = 2 时函数的值。

f(2)
ans = 

(28416)

计算 x = [1 2 3; 4 5 6] 时该函数的值。结果是一个由符号矩阵组成的元胞数组。

xVal = [1 2 3; 4 5 6];
y = f(xVal)
y=2×2 cell array
    {2×3 sym}    {2×3 sym}
    {2×3 sym}    {2×3 sym}

使用花括号访问元胞数组中元胞的内容。

y{1}
ans = 

(123456)

使用自动生成的符号函数作为元素,创建一个 2×2 符号矩阵。

syms f(x,y) 2
f
f(x, y) = 

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))

将符号表达式赋给符号函数 f1_1(x,y)f2_2(x,y)。这些函数在实时编辑器中显示为 f1,1(x,y)f2,2(x,y)。赋予这些表达式时,符号矩阵 f 的元素仍包含初始符号函数。

f1_1(x,y) = 2*x;
f2_2(x,y) = x - y;
f
f(x, y) = 

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))

使用 subs 函数代入赋给 f1_1(x,y)f2_2(x,y) 的表达式。

A = subs(f)
A(x, y) = 

(2xf1,2(x,y)f2,1(x,y)x-y)

计算 x = 2y = 3 时符号矩阵 A(包含代入的表达式)的值。

A(2,3)
ans = 

(4f1,2(2,3)f2,1(2,3)-1)

自 R2021a 起

创建两个大小为 2×3 的符号矩阵变量。非标量符号矩阵变量在实时编辑器和命令行窗口中显示为粗体字符。

syms A B [2 3] matrix
A
A = A
B
B = B

将两个矩阵相加。结果由矩阵表示法 A+B 表示。

X = A + B
X = A+B

X 的数据类型为 symmatrix

class(X)
ans = 
'symmatrix'

将符号矩阵变量 X 转换为由符号标量变量组成的矩阵 Y。结果用矩阵分量之和表示。

Y = symmatrix2sym(X)
Y = 

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)

Y 的数据类型为 sym

class(Y)
ans = 
'sym'

证明 Y 中的转换结果等于由符号标量变量组成的两个矩阵之和。

syms A B [2 3]
Y2 = A + B
Y2 = 

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)

isequal(Y,Y2)
ans = logical
   1

自 R2021a 起

符号矩阵变量以紧凑矩阵表示法来表示矩阵、向量和标量。当表示非标量时,这些变量是不可交换的。当数学公式涉及矩阵和向量时,使用符号矩阵变量编写它们比按分量编写更简洁明确。

创建两个符号矩阵变量。

syms A B [2 2] matrix

检查两个符号矩阵变量之间的乘法的交换关系。

A*B - B*A
ans = AB-BA
isequal(A*B,B*A)
ans = logical
   0

检查两个符号矩阵变量之间的加法的交换关系。

isequal(A+B,B+A)
ans = logical
   1

自 R2021a 起

创建 3×33×1 符号矩阵变量。

syms A 3 matrix
syms X [3 1] matrix

XTAX 的黑塞矩阵。涉及符号矩阵变量的推导方程将以书本中的排版方式显示。

f = X.'*A*X
f = XTAX
H = diff(f,X,X.')
H = AT+A

自 R2022a 起

创建函数 v(r,t)=r2t,其中 r 是 1×3 向量,t 是标量。

r 创建为符号矩阵变量,并且将 t 创建为符号标量变量。将 v(r,t) 创建为符号矩阵函数,并在工作区中保留 rt 的现有定义。

syms r [1 3] matrix
syms t
syms v(r,t) [1 1] matrix keepargs

指定 v(r,t) 的公式。

v(r,t) = norm(r)/t
v(r, t) = r2t-1

符号矩阵函数接受标量、向量和矩阵作为其输入参量。计算当向量值为 r=(1,2,2) 以及标量值为 t=3 时该函数的值。

vEval = v([1 2 2],3)
vEval = 

13Σ12where  Σ1=(122)

将计算的函数从 symmatrix 数据类型转换为 sym 数据类型。

vSym = symmatrix2sym(vEval)
vSym = 1

某些函数(例如,solvesymReadSSCVariables)可以返回由符号标量变量组成的向量或由符号标量变量和函数组成的元胞数组。这些变量或函数不会自动显示在 MATLAB 工作区中。使用 syms 从该向量或该元胞数组创建这些变量或函数。

使用 solve 求解方程 sin(x) == 1。解中的参数 k 不会显示在 MATLAB 工作区中。

syms x
eqn = sin(x) == 1;
[sol,parameter,condition] = solve(eqn,x,ReturnConditions=true);
parameter
parameter = k

使用 syms 创建参数 k。参数 k 现在显示在 MATLAB 工作区中。

syms(parameter)

同样,使用 syms 创建向量或元胞数组中包含的符号对象。返回由符号对象组成的元胞数组的函数示例为 symReadSSCVariablessymReadSSCParameters

创建一些符号标量变量、函数、矩阵变量、矩阵函数和数组。

syms a f(x)
syms A [2 1]
syms B [2 2] matrix
syms g(B) [2 2] matrix keepargs

使用 syms 显示当前存在于 MATLAB 工作区中的所有符号标量变量、函数、矩阵变量、矩阵函数和数组的列表。

syms
Your symbolic variables are:

A   A1  A2  B   a   f   g   x                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

通过向 syms 提供输出来返回元胞数组,而不是显示列表。

S = syms
S = 8×1 cell
    {'A' }
    {'A1'}
    {'A2'}
    {'B' }
    {'a' }
    {'f' }
    {'g' }
    {'x' }

创建若干符号对象。

syms a b c f(x)
syms D g(y) [2 2] matrix

使用 syms 函数将所有符号对象以元胞数组形式返回。使用 cellfun 函数删除元胞数组 symObj 中的所有符号对象。

symObj = syms;
cellfun(@clear,symObj)

通过调用 syms 检查是否已删除所有符号对象。输出为空,表示 MATLAB 工作区中不存在符号对象。

syms

输入参数

全部折叠

符号标量变量、矩阵、数组或矩阵变量,指定为以空格分隔的有效变量名称。也就是说,每个变量名称必须以字母开头,并且只能包含字母数字字符和下划线。要验证变量名称是否有效,请使用 isvarname

示例: x y123 z_1

向量、矩阵或由符号标量变量组成的数组的维度,指定为非负整数向量。

示例: [2 3], [2,3]

方阵的维度,指定为非负整数标量。例如,syms x 3 matrix 会创建一个 3×3 方阵符号变量。

示例: 3

关于符号标量变量的假设,指定为 realpositiveintegerrational

您可以使用空格组合多个假设。例如,syms x positive rational 会创建一个具有正有理数值的符号标量变量 x

示例: rational

符号函数或矩阵函数及其输入参量,指定为函数及带括号的变量名称。函数名称 f 和变量名称 var1...varN 必须是有效的变量名称。也就是说,这些名称必须以字母开头,并且只能包含字母数字字符和下划线。要验证变量名称是否有效,请使用 isvarname

示例: F(r,t), f(x,y)

符号矩阵变量或函数的维度,指定为非负整数向量。

示例: [2 3], [2,3]

要创建的符号标量变量和函数,指定为由符号标量变量组成的向量或由符号标量变量和函数组成的元胞数组。此类向量或数组通常是另一个函数(例如,solvesymReadSSCVariables)的输出。

输出参量

全部折叠

MATLAB 工作区中所有符号标量变量、函数、矩阵变量、矩阵函数和数组的名称,以字符向量元胞数组的形式返回。

限制

  • divergencecurljacobianlaplacian 等微分函数目前不接受符号矩阵变量和符号矩阵函数作为输入。要计算关于向量和矩阵的微分,请改用 diff 函数。

  • 要显示 Symbolic Math Toolbox™ 中接受符号矩阵变量和符号矩阵函数作为输入的所有函数,请使用命令 methods symmatrixmethods symfunmatrix

提示

  • 您可以在一次调用中创建多个符号对象。例如,syms f(x) g(t) y 会创建两个符号函数(fg)和三个符号标量变量(xty)。

  • symssymsymfunsymmatrixsymfunmatrix 的快捷方式。您可以使用此快捷方式通过一次函数调用创建多个符号对象。例如,您可以使用 sym 并分别创建每个符号标量变量。但是,当使用 sym 创建变量时,针对创建的变量的任何现有假设都会保留。您还可以使用 symfun 创建符号函数。

  • 在函数和脚本中,请勿使用 syms 创建与 MATLAB 函数同名的符号标量变量。对于这些名称,MATLAB 不会创建符号标量变量,但会保留分配给 MATLAB 函数的名称。如果要在函数或脚本中创建与 MATLAB 函数同名的符号标量变量,请改用 sym。例如,使用 alpha = sym("alpha")

  • 请避免在函数或并行 for 循环中使用 syms,因为它会生成没有直接输出赋值的变量并修改工作区的全局状态。在函数中使用 syms 可能会导致副作用和其他意外行为。请改用带有左侧输出赋值的 sym,例如 t = sym("t")。有关详细信息,请参阅Choose syms or sym Function

  • 下列变量名称对于 syms 无效:integerrealrationalpositiveclear。要使用这些名称创建符号标量变量,请使用 sym。例如,real = sym("real")

  • clear x 不会清除关于该符号对象的假设,例如实数、正数或者由 assumesymsyms 设置的任何假设。要删除假设,请使用以下选项之一:

    • syms xsyms f(x) 会清除 x 的所有假设。

    • assume(x,"clear") 会清除 x 的所有假设。

    • clear all 会清除 MATLAB 工作区中的所有对象并重置符号引擎。

    • assumeassumeAlso 为设置关于符号标量变量的假设提供了更大的灵活性。

  • 当用符号数替换数值向量或矩阵的一个或多个元素时,MATLAB 会将该数字转换为双精度数。

    A = eye(3);
    A(1,1) = sym(pi)
    A =
        3.1416         0         0
             0    1.0000         0
             0         0    1.0000

    您无法将数值向量或矩阵的元素替换为符号标量变量、表达式或函数,因为这些元素无法转换为双精度数。例如,syms a; A(1,1) = a 会抛出错误。

  • 在计算符号矩阵函数时,您必须代入与定义的输入参量大小相同的值。例如,请参阅创建向量和标量的函数。为了进行比较,此示例返回一个错误:

    syms X [2 2] matrix
    syms f(X) [1 1] matrix keepargs
    f(ones(4))
    

版本历史记录

在 R2006a 之前推出

全部展开