一老人60岁时将养老金10万元存入基金会,月利率 , 他每月取1000元作为生活费,建立差分方程计算他每岁末尚有多少钱?多少岁时将基金用完?如果想用到80岁,问60岁时应存入多少钱?帮我写出matlab代码
时间: 2023-06-13 11:07:38 浏览: 216
假设老人存入的基金会年化利率为 r,每月取出的金额为 w,假设他存入的年数为 n,则他在第 i 个月末所剩下的钱为:
S(i) = (S(i-1) - w) * (1 + r/12)
其中,S(i-1)是上一个月末所剩下的钱。由此可以得到差分方程:
S(i) = (S(i-1) - w) * (1 + r/12)
S(0) = 100000
其中,S(0)为初始金额,即老人存入的金额。
根据上面的差分方程,可以写出MATLAB代码:
```matlab
% 基金会年化利率
r = 0.05;
% 每月取出的金额
w = 1000;
% 存入的金额
S0 = 100000;
% 存入的年数
n = 20;
% 计算每岁末所剩下的钱
S = zeros(n*12+1,1);
S(1) = S0;
for i = 2:length(S)
S(i) = (S(i-1) - w) * (1 + r/12);
end
% 绘制图像
plot(0:n, S(12:12:end))
xlabel('Age')
ylabel('Money')
title('Money left at the end of each year')
% 计算将基金用完的年龄
age = find(S<=0, 1)/12 - 1;
fprintf('The fund will run out at the age of %.0f\n', age)
% 计算需要存入的金额
S80 = S(12*20+1);
S_need = S80 / ((1 + r/12)^(12*(80-60))) + w*sum((1 + r/12).^(-(1:12*(80-60)))*S_need);
fprintf('To have %.0f left at the age of 80, he should save %.2f now\n', S80, S_need)
```
代码执行后,会绘制一个图像,表示每岁末老人所剩下的钱。另外,代码还会输出将基金用完的年龄和老人在60岁时需要存入的金额。