全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2015-6-24 18:54:07
雨後彩虹 发表于 2015-6-24 17:51
为什么要对原函数求导,不是应该对似然函数求导吗,为什么要求出二阶导?
一阶导数是求极值点,二阶导数是移动吧?忘了数学上怎么说了。
二维码

扫码加我 拉你入群

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

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

2015-6-24 20:54:33
magicsun 发表于 2015-6-24 18:54
一阶导数是求极值点,二阶导数是移动吧?忘了数学上怎么说了。
这个是极大似然估计的过程

附件列表
二维码

扫码加我 拉你入群

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

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

2015-6-24 21:14:51
迭代的时候应该需要二阶导数,当然,也可以用一阶导数相乘
二维码

扫码加我 拉你入群

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

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

2015-6-25 05:56:19
明白了。
二维码

扫码加我 拉你入群

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

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

2015-6-25 05:58:11
最好不用自己迭代,直接用最大化函数。
二维码

扫码加我 拉你入群

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

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

2015-6-25 09:30:00
magicsun 发表于 2015-6-25 05:58
最好不用自己迭代,直接用最大化函数。
意思是用优化?
二维码

扫码加我 拉你入群

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

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

2015-6-25 09:33:41
我觉得直接优化简单吧。没必要一阶导数,二阶导数的,你不就是要参数值吗,优化出来就行。
二维码

扫码加我 拉你入群

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

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

2015-6-25 09:35:52
magicsun 发表于 2015-6-25 09:33
我觉得直接优化简单吧。没必要一阶导数,二阶导数的,你不就是要参数值吗,优化出来就行。
程序中的fminsearch函数就是求优化的吧?
二维码

扫码加我 拉你入群

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

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

2015-6-25 09:41:13
好多,fmincon,fminunc,fminsearch是。其他的线性规划,等也有自己的函数。但前三个应该有适合这个例子的。
二维码

扫码加我 拉你入群

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

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

2015-6-25 09:44:27
magicsun 发表于 2015-6-25 09:41
好多,fmincon,fminunc,fminsearch是。其他的线性规划,等也有自己的函数。但前三个应该有适合这个例子的 ...
我看那些例子都是简单的,也没有观察值,只是有个范围,我是初学者,有点弄不明白,大神能帮我改改程序吗?
二维码

扫码加我 拉你入群

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

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

2015-6-25 10:26:21
你就把alpha,beta和lambda看成x1,x2,x3,x看成已知的数。然后fminunc就行了。(我觉得需要设置alpha和beta值的范围。)
二维码

扫码加我 拉你入群

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

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

2015-6-25 11:15:16
magicsun 发表于 2015-6-25 10:26
你就把alpha,beta和lambda看成x1,x2,x3,x看成已知的数。然后fminunc就行了。(我觉得需要设置alpha和be ...
你的意思是不需要我做实验弄的那些观测值?
二维码

扫码加我 拉你入群

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

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

2015-6-25 11:59:04
需要,这些就是x,已知的数
二维码

扫码加我 拉你入群

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

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

2015-6-25 19:16:17
magicsun 发表于 2015-6-25 11:59
需要,这些就是x,已知的数
>> clear
>> fx=@(x)-log(x(1)/x(2)*((1.1101e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.1101e+03-x(3))/x(2))^x(1))-log(x(1)/x(2)*((1.0035e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.0035e+03-x(3))/x(2))^x(1))-log(x(1)/x(2)*((941.2414-x(3))/x(2))^(x(1)-1)*exp(-(941.2414-x(3))/x(2))^x(1))-log(x(1)/x(2)*((971.2918-x(3))/x(2))^(x(1)-1)*exp(-(971.2918-x(3))/x(2))^x(1))-log(x(1)/x(2)*((1.1419e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.1419e+03-x(3))/x(2))^x(1));
[x,fval,exitflag,output]=fminsearch(fx,[1 200 800])
是这样吗?
二维码

扫码加我 拉你入群

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

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

2015-6-25 19:16:38
求对数之后alpha和beta就不用限定了,他们是ln(alpha),自动保证大于0了。
二维码

扫码加我 拉你入群

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

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

2015-6-25 19:23:30
应该就是这意思吧!但我不知道你的公式写的对不对!
二维码

扫码加我 拉你入群

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

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

2015-6-25 19:26:09
magicsun 发表于 2015-6-25 19:23
应该就是这意思吧!但我不知道你的公式写的对不对!
x =

   1.0e+03 *

    0.0007    0.0651    1.4948


fval =

  -0.2028 + 4.4201i


exitflag =

     1


output =

    iterations: 41
     funcCount: 147
     algorithm: 'Nelder-Mead simplex direct search'
       message: [1x194 char]
这是我运行的结果,但是极小值是虚数?
二维码

扫码加我 拉你入群

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

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

2015-6-25 20:46:25
还是错的,那可能还是需要设定alpha 和beta的范围。
二维码

扫码加我 拉你入群

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

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

2015-6-25 21:00:17
magicsun 发表于 2015-6-25 20:46
还是错的,刚才犯错了。
?什么意思?
二维码

扫码加我 拉你入群

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

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

2015-6-25 21:02:06
那可能还是需要设定alpha 和beta的范围。
二维码

扫码加我 拉你入群

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

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

2015-6-25 21:14:28
magicsun 发表于 2015-6-25 21:02
那可能还是需要设定alpha 和beta的范围。
哎~~~我再研究研究,谢谢大神~~~
对了,大神你会powell算法吗?
二维码

扫码加我 拉你入群

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

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

2015-6-26 11:53:27
会用一点。
二维码

扫码加我 拉你入群

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

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

2015-6-26 15:29:22
magicsun 发表于 2015-6-26 11:53
会用一点。
那大神帮我看看这个程序,程序是在书上抄的,为什么会出现错误呢?
这是运行结果:
>> clear
>> syms x y z;
>> x(1)=x;x(2)=y;x(3)=z;
>> fx=@(x)-log(x(1)/x(2)*((1.1101e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.1101e+03-x(3))/x(2))^x(1))-log(x(1)/x(2)*((1.0035e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.0035e+03-x(3))/x(2))^x(1))-log(x(1)/x(2)*((941.2414-x(3))/x(2))^(x(1)-1)*exp(-(941.2414-x(3))/x(2))^x(1))-log(x(1)/x(2)*((971.2918-x(3))/x(2))^(x(1)-1)*exp(-(971.2918-x(3))/x(2))^x(1))-log(x(1)/x(2)*((1.1419e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.1419e+03-x(3))/x(2))^x(1))
fx =
    @(x)-log(x(1)/x(2)*((1.1101e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.1101e+03-x(3))/x(2))^x(1))-log(x(1)/x(2)*((1.0035e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.0035e+03-x(3))/x(2))^x(1))-log(x(1)/x(2)*((941.2414-x(3))/x(2))^(x(1)-1)*exp(-(941.2414-x(3))/x(2))^x(1))-log(x(1)/x(2)*((971.2918-x(3))/x(2))^(x(1)-1)*exp(-(971.2918-x(3))/x(2))^x(1))-log(x(1)/x(2)*((1.1419e+03-x(3))/x(2))^(x(1)-1)*exp(-(1.1419e+03-x(3))/x(2))^x(1))
>> P=[-1 1 1;2 0 1;-2 0 3];
>> [x,mf]=minPowell(fx,[0,1,2],P,[x y z])

Error using syms>getnames (line 95)
Not a valid variable name.
Error in syms (line 59)
[vars,funs,control] = getnames(varargin);
Error in minPowell (line 7)
syms 1;
附件列表
二维码

扫码加我 拉你入群

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

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

2015-6-26 20:01:57
上一个你做出的结果是多少?
二维码

扫码加我 拉你入群

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

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

2015-6-26 20:10:11
你的公式写的太麻烦了。
二维码

扫码加我 拉你入群

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

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

2015-6-26 22:01:36
magicsun 发表于 2015-6-26 20:01
上一个你做出的结果是多少?
我觉得那样直接用优化函数可能太不精确了,师姐说用Powell算法会好点,所以我想试试
二维码

扫码加我 拉你入群

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

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

2015-6-26 22:31:58
magicsun 发表于 2015-6-26 20:10
你的公式写的太麻烦了。
这是《精通MATLAB最优化计算》这本书上一套完整的程序,应用到我的函数上面还是有错误,大神帮忙调试调试~~~
附件列表

结果.txt

大小:874 Bytes

 马上下载

函数.txt

大小:265 Bytes

 马上下载

程序.txt

大小:2.82 KB

 马上下载

二维码

扫码加我 拉你入群

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

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

2015-6-27 12:34:13
没有下载次数了。
二维码

扫码加我 拉你入群

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

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

2015-6-27 16:09:51
magicsun 发表于 2015-6-27 12:34
没有下载次数了。
程序.zip
大小:(2.45 KB)

 马上下载


这是整个程序和结果,你帮我看看程序那块出错了,谢谢~~~

附件列表

程序.txt

大小:3.27 KB

 马上下载

二维码

扫码加我 拉你入群

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

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

2015-6-27 16:12:23
magicsun 发表于 2015-6-27 12:34
没有下载次数了。
有个压缩文件,里面有运行的结果
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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