【发布时间】:2010-09-10 10:15:03
【问题描述】:
我正在尝试循环下面的迭代,代码在下面,我也会尝试分解它。
<?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;
在这个函数中,$rate 首先变成 $x0,然后是 $x1 和 $x2 等等。
$intr = $LoanRequired * pow((1 + $x0), $TermMonths) + $MonthlyPayment * ((pow((1 + $x0), $TermMonths) - 1) / $x0);
首先它需要进入上面的这个公式,(首先是$x0,然后是$x1,因为它们是两个静态的)如果结果结果是-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 显然会根据 -1 的值更改为 $x1、$x2、$x3 等。
我正在尝试将其放入 while 循环(或任何循环),但遇到了一些困难。
【问题讨论】:
-
这个东西有名字吗,比如“NameA-NameB 方法”(例如“Newton-Raphson Division”)?
-
称为割线法
-
很有趣,所以我随机猜测它几乎是正确的 :) 但是你的条件不应该是
while( $intr<=-1 || $intr>=1 )来运行这个循环直到 f(x2) 在你的 epsilon 内吗?
标签: php loops for-loop while-loop