楼主: 雨後彩虹
20288 100

[问答] 极大似然估计的MATLAB程序,哪位大神帮忙看看,多谢了 [推广有奖]

81
雨後彩虹 发表于 2015-7-3 11:28:01
magicsun 发表于 2015-7-3 08:49
你不用disp会不会出结果?
不能,程序报错

82
magicsun 发表于 2015-7-3 11:55:20
你把你写的传上来,看看。

83
雨後彩虹 发表于 2015-7-3 16:49:38
magicsun 发表于 2015-7-3 11:55
你把你写的传上来,看看。
function y=myfc(b)
syms r
t(1)=1.1101e+03;
t(2)=1.0035e+03;
t(3)=941.2414;
t(4)=971.2918;
t(5)=1.1419e+03;
s1=0;s2=0;s3=0;s4=0;s5=0;
for i=1:5
     s1=s1+log(t(i)-r);
     s2=s2+(t(i)-r)^b*log(t(i)-r);
     s3=s3+(t(i)-r)^b;
end
y=1/b+1/5*s1-s2/s3;

84
magicsun 发表于 2015-7-3 19:38:18
我的意思是你怎么解,不是函数。

85
雨後彩虹 发表于 2015-7-4 10:03:22
magicsun 发表于 2015-7-3 19:38
我的意思是你怎么解,不是函数。
我用的是二分法~~~
function y=erfen(fun,a,b,esp)
if nargin<4
    esp=1e-4;
end
if feval(fun,a)*feval(fun,b)<0
    n=1;
    c=(a+b)/2;
    while c>esp
        if feval(fun,a)*feval(fun,c)<0
            b=c;
            c=(a+b)/2;
        elseif feval(fun,c)*feval(fun,b)<0
            a=c;
            c=(a+b)/2;
        else
            y=c;
            esp=10000;
        end
        n=n+1;
    end
        y=c;
elseif feval(fun,a)==0
            y=a;
elseif feval(fun,b)==0
                y=b;
else disp('these,may not be a root in the intercal');
end
n

86
yuyike 发表于 2015-7-4 13:23:02
学习了

87
magicsun 发表于 2015-7-4 14:25:00
雨後彩虹 发表于 2015-7-4 10:03
我用的是二分法~~~
function y=erfen(fun,a,b,esp)
if nargin
你这二分法跟原先你写的方程也没关系吧?我觉得你原先似乎说r假定已知,当成字符,如果是二元方程的话,你比如
ax^2+bx+c=0,你可以直接解出来x的表达式(用字母a,b和c表示的),你的方程表示不了(我觉得)。而这二分法似乎将r视为已知,然后解一个一元(beta)的很复杂的方程的数值解。所以我觉得你原先的函数不应该syms r。而应该在()中直接写上r,然后解方程时,你可以将已知的r带进去吧?

88
雨後彩虹 发表于 2015-7-4 15:16:53
magicsun 发表于 2015-7-4 14:25
你这二分法跟原先你写的方程也没关系吧?我觉得你原先似乎说r假定已知,当成字符,如果是二元方程的话,你 ...
这个二分法程序跟方程没有关系,是源代码~~~直接写成r应该不对,会提示r未定义

89
magicsun 发表于 2015-7-4 17:07:05
解方程,必须得二分法?我怎么记得直接solve一下就可以?

90
雨後彩虹 发表于 2015-7-6 10:52:17
magicsun 发表于 2015-7-4 17:07
解方程,必须得二分法?我怎么记得直接solve一下就可以?
我是在文献上看的,不管什么方法,我觉得我那个方程编的貌似有问题

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

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