MathGroup Archive 2004

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

Search the Archive

Re: Adaptive FunctionInterpolation[] ?


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