2024年PHP日本大会

数学函数

目录

  • abs — 绝对值
  • acos — 反余弦
  • acosh — 反双曲余弦
  • asin — 反正弦
  • asinh — 反双曲正弦
  • atan — 反正切
  • atan2 — 两个变量的反正切
  • atanh — 反双曲正切
  • base_convert — 在任意进制之间转换数字
  • bindec — 二进制转十进制
  • ceil — 向上取整
  • cos — 余弦
  • cosh — 双曲余弦
  • decbin — 十进制转二进制
  • dechex — 十进制转十六进制
  • decoct — 十进制转八进制
  • deg2rad — 将度数转换为弧度
  • exp — 计算e的指数
  • expm1 — 返回 exp(num) - 1,即使 num 的值接近零也能准确计算
  • fdiv — 根据IEEE 754除以两个数字
  • floor — 向下取整
  • fmod — 返回参数除法的浮点余数(模)
  • fpow — 根据IEEE 754将一个数字提升到另一个数字的幂
  • hexdec — 十六进制转十进制
  • hypot — 计算直角三角形的斜边长度
  • intdiv — 整数除法
  • is_finite — 检查浮点数是否有限
  • is_infinite — 检查浮点数是否无限大
  • is_nan — 检查浮点数是否为NAN
  • log — 自然对数
  • log10 — 以10为底的对数
  • log1p — 返回 log(1 + number),即使 number 的值接近零也能准确计算
  • max — 查找最高值
  • min — 查找最低值
  • octdec — 八进制转十进制
  • pi — 获取圆周率的值
  • pow — 指数表达式
  • rad2deg — 将弧度转换为度数
  • round — 对浮点数进行四舍五入
  • sin — 正弦
  • sinh — 双曲正弦
  • sqrt — 平方根
  • tan — 正切
  • tanh — 双曲正切
添加注释

用户贡献的注释 4条注释

11
pat.mat AT sympatico DOT com
20年前
对于对微分方程感兴趣的人,我已经编写了一个函数,它接收类似于:x^2+x^3这样的字符串,并将其转换为
2x+3x^2,这是前一个方程的微分。

代码中缺少一样东西:$string{$i}经常超出范围(未初始化的字符串偏移量:6 in…)
如果您的错误设置过高……我只是不知道该如何解决。

所以这里只有加减运算的微分方程代码

<?
function differentiel($equa)
{
$equa = strtolower($equa);
echo "Equation de depart: ".$equa."<br>";
$final = "";

for($i = 0; $i < strlen($equa); $i++)
{
//从接收到的$equa创建一个新字符串
if($equa{$i} == "x" && $equa{$i+1} == "^")
{
$final .= $equa{$i+2};
$final .= "x^";
$final .= $equa{$i+2}-1;
}
elseif($equa{$i} == "+" || $equa{$i} == "-")
{
$final .= $equa{$i};
}
elseif(is_numeric($equa{$i}) && $i == 0)
{
//处理括号和其他一般项+处理^后:2^2
$final .= $equa{$i}."*";
}
elseif(is_numeric($equa{$i}) && $i > 0 && $equa{$i-1} != "^")
{
//处理^后:2^2
$final .= $equa{$i}."*";
}
elseif($equa{$i} == "^")
{
continue;
}
elseif(is_numeric($equa{$i}) && $equa{$i-1} == "^")
{
continue;
}
else
{
if($equa{$i} == "x")
{
$final .= 1;
}
else
{
$final .= $equa{$i};
}
}
}
//
//管理在之前的字符串$final中添加的乘法
//
$finalMul = "";
for($i = 0; $i < strlen($final); $i++)
{
if(is_numeric($final{$i}) && $final{$i+1} == "*" && is_numeric($final{$i+2}))
{
$finalMul .= $final{$i}*$final{$i+2};
}
elseif($final{$i} == "*")
{
continue;
}
elseif(is_numeric($final{$i}) && $final{$i+1} != "*" && $final{$i-1} == "*")
{
continue;
}
else
{
$finalMul .= $final{$i};
}
}
echo "equa final: ".$finalMul;
}
?>

我知道这不是最佳方案,但我很快就完成了 :)
如果您有任何意见,请给我发电子邮件。
我还想在C语言中编写这个函数,也许很快就会添加到phpCore…
Patoff
5
daniel at g-loc dot org
19年前
如果您是飞行员,需要计算风修正角和地速(例如,在飞行计划期间),这将非常有用。

$windcorrection = rad2deg(asin((($windspeed * (sin(deg2rad($tt - ($winddirection-180))))/$tas))));
$groundspeed = $tas*cos(deg2rad($windcorrection)) + $windspeed*cos(deg2rad($tt-($winddirection-180)));

你可能可以写得更漂亮一些,但它们有效!
3
lummox
16年前
以下函数是否可以实现相同的功能,但比前面注释中的函数简单得多?

function trimInteger($targetNumber,$newLength) {
return $targetNumber%pow(10,$newLength);
}
1
info at gavinvincent dot co dot uk
20年前
如果您需要处理极坐标,出于某种原因,您需要在大多数情况下将输入和输出转换为x,y:以下是一些将笛卡尔坐标转换为极坐标以及极坐标转换为笛卡尔坐标的函数
<?
//返回范围为0-2*pi(以弧度为单位)的r、theta数组
function rect2polar($x,$y)
{
if(is_numeric($x)&&is_numeric($y))
{
$r=sqrt(pow($x,2)+pow($y,2));
if($x==0)
{
if($y>0) $theta=pi()/2;
else $theta=3*pi()/2;
}
else if($x<0) $theta=atan($y/$x)+pi();
else if($y<0) $theta=atan($y/$x)+2*pi();
else $theta=atan($y/$x);
$polar=array("r"=>$r,"theta"=>$theta);
return $polar;
}
else return false;
}

//r必须以弧度为单位,返回x,y数组
function polar2rect($r,$theta)
{
if(is_numeric($r)&&is_numeric($theta))
{
$x=$r*cos($theta);
$y=$r*sin($theta);
$rect=array("x"=>$x,"y"=>$y);
}
else
{
return false;
}
}
?>
To Top