gpt4 book ai didi

php - 使用牛顿法重新创建 Excel RATE 函数

转载 作者:可可西里 更新时间:2023-11-01 13:18:37 26 4
gpt4 key购买 nike

我正在使用 PHP 转换抵押贷款计算器,但我不一定需要 PHP 解决方案。我正在寻找复制 Excel RATE 函数所需的逻辑。我找到了一个使用二分法的解决方案,如果情况变得更糟,我会使用它。

我知道互联网世界中有人知道这样的功能,所以我希望有一个简单的答案,而不是从头开始创建解决方案。

引用资料:

谢谢

最佳答案

使用取自 PHPExcel 的割线法(牛顿法的有限差分近似值)实现 MS 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 (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;
}
return $rate;
} // function RATE()

关于php - 使用牛顿法重新创建 Excel RATE 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3198939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com