失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Matlab符号数学Symbolic Math Toolbox™帮助文档(全)

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

时间:2022-12-21 02:27:05

相关推荐

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

符号数学快速入门

创建符号数、变量和表达式创建符号数创建符号变量创建符号表达式重用符号对象的名称 创建符号函数创建符号数组使用现有符号变量创建矩阵时生成元素创建符号数字矩阵 执行符号计算对符号表达式求微分带有一个变量的表达式偏导数二阶偏导数和混合导数 对符号表达式求积分一元表达式的不定积分多变量表达式的不定积分定积分如果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 xy = sym('y')

y = y

第一个命令在MATLAB工作空间中创建一个符号变量x,将值x赋给变量x。第二个命令用值y创建符号变量y。

使用syms,您可以在一个命令中创建多个变量。创建变量a、b和c。

clearA = 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

NameSize Bytes Class AttributesA 1x208 sym

A是一个由20个符号变量组成的1×20数组。通过组合sym和syms,可以在MATLAB工作空间中创建许多新的符号变量,并使用相应的变量名。

清除工作区。创建新的符号变量a1,…,a10,并分别为它们指定MATLAB变量名a1,…,a10。在MATLAB工作空间中显示变量。

clearsyms(sym('a', [1 10]))whos

NameSize Bytes Class Attributesa1 1x1 8 syma10 1x1 8 syma2 1x1 8 syma3 1x1 8 syma4 1x1 8 syma5 1x1 8 syma6 1x1 8 syma7 1x1 8 syma8 1x1 8 syma9 1x1 8 sym

MATLAB工作区包含10个符号变量的MATLAB变量。

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

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

创建符号表达式

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

clearphi = (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软件将从变量中删除先前定义的表达式。例如,

clearsyms a bf = a + b

f = a + b

如果接着键入

syms ff

f = f

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

创建符号函数

符号函数表示数学函数。使用符号函数进行微分、积分、求解常微分方程(ODE)和其他数学运算。使用 syms 创建符号函数。

使用 syms 创建带有变量 x 和 y 的符号函数f。创建f会自动创建 x 和 y 。

clearsyms 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 的符号循环矩阵:

clearsyms a b cA = [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 :

clearA = 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希尔伯特矩阵。

clearA = 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 命令。以下示例说明如何获取符号表达式的一阶导数:

clearsyms xf = sin(x)^2;diff(f)

ans = 2cos(x)sin(x)

偏导数

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

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

ans = -2cos(y)sin(y)

二阶偏导数和混合导数

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

syms x yf = 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 yf = sin(x)^2 + cos(y)^2;diff(diff(f, y), x)

ans = 0

对符号表达式求积分

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

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

一元表达式的不定积分

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

clearsyms xf = 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 nf = 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 xint(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 函数来求解方程。例如,求解此方程:

clearsyms xsolve(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 ysolve(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)

clearphi = (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 xf = (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 :

clearsyms xf = 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 yf = 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 xf = 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 xf = x^3 - 15*x^2 - 24*x + 350;

2.创建幻方矩阵:

A = magic(3)

A = 3x3816357492

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-10000 -10000 -10

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

polyvalm(b,A)

ans = 3x3-10000 -10000 -10

替换符号矩阵的元素

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

syms a b cA = [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。

clearsyms xf = 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 yeqn = (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 tfplot3(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 yfsurf(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 xassume(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 realsyms 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 xassume(x, 'real')

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

clear x

x 是实的假设仍然存在于符号引擎中。如果稍后使用 sym 声明一个新的符号变量 x ,它将继承 x 是实数的假设,而不是默认的假设。如果以后用符号变量 x 来求解方程并简化表达式,可能会得到不完整的结果。

注意:如果使用 syms 声明变量,则清除现有假设。如果使用 sym 声明变量,则不会清除现有假设。

例如,假设 x 是实数,则多项式 x2+1 没有根:

syms x realclear xx = 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 zclear x a b c zwhos

NameSize Bytes Class Attributesans 2x1 8 sym

如果觉得《Matlab符号数学Symbolic Math Toolbox™帮助文档(全)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。