Я пытаюсь зацикливать итерацию ниже, код ниже, и я попробую и сломаю его.цикл для этих итераций
<?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;
в этой функции $ скорости становится $ х0 сначала, то $ 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» (например, «подразделение Ньютона-Рафсона»)? – VolkerK
Это называется секущий метод – James
Забавный, поэтому я случайно догадался, что он почти прав :) Но не должно быть вашего условия 'while ($ intr <= - 1 || $ intr> = 1)' для запуска этого цикла до тех пор, пока f (x2) находится внутри вашего эпсилон? – VolkerK