File Source for LagrangeInterpolation.php

PHPExcel

# Source for file LagrangeInterpolation.php

Documentation is available at LagrangeInterpolation.php

1. <?php
3. require_once "../Matrix.php";
5. /**
6. * Given n points (x0,y0)...(xn-1,yn-1), the following methid 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. * @author Jacob Dreyer
16. * @author Paul Meagher (port to PHP and minor changes)
17. *
18. * @param x[] float
19. * @param y[] float
20. */
21. class LagrangeInterpolation {
23. public function findPolynomialFactors($x, $y) {
24. $n = count($x);
26. $data = array(); // double[n][n];
27. $rhs = array(); // double[n];
29. for ($i = 0; $i < $n; ++$i) {
30. $v = 1;
31. for ($j = 0; $j < $n; ++$j) {
32. $data[$i][$n-$j-1] = $v;
33. $v *= $x[$i];
34. }
35. $rhs[$i] = $y[$i];
36. }
38. // Solve m * s = b
39. $m = new Matrix($data);
40. $b = new Matrix($rhs, $n);
42. $s = $m->solve($b);
44. return $s->getRowPackedCopy();
45. } // function findPolynomialFactors()
47. } // class LagrangeInterpolation
50. $x = array(2.0, 1.0, 3.0);
51. $y = array(3.0, 4.0, 7.0);
53. $li = new LagrangeInterpolation;
54. $f = $li-> findPolynomialFactors($x, $y);
57. for ($i = 0; $i < 3; ++$i) {
58. echo $f[$i]."<br />";
59. }

Documentation generated on Sun, 27 Feb 2011 16:32:28 -0800 by phpDocumentor 1.4.3