Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何用编程语言求解数学方程?_Php_Math_Equation_Equation Solving - Fatal编程技术网

Php 如何用编程语言求解数学方程?

Php 如何用编程语言求解数学方程?,php,math,equation,equation-solving,Php,Math,Equation,Equation Solving,我需要帮助来解决这个公式((n*2)+10)/(n+1)=3,最好用PHP。(数字2、10和3应该是可以更改的变量。) 我能在纸上很容易地解出这个方程。然而,当我试图在PHP中实现这一点时,我不确定从哪里开始。我在这里做了几次谷歌查询和搜索,似乎没有任何帮助。我缺少处理这个问题的正确方法 任何提示和指针都很好,如果您提供了准确的代码,请解释您是如何得到这个结果的。您想要的是解一个方程,而不是实现它。这是不同的。实现这个等式就像输入它一样简单。不过,您可能希望将其设置为相等运算符(==) 方程求解

我需要帮助来解决这个公式
((n*2)+10)/(n+1)=3
,最好用PHP。(数字2、10和3应该是可以更改的变量。)

我能在纸上很容易地解出这个方程。然而,当我试图在PHP中实现这一点时,我不确定从哪里开始。我在这里做了几次谷歌查询和搜索,似乎没有任何帮助。我缺少处理这个问题的正确方法


任何提示和指针都很好,如果您提供了准确的代码,请解释您是如何得到这个结果的。

您想要的是解一个方程,而不是实现它。这是不同的。实现这个等式就像输入它一样简单。不过,您可能希望将其设置为相等运算符(
==

方程求解器是非常复杂的事情。当有这么好的()存在时,我不会尝试做一个。

您可以使用它将数学表达式解析为语法树,然后进行数学运算

<?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;
}

?>
((n*2)+10)/(n+1)=3

这个想法是把所有的数字放在右边的子树(这里是
)上,把所有的未知数放在左边,就像你在纸上做的那样

最后,您将拥有:

  +
 / \
n  -7
也就是0。对于任何数学表达式(带有一个未知变量),都有自己的解决方案


我将把算法留给你。

使用蛮力怎么样??!?!可能很慢而且不准确:

$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";
   }
}
$step=0.00001;
$err=0.1//误差幅度
$start=0;
$response=3;
对于($i=$start;$i=$response-$err){
echo“答案是$i”;
}
}
你可以改进这个答案。。在每个循环中,您可以计算当前答案和所需答案之间的距离,并据此调整参数

这让我想起了我以前的A.I.类=)


祝你好运

以下是如何使用计算机代数库在C#中求解该方程:

var n = new Symbol("n");

(((n * 2) + 10) / (n + 1) == 3)
    .IsolateVariable(n)
    .Disp();
执行该代码时,控制台上会显示以下内容:

n == 7

您是否只需要实现这一个或所有相同类型的方程?是否允许您重新制定方程?公式转换/方程求解有专门的语言。PHP不适合它,因为科学用途不是它的主要领域。不过,您可能会在Python或Perl中找到一些东西(然后通过exec调用它们)。@pinouchon仅此一个,但数字将是dynamic@Deve是的,我可以重新表述这个等式“你想解决一个等式,而不是实现它。”哦,我多么希望我能不止一次投票……感谢你指出了正确的术语。我将编辑这个问题:)phpCAS并不是你认为它的意思。你的功能是有效的!你介意解释一下你写作/思考时的思维过程吗?你的函数在数学上是不正确的。您缺少案例$y==$x&&$z==$x。在这种情况下,esemble
R-{1}
是方程的解
,你的函数会产生
-1
,但是
((x*n)+y)/(n+1)=z
给出
((0*-1)+0)/(-1+1)=1
,这是不可能的。我的get out子句是因为我的代数既旧又薄,不是我每天都用的东西。主要是检查除法是否为0(因此检查ZX)。我在解决方案背后的想法是将方程转化为
x*n=c
(即使x是一个分数)。一旦它变成这种形式,解决方案就是简单地将方程重新写入PHP@pinouchon-显然,对于特殊情况,可以添加更多检查。然而,我是一名程序员,不是数学家,所以我的警告仍然有效——我的代数很老,很脆弱,但我认为这是正确的,这是一个解决方案,但我正在寻找正确的方法来解决它。谢谢你的回答!很有意思,我来看看:)