Math 如何在php中求解方程

Math 如何在php中求解方程,math,equation,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

我有一个方程在求解时遇到了麻烦。我的方程式:

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);
$S=array();
$M=数组(30,31,30);
$Y=阵列(360360);
$O=30000;
$P=0.3;
$N=10509.74;
$D=数组();

对于($i=1;$i我非常确定这是正确的。如果不是,请更新您的问题,以包含示例输入的预期输出。(无论如何,这样做可能不是个坏主意。)


实施:
如果你不需要完整的
$D
数组,你可以把它全部剪掉,只需使用
$O-=N-$S[$i];
。这个问题不太清楚,所以我把它放在里面了


精度可能是一个问题,尽管所需的精度被忽略了,所以我根本不想解决它。

为什么使用第二个循环?第二个循环用于查找S2和D1Hm,但您使用$I allready。您可以使用$I+1,就像使用$k-1一样。作为记录,我对这个问题投了更高的票,因为OP已经显示出解决问题的明确努力mself和已经发布了他的尝试,而他的其他问题是不值得的,这一个在我看来是好的。@bksi使用了$+1不幸输出了错误的结果
// 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
)