markbaker/complex

用于处理复数的PHP类

3.0.2 2022-12-06 16:21 UTC

README

用于处理复数的PHP类库

Build Status Total Downloads Latest Stable Version License

Complex Numbers

该库目前提供以下操作

  • 加法
  • 减法
  • 乘法
  • 除法
    • 除以
    • 除入

以及以下函数:

  • 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);