全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版)
9000 2
2010-01-14
请教编程达人 关于fminsearch和fminunc为什么初始值不同,计算的结果不同?见下面的例子:
第一个问题:
例1  f='x(1)^3+x(2)^3-3*x(1)*x(2)';          % 这时初始值取的是x0=[2,2]
       [x,fval]=fminsearch(f,[2,2])

运行结果是:
x =
    1.0000    1.0000

fval =
   -1.0000

可是 当初始值取x0=[-1.2,1]时,
f='x(1)^3+x(2)^3-3*x(1)*x(2)';
[x,fval]=fminsearch(f,[-1.2,1])

运行结果是:
Exiting: Maximum number of function evaluations has been exceeded
         - increase MaxFunEvals option.
         Current function value: -3639352150178994600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000

x =
  1.0e+044 *
   -1.2279   -1.2137

fval =
-3.6394e+132

我想知道为什么会出现这样的情况,fminsearch对初始点有什么要求吗?

第二个问题:
与第一个问题类似,若用例1中的目标函数,而采用fminunc来求这个无约束的最小点,当初始点取x0=[2,2]或x0=[1,8]都无法求得问题的最优解,这时候怎么办呢?

期盼大家能给解答,谢谢各位关注我这个问题的人。
二维码

扫码加我 拉你入群

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

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

全部回复
2010-1-14 22:02:19
1# shalou1

fminsearch 和fminunc 都只能找local的minimum。 (这也取决于采用何种算法, 可以用optimset 进行设置)。

我的经验是fminsearch 对于两个以上参数的函数是很不管用的, 建议还是自己编个小程序解决。

另外, 你如果坚持要用的话, 那就用不同的初始值都解一遍, 然后比较得到的函数值。 还有一点就是在做之前要先仔细研究一下该函数的性质, 避免出现不可预料的情况。
二维码

扫码加我 拉你入群

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

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

2010-2-4 12:09:29
最优化的程序怎么写呢?我现在需要估计的就是3个以上参数。每次改一下初始值,得到的结果都不一样。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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