【问题标题】:Interpolation in Python - PlotPython中的插值 - 绘图
【发布时间】:2021-09-20 08:53:38
【问题描述】:

我正在尝试使用 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)

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

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

地点:

  1. -ak 是在定义之前在每个 Chebyshev 点处计算的函数,如果我是正确的,我可以使用“np.polynomial.Chebyshev(ccoeffs)”找到这个函数

现在,运行之前的代码,我得到以下输出:

现在我有一些问题:

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

提前致谢!

【问题讨论】:

    标签: python numpy


    【解决方案1】:
    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()
    

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

    【讨论】:

    • 哦,伙计,你可以成为我的英雄,我可以问你其他问题吗?我正在写一篇论文,我有点麻烦:1)为什么我设置了 10^4 分? 2) '*fcheb.linspace()' 是什么意思?非常感谢
    • 我没有充分的理由选择 10^4 分。它只是一个足够大的数字,所以它看起来很好,也足够小,所以它不会永远持续下去。在为您查看fcheb.linspace() 的文档之前,我不知道的是,那个人只选了 100 分。所以你看我的选择有点武断。
    • 和 2) fcheb.linspace 为您提供两个 100 个数组,在区间 (-1,1) 中均匀分布 x 值和相应的 y 值。 * 只是将两者都提供给 pyplot,就好像您已将第一个数组作为第一个参数插入,将第二个数组作为第二个参数插入一样。请注意,从技术上讲,这与将两个数组的元组作为一个参数传递,如果我省略了 *,会发生什么。
    • 如果可以的话,再问一个问题:我在您的第四点中看到了以下命令:np.polynomial.chebyshev.chebfit,并在 numpy 中搜索了一些文档,我找到了以下链接:@987654322 @;现在,我不太明白要在函数中添加的元素“x 和 y”是什么。抱歉打扰了!
    • 哈哈哈没关系:我不确定你想用它做什么,但通常人们想要插入数据或想要简化的复杂函数。如果您有 x/y 数据,您只需将其提供给 chebfit,如果您有函数,您可以使用 x=np.linspace(a,b,n)y=f(x) 获取数据。然后chebfit 为您提供接近您的数据/函数的切比雪夫多项式的系数。与以下类似,但我使用样条线代替:stackoverflow.com/questions/68319759/….
    猜你喜欢
    • 2021-02-18
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多