当我尝试运行以下程序时,我一直收到错误消息。错误在最后一行。
function[P,t] = apprice(xl, xr, J, N, eps)
E=50;
r=0.02;
sigma=0.20;
T=1/3;
alpha=0.5*sigma^2*T;
nu=2*r/(sigma^2);
h=(xr-xl)/(J+1);
mu=-((nu+1)^2)/4;
delta_t=0.25/(N-1);
lambda=delta_t/(h^2);
for j=1:J+2
x(j)=xl+(j-1)*h;
end
for i=1:N+1
tau(i)=(i-1)*delta_t;
end
g_0=max(exp(((nu-1).*x)/2)-exp(((nu+1).*x)/2),0);
v(:,1)=g_0;
for n=2:N+1
g=g_0*exp(-mu*tau(n));
w_old(2:J+1)=max(v(2:J+1,n-1)',g(2:J+1,n));
我知道索引超出矩阵维度,但我不太确定在哪里解决问题。
非常感谢任何帮助!
答案 0 :(得分:1)
那么,首先,v
中v(:,1)=g_0;
的定义在哪里?这可能会导致问题...您应事先声明v=zeros()
具有一定的大小值。
此外,最后一行w_old
中的w_old(2:J+1)=max(v(2:J+1,n-1)',g(2:J+1,n));
也未定义。因为你从第二个元素引用这个变量,所以会弹出一个错误。