如何解决PHP中的方程式

时间:2014-09-01 23:42:57

标签: math equation

我有一个方程式在解决它时遇到麻烦。我的等式:

S1=O*P*M1/Y1
D1=N-S1

S2=(O-D1)*P*M2/Y2
D2=N-S2

S3=(O-D1-D2)*P*M3/Y3
D3=N-S3
...

我做了什么:

$S = array();
$M = array(30,31,30);
$Y = array(360,360,360);
$O = 30000;
$P = 0.3;
$N = 10509.74;
$D = array();

for($i=1; $i<=count($M); $i++){
    if($i==1){
        $S[1] = $O*$P*$M[1]/$Y[1];
        $D[1] = $N - $S[1];
    }
    else{
        for($k=2; $k<=count($M); $k++){
            $S[$i] = ($O-$D[$k-1])*$P*$M[$k]/$Y[$k];
            $D[$i] = $N - $S[$i];
        }       
    }       
}

print_r($S);

不知道我哪里做错了,或者我做错了。

1 个答案:

答案 0 :(得分:0)

我很确定这是对的。如果没有,请更新您的问题以包括您的样本输入的预期输出。 (无论如何这样做可能不是一个坏主意。)


实现:

// Set up things that don't change as constants.
define('P', 0.3);
define('N', 10509.74);

// O doesn't change, but it's only used once on
// its own. We'll reuse it to store the ongoing
// value of (O-D1), (O-D1-D2), etc.
$O = 30000;

$M = array(30, 31, 30);
$Y = array(360, 360, 360);

$S = array();
$D = array();

for ($i = 0; $i < count($M); $i++) {
    $S[$i] = $O * P * $M[$i] / $Y[$i];
    $D[$i] = N - $S[$i];
    $O -= $D[$i];
}

print_r($S);

输出:

Array
(
    [0] => 750
    [1] => 522.87338333333
    [2] => 256.33483458333
)

如果您不需要完整的$D数组,则可以完全删除它,只需使用$O -= N - $S[$i];。这个问题并不完全清楚,所以我把它留在了。

精确度可能是一个问题,虽然所需的精确程度被忽略了所以我根本不打扰它。