Re: Interpolation problem, optimization algorithms

*To*: mathgroup at smc.vnet.net*Subject*: [mg58970] Re: Interpolation problem, optimization algorithms*From*: Ed Peschko <esp5 at mdssdev05.comp.pge.com>*Date*: Tue, 26 Jul 2005 04:01:36 -0400 (EDT)*References*: <dbt3u7$sms$1@smc.vnet.net> <Pine.LNX.4.61.0507251805400.4535@walhalla.imtek.uni-freiburg.de>*Sender*: owner-wri-mathgroup at wolfram.com

On Mon, Jul 25, 2005 at 06:06:59PM +0200, Oliver Ruebenkoenig wrote: > > > you might want to have a look at > > imsUnstructuredInterpolation > > or use shape functions > > imsShapeFunctionInterpolation > > you find the code here: > > http://www.imtek.uni-freiburg.de/simulation/mathematica/IMSweb/ > > you may also join the mailing list here: > > http://elmo.imtek.uni-freiburg.de/mailman/listinfo/ims First of all, thanks for the pointer. This (ims) looks like its going to have quite a wealth of information and good tips. But to my problem at hand - the problem is not that I can't form interpolation funcions via splines, the problem is that I've got a limited amount of points that I can use for splines. In other words, say I've got 1900 points. I've got to choose 10 of those points in order to form my spline. My problem is - which points do I choose? That's where mathematica is falling down. I tried 'Fit' over regions, and kept the number of points to 10, and tried to pick these points via NMinimize. And NMinimize failed dismally at getting to a good solution. As I said, the only thing that worked was taking my problem out of mathematica and running it through ASA. However, ims looks as if it gives me another approach to try to NMinimize, so I'll try casting it in terms of splines and retry it. Ed > > On Sat, 23 Jul 2005, Ed Peschko wrote: > > > hey all, > > > > I have a group of very noisy functions that I want to interpolate and simplify and > > they have two things in common: they are diophantine, positive, and are almost > > linear over certain ranges. > > > > For example, one function might be linear for the first 10 values of x, then have > > a different linear approximation over 11-50, then a different one over 51-100, etc. > > > > > > > > Hence, I'd like to simplify them into piecewise linear functions, ie: > > > > > > f[x_] := a1 * x + b1 /; x < 10; > > f[x_] := a2 * x + b2 /; 10 <= x < 50; > > f[x_] := a3 * x + b3 /; 50 <= x < 100; > > f[x_] := b4 /; x >= 100; > > > > > > The main thing is, however, that I don't know beforehand *which* ranges correspond > > to which equations - its not all that clear by just looking at the graphs - > > and I'd like to find the best fit possible for each. > > > > > > Anyways, what I was wondering was - how do the Interpolation and ListInterpolation > > functions work? Can you make them non-black box, and put constraints on them > > like those listed above? > > > > And if not, what approach would people suggest that I take? I've already tried > > NMinimize with pretty poor results; the functions are slow, and don't seem to > > converge to good solutions. > > > > > > Ed > > > > ( > > ps - is there a 'beefed up' version of the algorithms to do minimization problems > > inside of Mathematica? The one thing that I *did* try which seemed to have > > good results was to hand-code a c program to do fitting and feed it into a > > package called adaptive simulated annealing.. > > > > But even then I'm not guaranteed an optimum fit, the times to find it are slow, > > and I'd rather have a mathematica-only solution if possible. > > ) > > > > > > > Oliver Ruebenkoenig, <ruebenko at imtek.de> > Phone: ++49 +761 203 7385