Engee 文档
Notebook

创建和计算多项式

本演示涵盖多项式的基本操作:创建、计算和求根。

要在Engee中处理多项式--创建、计算、求根和数学运算,可以使用库Polynomials.jl 。让我们下载并在本例中连接它。

In [ ]:
import Pkg
Pkg.add("Polynomials")
using Polynomials;
   Resolving package versions...
  No Changes to `/user/.project/Project.toml`
  No Changes to `/user/.project/Manifest.toml`

创建多项式

为了创建一个形式为 $4 \cdot x^2 - 4 \cdot x + 1$ 我们将使用函数Polynomial() ,并从自由项开始向其传递系数向量。

In [ ]:
Polynomial([1, -4, 4])
Out[0]:
1 - 4∙x + 4∙x2

您也可以通过向函数传递系数变量来创建多项式--以向量或矩阵的形式$1 \times (n+1)$ 。函数的结果(多项式)可以传递给变量,以便进一步运算。

In [ ]:
p = [4 0 0 -3 2 33];
y = Polynomial(p)
Out[0]:
4 - 3∙x3 + 2∙x4 + 33∙x5

创建多项式的函数可以逐元素计算。这种调用的结果将是一个多项式向量,而由系数向量组成的向量必须传递给函数。

In [ ]:
P1 = [1, 2, 3, 0, 1];
P2 = [1, 0, -1];
P3 = [0, -1, 4, -2];
P = [P1, P2, P3];

Y = Polynomial.(P)
Out[0]:
3-element Vector{Polynomial{Int64, :x}}:
 Polynomial(1 + 2*x + 3*x^2 + x^4)
 Polynomial(1 - x^2)
 Polynomial(-x + 4*x^2 - 2*x^3)

默认情况下,多项式变量为x 。要更改变量,必须明确设置:

In [ ]:
Polynomial([1,2,3], :t)
Out[0]:
1 + 2∙t + 3∙t2

您可以使用函数fromroots() 根据多项式的根值创建多项式。多项式赋值的形式$(x-4) \cdot (x-1) \cdot (x-2)$ 将以下面的形式再现。

In [ ]:
u = fromroots([4,1,2])
Out[0]:
-8 + 14∙x - 7∙x2 + x3

计算多项式

多项式的计算使用调用符号。让我们计算之前创建的多项式 $y=4-3 \cdot x^3 + 2 \cdot x^4 + 33 \cdot x^5$ 点上的$x = 1$ 。

In [ ]:
y(1)
Out[0]:
36

要计算通过逐元素调用创建的多项式,必须引用创建向量的元素。例如,让我们计算$x = 0,1$ 点的多项式$Y_2 = -x^2+1$ 。

In [ ]:
Y[2](0.1)
Out[0]:
0.99

查找多项式的根

函数roots().用于查找多项式的根。必须将多项式传递给它,例如通过创建函数:

In [ ]:
roots(Polynomial([1, 0, -1]))
Out[0]:
2-element Vector{Float64}:
 -1.0
  1.0

让我们使用根的值来计算之前创建的函数的根: $u = (x-4) \cdot (x-1) \cdot (x-2)$.

In [ ]:
roots(u)
Out[0]:
3-element Vector{Float64}:
 0.9999999999999991
 2.0000000000000018
 3.9999999999999982

从函数计算结果可以看出,得到的根值与给定值不相等,这是因为计算浮点数时出现了误差。

求根函数的计算结果可以是复数向量。例如,我们来计算之前给出的多项式的根值 $y=4-3 \cdot x^3 + 2 \cdot x^4 + 33 \cdot x^5$.

In [ ]:
roots(y)
Out[0]:
5-element Vector{ComplexF64}:
  -0.6988527464788102 + 0.0im
 -0.22121608146338845 - 0.5967022127055316im
 -0.22121608146338845 + 0.5967022127055316im
   0.5403394243997632 - 0.3691905470638564im
   0.5403394243997632 + 0.3691905470638564im

对于多项式向量$Y$ ,也可以逐元素计算根:

In [ ]:
roots.(Y)
Out[0]:
3-element Vector{Vector}:
 ComplexF64[-0.34974582621172073 - 0.43899033747531147im, -0.34974582621172073 + 0.43899033747531147im, 0.34974582621172157 - 1.746977896113271im, 0.34974582621172157 + 1.746977896113271im]
 [-1.0, 1.0]
 [0.2928932188134525, 1.7071067811865475, 0.0]

结论

在本例中,我们介绍了多项式基本运算的基本方法:创建、计算和求根。要更详细地了解这一主题,并提高您在Engee中处理多项式的技能,我们建议您参考文档中的相关部分: 多项式.jl 库