Overview

Packages

  • JAMA
  • None
  • PHP
  • PHPExcel
    • CachedObjectStorage
    • Calculation
    • Cell
    • Chart
      • Renderer
    • Reader
      • Excel2007
      • Excel5
    • RichText
    • Settings
    • Shared
      • Escher
      • OLE
      • Trend
      • ZipArchive
    • Style
    • Worksheet
      • Drawing
    • Writer
      • 2007
      • CSV
      • Excel2007
      • Excel5
      • HTML
      • PDF

Classes

  • CholeskyDecomposition
  • Dao
  • DateTime
  • DateTimeZone
  • DOMNode
  • EigenvalueDecomposition
  • Elemento
  • Historial
  • Irradiacion
  • Latitud
  • MotorPhp
  • Panel
  • PclZip
  • Periodo
  • PHPExcel
  • PHPExcel_Autoloader
  • PHPExcel_Best_Fit
  • PHPExcel_CachedObjectStorage_APC
  • PHPExcel_CachedObjectStorage_CacheBase
  • PHPExcel_CachedObjectStorage_DiscISAM
  • PHPExcel_CachedObjectStorage_Igbinary
  • PHPExcel_CachedObjectStorage_Memcache
  • PHPExcel_CachedObjectStorage_Memory
  • PHPExcel_CachedObjectStorage_MemoryGZip
  • PHPExcel_CachedObjectStorage_MemorySerialized
  • PHPExcel_CachedObjectStorage_PHPTemp
  • PHPExcel_CachedObjectStorage_SQLite
  • PHPExcel_CachedObjectStorage_SQLite3
  • PHPExcel_CachedObjectStorage_Wincache
  • PHPExcel_CachedObjectStorageFactory
  • PHPExcel_CalcEngine_CyclicReferenceStack
  • PHPExcel_CalcEngine_Logger
  • PHPExcel_Calculation
  • PHPExcel_Calculation_Database
  • PHPExcel_Calculation_DateTime
  • PHPExcel_Calculation_Engineering
  • PHPExcel_Calculation_ExceptionHandler
  • PHPExcel_Calculation_Financial
  • PHPExcel_Calculation_FormulaParser
  • PHPExcel_Calculation_FormulaToken
  • PHPExcel_Calculation_Function
  • PHPExcel_Calculation_Functions
  • PHPExcel_Calculation_Logical
  • PHPExcel_Calculation_LookupRef
  • PHPExcel_Calculation_MathTrig
  • PHPExcel_Calculation_Statistical
  • PHPExcel_Calculation_TextData
  • PHPExcel_Calculation_Token_Stack
  • PHPExcel_Cell
  • PHPExcel_Cell_AdvancedValueBinder
  • PHPExcel_Cell_DataType
  • PHPExcel_Cell_DataValidation
  • PHPExcel_Cell_DefaultValueBinder
  • PHPExcel_Cell_Hyperlink
  • PHPExcel_Chart
  • PHPExcel_Chart_DataSeries
  • PHPExcel_Chart_DataSeriesValues
  • PHPExcel_Chart_Layout
  • PHPExcel_Chart_Legend
  • PHPExcel_Chart_PlotArea
  • PHPExcel_Chart_Renderer_jpgraph
  • PHPExcel_Chart_Title
  • PHPExcel_Comment
  • PHPExcel_DocumentProperties
  • PHPExcel_DocumentSecurity
  • PHPExcel_Exponential_Best_Fit
  • PHPExcel_HashTable
  • PHPExcel_IOFactory
  • PHPExcel_Linear_Best_Fit
  • PHPExcel_Logarithmic_Best_Fit
  • PHPExcel_NamedRange
  • PHPExcel_Polynomial_Best_Fit
  • PHPExcel_Power_Best_Fit
  • PHPExcel_Reader_Abstract
  • PHPExcel_Reader_CSV
  • PHPExcel_Reader_DefaultReadFilter
  • PHPExcel_Reader_Excel2003XML
  • PHPExcel_Reader_Excel2007
  • PHPExcel_Reader_Excel2007_Chart
  • PHPExcel_Reader_Excel2007_Theme
  • PHPExcel_Reader_Excel5
  • PHPExcel_Reader_Excel5_Escher
  • PHPExcel_Reader_Excel5_MD5
  • PHPExcel_Reader_Excel5_RC4
  • PHPExcel_Reader_Gnumeric
  • PHPExcel_Reader_HTML
  • PHPExcel_Reader_OOCalc
  • PHPExcel_Reader_SYLK
  • PHPExcel_ReferenceHelper
  • PHPExcel_RichText
  • PHPExcel_RichText_Run
  • PHPExcel_RichText_TextElement
  • PHPExcel_Settings
  • PHPExcel_Shared_CodePage
  • PHPExcel_Shared_Date
  • PHPExcel_Shared_Drawing
  • PHPExcel_Shared_Escher
  • PHPExcel_Shared_Escher_DgContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer
  • PHPExcel_Shared_Escher_DggContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
  • PHPExcel_Shared_Excel5
  • PHPExcel_Shared_File
  • PHPExcel_Shared_Font
  • PHPExcel_Shared_JAMA_LUDecomposition
  • PHPExcel_Shared_JAMA_Matrix
  • PHPExcel_Shared_JAMA_QRDecomposition
  • PHPExcel_Shared_OLE
  • PHPExcel_Shared_OLE_ChainedBlockStream
  • PHPExcel_Shared_OLE_PPS
  • PHPExcel_Shared_OLE_PPS_File
  • PHPExcel_Shared_OLE_PPS_Root
  • PHPExcel_Shared_OLERead
  • PHPExcel_Shared_PasswordHasher
  • PHPExcel_Shared_String
  • PHPExcel_Shared_TimeZone
  • PHPExcel_Shared_XMLWriter
  • PHPExcel_Shared_ZipArchive
  • PHPExcel_Shared_ZipStreamWrapper
  • PHPExcel_Style
  • PHPExcel_Style_Alignment
  • PHPExcel_Style_Border
  • PHPExcel_Style_Borders
  • PHPExcel_Style_Color
  • PHPExcel_Style_Conditional
  • PHPExcel_Style_Fill
  • PHPExcel_Style_Font
  • PHPExcel_Style_NumberFormat
  • PHPExcel_Style_Protection
  • PHPExcel_Style_Supervisor
  • PHPExcel_Worksheet
  • PHPExcel_Worksheet_AutoFilter
  • PHPExcel_Worksheet_AutoFilter_Column
  • PHPExcel_Worksheet_AutoFilter_Column_Rule
  • PHPExcel_Worksheet_BaseDrawing
  • PHPExcel_Worksheet_CellIterator
  • PHPExcel_Worksheet_ColumnDimension
  • PHPExcel_Worksheet_Drawing
  • PHPExcel_Worksheet_Drawing_Shadow
  • PHPExcel_Worksheet_HeaderFooter
  • PHPExcel_Worksheet_HeaderFooterDrawing
  • PHPExcel_Worksheet_MemoryDrawing
  • PHPExcel_Worksheet_PageMargins
  • PHPExcel_Worksheet_PageSetup
  • PHPExcel_Worksheet_Protection
  • PHPExcel_Worksheet_Row
  • PHPExcel_Worksheet_RowDimension
  • PHPExcel_Worksheet_RowIterator
  • PHPExcel_Worksheet_SheetView
  • PHPExcel_WorksheetIterator
  • PHPExcel_Writer_Abstract
  • PHPExcel_Writer_CSV
  • PHPExcel_Writer_Excel2007
  • PHPExcel_Writer_Excel2007_Chart
  • PHPExcel_Writer_Excel2007_Comments
  • PHPExcel_Writer_Excel2007_ContentTypes
  • PHPExcel_Writer_Excel2007_DocProps
  • PHPExcel_Writer_Excel2007_Drawing
  • PHPExcel_Writer_Excel2007_Rels
  • PHPExcel_Writer_Excel2007_RelsRibbon
  • PHPExcel_Writer_Excel2007_RelsVBA
  • PHPExcel_Writer_Excel2007_StringTable
  • PHPExcel_Writer_Excel2007_Style
  • PHPExcel_Writer_Excel2007_Theme
  • PHPExcel_Writer_Excel2007_Workbook
  • PHPExcel_Writer_Excel2007_Worksheet
  • PHPExcel_Writer_Excel2007_WriterPart
  • PHPExcel_Writer_Excel5
  • PHPExcel_Writer_Excel5_BIFFwriter
  • PHPExcel_Writer_Excel5_Escher
  • PHPExcel_Writer_Excel5_Font
  • PHPExcel_Writer_Excel5_Parser
  • PHPExcel_Writer_Excel5_Workbook
  • PHPExcel_Writer_Excel5_Worksheet
  • PHPExcel_Writer_Excel5_Xf
  • PHPExcel_Writer_HTML
  • PHPExcel_Writer_PDF
  • PHPExcel_Writer_PDF_Core
  • PHPExcel_Writer_PDF_DomPDF
  • PHPExcel_Writer_PDF_mPDF
  • PHPExcel_Writer_PDF_tcPDF
  • Provincia
  • Radiacion
  • SingularValueDecomposition
  • Sistema
  • trendClass
  • xajax
  • xajaxArgumentManager
  • xajaxCallableObject
  • xajaxCallableObjectPlugin
  • xajaxControl
  • xajaxControlContainer
  • xajaxCustomRequest
  • xajaxCustomResponse
  • xajaxEvent
  • xajaxEventPlugin
  • xajaxFunctionPlugin
  • xajaxIncludeClientScriptPlugin
  • xajaxLanguageManager
  • xajaxPlugin
  • xajaxPluginManager
  • xajaxRequest
  • xajaxRequestPlugin
  • xajaxResponse
  • xajaxResponseManager
  • xajaxResponsePlugin
  • xajaxScriptPlugin
  • xajaxUserFunction
  • XMLWriter

Interfaces

  • DateTimeInterface
  • Iterator
  • PHPExcel_CachedObjectStorage_ICache
  • PHPExcel_Cell_IValueBinder
  • PHPExcel_IComparable
  • PHPExcel_Reader_IReader
  • PHPExcel_Reader_IReadFilter
  • PHPExcel_RichText_ITextElement
  • PHPExcel_Writer_IWriter
  • Throwable
  • Traversable

Exceptions

  • Exception
  • PHPExcel_Calculation_Exception
  • PHPExcel_Chart_Exception
  • PHPExcel_Exception
  • PHPExcel_Reader_Exception
  • PHPExcel_Writer_Exception

Functions

  • acosh
  • agregar_elemento
  • asinh
  • atanh
  • borrar_elementos
  • borrar_gdm_ab
  • borrar_irradiacion
  • borrar_latitud
  • borrar_panel
  • borrar_periodo
  • borrar_pmp_min_pmp_max
  • borrar_radiacion
  • borrar_resumen
  • borrar_sistema
  • borrar_sombra
  • gdm_ab
  • grabar_resumen
  • historial
  • hypo
  • irradiacion
  • JAMAError
  • latitud
  • limpiar_historial
  • login
  • mb_str_replace
  • mostrar_energia_total_ch
  • mostrar_panel_md_th
  • mostrar_panel_th
  • mostrar_radiacion_md_th
  • mostrar_radiacion_th
  • mostrar_resumen_th
  • panel
  • PclZipUtilCopyBlock
  • PclZipUtilOptionText
  • PclZipUtilPathInclusion
  • PclZipUtilPathReduction
  • PclZipUtilRename
  • PclZipUtilTranslateWinPath
  • periodo
  • pmp_min_pmp_max
  • preparar_panel
  • preparar_radiacion
  • preparar_radiacion_media
  • radiacion
  • resumen
  • sistema
  • sombra
  • xajaxCompressFile
  • xajaxErrorHandler
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
  1: <?php
  2: /**
  3:  * PHPExcel
  4:  *
  5:  * Copyright (c) 2006 - 2014 PHPExcel
  6:  *
  7:  * This library is free software; you can redistribute it and/or
  8:  * modify it under the terms of the GNU Lesser General Public
  9:  * License as published by the Free Software Foundation; either
 10:  * version 2.1 of the License, or (at your option) any later version.
 11:  *
 12:  * This library is distributed in the hope that it will be useful,
 13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 15:  * Lesser General Public License for more details.
 16:  *
 17:  * You should have received a copy of the GNU Lesser General Public
 18:  * License along with this library; if not, write to the Free Software
 19:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 20:  *
 21:  * @category   PHPExcel
 22:  * @package    PHPExcel_Shared_Trend
 23:  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 24:  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
 25:  * @version    1.8.0, 2014-03-02
 26:  */
 27: 
 28: 
 29: require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php';
 30: require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/JAMA/Matrix.php';
 31: 
 32: 
 33: /**
 34:  * PHPExcel_Polynomial_Best_Fit
 35:  *
 36:  * @category   PHPExcel
 37:  * @package    PHPExcel_Shared_Trend
 38:  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 39:  */
 40: class PHPExcel_Polynomial_Best_Fit extends PHPExcel_Best_Fit
 41: {
 42:     /**
 43:      * Algorithm type to use for best-fit
 44:      * (Name of this trend class)
 45:      *
 46:      * @var string
 47:      **/
 48:     protected $_bestFitType     = 'polynomial';
 49: 
 50:     /**
 51:      * Polynomial order
 52:      *
 53:      * @protected
 54:      * @var int
 55:      **/
 56:     protected $_order           = 0;
 57: 
 58: 
 59:     /**
 60:      * Return the order of this polynomial
 61:      *
 62:      * @return   int
 63:      **/
 64:     public function getOrder() {
 65:         return $this->_order;
 66:     }   //  function getOrder()
 67: 
 68: 
 69:     /**
 70:      * Return the Y-Value for a specified value of X
 71:      *
 72:      * @param    float      $xValue         X-Value
 73:      * @return   float                      Y-Value
 74:      **/
 75:     public function getValueOfYForX($xValue) {
 76:         $retVal = $this->getIntersect();
 77:         $slope = $this->getSlope();
 78:         foreach($slope as $key => $value) {
 79:             if ($value != 0.0) {
 80:                 $retVal += $value * pow($xValue, $key + 1);
 81:             }
 82:         }
 83:         return $retVal;
 84:     }   //  function getValueOfYForX()
 85: 
 86: 
 87:     /**
 88:      * Return the X-Value for a specified value of Y
 89:      *
 90:      * @param    float      $yValue         Y-Value
 91:      * @return   float                      X-Value
 92:      **/
 93:     public function getValueOfXForY($yValue) {
 94:         return ($yValue - $this->getIntersect()) / $this->getSlope();
 95:     }   //  function getValueOfXForY()
 96: 
 97: 
 98:     /**
 99:      * Return the Equation of the best-fit line
100:      *
101:      * @param    int        $dp     Number of places of decimal precision to display
102:      * @return   string
103:      **/
104:     public function getEquation($dp=0) {
105:         $slope = $this->getSlope($dp);
106:         $intersect = $this->getIntersect($dp);
107: 
108:         $equation = 'Y = '.$intersect;
109:         foreach($slope as $key => $value) {
110:             if ($value != 0.0) {
111:                 $equation .= ' + '.$value.' * X';
112:                 if ($key > 0) {
113:                     $equation .= '^'.($key + 1);
114:                 }
115:             }
116:         }
117:         return $equation;
118:     }   //  function getEquation()
119: 
120: 
121:     /**
122:      * Return the Slope of the line
123:      *
124:      * @param    int        $dp     Number of places of decimal precision to display
125:      * @return   string
126:      **/
127:     public function getSlope($dp=0) {
128:         if ($dp != 0) {
129:             $coefficients = array();
130:             foreach($this->_slope as $coefficient) {
131:                 $coefficients[] = round($coefficient,$dp);
132:             }
133:             return $coefficients;
134:         }
135:         return $this->_slope;
136:     }   //  function getSlope()
137: 
138: 
139:     public function getCoefficients($dp=0) {
140:         return array_merge(array($this->getIntersect($dp)),$this->getSlope($dp));
141:     }   //  function getCoefficients()
142: 
143: 
144:     /**
145:      * Execute the regression and calculate the goodness of fit for a set of X and Y data values
146:      *
147:      * @param   int         $order      Order of Polynomial for this regression
148:      * @param   float[]     $yValues    The set of Y-values for this regression
149:      * @param   float[]     $xValues    The set of X-values for this regression
150:      * @param   boolean     $const
151:      */
152:     private function _polynomial_regression($order, $yValues, $xValues, $const) {
153:         // calculate sums
154:         $x_sum = array_sum($xValues);
155:         $y_sum = array_sum($yValues);
156:         $xx_sum = $xy_sum = 0;
157:         for($i = 0; $i < $this->_valueCount; ++$i) {
158:             $xy_sum += $xValues[$i] * $yValues[$i];
159:             $xx_sum += $xValues[$i] * $xValues[$i];
160:             $yy_sum += $yValues[$i] * $yValues[$i];
161:         }
162:         /*
163:          *  This routine uses logic from the PHP port of polyfit version 0.1
164:          *  written by Michael Bommarito and Paul Meagher
165:          *
166:          *  The function fits a polynomial function of order $order through
167:          *  a series of x-y data points using least squares.
168:          *
169:          */
170:         for ($i = 0; $i < $this->_valueCount; ++$i) {
171:             for ($j = 0; $j <= $order; ++$j) {
172:                 $A[$i][$j] = pow($xValues[$i], $j);
173:             }
174:         }
175:         for ($i=0; $i < $this->_valueCount; ++$i) {
176:             $B[$i] = array($yValues[$i]);
177:         }
178:         $matrixA = new Matrix($A);
179:         $matrixB = new Matrix($B);
180:         $C = $matrixA->solve($matrixB);
181: 
182:         $coefficients = array();
183:         for($i = 0; $i < $C->m; ++$i) {
184:             $r = $C->get($i, 0);
185:             if (abs($r) <= pow(10, -9)) {
186:                 $r = 0;
187:             }
188:             $coefficients[] = $r;
189:         }
190: 
191:         $this->_intersect = array_shift($coefficients);
192:         $this->_slope = $coefficients;
193: 
194:         $this->_calculateGoodnessOfFit($x_sum,$y_sum,$xx_sum,$yy_sum,$xy_sum);
195:         foreach($this->_xValues as $xKey => $xValue) {
196:             $this->_yBestFitValues[$xKey] = $this->getValueOfYForX($xValue);
197:         }
198:     }   //  function _polynomial_regression()
199: 
200: 
201:     /**
202:      * Define the regression and calculate the goodness of fit for a set of X and Y data values
203:      *
204:      * @param   int         $order      Order of Polynomial for this regression
205:      * @param   float[]     $yValues    The set of Y-values for this regression
206:      * @param   float[]     $xValues    The set of X-values for this regression
207:      * @param   boolean     $const
208:      */
209:     function __construct($order, $yValues, $xValues=array(), $const=True) {
210:         if (parent::__construct($yValues, $xValues) !== False) {
211:             if ($order < $this->_valueCount) {
212:                 $this->_bestFitType .= '_'.$order;
213:                 $this->_order = $order;
214:                 $this->_polynomial_regression($order, $yValues, $xValues, $const);
215:                 if (($this->getGoodnessOfFit() < 0.0) || ($this->getGoodnessOfFit() > 1.0)) {
216:                     $this->_error = True;
217:                 }
218:             } else {
219:                 $this->_error = True;
220:             }
221:         }
222:     }   //  function __construct()
223: 
224: }   //  class polynomialBestFit
Autene API documentation generated by ApiGen