Comment devrais-je transformer la méthode d'itération sécante en PHP?Méthode d'itération sécante dans PHP
La formule est x i + 1 = x i - (f (x i ) (x i -x i + 1))/f (x i ) - f (x i-1)
où f = fonction et i est une itération.
SOx i + 1 est la prochaine itération après x i
Jusqu'à présent, j'ai vu, mais il est somethning mal quelque part si je veux faire un à partir de zéro, à moins que quelqu'un ici peut voir ce qui ne va pas avec cela?
while ((abs($y0 - $y1) > FINANCIAL_ACCURACY) && ($i < FINANCIAL_MAX_ITERATIONS))
{
$rate = ($y1 * $x0 - $y0 * $x1)/($y1 - $y0);
$x0 = $x1;
$x1 = $rate;
if (abs($rate) < FINANCIAL_ACCURACY) {
$y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
} else {
$f = exp($nper * log(1 + $rate));
$y = $pv * $f + $pmt * (1/$rate + $type) * ($f - 1) + $fv;
}
$y0 = $y1;
$y1 = $y;
$i++;
}
Merci
oublié d'ajouter, FINANCIAL_ACCURACY est défini comme
define('FINANCIAL_ACCURACY', 1.0e-6);
Le code affiché est essentiellement une partie du code que j'ai posté ici http://stackoverflow.com/questions/3198939/recreate-excel-rate-function-using-newtons-method en réponse à une question sur la réplication d'Excel Fonction RATE() en PHP. Je suis intéressé à savoir ce qui ne va pas avec, mais l'OP ne donne pas beaucoup d'indication d'une erreur –
le i + 1 dans la partie supérieure devrait être -1 désolé. En regardant l'autre code que vous avez lié à l'erreur, j'ai trouvé l'erreur suivante: define ('FINANCIAL_ACCURACY', 1.0e-6); devrait être define ('FINANCIAL_ACCURACY', 1.0e-8); – Jamie