找回密码
 注册
Simdroid-非首页
查看: 52|回复: 1

公式会根据input改变怎么办

[复制链接]
发表于 2009-6-9 11:43:57 | 显示全部楼层 |阅读模式 来自 德国
我想把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)));

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2009-6-9 16:50:29 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
试试num2str
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 07:33 , Processed in 0.034037 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表