matlab内部迭代函数_MATLAB:向量化编程提升值函数迭代(Value Function Iteration)的速度...

本文介绍了如何利用MATLAB的向量化编程提升值函数迭代(Value Function Iteration)的速度。通过对比循环和向量化编程两种方法,展示了向量化编程在解决迭代问题时的效率优势。文中提供了一个简单的迭代函数例子,并附带了测试代码,结果显示向量化编程的运行速度是循环编程的约10倍。对于更复杂的stochastic情况,虽然设置可能更复杂,但为提高计算效率,采用向量化编程是值得的。
摘要由CSDN通过智能技术生成

作者: 王美庭
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其中自己不太清楚的命令来理解其中的编程思想,其实这里仅仅是额外用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值