全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1693 3
2014-05-10


我想用matlab编程计算看涨期权中v的值

我写的M文件中的程序如下:但是运行不出来

Functiony=myfun(v,f,sigv,e,r,T)

d1=(log(v/f)+(r+0.5*sigv^2)T)/sigv*sqrt(T);

d2=d1-sigv*sqrt(T);

y=v*normcdf(d1,0,1)-f*exp(-rT)*normcdf(d2,0,1)-e;


运行程序:

v(i,1)=fsolve(@(v)myfun(v,f,sigv,e,r,T),[1000000;0.1]);
出现错误:

??? Error using ==> fsolveFSOLVE requires two input arguments.  请各位大神帮我解答一下!非常感谢!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-5-10 16:37:22
好高端,希望有人能帮到你呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-10 16:39:29
谢谢楼上,希望有人帮我解答一下,急用啊。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-10 16:59:52

x=load('C:\Users\admin\Desktop\12.txt');
n=length(x);
result=zeros(n-1,1);
logresult=zeros(n-1,1);
for i=2:n
   result(i-1)=x(i)/x(i-1);
end
for i=1:n-1
logresult((i))=log(result(i));
end
sige=std(logresult);
e=load('C:\Users\admin\Desktop\123.txt');
r=load('C:\users\admin\desktop\2.txt');
f=load('C:\users\admin\desktop\21.txt');
m=length(e);
e=zeros(m,1);
r=zeros(m,1);
f=zeros(m,1);
for i=1:m
   sigv=sige;
   T(i,1)=1;
   v(i,1)=fsolve(@(v)myfun(v,f,sigv,e,r,T),[1000000;0.1]);
end
v(i,1);
这是我的运行程序




m文件总的程序为:
Function y=myfun(v,f,sigv,e,r,T)
d1=(log(v/f)+(r+0.5*sigv^2)*T)/sigv*sqrt(T);
d2=d1-sigv*sqrt(T);
y=v*normcdf(d1,0,1)-f*exp(-rT)*normcdf(d2,0,1)-e;

出现的错误为:
??? Attempt to execute SCRIPT myfun as a function.


Error in ==> fsolve at 180
        fuser = feval(funfcn{3},x,varargin{:});

求各位大神指点!非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群