Python绘图中的插值

2024-04-25 01:39:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python插值一个通用多项式,只是为了更好地理解这个理论。我在numpy的库中看到了一些关于使用cèbyshèv的多项式的内容,我开发了以下代码:

# f(x) = -3 + 2x^2 - x^3 + x^4
f = lambda x: -3 + 2*x**2 - x**3 + x**4
pcoeffs = [-3, 0, 2, -1, 1]
ccoeffs = np.polynomial.chebyshev.poly2cheb(pcoeffs)

fpoly = np.polynomial.Polynomial(pcoeffs)
fcheb = np.polynomial.Chebyshev(ccoeffs)

我知道切比雪夫多项式是基于切比雪夫点的多项式,计算如下:

enter image description here

我用这些点来计算多项式,公式如下: enter image description here

其中:

  1. -ak是在定义之前在切比雪夫点上计算的函数,如果我是正确的,我可以用“np.多项式.切比雪夫(CCOEFS)”找到这个函数

现在,运行前面的代码,我得到以下输出: enter image description here

现在我有一些问题:

  1. 我上面写的是什么,对吗
  2. 如何找到Ti(x)的值
  3. 如何在python中用绘图表示切比雪夫多项式

提前谢谢


Tags: lambda函数代码numpy内容np理论插值
1条回答
网友
1楼 · 发布于 2024-04-25 01:39:22
  1. 我相信你写的是对的
  2. 如果我理解正确的话,你想计算以T_I为基础显示的多项式。如果是这样的话,您可以在某个值处调用多项式,例如fcheb(0) > -3。如果您真的想知道例如T_10(np.pi)是做什么的np.polynomial.Chebyshev.basis(10)(np.pi)
  3. 这是多项式的并排图。请注意,我稍微调整了你的第二个多项式,以看到这两个,而不是让它们完全相同
import matplotlib.pyplot as plt
x = np.linspace(-1, 1, 10**4)
plt.plot(*fcheb.linspace(), label='fcheb')
plt.plot(x, f(x)+0.1, label='fpoly+0.1')
plt.legend()

enter image description here

  1. 如果你想理解切比雪夫多项式插值,你真的应该试试np.polynomial.chebyshev.chebfit

相关问题 更多 >