#coding=utf-8 ''' Created on 2019-03-31 @author: Administrator '''
defNeville(xt,m,n,x): for i in range(1,n): for j in range(1,n): w[i-j][i]=(x-xt[i-j])/(xt[i]-xt[i-j]) m[i][j]=m[i-1][j-1]+w[i-j][i]*(m[i][j-1]-m[i-1][j-1]) for i in range(n): for j in range(0,i+1): if j%n==0: print("\n") print(' %f' %m[i][j])
n = int(input('插入节点个数:')) x = float(input('输入x的值:')) m = [[0for i in range(n)] for j in range(n)] #创建n*n矩阵 w = [[0for i in range(n)] for j in range(n)] xt = [0]*n for i in range(n): m[i][0] = float(input('插入第%d个y值:' %(i+1))) for i in range(n): xt[i] = float(input('插入第%d个x值:' %(i+1))) Neville(xt,m,n,x)
#coding=utf-8 ''' Created on 2019-09-31 @author: Administrator ''' deflagrange(x,xt,yt,n): y = 0 for i in range(n): t = 1 for j in range(n): if i!=j: t = t*(x-xt[j])/(xt[i]-xt[j]) y = y+t*yt[i] print("结果为:%f" %y)
xt = [] yt = [] x = float(input("插值x;")) n = int(input("节点数目;")) for i in range(n): xt.append(float(input("第%d个x的值" %(i+1)))) for i in range(n): yt.append(float(input("第%d个x的值" %(i+1)))) lagrange(x,xt,yt,n)