chebyshev多项式

mitkmikd  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(416)

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

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

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

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

哪里:
-ak是在定义之前在切比雪夫点上计算的函数,如果我是正确的,我可以用“np.多项式.切比雪夫(CCOEFS)”找到这个函数
现在,运行前面的代码,我得到以下输出:

现在我有一些问题:
我上面写的是什么,对吗?
如何找到ti(x)的值?
如何在python中用绘图表示切比雪夫多项式?
提前谢谢!

emeijp43

emeijp431#

我相信你写的是对的。
如果我理解正确的话,你想计算以t_i为基础显示的多项式。如果是这样的话,你可以在某个值上调用多项式。 fcheb(0) --> -3 . 如果你真的想知道,例如。 T_10(np.pi) 是吗 np.polynomial.Chebyshev.basis(10)(np.pi) .
这是多项式的并排图。请注意,我稍微调整了你的第二个多项式,以看到这两个,而不是让它们完全相同。

  1. import matplotlib.pyplot as plt
  2. x = np.linspace(-1, 1, 10**4)
  3. plt.plot(*fcheb.linspace(), label='fcheb')
  4. plt.plot(x, f(x)+0.1, label='fpoly+0.1')
  5. plt.legend()


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

相关问题