matlab 如果一个人投资了钱,然后把他每月的收入每个月都投资在那笔投资上,总收入是多少?

vltsax25  于 2023-01-09  发布在  Matlab
关注(0)|答案(1)|浏览(166)

假设我投资了1000欧元,期望在一年内获得+10%的收益,因此是1100欧元。每个月的收益是91.667欧元,我每个月都把它再投资一次,加上91.667欧元的10%,即额外的利息。
下面的算法是否正确?

totalMoney=1100;
moneyPerMonth=0;
for i=1:12
moneyPerMonth=(moneyPerMonth+totalMoney)/12
totalMoney=totalMoney+moneyPerMonth/12
end

我得到以下结果:

moneyPerMonth =  91.667
totalMoney =  1107.6
moneyPerMonth =  99.942
totalMoney =  1116.0
moneyPerMonth =  101.33
totalMoney =  1124.4
moneyPerMonth =  102.14
totalMoney =  1132.9
moneyPerMonth =  102.92
totalMoney =  1141.5
moneyPerMonth =  103.70
totalMoney =  1150.1
moneyPerMonth =  104.49
totalMoney =  1158.8
moneyPerMonth =  105.28
totalMoney =  1167.6
moneyPerMonth =  106.08
totalMoney =  1176.5
moneyPerMonth =  106.88
totalMoney =  1185.4
moneyPerMonth =  107.69
totalMoney =  1194.3
moneyPerMonth =  108.50
totalMoney =  1203.4

这意味着我发现我的收入从+10%增加到20,034%,总收入为1203.4。
对不对呀?

rt4zxlrg

rt4zxlrg1#

两件事:首先,你的问题中没有明确提到复利--如果10%这个数字是按年复利计算的,那么到年底你确实会有1,100美元,但你的月利率不会是0.1/120.008333。如果你用这个数字来计算月利率,你将按月复利计算。这导致有效年利率为10.471%,而不是10%。要达到有效年利率10%,你的月利率只有0.007974
一旦你决定了要使用哪一个,剩下的就相当简单了,例如使用python:

annual =  0.007974 #the code below uses this rate, but you can easily change it to "monthly"
monthly = 0.008333
months = 12
investment = 1000

balance = investment
print('after month',"\taccrued int","\tbalance",)
for m in range(months):    
    interest = balance*annual
    balance+=interest    
    print(m+1, '\t\t',format(interest,".2f"), '\t\t',format(balance,".2f"))

输出:

after month accrued int balance
1        7.97        1007.97
2        8.04        1016.01
3        8.10        1024.11
4        8.17        1032.28
5        8.23        1040.51
6        8.30        1048.81
7        8.36        1057.17
8        8.43        1065.60
9        8.50        1074.10
10       8.56        1082.66
11       8.63        1091.30
12       8.70        1100.00

相关问题