公式会根据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))); 试试num2str
页:
[1]