目标寻求PHP的功能

时间:2009-06-16 11:49:23

标签: php algorithm excel

我想在PHP中实现类似于Microsoft Excel中的Goal Seek的功能。

这样的事情可以在PHP中实现吗?

以下是详细信息

我们正在为一家金融公司撰写个人贷款管理申请表。他们目前使用Excel工作表进行各种负载,EMI等计算。现在,他们希望在线实施此功能,以便他们的员工可以从任何地方访问它。

在此我们必须计划利息计算。这种利息计算非常复杂,但可以说利息是用减少方法计算的,但是,它总是比平面利息少一点。

比如说某人以12%(1年)的10%的利率贷款10000。

在这种情况下,持平利息将为1000(10000 *(10/100))。

我们必须在减少方法中显示借款人利息计算,并且减少方法的总利息应该总是比平均利息少一点。

为此,我们必须计算实际高于10%的利率。为了达到确切的价值,他们(客户)目前正在使用Goal Seek功能,因为这非常快。

在我们正在开发的在线软件中,我们已经实现了用于执行此计算的逻辑,但是由于我们必须执行循环,该循环在时间上超过100000次以达到可接受的值,因此需要非常长的时间。

我希望我已经正确地解释了整个情况。

4 个答案:

答案 0 :(得分:4)

有一点(一点点)关于Goal Seek的作用here, on the Microsoft support site。这可能足以让你开始使用。

在您的情况下,性能更快的方法是使用类似Newton-Raphson的方法,因为您有一个已知的公式开头。如果维基百科页面没有足够的帮助,现在你知道google的内容,你可以找到一个不错的php演练。

答案 1 :(得分:2)

  

目标寻求公式(PHP公式)

<?php 

/* PMT Function for goal seek formula 
 * PMT = (PV(1+i)^n) + FV)i
 *      -------------------
 *            1-(1 + i)^n
 *             
 *
 * $i = annual interest rate
 * $n = total months
 * $p = total loan amount (Principle Amount)
 */

function PMT($i,$n,$p)
{
    return $i * $p * pow((1 + $i),$n) / (1 - pow((1 + $i),$n));
} 
echo"goal seek = ",(number_format(PMT(7/1200,120,60000),2)); // This will Display result

?>

答案 2 :(得分:1)

如果您具有计算功能并且需要运行100K次,那么该功能的数据馈送不是最佳的。您应该使用粗粒度数据(值之间的大差距)为函数firts提供更精细的数据。

当然,你需要在循环时编码比biiiig更复杂的控制流程。

最简单的方法(代码)

  • 你处于目标的高位
  • 使用费率* 0.5提供数据并查看它是否会转到低端
  • 相等:你准备好了;低于目标:进料速率* 0.75仍然更高:进料速率* 0.25

重复直至收敛。请记住,你想要完全消除其余值的1/2。

会很快。

答案 3 :(得分:-5)

由于PHP是Turing-complete,所以是的,这是可能的。当然,您需要为此实现自己的算法和用户界面。请详细说明这个功能的设计,你怎么看,然后我可以给你一些进一步的指示。