2009-06-16 10 views
1

私は、Microsoft ExcelでGoal Seekとして利用できるものと同様の機能をPHPで実装したいと考えています。ゴールPHPの機能をシークする

PHPで実装することは可能ですか?ここで

は我々が金融会社のために個人ローン管理アプリケーションを書いている

詳しく話です。彼らは現在、すべての種類の負荷、EMIなどの計算を行うためにExcelシートを使用しています。今では、スタッフはどこからでもアクセスできるようにオンラインで実装したいと考えています。

ここでは、利息計算をプログラムする必要があります。この金利計算は非常に複雑ですが、金利は金利引き下げの方法で計算されますが、それは常にそれほど平準化されていないという意味で十分です。

たとえば、誰かが10000のローンを12ヶ月間(1年間)10%の割合で借りているとします。

この場合、フラット金利は1000(10000 *(10/100))です。

私たちは方法を減らす際に借り手の利子計算を示す必要があり、還元方法の総利息は常にフラット・インタレストより少し小さくする必要があります。

実際には10%を超える金利を計算する必要があります。正確な値に達するために、彼ら(クライアント)は現在Goal Seek機能を使用しています。これは非常に迅速です。

開発中のオンラインソフトウェアでは、この計算を実行するためのロジックを既に実装していますが、ループを実行しなければならないため、非常に時間がかかります。ループを実行して、値。

状況を正しく説明していただきたいと思います。

+0

はい、それはあなたがもう少し手の込んだしてくださいすることができ、可能です。あなたは正確に何をしようとしていますか?入力はどのように生成されますか?アプリケーションのようなスプレッドシートですか?またはcsvファイルから入力していますか? – dassouki

+0

Goal Seekは何ですか:http://www.homeandlearn.co.uk/ME/mes8p4.html – cgp

答えて

-5

PHPはチューリングが完了しているので、可能です。もちろん、独自のアルゴリズムとユーザーインターフェイスを実装する必要があります。そのような機能のデザインについてもっと詳しく説明してください、それを見て、次に私はあなたにいくつかのさらなる指針を与えることができます。

+0

あなたは何のことを言っていますか? – vick

1

計算する関数があり、それを100K回実行する必要がある場合、関数のデータフィードは最適ではありません。関数firtsには、粗い粒度のデータ(値の間の大きなギャップ)と細かいデータを入力する必要があります。

もちろん、サイクル中にbiiiigよりも洗練された制御フローをコーディングする必要があります。

(コード)が最も簡単な方法は

  • あなたは目標
  • の高い側にある0.5 *レートでデータを供給し、それがロー側に等しい
  • を行く場合は以下を参照してください。あなたは準備ができています;目標よりも低い:* 0.75のフィードをさらに高いフィードレートでフィードする* 0.25

収束するまで繰り返す。残っている値の2分の1を完全に排除することを忘れないでください。

速いです。

4

Goal Seekが何をしているのか少しです(here, on the Microsoft support site)。それはあなたが始めるのに十分かもしれません。

あなたのケースでは、より速く実行する方法は、あなたが既知の数式を持っているので、Newton-Raphsonのようなものを使用することです。ウィキペディアのページが十分に役に立たない場合は、素晴らしいgoogleウォークスルーを見つけることができるかもしれません。

+0

すべてのリンクありがとう。私はこれをgoogleにしようとします。しかし、私は実際に私はここでWeb上で作業または半作業ソリューションを見つけようとした後に投稿し、失敗したことを見つけることができるかどうか疑問です。 –

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 

?>