markbaker / complex
用于处理复数的PHP类
Requires
- php: ^7.2 || ^8.0
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: dev-master
- phpcompatibility/php-compatibility: ^9.3
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.0
- squizlabs/php_codesniffer: ^3.7
README
用于处理复数的PHP类库
该库目前提供以下操作
- 加法
- 减法
- 乘法
- 除法
- 除以
- 除入
以及以下函数:
- theta (极坐标角度)
- rho (极坐标距离/半径)
- 共轭
- 负数
- 倒数 (1 / 复数)
- cos (余弦)
- acos (反余弦)
- cosh (双曲余弦)
- acosh (反双曲余弦)
- sin (正弦)
- asin (反正弦)
- sinh (双曲正弦)
- asinh (反双曲正弦)
- sec (割线)
- asec (反割线)
- sech (双曲割线)
- asech (反双曲割线)
- csc (余割)
- acsc (反余割)
- csch (双曲余割)
- acsch (反双曲余割)
- tan (正切)
- atan (反正切)
- tanh (双曲正切)
- atanh (反双曲正切)
- cot (余切)
- acot (反余切)
- coth (双曲余切)
- acoth (反双曲余切)
- sqrt (平方根)
- exp (指数)
- ln (自然对数)
- log10 (以10为底的对数)
- log2 (以2为底的对数)
- pow (乘方)
安装
composer require markbaker/complex:^1.0
重要BC注意
如果您之前已经使用过程式调用此库中的函数和操作,那么从版本3.0开始,您应该使用MarkBaker/PHPComplexFunctions(在Packagist上作为markbaker/complex-functions提供)。
您需要将您的composer.json
文件中的markbaker/complex
替换为新库,但除了命名空间之外,您过去调用Complex函数的方式不会有任何区别,因此不需要实际更改代码。
composer require markbaker/complex-functions:^3.0
您不应该在您的composer.json
中引用此库(markbaker/complex
),Composer会为您处理。
使用方法
要创建一个新的复数对象,您可以提供实部、虚部和后缀部分作为单独的值,或者作为传递给构造函数的值的数组;或者一个表示值的字符串。例如:
$real = 1.23; $imaginary = -4.56; $suffix = 'i'; $complexObject = new Complex\Complex($real, $imaginary, $suffix);
或者作为一个数组
$real = 1.23; $imaginary = -4.56; $suffix = 'i'; $arguments = [$real, $imaginary, $suffix]; $complexObject = new Complex\Complex($arguments);
或者作为一个字符串
$complexString = '1.23-4.56i'; $complexObject = new Complex\Complex($complexString);
复数对象是不可变的:每当您调用一个方法或将复数值传递给返回复数值的函数时,都会返回一个新的复数对象,原始对象将保持不变。这也允许您像使用流畅接口一样链式调用多个方法(只要它们是返回复数结果的函数)。
执行数学运算
要使用复数值执行数学运算,您可以针对复数值调用适当的方法,并将其他值作为参数传递
$complexString1 = '1.23-4.56i'; $complexString2 = '2.34+5.67i'; $complexObject = new Complex\Complex($complexString1); echo $complexObject->add($complexString2);
或使用静态操作方法
$complexString1 = '1.23-4.56i'; $complexString2 = '2.34+5.67i'; echo Complex\Operations::add($complexString1, $complexString2);
如果您要对多个值执行相同的操作(例如,要添加三个或更多复数),则可以将多个参数传递给任何操作。
您可以将这些参数作为复数对象、数组或字符串传递,这些字符串可以解析为复数对象。
使用函数
在调用任何针对复数值的函数时,您可以通过以下方式调用复数对象的相关方法
$complexString = '1.23-4.56i'; $complexObject = new Complex\Complex($complexString); echo $complexObject->sinh();
或使用静态函数方法
$complexString = '1.23-4.56i'; echo Complex\Functions::sinh($complexString);
与操作一样,您可以将这些参数作为复杂数据对象传递,或者作为可以解析为复杂数据对象的数组或字符串。
在调用pow()
函数的情况下(这是唯一需要额外参数的实现函数),您需要在调用函数时传递两个参数
$complexString = '1.23-4.56i'; $complexObject = new Complex\Complex($complexString); echo Complex\Functions::pow($complexObject, 2);
或者调用方法时传递额外的参数
$complexString = '1.23-4.56i'; $complexObject = new Complex\Complex($complexString); echo $complexObject->pow(2);