我需要帮助解决这个公式((n * 2) + 10) / (n + 1) = 3
,最好使用PHP。(数字2、10和3应该是可以更改的变量。)
我能够在纸上很容易地解决这个方程。但是,在尝试在PHP中实现时,我不知道从哪里开始。我已经做了几次 Google 查询和搜索,但仍然没有找到正确的方法来处理这个问题。
任何提示和指针都会很棒,如果您提供确切的代码,请解释如何得到此结果。
我需要帮助解决这个公式((n * 2) + 10) / (n + 1) = 3
,最好使用PHP。(数字2、10和3应该是可以更改的变量。)
我能够在纸上很容易地解决这个方程。但是,在尝试在PHP中实现时,我不知道从哪里开始。我已经做了几次 Google 查询和搜索,但仍然没有找到正确的方法来处理这个问题。
任何提示和指针都会很棒,如果您提供确切的代码,请解释如何得到此结果。
你想要解决一个方程,而不是实现它。这是有区别的。实现方程只需要将其键入即可。但你可能想将其作为等式运算符(==
)。
方程求解器是复杂的东西。当有这么好的工具(http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems)可以使用时,我不会尝试制作一个。
((n * 2) + 10) / (n + 1) = 3
会被解析为:
思路是将所有数字移到右子树(这里是...
),将所有未知数移到左子树,就像在纸上做的那样。
最终您将得到:
+
/ \
n -7
结果为0。这就是您解决任何数学表达式(带一个未知变量)的方法。
算法由您自己完成。
<?php
// ((x * n) + y)/(n + 1) = z)
// => n=(y-z)/(z-x)
function eq ($x=0,$y=0,$z=0)
{
if ($z!=$x)
{
$n=($y-$z)/($z-$x);
} else
{
$n='NAN';
}
return $n;
}
?>
我的代数有点老旧,可能有点过时,但我认为这是正确的。
R - { 1 }
是方程的解。 - Benjamin Crouziereq(0,0,0)
,eq(1,1,1)
,eq(0,0,1)
,eq(1,1,2)
... - Benjamin Crouzier$step = 0.00001;
$err = 0.1; //error margin
$start = 0;
$response = 3;
for($i = $start;$i <= 3;$i += $step){
if((($i * 2) + 10) / ($i + 1) >= $response - $err){
echo "the answer is $i";
}
}
以下是如何使用Symbolism计算机代数库在C#中解决该方程的方法:
var n = new Symbol("n");
(((n * 2) + 10) / (n + 1) == 3)
.IsolateVariable(n)
.Disp();
n == 7