Matlab code from literature gives errors
Show older comments
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];
end
P(:,1)=max(K-[0:dx:Xhat],0);
if(delta==0)
b(1)=K;
else
b(1)=min(K,K*r/delta);
end
for 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;
Accepted Answer
More Answers (0)
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!