算法计算当只支出当年利息时的最大可能支出总额?

2024-03-29 11:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的标题可能有点模糊,但我尽量把它说清楚。我将在下面解释我的意思:

我想创建一个动态规划算法,它可以计算出你可以花费的最大金额,当你每年唯一能花的钱是你从银行得到的利息。这意味着,如果一个人的初始资本是35000美元,那么这个人在利率为10%的情况下,最多只能花费3500美元。在

我想到了以下几点:

利息i(t)或者基本上你可以花费的金额,在上面的例子中是3500。在

支出e(t),那么你那一年花了多少钱,所以这可能是3500以下的任何东西,举个例子,我用1000。在

利率r,这是不言而喻的。在

这个公式:i(t + 1) = i(t) + r * (i(t) - e(t)),也就是说,你在下一年可以花掉的金额,就是你今年的利息加上利率乘以你支出后剩下的任何部分。在

下面我要计算的是某一年的利息支出的最高限额。我不知道怎么做,也不知道从哪里开始。在


Tags: 算法标题情况动态银行金额例子规划
1条回答
网友
1楼 · 发布于 2024-03-29 11:28:28

所以,让我们来改变你的问题。有一个向量E=(E_1,E_2,…,E峎n)。 您需要在两个条件下最大化点积<;(1,1,…,1);(E)>。在

(1)e_t>;=每t为0。
(2) eΒt<;=每t一次

由于(2)中每个条件的右部分都可以展开为e_t、i_0和r的线性组合(您给出了一个递归公式),所以所有条件可以一起写成

(2')e_t<;=sum[j=0..n]A_tj e_j,或
(2'')c_t<;=sum[j=0..n]B_tj e_j,其中B_tj和c_t是一些固定比率,因此是n*n大小的矩阵和n大小的向量。在

现在有一个经典的linear programming问题。我不想在这里描述解决这些问题的所有技巧,因为它们有很多,而你的例子是典型的。在


UPD通过公式显式扩展约束 i(t+1)=(1+r)i(t)-e(t)。
e(0)<;=i(0)
e(1)<;=i(1)=i(0)(1+r)-e(0)
e(2)<;=i(2)=i(1)(1+r)-e(1)=(i(0)(1+r)-e(0))(1+r)-e(1)=
i(0)(1+r)^2-e(0)(1+r)-e(1)

可以通过归纳法证明,但也可以看出
e(t)<;=i(0)(1+r)^t-e(0)(1+r)^(t-1)- e(1)(1+r)^(t-2)-。。。-e(t-2)(1+r)-e(t-1)

进行改革,
e(t)+和[j=t-1..0](1+r)^(t-1-j)e(j)<;=i(0)(1+r)^t
所以,我们有一个方阵:

  • B_tj=(1+r)^(t-1-j),对于j=0..t-1
  • B_tt=1
  • 对于j>;t,B_tj=0

现在您的约束形式为sum[j=0..n]B\u tj e(j)<;=c\u t
很明显(t=0)(r/t) 这是LP约束的标准形式。在

相关问题 更多 >