最近办公室的好多同志都在买房了,我了解了等月还款的方式。其实是一个一阶差分方程。
设总贷款数为y0,分n月换清,月利率为Rate,每月换M,那么得到以下递推公式:
第一月还款后:y1 = y0*(1+Rate)-M 还有y1这么多未还
第二月还款后:y2 = y1*(1+Rate)-M 还有y2这么多未还
...................................................
第k月后(k<n):yk = y(k-1)*(1+Rate)-M 其实这就是一阶差分方程。
...................................................
第n月后: yn = y(n-1)*(1+Rate)-M 此时已经还完了,yn=0。
熟悉差分方程的,还是一阶的差分方程,可以很快写出公式。当然可以通过递推公式,从后面带入前面的公式,也可以找出规律,计算出公式:
M = y0*(1+Rate)^n/((1+Rate)^n-1)
不过这里,我想实现的,并不需要太多数学的知识,而是通过迭代公式,通过设定一个M的初始值,然后逐次逼近。以下是这个算法。
//total 贷款总数
//permonth 每月还款数
//rate 月利率
//count 总共还款次数(多少个月换)
float calculate(float total, float permonth, float rate, int count)
{
if(count == 1)
retur