我想循環下面的迭代,代碼在下面,我會嘗試並將其分解。循環這些迭代
<?php
function intr($LoanRequired, $TermMonths, $MonthlyPayment, $rate) {
$intr= $LoanRequired * pow((1 + $rate), $TermMonths) + $MonthlyPayment * ((pow((1 + $rate), $TermMonths) - 1)/$rate);
return $intr;
}
$x0=0.008;
$x1=0.025;
$LoanRequired=20000;
$TermMonths=120;
$MonthlyPayment=-271.09;
$x2=$x0-(((intr($LoanRequired,$TermMonths,$MonthlyPayment,$x0))*($x0-$x1))/(intr($LoanRequired,$TermMonths,$MonthlyPayment,$x0)-intr($LoanRequired,$TermMonths,$MonthlyPayment,$x1)));
print_r($x2);
$intr = $LoanRequired * pow((1 + $x2), $TermMonths) + $MonthlyPayment * ((pow((1 + $x2), $TermMonths) - 1)/$x2);
while($intr>=-1 || $intr<=1) {
return ;
}
?>
$x0=0.008;
這並沒有改變,$ X0是第一個猜測 $x1=0.025;
這並不會改變$ X1爲第二猜測
$LoanRequired=20000;
$TermMonths=120;
$MonthlyPayment=-271.09;
所有變量將來自於形式(全這些都將取決於什麼用戶輸入)
function intr($LoanRequired, $TermMonths, $MonthlyPayment, $rate) {
$intr= $LoanRequired * pow((1 + $rate), $TermMonths) + $MonthlyPayment * ((pow((1 + $rate), $TermMonths) - 1)/$rate);
return $intr;
在這個函數$率變化成爲$ X0在第一,然後$ X1和X2 $Ë tc。
$ intr = $ LoanRequired * pow((1+ $ x0),$ TermMonths)+ $ MonthlyPayment *((pow((1 + $ x0),$ TermMonths) - 1)/ $ x0);
第一它需要進入上述這個公式,($ X0第一然後$ X1,它們都在兩個靜態的),如果結果證明是< 1或> -1
整個過程停止如果前兩個靜態猜測不符合標準,則需要執行此操作。
$x2=$x0-(((intr($LoanRequired,$TermMonths,$MonthlyPayment,$x0))*($x0-$x1))/(intr($LoanRequired,$TermMonths,$MonthlyPayment,$x0)-intr($LoanRequired,$TermMonths,$MonthlyPayment,$x1)));
在循環中。 在這種情況下$ X2將= 0.0082002592938519這將被投入再次 $intr = $LoanRequired * pow((1 + $x0), $TermMonths) + $MonthlyPayment * ((pow((1 + $x0), $TermMonths) - 1)/$x0);
,如果不符合標準,它繼續循環,直到它之後,它需要去$ X3,$ X4等
做到這個公式$apr=((pow(($x0+1),12))-1)*100;
($ x0顯然會變爲$ x1,$ x2,$ x3等,具體取決於哪個值是< 1和> -1。
我試圖把它放到while循環中,(或任何循環)但有一定難度。
這個東西是否有名稱,比如「NameA-NameB方法」(例如「Newton-Raphson division」)? – VolkerK 2010-09-10 10:36:59
它被稱爲割線方法 – James 2010-09-10 10:44:57
有趣,所以我隨機猜對它幾乎正確:)但不應該你的條件是'while($ intr <= - 1 || $ intr> = 1)'運行這個循環直到f (x2)是否在你的epsilon? – VolkerK 2010-09-10 11:05:35