powder96/numbers.php

PHP高级数学库(Numbers.js的移植版)

dev-master 2013-03-13 20:38 UTC

This package is not auto-updated.

Last update: 2024-09-22 02:23:09 UTC


README

Numbers.php - PHP(>=5.3)的高级数学工具箱。它是Numbers.js的移植版,同样的工具箱用于JavaScript。

存在一个支持PHP 5.2的Numbers.php版本,但已不再开发:https://github.com/powder96/numbers.php/archive/fd946ea8742ba46789dc2a38cc6c1f93a7512e6d.zip

描述

Numbers.php提供了一组全面的高级数学工具,这些工具目前在PHP中尚未提供。这些工具包括

  • 基本计算
  • 微积分
  • 矩阵运算
  • 素数
  • 统计学
  • 更多...

在使用前请注意:PHP,像许多语言一样,并不一定像我们希望的那样管理浮点数。例如,在添加小数时,加法工具不会返回确切值。这是一个不幸的错误。我们已经采取了预防措施来解决这个问题。包含numbers之后,您可以设置一个错误边界。这个范围内的任何值都将被视为“可接受的输出”。

主要用例是在服务器端进行计算和数据分析。对于客户端操作,请使用Numbers.js

如何使用

Numbers的使用非常简单。

例如,如果我们想估计从-2到4的正弦函数积分,我们可以

使用Riemann积分(200个子区间)

use NumbersPHP\Calculus;
use NumbersPHP\Matrix;
use NumbersPHP\Statistic;
use NumbersPHP\Prime;

Calculus::riemann('sin', -2, 4, 200);

或使用自适应辛普森求积法(epsilon 0.0001)

Calculus::adaptiveSimpson('sin', -2, 4, 0.0001);

也可以使用用户定义的函数

function myFunc($x) {
  return 2 * pow($x, 2) + 1;
}
Calculus::riemann('myFunc', -2, 4, 200);

Calculus::adaptiveSimpson(create_function('$x', 'return 2 * pow($x, 2) + 1;'), -2, 4, 0.0001);

现在假设我们想要进行一些矩阵计算

我们可以相加两个矩阵

$matrix1 = array(array(0, 1, 2),
				 array(3, 4, 5));
$matrix2 = array(array( 6,  7,  8),
				 array( 9, 10, 11));
Matrix::addition($matrix1, $matrix2);

我们可以转置一个矩阵

Matrix::transpose($array);

Numbers还包含一些基本的素数分析。我们可以检查一个数是否为素数

//basic check
Prime::simple($number);

// Miller�Rabin primality test
Prime::millerRabin($number);

统计工具包括平均值、中位数、众数、标准差、随机样本生成器、相关性、置信区间、t检验、卡方检验等。

Statistic::mean($array);
Statistic::median($array);
Statistic::mode($array);
Statistic::standardDev($array);
Statistic::randomSample($lower, $upper, $n);
Statistic::correlation($array1, $array2);

测试

下载并安装这些内容

在命令提示符下运行

	php composer.phar install
	php phpunit.phar --configuration phpunit.xml.dist

如果您打算多次运行测试,并且您使用Microsoft(R) Windows(TM),则可以使用批处理文件/test.cmd。不要忘记在文件的开始设置PHP、Composer和PHPUnit的路径。

作者

Numbers.js

Numbers.php