import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = [1, 2, 3]
y = [6, 11, 18]
plt.plot(x,y,'bo',markersize=10)
plt.xlim(0, 4)
plt.ylim(5, 19)
x=np.linspace(0, 4, 20)
y=x**2+2*x+3
plt.plot(x, y, 'r--')
[<matplotlib.lines.Line2D at 0x106892b10>]
import numpy as np
def evalPoly(a,xData,x):
n = len(xData)-1 # order of polynomial
p = a[n]
for i in range(1,n+1):
#print "a[", (n-i),"]=", a[n-i]
p = a[n-i] + (x-xData[n-i])*p
return p
def coefficients(xData,yData):
n = len(xData)
a = np.zeros((n, n));
for i in range(0, n):
a[i, 0] = yData[i];
for j in range(1, n):
for k in range(0, n-j):
a[k, j] = (a[k+1, j-1] - a[k, j-1])/(xData[k+j]-xData[k])
return a[0, :] # return the zeroth row
# y = x**2 + 2*x + 3
xData = [1, 2, 3]
yData = [6, 11, 18]
a = coefficients(xData, yData)
print a
print " x yInterp yExact"
print "-----------------------"
for x in np.arange(0.0,4,0.2):
y = evalPoly(a,xData,x)
yExact = y = x**2 + 2*x + 3
print "%3.1f %9.5f %9.5f"% (x,y,yExact)
[ 6. 5. 1.] x yInterp yExact ----------------------- 0.0 3.00000 3.00000 0.2 3.44000 3.44000 0.4 3.96000 3.96000 0.6 4.56000 4.56000 0.8 5.24000 5.24000 1.0 6.00000 6.00000 1.2 6.84000 6.84000 1.4 7.76000 7.76000 1.6 8.76000 8.76000 1.8 9.84000 9.84000 2.0 11.00000 11.00000 2.2 12.24000 12.24000 2.4 13.56000 13.56000 2.6 14.96000 14.96000 2.8 16.44000 16.44000 3.0 18.00000 18.00000 3.2 19.64000 19.64000 3.4 21.36000 21.36000 3.6 23.16000 23.16000 3.8 25.04000 25.04000
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def evalPoly(a,xData,x):
n = len(xData)-1 # order of polynomial
p = a[n]
for i in range(1,n+1):
#print "a[", (n-i),"]=", a[n-i]
p = a[n-i] + (x-xData[n-i])*p
return p
def coefficients(xData,yData):
n = len(xData)
a = np.zeros((n, n));
for i in range(0, n):
a[i, 0] = yData[i];
for j in range(1, n):
for k in range(0, n-j):
a[k, j] = (a[k+1, j-1] - a[k, j-1])/(xData[k+j]-xData[k])
return a[0, :] # return the zeroth row
xAll = [0, 10, 15, 20, 22.5, 30]
yAll = [0, 227.04, 362.78, 517.35, 602.97, 901.67]
plt.plot(xAll,yAll,'bo',markersize=10)
xData = xAll[2:4]
print "xData=",xData
yData = yAll[2:4]
print "yData=",yData
a = coefficients(xData, yData)
print "a=",a
y = evalPoly(a, xData, 15)
print "f(15)=", y
y = evalPoly(a, xData, 16)
print "f(16)=", y
xs=np.linspace(0, 30, 50)
ys=np.zeros(50)
i=0
for x in xs:
ys[i] = evalPoly(a,xData,x)
i=i+1
plt.plot(xs,ys,'r--')
xData= [15, 20] yData= [362.78, 517.35] a= [ 362.78 30.914] f(15)= 362.78 f(16)= 393.694
[<matplotlib.lines.Line2D at 0x10c336610>]
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def evalPoly(a,xData,x):
n = len(xData)-1 # order of polynomial
p = a[n]
for i in range(1,n+1):
#print "a[", (n-i),"]=", a[n-i]
p = a[n-i] + (x-xData[n-i])*p
return p
def coefficients(xData,yData):
n = len(xData)
a = np.zeros((n, n));
for i in range(0, n):
a[i, 0] = yData[i];
for j in range(1, n):
for k in range(0, n-j):
a[k, j] = (a[k+1, j-1] - a[k, j-1])/(xData[k+j]-xData[k])
return a[0, :] # return the zeroth row
xAll = [0, 10, 15, 20, 22.5, 30]
yAll = [0, 227.04, 362.78, 517.35, 602.97, 901.67]
plt.plot(xAll,yAll,'bo',markersize=10)
xData = xAll[1:4]
print "xData=",xData
yData = yAll[1:4]
print "yData=",yData
a = coefficients(xData, yData)
print "a=",a
y = evalPoly(a, xData, 10)
print "f(10)=", y
y = evalPoly(a, xData, 15)
print "f(15)=", y
y = evalPoly(a, xData, 16)
print "f(16)=", y
xs=np.linspace(0, 30, 50)
ys=np.zeros(50)
i=0
for x in xs:
ys[i] = evalPoly(a,xData,x)
i=i+1
plt.plot(xs,ys,'r--')
xData= [10, 15, 20] yData= [227.04, 362.78, 517.35] a= [ 227.04 27.148 0.3766] f(10)= 227.04 f(15)= 362.78 f(16)= 392.1876
[<matplotlib.lines.Line2D at 0x10bd38c90>]
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def evalPoly(a,xData,x):
n = len(xData)-1 # order of polynomial
p = a[n]
for i in range(1,n+1):
#print "a[", (n-i),"]=", a[n-i]
p = a[n-i] + (x-xData[n-i])*p
return p
def coefficients(xData,yData):
n = len(xData)
a = np.zeros((n, n));
for i in range(0, n):
a[i, 0] = yData[i];
for j in range(1, n):
for k in range(0, n-j):
a[k, j] = (a[k+1, j-1] - a[k, j-1])/(xData[k+j]-xData[k])
return a[0, :] # return the zeroth row
xAll = [0, 10, 15, 20, 22.5, 30]
yAll = [0, 227.04, 362.78, 517.35, 602.97, 901.67]
plt.plot(xAll,yAll,'bo',markersize=10)
xData = xAll
print "xData=",xData
yData = yAll
print "yData=",yData
a = coefficients(xData, yData)
print "a=",a
y = evalPoly(a, xData, 16)
print "f(16)=", y
xs=np.linspace(0, 30, 50)
ys=np.zeros(50)
i=0
for x in xs:
ys[i] = evalPoly(a,xData,x)
i=i+1
plt.plot(xs,ys,'r--')
xData= [0, 10, 15, 20, 22.5, 30] yData= [0, 227.04, 362.78, 517.35, 602.97, 901.67] a= [ 0.00000000e+00 2.27040000e+01 2.96266667e-01 4.01666667e-03 6.30222222e-05 1.43407407e-06] f(16)= 392.070578916
[<matplotlib.lines.Line2D at 0x10cb96110>]
# add the data points (0,8) (8,0) (3,2) (4,5) (1,12)
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def evalPoly(a,xData,x):
n = len(xData)-1 # order of polynomial
p = a[n]
for i in range(1,n+1):
#print "a[", (n-i),"]=", a[n-i]
p = a[n-i] + (x-xData[n-i])*p
return p
def coefficients(xData,yData):
n = len(xData)
a = np.zeros((n, n));
for i in range(0, n):
a[i, 0] = yData[i];
for j in range(1, n):
for k in range(0, n-j):
a[k, j] = (a[k+1, j-1] - a[k, j-1])/(xData[k+j]-xData[k])
return a[0, :] # return the zeroth row
xAll = [8, 4, 0, 1, 3]
yAll = [0, 5, 8, 12, 2]
plt.plot(xAll,yAll,'bo',markersize=10)
xData = xAll
print "xData=",xData
yData = yAll
print "yData=",yData
a = coefficients(xData, yData)
print "a=",a
xs=np.linspace(-0.2, 8.2, 50)
ys=np.zeros(50)
i=0
for x in xs:
ys[i] = evalPoly(a,xData,x)
i=i+1
plt.plot(xs,ys,'r--')
xData= [8, 4, 0, 1, 3] yData= [0, 5, 8, 12, 2] a= [ 0. -1.25 -0.0625 0.2172619 -0.23988095]
[<matplotlib.lines.Line2D at 0x1072a2990>]