我正在使用不同的语言来解决一个简单的值函数迭代问题,在该问题中我循环遍历状态空间网格。我试图了解性能差异以及如何调整每个代码。为了后代,我在下面发布了每种语言的完整工作示例。但是,我相信大部分调整都是在while循环中完成的。我有点困惑我在 Fortran 中做错了什么,因为速度似乎低于标准。
Matlab ~2.7secs :我暂时避免使用该repmat函数的更有效的解决方案,以保持代码的可比性。代码似乎自动多线程到 4 个线程
beta = 0.98;
sigma = 0.5;
R = 1/beta;
a_grid = linspace(0,100,1001);
tic
[V_mat, next_mat] = valfun(beta, sigma, R ,a_grid);
toc
Run Code Online (Sandbox Code Playgroud)
凡 valfun()
function [V_mat, next_mat] = valfun(beta, sigma, R, a_grid)
zeta = 1-1/sigma;
len = length(a_grid);
V_mat = zeros(2,len);
next_mat = zeros(2,len);
u = zeros(2,len,len);
c = zeros(2,len,len);
for i = 1:len
c(1,:,i) = a_grid(i) - a_grid/R + 20.0;
c(2,:,i) = a_grid(i) - a_grid/R; …Run Code Online (Sandbox Code Playgroud)