default
[ class tree: default ] [ index: default ] [ all elements ]

Source for file LagrangeInterpolation2.php

Documentation is available at LagrangeInterpolation2.php

  1. <?php
  2.  
  3. require_once "../Matrix.php";
  4.  
  5. /**
  6.  * Given n points (x0,y0)...(xn-1,yn-1), the following method computes
  7.  * the polynomial factors of the n-1't degree polynomial passing through
  8.  * the n points.
  9.  *
  10.  * Example: Passing in three points (2,3) (1,4) and (3,7) will produce
  11.  * the results [2.5, -8.5, 10] which means that the points are on the
  12.  * curve y = 2.5x² - 8.5x + 10.
  13.  * 
  14.  * @see http://geosoft.no/software/lagrange/LagrangeInterpolation.java.html
  15.  * @see http://source.freehep.org/jcvsweb/ilc/LCSIM/wdview/lcsim/src/org/lcsim/fit/polynomial/PolynomialFitter.java
  16.  * @author Jacob Dreyer
  17.  * @author Paul Meagher (port to PHP and minor changes)
  18.  *
  19.  * @param x[] float
  20.  * @param y[] float
  21.  */   
  22.   
  23.   public function findPolynomialFactors($x$y{
  24.  
  25.     $n count($x);
  26.  
  27.     $data array();  // double[n][n];
  28.     $rhs  array();  // double[n];
  29.     
  30.     for ($i 0$i $n$i++{
  31.       $v 1;
  32.       for ($j 0$j $n$j++{
  33.         $data[$i][$n-$j-1$v;
  34.         $v *= $x[$i];
  35.       }
  36.  
  37.       $rhs[$i$y[$i];
  38.     }
  39.  
  40.     // Solve m * s = b
  41.     
  42.     $m new Matrix($data);
  43.     $b new Matrix($rhs$n);
  44.  
  45.     $s $m->solve($b);
  46.  
  47.     return $s->getRowPackedCopy();
  48.  
  49.   }
  50.  
  51. }
  52.  
  53. $x array(2.01.03.0);
  54. $y array(3.04.07.0);
  55.  
  56. $li new LagrangeInterpolation;
  57. $f $li->findPolynomialFactors($x$y);
  58.  
  59. for ($i 0$i 3$i++)
  60.   echo $f[$i]."<br />";
  61.  
  62. ?>

Documentation generated on Mon, 05 Jan 2009 20:38:00 +0100 by phpDocumentor 1.4.1