import pandas as pd
def newton_interpolation(x, y, xi):
# 计算差商表,f[i][j]表示x[j]到x[i+j]之间的差商
n = len(x)
f = [[0 for i in range(n)] for j in range(n)]
for i in range(n):
f[i][0] = y[i]
for j in range(1, n):
for i in range(n-j):
f[i][j] = (f[i+1][j-1] - f[i][j-1]) / (x[i+j] - x[i])
# 使用牛顿插值公式进行插值计算
result = 0
for i in range(n):
term = f[0][i]
for j in range(i):
term *= (xi - x[j])
result += term
return result
# 运行代码
if __name__=='__main__':
df = pd.read_excel(r'D:\临时资料\插值.xlsx', sheet_name='值')
x = df['level']
y = df['volume']
# 要预测的数据
xi = 151.29,152
result = newton_interpolation(x, y, xi)
print(result)
牛顿插值代码
于 2023-04-21 16:33:20 首次发布