Problem with expand in lagrange interpolation
- Subject: Problem with expand in lagrange interpolation
- From: Gosei Furuya
- Date: Thu, 14 Jun 2007 01:52:19 +0900
hi
I think lagrange methods is numerically unstable.
so,before expand,we shoud rat(sum),after expand.
I recommend expand(rat(sum)).
> (%i15) load(interpol)$
> (%i16) poly:lagrange(m)$
> (%i17) subst(x=140,poly);
> (%o14) 15.72
if subst(x=140,expand(poly ))
return 68192.0
but subst(x=140.0,expand(rat(poly))
return 15.72000015995116
gosei
The error above happens sometimes, mostly when first coordinates are big
> numbers.
>
> When lagrange returns sum without postprocessing, the output is not very
> nice (that's why I introduced expand), but accurate:
>
> (%i15) poly;
> (%o15) 5.222111992945325E-6 (x - 149) (x - 148) (x - 147) (x - 146) (x -
> 145)
> (x - 144) (x - 143) (x - 142) (x - 141) (x - 140)
> - 4.891424162257496E-5 (x - 150) (x - 148) (x - 147) (x - 146) (x -
> 145)
> (x - 144) (x - 143) (x - 142) (x - 141) (x - 140)
> + 2.1825396825396828E-4 (x - 150) (x - 149) (x - 147) (x - 146) (x -
> 145)
> (x - 144) (x - 143) (x - 142) (x - 141) (x - 140)
> - 5.760582010582012E-4 (x - 150) (x - 149) (x - 148) (x - 146) (x -
> 145)
> (x - 144) (x - 143) (x - 142) (x - 141) (x - 140)
> + 0.00100462962962963 (x - 150) (x - 149) (x - 148) (x - 147) (x - 145)
> (x - 144) (x - 143) (x - 142) (x - 141) (x - 140)
> - .001207638888888889 (x - 150) (x - 149) (x - 148) (x - 147) (x - 146)
> (x - 144) (x - 143) (x - 142) (x - 141) (x - 140)
> + 9.380787037037037E-4 (x - 150) (x - 149) (x - 148) (x - 147) (x -
> 146)
> (x - 145) (x - 143) (x - 142) (x - 141) (x - 140)
> - 5.476190476190477E-4 (x - 150) (x - 149) (x - 148) (x - 147) (x -
> 146)
> (x - 145) (x - 144) (x - 142) (x - 141) (x - 140)
> + 1.8836805555555555E-4 (x - 150) (x - 149) (x - 148) (x - 147) (x -
> 146)
> (x - 145) (x - 144) (x - 143) (x - 141) (x - 140)
> - 4.2796516754850084E-5 (x - 150) (x - 149) (x - 148) (x - 147) (x -
> 146)
> (x - 145) (x - 144) (x - 143) (x - 142) (x - 140)
> - 4.3320105820105814E-6 (141 - x) (x - 150) (x - 149) (x - 148) (x -
> 147)
> (x - 146) (x - 145) (x - 144) (x - 143) (x - 142)
>
>
>
> I have also tested ratsimp(sum), but the output doesn't look nicer. As a
> conclusion, I think lagrange should return simply sum; or do you have a
> better idea?
>
> --
> Mario Rodriguez Riotorto
> www.biomates.net
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>