grass 发表于 2009-6-9 11:43:57

公式会根据input改变怎么办

我想把n放在input里。但是公式f会因为n变长。另外,公式f数量也会增加。怎么让公式自动调整?





function y = Boundary(X,r,q,sigma,T)






n=3;
delta_t=T/n;


B=zeros(1,n+1);
B(1) = min(X,r/q*X);


t =zeros(1,n+1);
t(1) = eps;




for i=2:n+1

t(i)= (i-1)*delta_t;
end


%integral(B(1),X,r,q,sigma,t(1),T)==0;


f1=@(B) X*exp(-r*(t(2)))*normcdf(-((log(B/X) + (r-q+0.5*sigma^2)*(t(2)))/(sigma*sqrt(t(2))) - sigma*sqrt(t(2)))) - B*exp((-q)*(t(2)))*normcdf(-((log(B/X) + (r-q+0.5*sigma^2)*(t(2)))/(sigma*sqrt(t(2)))))...

+0.5*delta_t*(integral(B,X,r,q,sigma,t(2))+0)-X+B;
a2 = fzero(f1,90);
B(2) = fzero(f1,90);


f2=@(B) X*exp(-r*(t(3)))*normcdf(-((log(B/X) + (r-q+0.5*sigma^2)*(t(3)))/(sigma*sqrt(t(3))) - sigma*sqrt(t(3)))) - B*exp((-q)*(t(3)))*normcdf(-((log(B/X) + (r-q+0.5*sigma^2)*(t(3)))/(sigma*sqrt(t(3)))))...

+0.5*delta_t*(integral(B,X,r,q,sigma,t(3))+2*integral(a2,X,r,q,sigma,t(2))+0)-X+B;
a3 = fzero(f2,90);
B(3) = fzero(f2,90);


f3=@(B) X*exp(-r*(t(4)))*normcdf(-((log(B/X) + (r-q+0.5*sigma^2)*(t(4)))/(sigma*sqrt(t(4))) - sigma*sqrt(t(4)))) - B*exp((-q)*(t(4)))*normcdf(-((log(B/X) + (r-q+0.5*sigma^2)*(t(4)))/(sigma*sqrt(t(4)))))...

+0.5*delta_t*(integral(B,X,r,q,sigma,t(4))+2*integral(a3,X,r,q,sigma,t(3))+2*integral(a2,X,r,q,sigma,t(2))+0)-X+B;
a4 = fzero(f3,90);
B(4) = fzero(f3,90);


function z= integral(B,X,r,q,sigma,t)
z = r*X*exp(-r.*(t))*normcdf(-((log(B/X) + (r-q+0.5.*sigma.^2)*(t))/(sigma.*sqrt(t)) - sigma.*sqrt(t)))...
- q*B*exp((-q).*(t)).*normcdf(-(log(B/X) + (r-q+0.5.*sigma.^2)*(t))/(sigma.*sqrt(t)));

messenger 发表于 2009-6-9 16:50:29

试试num2str
页: [1]
查看完整版本: 公式会根据input改变怎么办