作者: 王美庭
Email: wangmeiting92@gmail.com
参考资料:我们高宏王彬老师的讲义
考虑以下贝尔曼方程:
迭代思想为:
直至值函数收敛。在编程时,我们需要对函数进行离散化。于是令
构建 矩阵:
该矩阵第 行的最大值即为 ,从而可得到下一期的 。依此类推,即可构建出值函数迭代的编程过程。最开始时,我们可能会考虑使用循环来得到 矩阵,这在思维上是比较清晰易懂、在编程中也是比较好操作的,代码可能如下:
vkk = zeros(N,N);
for i=1:N
for j=1:N
if A*k(i)^alpha-k(j)<=1e-5
vkk(i,j) = -1e5; %如果消费为负,则使其不会被选中
else
vkk(i,j)= log(A*k(i)^alpha-k(j))+beta*v0(j);
end
end
end
但这可能在运算上花费大量时间。如果我们采用向量化编程,代码可能如下(读者自己可以doc
其中自己不太清楚的命令来理解其中的编程思想,其实这里仅仅是额外用