scipy.interpolate.lagrange¶
- scipy.interpolate.lagrange(x, w)[源代码]¶
返回一个拉格朗日插值多项式。
给定两个一维阵列 x 和 w, 通过这些点返回拉格朗日插值多项式
(x, w)
。警告:此实现在数值上不稳定。不要期望能够使用超过20个点数,即使它们被选得最好。
- 参数
- xarray_like
x 表示一组数据点的x坐标。
- warray_like
w 表示一组数据点的y坐标,即f (x )。
- 退货
- 拉格朗日 :
numpy.poly1d
实例numpy.poly1d实例 拉格朗日插值多项式。
- 拉格朗日 :
示例
插补 \(f(x) = x^3\) 领先3个点。
>>> from scipy.interpolate import lagrange >>> x = np.array([0, 1, 2]) >>> y = x**3 >>> poly = lagrange(x, y)
由于只有3个点,拉格朗日多项式的次数为2。
\[\begin{split}\BEGIN{对齐} L(X)&=1\次\frac{x(x-2)}{-1}+8\次\frac{x(x-1)}{2}\\ &=x(-2+3x) \end{对齐}\end{split}\]>>> from numpy.polynomial.polynomial import Polynomial >>> Polynomial(poly.coef[::-1]).coef array([ 0., -2., 3.])
>>> import matplotlib.pyplot as plt >>> x_new = np.arange(0, 2.1, 0.1) >>> plt.scatter(x, y, label='data') >>> plt.plot(x_new, Polynomial(poly.coef[::-1])(x_new), label='Polynomial') >>> plt.plot(x_new, 3*x_new**2 - 2*x_new + 0*x_new, ... label=r"$3 x^2 - 2 x$", linestyle='-.') >>> plt.legend() >>> plt.show()