% Options Fin Diff pp556-7 FncOptns FiglewskiSilberSubrahmanyan B1IrwinNYU % Written in MatLab. To recode in C, change col ops (:) and matrix inversion % Student version of MatLab limited to n=30 s=50;r=.06;sig=.4472;dt=.25;x=45;n=10;h=log(s)/n;k=dt/n;dvrt=0; a=k*(-.5*(sig/h)^2 +(r-dvrt-(sig^2)/2)/h/2); b=1+r*k+k*(sig/h)^2; c=k*(-.5*(sig/h)^2 -(r-dvrt-(sig^2)/2)/h/2); lnSmin=h; w=zeros(n,n); for i=1:n,w(i,n)=0;end gmat=zeros(n,n);for i=2:(n-1),gmat(i,(i-1))=a;gmat(i,i)=b;gmat(i,(i+1))=c;end gmat(1,1)=a+b;gmat(1,2)=c;gmat(n,(n-1))=a;gmat(n,n)=b;ivmat=inv(gmat); for j=1:(n-1), nhmg=w(:,n-j+1);nhmg(1)=nhmg(1)-a*h*exp(lnSmin);w(:,n-j)=ivmat*nhmg; for i=1:n,w(i,n-j)=max(exp(lnSmin+i*h)-x,w(i,n-j));end end ' Values for stock back integrated to first time step ' format compact;format bank;[exp(lnSmin+h*(1:n))' w(:,1)] ' Black Scholes gives 7.62 at Stock 50 ' w(n-1,1)