interpolation.py
def interpolation(c,x,x0): # Evaluate Newton's polynomial at x0. # Degree of polynomial n = len(x) - 1 y0 = c[n] for k in range(1,n+1): y0 = c[n-k] + (x0 - x[n-k]) * y0 return y0 def coef(x,y): # Computes the coefficients of Newton's polynomial. # Number of data points. m = len(x) c = y.copy() for k in range(1,m): c[k:m] = (c[k:m] - c[k-1])/(x[k:m] - x[k-1]) return c
ex331.py
import numpy as np import matplotlib.pyplot as plt from interpolation import interpolation,coef def f(x): return 1.0/(1.0+25.0*x**2) a = -1.0 b = 1.0 x1 = np.linspace(a,b,200) y1 = f(x1) plt.plot(x1,y1) nList = [4,6,10] sglist = ['--','-.',':'] for k in range(len(nList)): n = nList[k] x = np.linspace(a,b,n+1) y = f(x) plt.scatter(x,y,marker='o',color='black') c = coef(x,y) y1 = interpolation(c,x,x1) sl = 'n=' + str(n) sg = sglist[k] plt.plot(x1,y1,sg,label=sl) plt.xlabel('x') plt.grid(True) plt.legend(loc=0) plt.savefig('ex331.png', dpi=72) plt.show()
Recent Comments