s0=50;k=50;r=0.1;sigma=0.4;t=5/12; dt=T/10;ds=5; smax=100; M=round(Smax/ds); N=round(T/dt); ds=Smax/M dt=T/N veti=1:N; vetj=1:M; a=1/(1+r*dt)*(-1/2*r*vetj*dt+1/2*sigma^2*vetj.^2*dt); b=1/(1+r*dt)*(1-sigma^2* dtj.^2*dt); c=1/(1+r*dt)*(1/2*r*vetj*dt+1/2*sigma^2*vetj.^2*dt); L=zeros(M-1,M-1); L(1,1)=b(1);L(1,2)=c(1); L(M-1,M-2)=a(M-1);L(M-1,M-1)=b(M-1); for j=2:M-2 L(j,j-1)=a(j);L(j,j)=b(j);L(j,j+1)=c(j); end f1=zeros(M-1,N+1); f1(:,N+1)=max(k-vetj(1:M-1)*ds,0); f0=zeros(M-1,1); f0(1,1)=a(1)*k; for i=N:-1:1 f1(;,i)=L*f1(:,i+1)+f0; for j=1:M-1 if f1(j,i)<=k-vetj(j)*ds; f1(j,i)=k-vetj(j)*ds end end end f2(1,1:N+1)=50; f2(2:M,N+1)=f1; f2(M+1,1:N+1)=0;
|