powder96 / numbers.php
PHP高级数学库(Numbers.js的移植版)
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
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
- Steve Kaliski - sjkaliski
- David Byrd - davidbyrd11
- Ethan Resnick - studip101
- Ethan - altercation
- Hrishikesh Paranjape - hrishikeshparanjape
- Greg Leppert - leppert
- Lars-Magnus Skog - ralphtheninja
- Tim Wood - codearachnid
- Miles McCrocklin - milroc
- 纳特·科哈里 - nkohari
- 埃里克·拉福斯 - elaforc
- 卡蒂克·塔瓦尔 - KartikTalwar
- btmills
- swair shah - swairshah
- 贾森·休顿 - Zikes
- 菲利普·I·托马斯 - philipithomas
- 布兰登·本维 - Benvie
- 拉里·巴特尔 - LarryBattle
- kmcgrane