MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Adaptive FunctionInterpolation[] ?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50180] Re: Adaptive FunctionInterpolation[] ?
  • From: franjesus at hotmail.com (franjesus)
  • Date: Thu, 19 Aug 2004 06:28:10 -0400 (EDT)
  • References: <cfup5v$5ur$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

I solved a bug in the original version, which failed when the limits
of interpolation were not the same for all the variables present in
the expression.
This version works as expected:

AdaptiveFunctionInterpolation[expr_, x__, opts___?OptionQ] :=
  Module[{acc, g, gridpts, iarrays, niacc, pts, vars, vol},
    acc = AccuracyGoal /. {opts} /. AccuracyGoal -> 6;
    vol = Times @@ ({x}[[All, 3]] - {x}[[All, 2]]);
    niacc = -Log[10, 10^-acc vol];
    vars = {x}[[All, 1]];
    pts = {};
    NIntegrate[expr, x, AccuracyGoal -> niacc, EvaluationMonitor :> 
      PrependTo[pts, vars]];
    pts = Partition[Flatten[pts], Length[vars]];
    gridpts = (Union[pts[[All, #1]], {x}[[#1, {2, 3}]]] &) /@
Range[Length[vars]];
    iarrays = expr /. Outer[Thread[vars -> {##1}] &, Sequence @@
gridpts];
    ListInterpolation[iarrays, gridpts]
    ]


  • Prev by Date: Re: Beware of NSolve
  • Next by Date: Re: 7 equations and 7 unknowns (non-linear equations)
  • Previous by thread: Re: Adaptive FunctionInterpolation[] ?
  • Next by thread: Licence manager network connections