楼主: lingfei2mm
6634 18

[高手进]求助!用MATLAB计算非线性方程组,编程后输出结果显示有错,请各位高手帮帮忙 [推广有奖]

  • 0关注
  • 0粉丝

小学生

0%

还不是VIP/贵宾

-

威望
0
论坛币
23 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
297 点
帖子
10
精华
0
在线时间
16 小时
注册时间
2009-11-2
最后登录
2010-7-21

楼主
lingfei2mm 发表于 2010-3-13 20:51:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
急!求助:以下是我解非线性方程组引用的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{:});

二维码

扫码加我 拉你入群

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

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

关键词:MATLAB 非线性方程组 atlab matla 线性方程组 MATLAB 方程 结果 高手 非线性

沙发
aris_zzy 发表于 2010-3-13 21:36:45
你这是求解BS模型的隐含波动率什么的?
错误提示语法不完全
http://www.ariszheng.com

藤椅
epoh 发表于 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

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

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

地板
epoh 发表于 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.

7
lingfei2mm 发表于 2010-3-14 11:57:18
这个意思是不是要赋一个新的初始值啊??

8
epoh 发表于 2010-3-14 12:24:44
对.意思就是要你换初始值,
初始值很重要,一定要多试几个.
有空请再检查一下你的function,
方程有没写错.

9
lingfei2mm 发表于 2010-3-14 17:02:40
按照你的解释我赋了很多初始值好像还是没有作用,现在实在是没办法了,急着求结果,就只有靠你的帮忙了,您可否帮我找出适合的初始值吗?实在是感激不尽!!!!!!

10
lingfei2mm 发表于 2010-3-14 17:43:40
我赋了初值【1000000000;0.1】后显示的结果是:
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.
请问里面的初值是要变大还是应该缩小的好??

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 03:43