Я пытаюсь выполнить цикл нижеприведенной итерации, код приведен ниже, и я постараюсь также разбить его.
<?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 или> -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 (или любой цикл в этом отношении), но испытываю некоторые трудности.