Login   Register  
PHP Classes
elePHPant
Icontem

File: example.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Richard Munroe  >  Numerical  >  example.php  >  Download  
File: example.php
Role: Example script
Content type: text/plain
Description: example of use of Numerical functions
Class: Numerical
Perform numerical and statistical functions
Author: By
Last change: Added minimum/maximum examples.
Date: 2011-02-11 11:34
Size: 6,574 bytes
 

Contents

Class file image Download
<?php

include_once("class.Numerical.php") ;

/*
 * Solve the following linear equations:
 *
 * 3x + 2y - z = 1
 * 2x - 2y + 4z = -2
 * -x + y/2 - z = 0
 */

$a =
    array(
        array(
2,    -2,     4,      -2),
        array(
3,    2,      -1,     1),
        array(-
1,   .5,     -1,     0)) ;

$f Numerical::gaussianElimination(3$a) ;

var_dump($f) ;

$a =
    array(
        array(-
3,    2),
        array(
5,    -3)) ;

$f Numerical::gaussianInversion($a) ;

var_dump($f) ;

/*
 * Find the factors of a number.
 */

$f Numerical::factor(400) ;
var_export($f) ;

$g Numerical::factor(423) ;
var_export($g) ;

/*
 * Find the maximum or minimum of an interval.
 */

$f create_function('$x''return ( - ($x * $x) + 2 ) ;') ;
$c Numerical::critical($criticalPoint$f, -0.521e-031e-031e-03) ;

echo 
"Critical point of - x**2 + 2\n" ;
echo 
"Critical Point($c) = $criticalPoint\n\n" ;

$f create_function('$x''return ( ($x * $x) + 2 ) ;') ;
$c Numerical::critical($criticalPoint$f, -0.521e-031e-031e-03) ;

echo 
"Critical point of x**2 + 2\n" ;
echo 
"Critical Point($c) = $criticalPoint\n\n" ;

/*
 * Get a the value of the Gaussian normal distribution for 0 standard
 * deviations.
 */

echo "Value of Gaussian standard normal distribution at 0 sigma:\n" ;
echo 
Numerical::gaussian(0), "\n\n" ;

/*
 * Integrate a standard normal distribution from -3 to +3 sigmas which
 * should return a value of approximately .997.
 */

echo "Value of integral from -3 to 3 of the Gaussian standard normal distribution:\n" ;
$f create_function('$x''return Numerical::gaussian($x) ;') ;
echo 
Numerical::integrate($f, -33), "\n\n"  ;

/*
 * Integrate the value of the sin function over the range of 0 to 2*pi
 * which should returne a value of approximately 0.
 */

echo "Value of integral from 0 to 2 * pi of sin\n" ;
echo 
Numerical::integrate("sin"0M_PI 2), "\n\n" ;

/*
 * Solve some equations using the steepest descent algorithm.
 */

echo "Testing Steepest Descent equation solving:\n\n" ;

echo 
"Solution to y = x - 2:\n" ;
$f create_function('$x''return ($x - 2.0) ;') ;
echo 
Numerical::solveSteepestDescent($f7.3), "\n\n"  ;

echo 
"Solution to y = (x - 2)*(x + 3):\n" ;
$f create_function('$x''return ($x - 2.0)*($x + 3.0) ;') ;
echo 
"Initial guess is 1: ",Numerical::solveSteepestDescent($f1), "\n"  ;
echo 
"Initial guess is -6: ",Numerical::solveSteepestDescent($f, -6), "\n"  ;

/*
 * Force not a number through iteration limiting.
 */

echo "Initial guess is -6: ",Numerical::solveSteepestDescent($f, -61.0e-6.0012), "\n\n"  ;

echo 
"Solution to y = (x - 2)*(x + 3)*(x + 10):\n" ;
$f create_function('$x''return ($x - 2.0)*($x + 3.0)*($x + 10) ;') ;
echo 
"Initial guess is 1: ",Numerical::solveSteepestDescent($f1), "\n"  ;
echo 
"Initial guess is -6: ",Numerical::solveSteepestDescent($f, -6), "\n"  ;
echo 
"Initial guess is -1000: ",Numerical::solveSteepestDescent($f, -1000), "\n\n"  ;

echo 
"Testing Steepest Descent equation solving for \"negative\" functions:\n\n" ;

echo 
"Solution to y = -(x - 2):\n" ;
$f create_function('$x''return -($x - 2.0) ;') ;
echo 
Numerical::solveSteepestDescent($f7.3), "\n\n"  ;

echo 
"Solution to y = -((x - 2)*(x + 3)):\n" ;
$f create_function('$x''return -(($x - 2.0)*($x + 3.0)) ;') ;
echo 
"Initial guess is 1: ",Numerical::solveSteepestDescent($f1), "\n"  ;
echo 
"Initial guess is -6: ",Numerical::solveSteepestDescent($f, -6), "\n\n"  ;

echo 
"Solution to y = -((x - 2)*(x + 3)*(x + 10)):\n" ;
$f create_function('$x''return -(($x - 2.0)*($x + 3.0)*($x + 10)) ;') ;
echo 
"Initial guess is 1: ",Numerical::solveSteepestDescent($f1), "\n"  ;
echo 
"Initial guess is -6: ",Numerical::solveSteepestDescent($f, -6), "\n"  ;
echo 
"Initial guess is -1000: ",Numerical::solveSteepestDescent($f, -1000), "\n\n"  ;

/*
 * Solve some equations using the bisection algorithm.
 */

echo "Testing Bisection equation solving:\n\n" ;

echo 
"Solution to y = x - 2:\n" ;
$f create_function('$x''return ($x - 2.0) ;') ;
echo 
Numerical::solveBisection($f, -3.77.3), "\n"  ;
echo 
Numerical::solveBisection($f341.0e-21.0e-3), "\n\n" ;

/*
 * Check some simple rational numbers.
 */

echo "Floating to rational conversion:\n\n" ;

$a Numerical::rational(.1) ;
printf(".1 = %d/%d = %.15e\n"$a[0], $a[1], $a[0]/$a[1]) ;
$a Numerical::rational(M_PI1.0E-09) ;
printf("PI = %d/%d = %.15e\n"$a[0], $a[1], $a[0]/$a[1]) ;
$a Numerical::rational(2.0/3.0) ;
printf(".66666... = %d/%d= %.15e\n"$a[0], $a[1], $a[0]/$a[1]) ;
$a Numerical::rational(1.0/3.0) ;
printf(".33333... = %d/%d = %.15e\n"$a[0], $a[1], $a[0]/$a[1]) ;
$a Numerical::rational(3.0/4.0) ;
printf(".75 = %d/%d = %.15e\n"$a[0], $a[1], $a[0]/$a[1]) ;
$a Numerical::rational(-3.0/4.0) ;
printf("-.75 = %d/%d = %.15e\n"$a[0], $a[1], $a[0]/$a[1]) ;
$a Numerical::rational(-.3) ;
printf("-.3 = %d/%d = %.15e\n"$a[0], $a[1], $a[0]/$a[1]) ;


/*
 * Generate 10 random numbers using the Box-Mueller rectangular transform.
 */

echo "\nBox-Mueller Basic Transform:\n" ;

for (
$i 0$i 10$i++)
{
    echo 
Numerical::randomGaussianBoxMuellerBasic(), "\n" ;
}

/*
 * Generate 10 random numbers using the Box-Mueller Polar transform.
 */

echo "\nBox-Mueller Rectangular Polar Transform:\n" ;

for (
$i 0$i 10$i++)
{
    echo 
Numerical::randomGaussianBoxMuellerPolar(), "\n" ;
}

$theSample = array(1233311.31.31.41) ;

echo 
"\nMean:\n" ;
echo 
Numerical::mean($theSample), "\n" ;

echo 
"\nMedian:\n" ;
echo 
Numerical::median($theSample), "\n" ;

echo 
"\nMode:\n" ;
echo 
var_export(Numerical::mode($theSample), TRUE), "\n" ;

echo 
"\nStandard Deviation:\n" ;
echo 
Numerical::standardDeviation($theSample),"\n" ;

echo 
"\nVariance:\n" ;
echo 
Numerical::variance($theSample),"\n" ;

$a = array(1234100 => 5) ;

echo 
"\nAdd array and constant\n" ;
var_dump($xxx Numerical::add($a4)) ;

echo 
"\nAdd constant and array\n" ;
var_dump($yyy Numerical::add(6$a)) ;

echo 
"\nAdd array and array\n" ;
var_dump(Numerical::add($xxx$yyy)) ;

$yyy = array(10100 => 20) ;
echo 
"\nAdd array and array of varying sizes\n" ;
var_dump(Numerical::add($xxx$yyy)) ;

echo 
"\nDivide array by constant\n" ;
var_dump(Numerical::divide($xxx3)) ;

echo 
"\nDivide constant by array\n" ;
var_dump(Numerical::divide(3$xxx)) ;

echo 
"\ln of array\n" ;
var_dump(Numerical::ln($xxx)) ;

echo 
"\nmininum of array\n" ;
var_dump(Numerical::minimum(array(342, -610))) ;

echo 
"\nmaximum of array\n" ;
var_dump(Numerical::maximum(array(342, -610))) ;
?>