Source for file polynomialBestFitClass.php
Documentation is available at polynomialBestFitClass.php
* Copyright (c) 2006 - 2010 PHPExcel
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version 1.7.3c, 2010-06-01
require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php';
require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/JAMA/Matrix.php';
* PHPExcel_Polynomial_Best_Fit
* @package PHPExcel_Shared_Best_Fit
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
foreach($slope as $key => $value) {
$retVal += $value * pow($xValue, $key + 1);
} // function getValueOfYForX()
} // function getValueOfXForY()
$equation = 'Y = '. $intersect;
foreach($slope as $key => $value) {
$equation .= ' + '. $value. ' * X';
$equation .= '^'. ($key + 1);
} // function getEquation()
foreach($this->_slope as $coefficient) {
$coefficients[] = round($coefficient,$dp);
} // function getCoefficients()
private function _polynomial_regression($order, $yValues, $xValues, $const) {
$xy_sum += $xValues[$i] * $yValues[$i];
$xx_sum += $xValues[$i] * $xValues[$i];
$yy_sum += $yValues[$i] * $yValues[$i];
* This routine uses logic from the PHP port of polyfit version 0.1
* written by Michael Bommarito and Paul Meagher
* The function fits a polynomial function of order $order through
* a series of x-y data points using least squares.
for ($j = 0; $j <= $order; ++ $j) {
$A[$i][$j] = pow($xValues[$i], $j);
$B[$i] = array($yValues[$i]);
$C = $matrixA->solve($matrixB);
for($i = 0; $i < $C->m; ++ $i) {
$this->_slope = $coefficients;
foreach($this->_xValues as $xKey => $xValue) {
} // function _polynomial_regression()
function __construct($order, $yValues, $xValues= array(), $const= True) {
if (parent::__construct($yValues, $xValues) !== False) {
$this->_polynomial_regression($order, $yValues, $xValues, $const);
} // function __construct()
} // class polynomialBestFit
|