请帮助调试此代码以在切比雪夫节点进行牛顿分差多项式插值

问题描述 投票:0回答:0

我正在尝试对函数 $f(x) = |x| 进行插值+ x/2 - x^2$ 在使用 1000 个节点的切比雪夫节点处使用牛顿分差。我有代码,但它一直给我溢出和“nan”之后。我无法发现我的错误。我想知道是否有人可以帮我调试它:

import math as m
import numpy as np
def f(x):
    x = float(x)
    y = abs(x) + x/2.0 - x**2
    return y

n = 999
Chebynodes = []
fvalues = []
for i in range(0,n+1):
    Chebynodes.append(m.cos(i*(m.pi)/n))
    fvalues.append(f(Chebynodes[i]))
   

#computes the coefficient of Newton's divided differences polynomial
def ddifcoeff(x, y):
    m = len(x)

    a = np.copy(x)
    b = np.copy(y)
    for i in range(1, m):
        b[i:m] = (b[i:m] - b[i - 1])/(a[i:m] - b[i - 1])

    return b


print(ddifcoeff(Chebynodes,fvalues))

我尝试使用在互联网上找到的几种不同的牛顿分差代码,并尝试自己创建一个分差矩阵。但是,这些方法似乎都不起作用。在我看来,问题可能出在切比雪夫节点靠得太近了。但是,我不想更改节点的位置或数量。

python numpy numerical-methods polynomial-approximations
© www.soinside.com 2019 - 2024. All rights reserved.