差商表
import numpy as np
from sympy import *
np.set_printoptions(suppress=True)
def cs(x, f):
n=len(x)
res=np.ones([n,n])*np.inf
for i in range(0, n):
res[i][0] = f[i]
for j in range(1, n):
for i in range(j, n):
res[i][j] = round((res[i][j - 1] - res[i - 1][j - 1]) / (x[i] - x[i - j]),5)
return res
if __name__=="__main__":
x=np.array([0.4,0.55,0.65,0.80,0.90,1.05])
f=np.array([0.41075,0.57815,0.69675,0.88811,1.02652,1.25382])
print(cs(x,f))
实现效果:
[[ 0.41075 inf inf inf inf inf]
[ 0.57815 1.116 inf inf inf inf]
[ 0.69675 1.186 0.28 inf inf inf]
[ 0.88811 1.27573 0.35892 0.1973 inf inf]
[ 1.02652 1.3841 0.43348 0.21303 0.03146 inf]
[ 1.25382 1.51533 0.52492 0.2286 0.03114 -0.00049]]