个人住房贷款计算器的数学原理

2023-11-20 17:40

本文主要是介绍个人住房贷款计算器的数学原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 等本息法月还款额计算公式的推导

月还款额 =贷款金额 x 月利率 x (1 + 月利率)期数

(1 + 月利率)期数 - 1

现在就让我们来推导出这个公式吧。

我们知道,等本息法的计算方法如下:

  • 本月月还利息 = 上月剩余贷款余额 x 月利率
  • 本月月还本金 = 月还款额 - 本月月还利息
  • 本月剩余贷款余额 = 上月剩余贷款余额 - 本月月还本金

因此:

本月剩余贷款余额
= 上月剩余贷款余额 - 本月月还本金
= 上月剩余贷款余额 - (月还款额 - 本月月还利息)
= 上月剩余贷款余额 - 月还款额 + 本月月还利息
= 上月剩余贷款余额 - 月还款额 + 上月剩余贷款额 x 月利率
= 上月剩余贷款余额 x (1 + 月利率) - 月还款额

设:

  • A = 贷款金额
  • r = 月利率
  • n = 期数
  • z = 月还款额

这样,各个月的剩余贷款余额如下表:

期数剩余贷款余额
0AA
1A(1+r) - zA(1+r) – z
2[A(1+r) - z](1+r) – zA(1+r)2 – z[(1+r) + 1]
3{A(1+r)2 – z[(1+r) + 1]}(1+r) - zA(1+r)3 – z[(1+r)2 + (1+r) + 1]
n{A(1+r)n-1 – z[(1+r)n-2 + … + (1+r) + 1]}(1+r) - zA(1+r)n – z[(1+r)n-1 + … + (1+r) + 1]

根据上表,最后一期的剩余贷款余额是:

A(1+r)n – z[(1+r)n-1 + … + (1+r) + 1] = A(1+r)n – z[(1+r)n - 1] / r

上面的计算是根据等比数列的求和公式,Sn = a1(qn – 1) / (q – 1),其中 a1 = 1,q = 1+r 。

由于最后一期的剩余贷款余额必须为零,因此:

A(1+r)n – z[(1+r)n - 1] / r = 0

z[(1+r)n - 1] / r = A(1+r)n

z = A · r · (1+r)n / [(1+r)n - 1]

这就是本文一开头提到的等本息法月还款额的计算公式。

 

2. 等本息法应付的总利息

在利率不变的情况下,等本息法的月还款额是固定的,计算公式如下:

  • 月还款额 = 贷款金额 x 月利率 x  (1+月利率)期数 / [(1+月利率)期数 - 1]
  • 本月月还利息 = 上月剩余贷款余额 x 月利率
  • 本月月还本金 = 月还款额 - 本月月还利息
  • 本月剩余贷款余额 = 上月剩余贷款余额 - 本月月还本金

因此:

总利息 = 总还款额 - 贷款金额 = 月还款额 x 期数 - 贷款金额 = z · n - A

将月还款额 z = A · r · (1+r)n / [(1+r)n - 1] 代入上式,得到:

总利息 = A · [1 + (n · r - 1) · (1+r)n] / [(1+r)n - 1]

上式中,贷款金额 A 和月利率 r 都是正实数,期数 n 是正整数。

思考题:

  1. 证明:按上式计算的总利息大于零。
  2. 当月利率 r 趋向于零时,按上式计算的总利息的极限是多少?

当贷款金额 A = 10 万元,月利率 r = 3.87% / 12,期数 n = 240 时,代入上式计算得到的总利息是 43,796.52 元。下图中使用个人住房贷款计算器计算出来的总利息是 43,796.00 元,两者相差 0.52 元,是因为该计算器在计算还款计划表时各个月的月还利息都必须进行舍入处理造成的。

 

3. 等本金法应付的总利息

在利率不变的情况下,等本金法的月还本金是固定的,计算公式如下:

  • 月还本金 = 贷款金额 / 期数
  • 本月月还利息 = 上月剩余贷款余额 x 月利率
  • 本月月还款额 = 月还本金 + 本月月还利息
  • 本月剩余贷款余额 = 上月剩余贷款余额 - 月还本金

这样,各个月的月还利息如下表:

期数月还本金月还利息剩余贷款余额
0  A · (1 – 0/n)
1A / nr · A · (1 – 0/n)A · (1 – 1/n)
2A / nr · A · (1 – 1/n)A · (1 – 2/n)
3A / nr · A · (1 – 2/n)A · (1 – 3/n)
nA / nr · A · [1 – (n-1)/n]A · (1 – n/n)

因此,将上表中各个月的月还利息加起来就得到:

总利息 = r · A · n –  r · A · n · [0 + (n-1)/n] / 2

上面的计算是根据等差数列的求和公式,Sn = n · (a1 + an) / 2,其中 a1 = 0,an = (n-1)/n 。

化简后得到:

总利息 = A · (n+1) · r / 2

当贷款金额 A = 10 万元,月利率 r = 3.87% / 12,期数 n = 240 时,代入上式计算得到的总利息是 38,861.25 元。下图中使用个人住房贷款计算器计算出来的总利息是 38,860.94 元,两者相差 0.31 元,是因为该计算器在计算还款计划表时各个月的月还利息都必须进行舍入处理造成的。

 

4. 等本息法和等本金法应付的总利息的比较

那么,在贷款金额、利率和期限相同的情况下,哪种还款方式的成本更小呢?

在上面两个小节中,我们看到,当贷款金额为 10 万元,年利率为 3.87%,期限为 20 年时,等本息法应付的总利息为 43,796.00 元,而等本金法为 38,860.94 元,两者相差 4,935.06 元。

但是,在上述情况下,等本息法的月还款额固定为 599.15 元。而等本金法的月还款额第一个月为 739.17 元,以后逐月递减,直到最后一个月为 417.21 元。

可见,如果经济能力能够负担刚开始时比较大的月还款额,应该选择等本金法,可以节省不少利息。

当然,上面仅仅是一个特定的例子,并不是证明在所有情况下等本金法都会比等本息法节省利息。

根据前面的两个小节,我们知道:

等本息法的总利息 = A · [1 + (n · r - 1) · (1+r)n] / [(1+r)n - 1]

等本金法的总利息 = A · (n+1) · r / 2

利息差 = A · { [1 + (n · r - 1) · (1+r)n] / [(1+r)n - 1] - (n+1) · r / 2 }

上面的算式中,贷款金额 A 和月利率 r 都是正实数,期数 n 是正整数。

现在我们来证明利息差不小于零:

利息差
 
 
 

因为上式中第一个因子是大于零的,所以我们只要证明第二个因子不小于零就行了。令:

对该函数求导:

 
 
 
 
 

再次求导:

 
 
 
 

所以 是增函数。

因为

所以

所以 是增函数

所以

证毕。

注:上述证明来源于“数学研发论坛”中的一个帖子“求证一个不等式”。

 

下面是利息差关于月利率 r 的函数的图像,坐标原点在左下角,贷款金额为1元,期数为180个月,年利率从0%变化到10%,函数值(利息差)从0元变化到0.18元。

上面的 Plot 程序请参见我在2005年11月1日发表的随笔“画函数图形的C#程序(改进版)”。

 

5. 利率为零时的情况

如果天上掉馅饼下来,贷款的利率为零的话,月还利息就为零,月还款额等于月还本金,等于贷款金额除以期数,对于等本息法就和等本金法都是这样的。

在前面的第1小节,我们证明了等本息法的月还款额由以下公式决定:

z = A · r · (1+r)n / [(1+r)n - 1]

上式在月利率 r 趋向于零时的极限:

上面的计算中用到的规则:

  1. 洛必达法则:
  2. 导数的乘积法则:
  3. 多项式的求导公式:

其实,这个极限这也可以用初等方法(即不使用微积分)解出,如下:

上面的计算中使用了“二项式定理”:

下面是等本息法的月还款额关于月利率 r 的函数的图像,贷款金额为1元,期数为180个月,年利率从 -0.1% 变化到 10% ,函数值(月还款额)从 0.005514 元变化为 0.010746 元。注意:A/n = 1/180 = 0.005555… 。

这篇关于个人住房贷款计算器的数学原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/396315

相关文章

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

LeetCode 第414场周赛个人题解

目录 Q1. 将日期转换为二进制表示 原题链接 思路分析 AC代码 Q2. 范围内整数的最大得分 原题链接 思路分析 AC代码 Q3. 到达数组末尾的最大得分 原题链接 思路分析 AC代码 Q4. 吃掉所有兵需要的最多移动次数 原题链接 思路分析 AC代码 Q1. 将日期转换为二进制表示 原题链接 Q1. 将日期转换为二进制表示 思路分析

2025届计算机毕业设计:如何构建Java SpringBoot+Vue个人健康档案管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录

【动手学深度学习】04 数据操作 + 数据预处理(个人向笔记)

数据操作 N维数组是机器学习和神经网络的主要数据结构其中 2-d 矩阵中每一行表示每一行表示一个样本 当维度来到三维的时候则可以表示成一张图片,再加一维就可以变成多张图片,再加一维则可以变成一个视频 访问元素 冒号表示从冒号左边的元素到冒号右边的前一个元素(开区间),其中如果左边为空,那么表示从第一个开始,如果右边为空,那么表示访问到最后一个,如果两边都为空,则表示全部访问其中一行中我们指

Thinkphp6.0+vue个人虚拟物品网站源码

Thinkphp6.0+vue个人虚拟物品网站源码 支持码支付对接 扫码自动发货 源码一共包含两个部分thinkphp6.0后端文件,以及vue前端文件。 服务器环境 php7以上,mysql5.6以上; 内附安装说明 代码免费下载

Windows目录及程序安装路径个人习惯

目录 一、系统盘IntelProgram FilesProgram Files (x86)ProgramDataWindowsUsers 二、软件盘360AdobeGameSoftMyIDESQLTencentWorkSoftXunLei 三、文件盘ApacheTencentDataMediaGameDataMyProject其他文件最终下载 视情况、或文中错误,而不定期更

分享个人学习和解决问题的的方法

1.自己去分析问题,去看源码 2.去百度搜索 3.去问同学同事朋友 4.去QQ群里问 除了自己解决,我最支持的是去QQ群里问, QQ群里有全国各地的程序员,有各种水平的程序员, 这样一个问题,会有各种各样的答案,学到更多的知识。 同时,我也建议大家去有空了去群里回答问题, 帮助别人的同时也可以自己学到知识,何乐而不为?