have this code from a book I recently looked at, I want to implement the code but I get loads of errors , can someone help me localize the errors or possibly make a runnable example?
function [P,b]=AmericanPrice(r,delta,sigma,K,nx,nt, Xhat,That)%Usage:P=AmericanPrice(r,delta,sigma,K,nx,nt,Xhat,That)
%Example:P=AmericanPrice(0.08,0.12,.2,100,50,10,300,3)
dx=Xhat/nx; dt=That/nt; for i=1:nx-1 A(i,i:i+2)=[((r-delta)*dt*i-sigmaˆ2*dt*iˆ2)/2... 1+r*dt+sigmaˆ2*dt*iˆ2 (-(r-delta)*dt*i-sigmaˆ2*dt*iˆ2)/2]; endP(:,1)=max(K-[0:dx:Xhat],0);if(delta==0) b(1)=K; else b(1)=min(K,K*r/delta);endfor j=2:nt+1 bn=0; run=1; while(run) An=[A(1+bn:end,1+bn:end)]; An(end+1,end-1:end)=[-1 1]; An(end+1,1)=1; Cn=[P(bn+2:nx,j-1)’ 0 K-bn*dx]’; Pn=inv(An)*Cn; if(Pn(2)$<$K-((bn+1)*dx)) bn=find(sign(diff(Pn)/dx+1)-1,1,{’last’})+bn; else b(j)=bn*dx; run=0; end end P(:,j)=[K-[0:bn-1]*dx Pn’]; end
what i have done so far: i changed the sigmaˆ2 to sigma*sigma, same thing with i. Then i replaced the ’ with '. I did not know what to d o with "…" The error i get is
Undefined function 'find' for input arguments of type 'cell'.Error in FDM (line 28) bn=find(sign(diff(Pn)/dx+1)-1,1,{'last'})+bn;
Best Answer