php 数学 科学计算,phpnum: PHP科学计算扩展 A PHP extension for scientific computing

phpnum

phpnum.svg?branch=master

phpnum 是 PHP 语言的一个科学计算扩展。支持多维数组运算,此外也为数组运算提供了大量数学函数库。灵感源自 NumPy & NumPHP。

开发方向

支持线程安全

提供异常处理

完善函数库

支持算数符号运算

支持矩阵运算

内存优化

文档目录

安装/配置

需求

PHP 7 +

安装

下载phpnum最新版本,解压缩后,进入phpnum源码目录, 依次执行(其中PHP_BIN是PHP的bin目录)

$PHP_BIN/phpize

./configure --with-php-config=$PHP_BIN/php-config

make && make install

在php.ini中载入num.so,重启PHP。

类与方法

基本用法

Class Num

说明: 创建Num对象

范例

$num = new Num();

Class NumNdarray

说明: 创建数组对象

参数

array: Array

返回值

ndarray: Object

范例

$num = new Num();

$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);

Printing

说明: 输出数组对象

范例

$num = new Num();

$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);

echo $ndarray;

/* output:

array([

[1,2,3],

[2,3,4]

])

*/

属性

getData - 获取数组对象的原始数据

getShape - 获取数组对象的各维度大小

getNdim - 获取数组对象的维度

getSize - 获取数组对象的元素个数

getData

说明: 获取数组对象的原始数据

参数

None

返回值

data: Array

范例

$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$ndarray->getData(); // returns array([1.0, 2, 3], [2, 3, 4])

getShape

说明: 获取数组对象的各维度大小

参数

None

返回值

shape: Array

范例

$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$ndarray->getShape(); // returns array(2, 3)

getNdim

说明: 获取数组对象的维度

参数

None

返回值

ndim: LONG

范例

$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$ndarray->getNdim(); // returns 2

getSize

说明: 获取数组对象的元素个数

参数

None

返回值

size: LONG

范例

$ndarray = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$ndarray->getSize(); // returns 6

统计

amin - 获取数组对象的最小元素

amax - 获取数组对象的最大元素

amin

说明: 获取数组对象的最小元素

参数

ndarray: Object

返回值

amin: Double

范例

$ndarray = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);

$num->min($ndarray); // returns 1

amax

说明: 获取数组对象的最大元素

参数

ndarray: Object

返回值

amax: Double

范例

$ndarray = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);

$num->amax($ndarray); // returns 4

算数运算

add - 加上数组对象

sub - 减去数组对象

mult - 乘以数组对象

div - 除以数组对象

add

说明: 加上数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例

$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);

echo $a->add($b);

/* output:

array([

[4.2,3.5,4],

[4.5,7,6]

])

*/

sub

说明: 减去数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例

$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);

echo $a->sub($b);

/* output:

array([

[-2.2,0.5,2],

[-0.5,-1,2]

])

*/

mult

说明: 乘以数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例

$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);

echo $a->mult($b);

/* output:

array([

[3.2,3,3],

[5,12,8]

])

*/

div

说明: 除以数组对象

参数

ndarray: Object

返回值

ndarray: Object

范例

$a = $num->array([[1.0, 2, 3], [2, 3, 4]]);

$b = $num->array([[3.2, 1.5, 1], [2.5, 4, 2]]);

echo $a->div($b);

/* output:

array([

[0.3125,1.3333333333333,3],

[0.8,0.75,2]

])

*/

通用方法

power - 遍历数组计算次幂

square - 遍历数组计算平方

sqrt - 遍历数组计算平方根

exp - 遍历数组计算自然常数e的次幂

log - 遍历数组计算自然对数

log10 - 遍历数组计算以10为底的对数值

sin - 遍历数组计算正弦值

cos - 遍历数组计算余弦值

tan - 遍历数组计算正切值

ceil - 遍历数组计算向上取整

floor - 遍历数组计算向下取整

fabs - 遍历数组计算绝对值

power

说明: 遍历数组计算次幂

参数

base: Object

exponent: Object or Double

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->power($ndarray, 3);

// returns array([[0.125, 1.0], [0.0, 8.0]])

square

说明: 遍历数组计算平方

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->square($ndarray);

// returns array([[0.5, 1.0], [0.0, 4.0]])

sqrt

说明: 遍历数组计算平方根

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->sqrt($ndarray);

// returns array([[0.70710678118654757, 1.0], [0.0, 1.4142135623730951]])

exp

说明: 遍历数组计算自然常数e的次幂

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->exp($ndarray);

// returns array([[1.6487212707001282, 2.7182818284590451], [1.0, 7.3890560989306504]])

log

说明: 遍历数组计算自然对数

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [10, 2]]);

$num->log($ndarray);

// returns array([[-0.69314718055994529, 0.0], [2.3025850929940459, 0.69314718055994529]])

log10

说明: 遍历数组计算以10为底的对数值

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[1e-1, 1], [10, 100]]);

$num->log10($ndarray);

// returns array([[-1.0, 0.0], [1.0, 2.0]])

sin

说明: 遍历数组计算正弦值

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->sin($ndarray);

// returns array([[0.47942553860420301, 0.8414709848078965], [0.0, 0.90929742682568171]])

cos

说明: 遍历数组计算余弦值

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->cos($ndarray);

// returns array([[0.87758256189037276, 0.54030230586813977], [1.0, -0.41614683654714241]])

tan

说明: 遍历数组计算正切值

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->tan($ndarray);

// returns array([[0.54630248984379048, 1.5574077246549023], [0.0, -2.1850398632615189]])

ceil

说明: 遍历数组计算向上取整

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->ceil($ndarray);

// returns array([[1.0, 1.0], [0.0, 2.0]])

floor

说明: 遍历数组计算向下取整

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, 1], [0, 2]]);

$num->floor($ndarray);

// returns array([[0.0, 1.0], [0.0, 2.0]])

fabs

说明: 遍历数组计算绝对值

参数

ndarray: Object

返回值

array: Array

范例

$ndarray = $num->array([[0.5, -1], [0, -2]]);

$num->fabs($ndarray);

// returns array([[0.0, 1.0], [0.0, 2.0]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值