数学建模——房屋贷款问题——python实现

软件:

python3.10版

内容:

现有一房子商业贷款总额为130万元,期限30年,年利率5.8%。

  1. 请分别用等额本息和等额本金两种还款方式计算每月的利息、本金、还款金额与还款总额。
  2. 在等额本息还款方式下,改变还款周期为一个季度和一年(相应r也改变),分别计算两种新周期下的还款总额。并说明是否周期越短还款总额越小?

建模:

设贷款额为x0,月利率为r,年利率为R,贷款月数n,贷款年数N

R=R/12,n=Nx12

等额本息还款模型:
每月还款:a=xr(1+r)n/((1+r)n-1)
还款总额:A1=na=n xr(1+r)n/((1+r)n-1)
总利息:s=A1-x

等额本金还款模型:
每月还款:x=x/n+x*(1-(k-1)/n)r k=1,2,….,n
还款总额:A2=x+xr*(n+1)/2
总利息:s=A2-x
 


python代码:

(1)每个月的

# 贷款额为x0,月利率为r,年利率为R,贷款月数为n,贷款年数为N
# x0 = int(input("请输入贷款额(元):"))
# R = float(input("请输入年利率(如5.8%,输入:0.058):"))
# N = int(input("请输入贷款年数(年):"))
# r = R / 4
# n = N * 4

# test data
x0=1300000
R=0.058
N=30
r = R / 12
n = N * 12

# 月均还款(本金+利息)
a = x0 * r * pow((1 + r), n) / (pow((1 + r), n) - 1)

# 还款利息总和
Y = n * x0 * r * pow((1 + r), n) / (pow((1 + r), n) - 1) - x0


print("-----等额本息计算-----")

# 还款总额
A1 = n * a
print("第1个月,利息:%s,本金:%s,还款金额(本金+利息):%s,还款总额:%s" % (x0 * r, a - x0 * r, a, A1))
# 第2 - n个月还款利息
for t in range(2, n + 1):
    ci = (x0 * r - a) * pow((1 + r), (t - 1)) + a       # 每月的利息
    bi = a - ci                                         # 每月的本金
    print("第%d个月,利息:%s,本金:%s,还款金额(本金+利息):%s,还款总额:%s" % (t, ci, bi, a, A1))

print("-----等额本金计算-----")

# 每月应还本金
d = x0 / n
A2 = 0
for m in range(1, n + 1):
    f = (x0 - d * (m - 1)) * r  # 每月应还利息
    g = d + f                   # 每月应还本金
    A2 = A2 + g                 # 已还款金额

    print("第%d个月,利息:%s,本金:%s,还款金额(本金+利息):%s" % (m, f, d, g))
print("还款总额:%s" % A2)

(2)每个季度的

#test data
x0=1300000
R=0.058
N=30
r = R / 4
n = N * 4
# 月均还款(本金+利息)
a = x0 * r * pow((1 + r), n) / (pow((1 + r), n) - 1)
# 还款利息总和
Y = n * x0 * r * pow((1 + r), n) / (pow((1 + r), n) - 1) - x0
print("-----等额本息计算-----")
# 还款总额
A1 = n * a
print("第1年,利息:%s,本金:%s,还款金额(本金+利息):%s,还款总额:%s" % (x0 * r, a - x0 * r, a, A1))
# 第2 - n个月还款利息
for t in range(2, n + 1):
    ci = (x0 * r - a) * pow((1 + r), (t - 1)) + a       # 每月的利息
    bi = a - ci                                         # 每月的本金
    print("第%d年,利息:%s,本金:%s,还款金额(本金+利息):%s,还款总额:%s" % (t, ci, bi, a, A1)

 每一年的

#test data
x0=1300000
R=0.058
N=30
r = R / 1
n = N * 1

print("-----等额本息计算-----")
# 月均还款(本金+利息)
a = x0 * r * pow((1 + r), n) / (pow((1 + r), n) - 1)
# 还款利息总和
Y = n * x0 * r * pow((1 + r), n) / (pow((1 + r), n) - 1) - x0
# 还款总额
A1 = n * a
print("第1年,利息:%s,本金:%s,还款金额(本金+利息):%s,还款总额:%s" % (x0 * r, a - x0 * r, a, A1))
# 第2 - n个月还款利息
for t in range(2, n + 1):
    ci = (x0 * r - a) * pow((1 + r), (t - 1)) + a       # 每月的利息
    bi = a - ci                                         # 每月的本金
    print("第%d年,利息:%s,本金:%s,还款金额(本金+利息):%s,还款总额:%s" % (t, ci, bi, a, A1))


输出结果:

等额本息

 每月还款金额:7627.789494946575元

还款总额:2746004.2181807673元

等额本金:

 第一个月还款金额:9894.444444444445元

第二个月还款金额:3628.5648148148143元

还款总额:2434141.666666667

(2)

周期为一个季度:

还款总额:2750911.7763269176

周期为一个年: 

还款总额:2772940.7758005406

问:说明是否周期越短还款总额越小?

答:对比:

月的还款总额:2746004.2181807673元

季的还款总额:2750911.7763269176元

年的还款总额:2772940.7758005406元

对比发现周期越短还款总额是越大的

则不能说明。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>