9.1
#include <iostream>
#include <math.h>
using namespace std;
double comput_prob(double pi,double p,int yi){
double prob = 1.0*pi*pow(p,yi)*pow((1.0-p),(1-yi));
return prob;
}
double emcomput_u(double *pipq,int yi){
double pi = pipq[0];
double p = pipq[1];
double q = pipq[2];
//注意该题只是默认所有的输出都是B硬币的输出,即是B输出模型
double ui = comput_prob(pi,p,yi)/(comput_prob(pi,p,yi)+comput_prob(1.0-pi,q,yi));
return ui;
}
double comput_pi(double *U,int len){
double sum = 0.0;
for(int i =0;i<len;i++){
sum += U[i];
}
return sum/len;
}
double comput_p(double *U,int *Y,int len){
double dsum = 0.0;
double sum = 0.0;
for(int i =0;i<len;i++){
sum += U[i];
dsum += U[i]*Y[i];
}
return dsum/sum;
}
double comput_q(double *U,int *Y,int len){
double dsum = 0.0;
double sum = 0.0;
for(int i =0;i<len;i++){
sum +=