Re: Precision of arguments to FunctionInterpolation

• To: mathgroup at smc.vnet.net
• Subject: [mg68412] Re: Precision of arguments to FunctionInterpolation
• From: Peter Pein <petsie at dordos.net>
• Date: Fri, 4 Aug 2006 03:59:26 -0400 (EDT)
• References: <eakeg1\$r1j\$1@smc.vnet.net> <easjk5\$fti\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Andrew Moylan schrieb:
> Here is some further information that makes the strangeness more
> obvious:
>
> The following three different calls to FunctionInterpolation all fail:
>
>  FunctionInterpolation[lowPrecisionSin[x], {x, 0, 1.`14}]
>  FunctionInterpolation[lowPrecisionSin[x], {x, 0, 1.`20}]
>  FunctionInterpolation[lowPrecisionSin[x], {x, 0, 1}]

the latter works in Mathematica 5.1 for Windows

>
> The only way that I can successfully interpolate to an upper bound of
> roughly 1 is by entering the upper bound as the
> exactly-machine-precision number "1.":
>
>   FunctionInterpolation[lowPrecisionSin[x], {x, 0, 1.}]
>
> Can anyone explain why higher-than-machine-precision (e.g. 1.`20),
> lower-than-machine-precision (e.g. 1.`14), and infinite precision (1)
> all fail, but exactly machine-precision succeeds here?
>

No, sorry.

> Secondly, does anyone know the meaning of the InterpolationPrecision
> option to FunctionInterpolation? In particular, with the default
> setting of InterpolationPrecision->Automatic, what value is
> automatically chosen?
>
>
You can test this using

Reap[FunctionInterpolation[((Sow[Precision[#1]]; #1) & )[lowPrecisionSin[x]], {x, 0., 1}]][[2, 1]]

which gives:

{5.1924023244417254, Infinity, Infinity, 4.999999999999999, 5.000000000000001, 5., 5., 5.,
5.000000000000001, 4.999999999999999, 5., 5.000000000000001, 5., 5., 4.999999999999999, 5.,
5., 4.999999999999999, 5.000000000000001, 5.000000000000001, 5.000000000000001, 5., 5.}

If you know the maximum precision of the function you want to interpolate (5 in this case), you can use
InterpolationPrecision->5:

intfuns = {f14, f20, finf} = (FunctionInterpolation[lowPrecisionSin[x],
{x, 0, SetPrecision[1., #1]}, InterpolationPrecision -> 5] & ) /@ {14, 20, Infinity};

SameQ @@ intfuns
--> True

Through[{f14, lowPrecisionSin, Sin}[0.6`14.000000000000002]]
--> {0.5646420701356566528`4.127871245474387, 0.5646424733950353572`5.000000000000002, 0.5646424733950353572009454457`14.056991706843485}

Peter

```

• Prev by Date: Re: Programming with .NET / hand over of variables
• Next by Date: Wolfram Workbench and package development
• Previous by thread: Re: Precision of arguments to FunctionInterpolation
• Next by thread: Re: Precision of arguments to FunctionInterpolation