File: newinterpol.py

package info (click to toggle)
pycode-browser 1%3A1.03-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 9,860 kB
  • sloc: python: 2,919; xml: 152; makefile: 76
file content (29 lines) | stat: -rwxr-xr-x 517 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from pylab import *

def eval(a,xpoints,x):
    n = len(xpoints) - 1   
    p = a[n]
    for k in range(1,n+1):
        p = a[n-k] + (x -xpoints[n-k]) * p
    return p

def coef(x,y):
	a = copy(y)
	m = len(x)
	for k in range(1,m):
			a[k:m] = (a[k:m] - a[k-1])/(x[k:m]-x[k-1])
	return a

x  = array([0,1,2,3])
y  = array([0,3,14,39])
coef = coef(x,y)

NP = 20
newx = linspace(0,3, NP) # New x-values
newy = zeros(NP)
for i in range(NP):
	newy[i] = eval(coef, x, newx[i])
plot(newx, newy,'-x')
plot(x, y,'ro')
show()