There is pchip() in the (inofficial) package NumericalMath at https://github.com/hwborchers/NumericalMath.jl This implements a simplified version of piecewise cubic Hermite interpolation as described by Moler in one of his textbook chapters. Should work as expected in most cases.
On Wednesday, November 12, 2014 6:21:59 PM UTC+1, Nils Gudat wrote: > > I'm still playing around with Julia's interpolation options after the > pointers I got from Tim Holy and Kyle Barbary in this thread. > <https://groups.google.com/forum/#!topic/julia-users/57SztZSCjLc> > The one thing I haven't been able to do is a shape preserving > interpolation. In economics, the concavity of (say) a utility function is > often central to the problems at hand, and hence crucial to preserve during > interpolation. My attempts with some of the interpolation routines can be > found in this git, > <https://github.com/nilshg/LearningModels/blob/master/Test_Interpolations.jl> > but none of them really achieve what I want. The code on git should be self > contained and produces graphs displaying the interpolation of the function > -(1/x) in one dimension and -(1/(y+z)) in two dimensions on rather coarse > grids. > > As I see it, there are two issues with my approach: (i) using regular > grids is clearly not a great idea here, as all the curvature of the > function is between 0 and 10, while only few points would suffice to > reasonably approximate the function for large values of x, and (ii) > quadratic splines don't preserve concavity of the function. > > Are there any other packages in Julia that would support irregularly > spaced grids and/or do a shape-preserving interpolation, such as piecewise > cubic Hermite (like Matlab's pchip), biharmonic or thin splate (as in > Matlab's griddata)? > > Also, as you might be able to tell from the git, I haven't succeded in > using the ApproXD package, mainly because of the lack of documentation. > Does anyone have a simple example of how to use it? > > Many thanks, > Nils >
