主要内容

root

表示多项式的根

说明

r = root(p,x) 返回由符号多项式 p 关于变量 x 的编号根组成的列向量。以符号形式求解高次多项式的根可能较为复杂,且并非所有多项式都能以解析方式求解。在这种情况下,Symbolic Math Toolbox™ 使用 root 函数来表示多项式的根。

示例

r = root(p,x,k) 表示符号多项式 p 关于变量 x 的第 k 个根。

示例

示例

全部折叠

使用 root 表示多项式 x3+1 的根。root 函数返回一个列向量。此向量的元素表示多项式的三个根。

syms x
p = x^3 + 1;
root(p,x)
ans = 

(root(x3+1,x,1)root(x3+1,x,2)root(x3+1,x,3))

root(x3+1,x,1) 表示 p 的第一个根,而 root(x3+1,x,2) 表示第二个根,依此类推。使用此语法表示高次多项式的根。

求二次多项式 x2-x-1 的根。您可以使用 root 函数表示这些根。

syms x
p = x^2 - x - 1;
r = root(p,x)
r = 

(root(x2-x-1,x,1)root(x2-x-1,x,2))

要将这些根转换为高精度浮点数,可以使用 vpa

rVpa = vpa(r)
rVpa = 

(-0.618033988749894848204586834365641.6180339887498948482045868343656)

在求解高次多项式时,solve 使用 root 表示根。您也可以通过使用 MaxDegree 选项返回显式解,或使用 vpa 返回数值结果。

x^3 + 3*x - 16 的根。

syms x
p = x^3 + 3*x - 16;
R = solve(p,x)
R = 

(root(z3+3z-16,z,1)root(z3+3z-16,z,2)root(z3+3z-16,z,3))

通过将 MaxDegree 选项设置为多项式的次数来显式求根。次数大于 4 的多项式没有显式解。

Rexplicit = solve(p,x,"MaxDegree",3)
Rexplicit = 

(σ1-1σ112σ1-σ12-31σ1+σ1i212σ1-σ12+31σ1+σ1i2)where  σ1=65+81/3

通过使用 vpaR 转换为高精度浮点数来以数值方式计算根。

Rnumeric = vpa(R)
Rnumeric = 

(2.1267693318103912337456401562601-1.0633846659051956168728200781301-2.5283118563671914055545884653776i-1.0633846659051956168728200781301+2.5283118563671914055545884653776i)

如果对 root 的调用包含参数,则在调用 vpa 之前,请使用 subs 将参数代换为数值。

您可以将 root 函数作为输入传递给 Symbolic Math Toolbox 函数,例如 simplifysubsdiff

使用 simplify 函数简化包含 root 的表达式。

syms x
r = root(x^6 + x, x, 1);
simplify(sin(r)^2 + cos(r)^2)
ans = 1

使用 subsroot 中的参数代换为数值。

syms b
subs(root(x^2 + b*x, x, 1), b, 5)
ans = root(x2+5x,x,1)

在使用 vparoot 转换为数值形式之前,必须使用 subs 对参数进行代入。

使用 diff 对包含 root 的表达式关于参数求导。

diff(root(x^2 + b*x, x, 1), b)
ans = 

root(x2+bx,x,1)b

使用 ilaplace 求两个多项式比值的拉普拉斯逆变换。拉普拉斯逆变换以 root 形式返回。

syms s
G = (s^3 + 1)/(s^6 + s^5 + s^2);
H = ilaplace(G)
H = 

t-k=14etroot(z4+z3+1,z,k)4root(z4+z3+1,z,k)+3

当输出中包含 root 函数时,您可以在后续符号计算中将 root 函数作为输入使用。然而,如果需要数值结果,请使用 vparoot 函数转换为高精度数值结果。

使用 vpa 将拉普拉斯逆变换转换为数值形式。

H_vpa = simplify(vpa(H))
H_vpa = t+0.30881178580997278695808136329347e-1.0189127943851558447865795886366tcos(0.60256541999859902604398442197193t)-0.30881178580997278695808136329347e0.5189127943851558447865795886366tcos(0.666609844932018579153758800733t)-0.6919689479355443779463355813596e-1.0189127943851558447865795886366tsin(0.60256541999859902604398442197193t)-0.16223098826244593894459034019473e0.5189127943851558447865795886366tsin(0.666609844932018579153758800733t)

输入参数

全部折叠

符号多项式,指定为符号表达式。

变量,指定为符号变量。

多项式根的编号,指定为数字、向量、矩阵、多维数组、符号数、符号向量、符号矩阵或符号多维数组。当 k 为非标量时,rootk 按元素进行操作。

示例: root(f,x,3) 表示 f 的第三个根。

提示

  • 您可以通过使用 vpa 返回可变精度符号数,对涉及 root 函数的符号表达式进行数值近似计算。从 R2023a 开始,您可以使用 matlabFunction 将该表达式转换为可在没有 Symbolic Math Toolbox 的情况下使用的 MATLAB® 函数。生成的文件使用对数值 double 数据类型进行运算的 roots 函数。

版本历史记录

在 R2015b 中推出

另请参阅

| |