[Scipy-svn] r3068 - trunk/Lib/interpolate
scipy-svn@scip...
scipy-svn@scip...
Fri Jun 1 07:09:13 CDT 2007
Author: oliphant
Date: 2007-06-01 07:09:10 -0500 (Fri, 01 Jun 2007)
New Revision: 3068
Modified:
trunk/Lib/interpolate/__fitpack.h
trunk/Lib/interpolate/interpolate.py
Log:
Add Lagrange interpolating polynomial
Modified: trunk/Lib/interpolate/__fitpack.h
===================================================================
--- trunk/Lib/interpolate/__fitpack.h 2007-06-01 08:47:46 UTC (rev 3067)
+++ trunk/Lib/interpolate/__fitpack.h 2007-06-01 12:09:10 UTC (rev 3068)
@@ -829,7 +829,7 @@
"integer-spaced, or cardinal spline matrix a bit faster.";
static PyObject *_bsplmat(PyObject *dummy, PyObject *args) {
int k,N,i,numbytes,j, equal;
- int dims[2];
+ npy_intp dims[2];
PyObject *x_i_py=NULL;
PyArrayObject *x_i=NULL, *BB=NULL;
double *t=NULL, *h=NULL, *ptr;
@@ -970,7 +970,7 @@
"then it produces the result as if the sample distance were dx";
static PyObject *_bspldismat(PyObject *dummy, PyObject *args) {
int k,N,i,j, equal, m;
- int dims[2];
+ npy_intp dims[2];
PyObject *x_i_py=NULL;
PyArrayObject *x_i=NULL, *BB=NULL;
double *t=NULL, *h=NULL, *ptr, *dptr;
Modified: trunk/Lib/interpolate/interpolate.py
===================================================================
--- trunk/Lib/interpolate/interpolate.py 2007-06-01 08:47:46 UTC (rev 3067)
+++ trunk/Lib/interpolate/interpolate.py 2007-06-01 12:09:10 UTC (rev 3068)
@@ -4,7 +4,7 @@
"""
__all__ = ['interp1d', 'interp2d', 'spline', 'spleval', 'splmake', 'spltopp',
- 'ppform']
+ 'ppform', 'lagrange']
from numpy import shape, sometrue, rank, array, transpose, \
swapaxes, searchsorted, clip, take, ones, putmask, less, greater, \
@@ -23,6 +23,21 @@
all = sometrue(all,axis=0)
return all
+def lagrange(x, w):
+ """Return the Lagrange interpolating polynomial of the data-points (x,w)
+ """
+ M = len(x)
+ p = poly1d(0.0)
+ for j in xrange(M):
+ pt = poly1d(w[j])
+ for k in xrange(M):
+ if k == j: continue
+ fac = x[j]-x[k]
+ pt *= poly1d([1.0,-x[k]])/fac
+ p += pt
+ return p
+
+
# !! Need to find argument for keeping initialize. If it isn't
# !! found, get rid of it!
More information about the Scipy-svn
mailing list