package neko;
import tool.*;
public class pro {
int s,datanumber;
String[] data=new String[600];
int[] pp=new int[500];
int[] px=new int[60000];
int number;
double[] mu=new double[11];
double[] sig=new double[11];
double[][] q=new double[10001][11];
double[] p=new double[11];
double[] x=new double[10001];
double[] mus=new double[11];
double[] sigs=new double[11];
double[] ps=new double[11];
public static void main(String[] args) {
pro re=new pro();
}
pro(){
readfile sub2=new readfile();
sub2.makedata("datax.csv","UTF-8");
data=sub2.data;
datanumber=sub2.datanumber;
for(s=2;s<datanumber+1;s++){
String[] x=data[s].split(",");
pp[s-1]=numx(x[2]);
}
datanumber=datanumber-1;
int sx,tx;
tx=0;
for(s=1;s<datanumber+1;s++){
for(sx=1;sx<pp[s]+1;sx++){
tx=tx+1;
x[tx]=50*s-25;
}
}
number=tx;
System.out.println(number);
for(s=1;s<11;s++){
mu[s]=100*s;
sig[s]=10;
p[s]=0.1;
}
int tr;
for(tr=1;tr<11;tr++){
int t;
for(t=1;t<number+1;t++){
for(s=1;s<11;s++){
double ff=f(x[t],mu[s],sig[s]);
q[t][s]=p[s]*ff;
}
}
for(t=1;t<number+1;t++){
double q1=0;
for(s=1;s<11;s++){
q1=q1+q[t][s];
}
for(s=1;s<11;s++){
if(q1>0)q[t][s]=q[t][s]/q1;
}
}
int n;
for(n=1;n<11;n++){
ps[n]=psx(n);
}
double p1=0;
for(n=1;n<11;n++){
p1=p1+ps[n];
}
for(n=1;n<11;n++){
p[n]=ps[n]/p1;
}
for(n=1;n<11;n++){
mu[n]=seekavg(n);
sig[n]=seeksig(n);
}
}
for(s=1;s<11;s++){
System.out.println(p[s]+","+mu[s]+","+sig[s]);
}
}
double seekavg(int n){
int s;
double a1=0;
double a2=0;
for(s=1;s<number+1;s++){
a1=a1+x[s]*q[s][n];
a2=a2+q[s][n];
}
double z=0;
if(a2>0)z=a1/a2;
return z;
}
double seeksig(int n){
int s;
double a1=0;
double a2=0;
for(s=1;s<number+1;s++){
a1=a1+(x[s]-mu[n])*(x[s]-mu[n])*q[s][n];
a2=a2+q[s][n];
}
double z=0;
if(a2>0)z=a1/a2;
return Math.sqrt(z);
}
double psx(int n){
int s;
double a1=0;
double a2=0;
for(s=1;s<number+1;s++){
a2=a2+q[s][n];
}
return a2;
}
double f(double x1,double mux,double sigx){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigx*sigx);
f1=-(x1-mux)*(x1-mux)/(2*sigx*sigx);
return Math.exp(f1)/f2;
}
int numx(String str){
int nx;
nx=0;
try{
nx=Integer.parseInt(str);
}catch (Exception e) {}
return nx;
}
double num(String str){
double nx;
nx=0;
try{
nx=Double.parseDouble(str);
}catch (Exception e) {}
return nx;
}
}
最終更新:2016年08月05日 02:36