| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:向大神求助,最大似然法代码哪里出错了
只看楼主 加入收藏
lixuhong123
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-5
收藏
 问题点数:0 回复次数:0 
向大神求助,最大似然法代码哪里出错了
#include<math.h>
double f(double a,double b,double c)//f为概率函数
{double s;
s=0.399/sqrt(c)*exp(-(a-b)*(a-b)/2/c);
return(s);
}
double F(double a,double b,double c)
{int i;double j=0,S;
for(i=1;i<=10000;i++)
j+=f(i*a/10000,b,c);//F为分布函数
S=j*a/10000;
return(S);
}

#include<stdio.h>
#include<math.h>
double main()
{
double b,c,b1,c1,c2,w=0.0,h=0.0,x[200],y[20];
double p[10]={1,2,3,5,4,3,2,1,7,8},q[10]={0.5,0.6,0.8,0.3,0.4,0.9,0.4,0.5,0.8};
int i,j=0;
for (c=0.1;c<=2;c+=0.1)
{
    c2=c;
for(b=1.0;b<=2.0;b=b+0.01)
{for(i=0;i<=9;i++)
w+=(f(p[i],b,c)-f(q[i],b,c))/(F(q[i],b,c)-F(p[i],b,c));
x[j++]=w;y[j++]=b;}
for(j=1;j<=99;j++)if(x[0]>=x[j]){x[0]=x[j];y[0]=y[j];}
b1=y[0];//printf("b1=%lf\n",y[0]);
for (c=0.1;c<=1.0;c+=0.1)
{for(i=0,j=0;i<=9;i++)
h+=((q[i]-b1)*f(q[i],b,c)-(p[i]-b1)*f(p[i],b,c))/(F(p[i],b,c)-F(q[i],b,c));
x[j++]=h;y[j++]=c;}
for(j=1;j<=9;j++)
if(x[0]>=x[j]){x[0]=x[j];y[0]=y[j];}
 c1=y[0]; c=c2;  // printf("c1=%lf\n",y[0]);
if(fabs(c1-c2)<=0.01)
printf("b1=%lf,c1=%lf\n",b1,c1);
//break;
}
}

搜索更多相关主题的帖子: 10000 分布函数 include double 
2013-05-05 19:34
快速回复:向大神求助,最大似然法代码哪里出错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054202 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved