hi , i'm trying to implement lagrange interpolation with the following code and it seems i'm failing, i tried to debug it but my patience has run out. have a go please and give me ideeas on how to make it do what it's supposed to do. i've read http://mathworld.wolfram.com/LagrangeInterpolatingPolynomial.html this and wrote the code.
use strict; use warnings; use Math::Polynomial; use Data::Dumper; #points to interpolate tghrough #(x,y) my @points = @ARGV; my @pair_points; #the followin line is only for debugging @points = ( 1,3,5,9,20,30) ; while ( scalar @points ) { push @pair_points , [ pop @points , pop @points ]; } sub P_j { my $n = scalar @points / 2; my $j = shift; my $pol = Math::Polynomial->new(1); $pol *= $pair_points[$j]->[1]; for( my $k = 0 ; $k < $n ; $k++ ) { my $generic_pol = Math::Polynomial->new( 1, -$pair_points[$ +k]->[0] ) / ( $pair_points[$j]->[0] - $pair_points[$k] +->[0]) unless $k == $j; $pol *= $generic_pol; } return $pol; } print P_j 4;
In reply to lagrange interpolation by spx2
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |