全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
6633 18
2010-03-13
急!求助:以下是我解非线性方程组引用的fsolve命令的程序以及输出的错误,望各位高手帮忙!谢谢..
主程序是:
function F=myfun(x)
a=(a(1);a(2);a(3))
F=[a(1)-x(1)*normcdf((log(x(1)/a(2))+(0.025+x(2)*x(2))/2)/x(2))+a(2)*exp(-0.025)*normcdf((log(x(1)/a(2))+(0.025-x(2)*x(2))/2)/x(2));normcdf((log(x(1)/a(2))+(0.025+x(2)*x(2))/2)/x(2))*x(1)*x(2)/a(1)-a(3)];
输入命令:
a=[851169606 1059209620 0.514241];
>> x0=[5;0.4];
>> [x,fval]=fsolve(@myfun,x0,optimset('Display','iter'))
后显示的错误:
??? Error: File: d:\MATLAB7\work\myfun.m Line: 2 Column: 8
Incomplete or misformed expression or statement.

Error in ==> fsolve at 180

fuser = feval(funfcn{3},x,varargin{:});

二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-13 21:36:45
你这是求解BS模型的隐含波动率什么的?
错误提示语法不完全
二维码

扫码加我 拉你入群

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

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

2010-3-13 22:53:50
有参数最简单的方法,是用global Variables.
但global Variables要小心用.
function F=myfun(x,a)
global a
F=[a(1)-x(1)*normcdf((log(x(1)/a(2))+....

%%%in MATLAB workspace,
global a
a=[851169606 1059209620 0.514241];
x0=[5;0.4];
[x,fval]=fsolve(@myfun,x0,optimset('Display','iter'))

Optimizer appears to be converging to a minimum that is not a root:
Sum of squares of the function values is > sqrt(options.TolFun).
Try again with a new starting point.

x =
    5.0000
    0.4000
fval =
  1.0e+008 *

    8.5117
   -0.0000
二维码

扫码加我 拉你入群

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

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

2010-3-14 10:56:57
恩,是的!我要求的就是BS模型的隐含波动率和资产价值,不知道我这程序中哪些语法出现错误,还望多多赐教,非常感谢!!!!
二维码

扫码加我 拉你入群

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

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

2010-3-14 11:06:07
非常感谢这么详细的指导,但是我还是有点不明白这个是算出来的结果吗?好像这个结果不太对哦,是不是我赋的初值不对啊??
二维码

扫码加我 拉你入群

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

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

2010-3-14 11:21:17
Optimizer appears to be converging to a minimum that is not a root:
Sum of squares of the function values is > sqrt(options.TolFun).
Try again with a new starting point.
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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