Расчет процентной ставки в PHP с преобразованной функцией Excel RATE

У меня тоже такая проблема - один пример работает, а другой нет

Вот мой код

define('FINANCIAL_MAX_ITERATIONS', 128); define('FINANCIAL_PRECISION', 1.0e-08);

function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1) {

$rate = $guess; 
if (abs($rate) < FINANCIAL_PRECISION) { 
    $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 = $pv + $pmt * $nper + $fv; 
$y1 = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv; 

// find root by secant method 
$i  = $x0 = 0.0; 
$x1 = $rate; 
while ((abs($y0 - $y1) > FINANCIAL_PRECISION) && ($i < FINANCIAL_MAX_ITERATIONS)) { 
    $rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0); 
    $x0 = $x1; 
    $x1 = $rate;
    if (($nper * abs($pmt)) > ($pv - $fv))
        $x1 = abs($x1);

    if (abs($rate) < FINANCIAL_PRECISION) { 
        $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; 
} 

$rate = abs(round($rate*100,5));

return $rate; 

} // function RATE()

И несколько примеров RATE(60,-1338.88,274775,0,0,0.03200); // работает - возвращает 3.40321

СТАВКА(60,-2415,44,448925,0,0,0,04150); // не работает - возвращает 3.16288 вместо 4.32

Есть идеи? Я пробовал 4-5 фрагментов кода, которые выглядят одинаково, и этот, кажется, дает мне наилучшие результаты, хотя они и не согласованы. Я чувствую, что код работает, потому что как он может дать мне один правильный результат, а остальные нет?

p.s: я новичок в публикации здесь, хотя я читаю этот сайт около 5 лет - надеюсь, я был достаточно тщательным;)

Аналогичный вопрос с хорошей информацией, но все еще не решает мою проблему метод итерации в PHP

Еще один хороший вопрос, но все еще не делает то, что мне нужно... Расчет процентной ставки в PHP< /а>


person Rob Dunsmuir    schedule 11.05.2015    source источник