我有一个方程式在解决它时遇到了麻烦.我的方程式:
I have an equation getting trouble while solving it. My 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);不知道我在哪里做错了,或者我做错了方向.
No idea where i did wrong or I'm doing on wrong way.
推荐答案我很确定这是正确的.如果不是,请更新您的问题,以包括示例输入的预期输出. (无论如何,这样做可能不是一个坏主意.)
I'm pretty sure this is right. If not, please update your question to include the expected output for your sample input. (Doing this anyway probably isn't a bad idea.)
// 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];即可.这个问题目前还不清楚,所以我把它留了下来.
If you don't need the complete $D array at the end of this you can cut it out entirely and just use $O -= N - $S[$i];. It's not exactly clear from the question so I left it in.
精度可能是一个问题,尽管所需的精度程度被忽略了,所以我根本不用理会它.
Precision may be an issue, though the degree of precision needed was left out so I didn't bother tackling it at all.
更多推荐
如何在PHP中求解方程式
发布评论