我想模拟以下值函数。
d是决策矩阵
x=t+β*w'
y=α*(c+β*v')
v=最大{x,y}
如果x>y,则v=x和d=2如果x
a=phi*t+β*w'
b=φ*c+β*v'
w=最大{a,b}
如果a>b,则w=a且d=2如果
其中右边的w'和v'是下一个周期值函数。
我需要跟踪决策矩阵d.
我在matlab中进行了以下编码。但这似乎并不正确。我的编码出了什么问题?
t=1;
c=1.4;
alpha=0.5;
beta=0.8;
phi=2;
v=rand;
w=rand;
d=[0,0];
diff=100;
i=1;
%% Value Interation
while diff>0.00001
x=t+beta*v(i);
y=alpha*(c+beta*w(i));
a=phi*t+beta*v(i);
b=phi*c+beta*w(i);
if x>y
w1=x;
d(i,1)=2;
else
w1=y;
d(i,1)=1;
end
if a>b
v1=a;
d(i,2)=2;
else
v1=b;
d(i,2)=1;
end
diff=max(abs(w(i)-w1),abs(v(i)-v1));
i=i+1;
w(i)=w1;
v(i)=v1;
end
这就是您想要的吗?特别注意V和W变量。根据公式,您的代码似乎不正确。
t=1;
c=1.4;
alpha=0.5;
beta=0.8;
phi=2;
v=rand;
w=rand;
d=[0,0];
diff_err=100;
i=1;
while diff_err>0.00001
[v1,d(i,2)]=max([t+beta*w(i),alpha*(c+beta*v(i))]);
[w1,d(i,1)]=max([phi*t+beta*w(i),phi*c+beta*v(i)]);
diff_err=max(abs(w(i)-w1),abs(v(i)-v1));
i=i+1;
w(i)=w1;
v(i)=v1;
end