如何在PHP中求解方程式 [英] How to solve equation in php

查看:91
本文介绍了如何在PHP中求解方程式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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中求解方程式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆