NumPy - 多项式表示
NumPy 中的多项式表示
NumPy 中的多项式表示是指如何使用数组来表示和操作多项式。多项式是涉及变量幂和的数学表达式,例如 ax2 + bx + c,其中 a、b 和 c 为常数,x 为变量。
在 NumPy 中,多项式表示为数组,每个元素对应多项式的一个系数。
例如,多项式 3x2 + 2x + 1 可以表示为数组 [3, 2, 1],其中第一个元素表示 x2 的系数,第二个元素表示 x 的系数,第三个元素表示常数项。
NumPy 提供了 numpy.polynomial 模块来创建和使用多项式对象,这些模块允许您对多项式执行求值、微分和积分等运算。
创建多项式
NumPy 中的多项式可以使用 numpy.polynomial.Polynomial 类创建,该类用系数来表示多项式。
示例:创建多项式
在以下示例中,我们使用 NumPy 创建多项式 2x3 + 3x2 + x + 5 -
import numpy as np from numpy.polynomial import Polynomial # 定义多项式的系数 coefficients = [5, 1, 3, 2] # 创建多项式 p = Polynomial(coefficients) print("Polynomial:", p)
结果显示创建的多项式 -
多项式:5.0 + 1.0x + 3.0x + 2.0x
多项式求值
可以使用 Polynomial 类的 __call__ 方法或 numpy.polyval() 函数(另一种求多项式的方法)在特定点求多项式的值。
示例:求多项式的值
在下面的示例中,我们使用 __call__ 方法和 polyval() 函数在 x = 2 处求多项式 2x3 + 3x2 + x + 5 -
import numpy as np from numpy.polynomial import Polynomial # 定义多项式 # 2x^3 + 3x^2 + x + 5 p = Polynomial([5, 1, 3, 2]) # 使用 __call__ 方法计算 x = 2 处的多项式 value_call = p(2) # 使用 numpy.polyval 计算 x = 2 处的多项式 value_evaluate = np.polyval(p.coef, 2) print("使用 __call__ 方法计算 x = 2 处的多项式值:", value_call) print("使用 numpy.polyval 计算 x = 2 处的多项式值:", value_evaluate)
结果显示了使用两种方法计算的 x = 2 处的多项式值−
使用 __call__ 函数计算 x = 2 处的多项式值:35.0 使用 numpy.polyval 函数计算 x = 2 处的多项式值:52.0
对多项式执行运算
NumPy 支持对多项式进行各种运算,例如加法、减法、乘法和除法。
您可以通过实例化 Polynomial 类并传递多项式的系数来创建多项式对象。 NumPy 会自动处理多项式系数的必要计算。
示例:多项式加法
在以下示例中,我们使用 + 运算符将两个多项式 2x2 + 3x + 1 和 x2 + 4x + 2 相加 -
import numpy as np from numpy.polynomial import Polynomial # 定义多项式 # 2x^2 + 3x + 1 p1 = Polynomial([1, 3, 2]) # x^2 + 4x + 2 p2 = Polynomial([2, 4, 1]) # 将多项式相加 result_add = p1 + p2 print("多项式加法结果:", result_add)
结果显示两个多项式的和 -
多项式加法结果:3.0 + 7.0x + 3.0x
示例:多项式乘法
这里,我们使用 * 运算符将两个多项式 2x + 1 和 x + 2 相乘 -
import numpy as np from numpy.polynomial import Polynomial # 定义多项式 # 2x + 1 p1 = Polynomial([1, 2]) # x + 2 p2 = Polynomial([2, 1]) # 多项式相乘 result_multiply = p1 * p2 print("多项式乘法结果:", result_multiply)
结果显示两个多项式的乘积 −
多项式乘法结果:2.0 + 5.0x + 2.0x
示例:多项式微分
在本例中,我们求多项式 2x3 + 的导数3x2 + x + 5 −
import numpy as np from numpy.polynomial import Polynomial # 定义多项式 # 2x^3 + 3x^2 + x + 5 p = Polynomial([5, 1, 3, 2]) # 对多项式求导 result_diff = p.deriv() print("多项式微分结果:", result_diff)
结果显示原始多项式的一阶导数 −
多项式微分结果:1.0 + 6.0x + 6.0x
将多项式拟合到数据
将多项式拟合到数据涉及查找与给定数据点集最匹配的多项式。在 NumPy 中,这可以通过使用 numpy.fit() 函数来实现,该函数通过最小化误差,将指定次数的多项式拟合到数据中。
拟合结果是一个近似于数据的多项式,可用于曲线拟合或趋势分析等任务。
示例:将多项式拟合到数据中
在以下示例中,我们将一个 2 次多项式拟合到一组数据点中 -
import numpy as np from numpy.polynomial import Polynomial # 定义数据点 x = np.array([0, 1, 2, 3, 4]) y = np.array([1, 2, 0, 2, 1]) # 将 2 次多项式拟合到数据中 p_fit = Polynomial.fit(x, y, deg=2) print("拟合多项式:", p_fit)
结果显示拟合的多项式 −
拟合多项式:1.2 - (7.02166694e-17)x + (1.22883961e-16)x