等额本息计算公式

等额本息是指一种贷款的还款方式,指在还款期内,每月偿还同等数额的贷款(包括本金和利息)。

这种算法较等额本金来说,还是有点儿复杂的,等额本金虽然每月还款都不一样,但是算法简单,因为每月的本金都是相同的,只需要在本金的基础上加上剩余应还在当月产生的利息就可以了。但是等额本息不一样,虽然每月还款额都一样,但是组成的部分不一样,前期还款利息占比较多,到后期利息占比较少,每期的本金加利息的总额是相等的。

等额本息的计算公式可以轻松地在网上查到,那么这个公式是怎么推导出来的呢?我们就来试着推导一下。

本金为a,利率为b,分n期。设每月还款为x

第一期还款后的剩余应还表示如下:

a ( 1 + b ) - x

第二期还款后的剩余应还

[a(1+b) -x](1+b)-x

= a(1+b)^2-x(1+b)-x

第三期还款后的剩余应还

[a(1+b)^2 - x(1+b)-x](1+b) - x

=a(1+b)^3-x(1+b)^2-x(1+b)-x

依次类推第n期还款后的剩余应还

a(1+b)^n-x(1+b)^{n-1}-x(1+b)^{n-2}-x(1+b)^{n-3}-…-x(1+b)^0

=a(1+b)^n - [x(1+b)^{n-1}+x(1+b)^{n-2}+x(1+b)^{n-3} + ... +x(1+b)^{0}]

利用等比数列的求和公式,可对后半部分进行归纳

等比数列的求和公式:

其中a1是首项,q是公比,Sn为前n项和

在本式中,x为首项,(1+b)为公比,代入公式

a(1+b)^n-\frac{x(1-(1+b)^n)}{-b}

最后一期还款之后的剩余应还应该是0,所以上面的表达式的值是0

a(1+b)^n+\frac{x(1-(1+b)^{n})}{b}  = 0

ab(1+b)^n+{x(1-(1+b)^n)} =0

ab(1+b)^n = -{x(1-(1+b)^n)}

x=\frac{ab(1+b)^n}{(1+b)^n-1}

这就是等额本息计算公式的推导过程。


那么如果我想知道每月还款的明细(本金和利息各还多少)该怎么做呢,我觉得应该也可以通过数学的方法算出来,奈何我不会,只能通过程序来遍历出来。

因为无论是等额本金还是等额本息,第一个月的利息是一样的,即全部贷款金额产生的利息,那么在前面已经推导出了等额本息的计算公式,每月的还款额可以得知,那么将还款额减去首月的利息就是首月还款的本金,知道了首月还款本金就可以算出来下一个月还款的利息,依次类推,代码如下:

public static void calc2(double amount, double rate, int periods) {

    double monthRate = rate / 12;

    double retu = amount * (monthRate * Math.pow(1 + monthRate, periods))/ (Math.pow(1 + monthRate, periods) - 1);

    System.out.println("每月还" + retu + ",一共还" + retu * periods);

    //计算每月还款详情

    double rest_amount = amount;

    for(int i = 0;i<periods;i++){

        double instered = rest_amount * monthRate;

        double this_amount = retu - instered;

        rest_amount -= this_amount;

        System.out.println("第" + (i + 1) + "期:\t应还本金\t" + this_amount + "\t应付利息\t"

        + instered + "\t本金+利息\t" + (this_amount+instered) + "\t剩余应还\t" + rest_amount);

    }

}

这样每个月的还款详情就可以借助程序算出来了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。