Javascript 带额外付款的未来价值计算

Javascript 带额外付款的未来价值计算,javascript,math,amortization,Javascript,Math,Amortization,我正在尝试创建一个“储蓄目标”计算器,但我一直在思考如何(如果可能的话)实现以下目标:- 在给定利率的情况下,计算实现目标所需的每月付款金额。(可以使用底部的公式实现这一点-在javascript中,但无论如何都应该有意义) 根据未来某个时间点的一次或多次一次性付款调整每月付款金额。(这个我做不出来) 例如,我可以计算出,以7%的利率在30年内实现300000英镑的余额是245.91英镑 但如果在第5年实行一次性付款,我不确定如何调整该金额:- e.g. yr 1 - x yr 2 - 4 -

我正在尝试创建一个“储蓄目标”计算器,但我一直在思考如何(如果可能的话)实现以下目标:-

  • 在给定利率的情况下,计算实现目标所需的每月付款金额。(可以使用底部的公式实现这一点-在javascript中,但无论如何都应该有意义)

  • 根据未来某个时间点的一次或多次一次性付款调整每月付款金额。(这个我做不出来)

  • 例如,我可以计算出,以7%的利率在30年内实现300000英镑的余额是245.91英镑

    但如果在第5年实行一次性付款,我不确定如何调整该金额:-

    e.g. 
    yr 1 - x
    yr 2 - 4 - x
    yr 5 - 10000 lump sum
    yr 6 - 30 - x
    
    其中x是每月所需的金额,考虑到在第30年仍达到300000英镑总额的一次性付款

    同样适用于相同的场景,但在第15年支付另一笔款项

    e.g. 
    yr 1 - x
    yr 2 - 4 - x
    yr 5 - 10000 lump sum
    yr 6 - 14 - x
    yr 15 - 10000 lump sum
    yr 16 - 30 - x
    
    我当时在考虑计算每次一次性付款的未来价值(第5年为10000英镑,25年为7%),然后从所需金额中减去该金额(300000英镑-54274.33美元=245725.67英镑),然后根据245725.67英镑计算每月所需付款)

    它很接近(301827.53英镑,201.42 pcm),但我确信在计算中遗漏了一些东西,因为它在更大的值上走得更远

    我猜这是因为在第5年,我重复计算了一个有效的付款金额(因为下面的计算仍然会考虑每月付款,即使它已经被过度使用)-我是否需要为被过度使用的每月付款减去复利

    我希望以上所说的都是有意义的,任何帮助都将不胜感激

    使用的计算:-

    利率 fv-未来价值(剩余价值) np-周期数(年) pv-现值 ^例如:我不知道怎么做

    (ir/12)[fv - pv(1 + ir/12) ^ 12np] / [(1 + ir/12) ^ 12np - 1]
    
    或者使用Javascript

    function calc1(ir, fv, np, pv){
    /*
    ir - interest rate 
    fv - future value (residual value)
    np - number of periods (years)
    pv - present value
    */
    var a, b, c, d;
    
    a = ir / 12;
    b = (1 + ir/12);
    c = 12 * np;
    d = (a * (fv - (pv * Math.pow(b, c)))) / (Math.pow(b, c) - 1);
    return d;
    
    }
    

    是的,你关于重复计算的直觉是正确的,你可以把第五年的金额也写为

    x + (10000 - x)
    
    其中第一项包含在几何和公式中。第二项需要减少
    x
    ,但是
    x
    未知,这会导致一个圆圈,因为问题是线性的,所以可能会被打破


    然而,为了避免太多的代码混乱并保持一定的灵活性,可以建议您像第一次猜测一样,使用正割公式对精确的主计算公式(您用于验证从x=201获得302k英镑)进行细化。使用第一个猜测
    x
    x+1
    初始化割线法。

    这是数学软件Mathematica的问答网站,不是一般的数学。嗨,谢谢你的回答-我很清楚你说的是计算出第5年原始付款金额的未来值,然后减去这个值,然后重新计算-如果我在x+1下循环,直到达到所需金额?不完全是,我说的是打破循环。制作一个函数
    y=futureValue(x)
    。这里我们知道它是线性的,所以割线法一步就解决了它。但即使它不是线性的,割线法也应该通过几个步骤来解决它<代码>目标=300000;y0=未来价值(x0)-目标;y1=未来价值(x1)-目标;x2=(x1*y0-x0*y1)/(y0-y1)应该会导致
    futureValue(x2)-目标非常小。啊,我知道了-谢谢-还没有尝试过,但我明白你的意思以及它将如何工作。