package dk;
public class pro {
int[] point=new int[100];
int[] pointx=new int[100];
double[] avg=new double[101];
double[] delta=new double[101];
double[] sigx=new double[11];
double[] mux=new double[11];
double[] p=new double[11];
double[] mu=new double[11];
double[] sig=new double[11];
int datanumber,number;
double[] ps=new double[11];
double[] muxs=new double[11];
double[] sigxs=new double[11];
double[][] q=new double[31][11];
double[][] rate=new double[31][11];
public static void main(String[] args) {
pro r=new pro();
}
pro(){
int s,sx;
point[ 1 ]=1351 ;
point[ 2 ]= 296 ;
point[ 3 ]= 265 ;
point[ 4 ]= 227 ;
point[ 5 ]= 238 ;
point[ 6 ]= 209 ;
point[ 7 ]= 197 ;
point[ 8 ]= 169 ;
point[ 9 ]= 183 ;
point[ 10 ]= 149 ;
point[ 11 ]= 164 ;
point[ 12 ]= 133 ;
point[ 13 ]= 136 ;
point[ 14 ]= 125 ;
point[ 15 ]= 141 ;
point[ 16 ]= 124 ;
point[ 17 ]= 99 ;
point[ 18 ]= 89 ;
point[ 19 ]= 61 ;
point[ 20 ]= 60 ;
point[ 21 ]= 410 ;
pointx[ 1 ]= 54 ;
pointx[ 2 ]= 205 ;
pointx[ 3 ]= 339 ;
pointx[ 4 ]= 380 ;
pointx[ 5 ]= 407 ;
pointx[ 6 ]= 385 ;
pointx[ 7 ]= 358 ;
pointx[ 8 ]= 336 ;
pointx[ 9 ]= 298 ;
pointx[ 10 ]= 265 ;
pointx[ 11 ]= 223 ;
pointx[ 12 ]= 234 ;
pointx[ 13 ]= 191 ;
pointx[ 14 ]= 168 ;
pointx[ 15 ]= 157 ;
pointx[ 16 ]= 133 ;
pointx[ 17 ]= 93 ;
pointx[ 18 ]= 89 ;
pointx[ 19 ]= 86 ;
pointx[ 20 ]= 77 ;
pointx[ 21 ]= 348 ;
avg[ 1 ]= 270 ;
avg[ 2 ]= 265.9 ;
avg[ 3 ]= 311.9 ;
avg[ 4 ]= 317.3 ;
avg[ 5 ]= 351.2 ;
avg[ 6 ]= 357.7 ;
avg[ 7 ]= 395.9 ;
avg[ 8 ]= 424.1 ;
avg[ 9 ]= 457.5 ;
avg[ 10 ]= 483.8 ;
avg[ 11 ]= 572.2 ;
avg[ 12 ]= 569.3 ;
avg[ 13 ]= 608.9 ;
avg[ 14 ]= 677.7 ;
avg[ 15 ]= 691.8 ;
avg[ 16 ]= 702.8 ;
avg[ 17 ]= 769.8 ;
avg[ 18 ]= 812 ;
avg[ 19 ]= 839 ;
avg[ 20 ]= 884.1 ;
avg[ 21 ]= 1193.40 ;
datanumber=21;
number=10;
for(s=1;s<datanumber+1;s++){
delta[s]=50;
}
for(sx=1;sx<number+1;sx++){
mu[sx]=100*sx;
sig[sx]=50;
mux[sx]=100*sx;
sigx[sx]=50;
p[sx]=0.1;
}
int m;
for(m=1;m<6;m++){
double[] ratex=new double[21];
int tr;
for(tr=1;tr<datanumber+1;tr++){
rate sub=new rate();
sub.mux=mux;
sub.sigx=sigx;
sub.p=p;
sub.number=number;
sub.avg=avg;
sub.delta=delta;
sub.makedata(tr);
ratex=sub.rate;
for(sx=1;sx<number+1;sx++){
rate[tr][sx]=ratex[sx];
}
}
rev sub3=new rev();
sub3.number=number;
sub3.datanumber=datanumber;
sub3.avg=avg;
sub3.delta=delta;
sub3.rate=rate;
sub3.makedata();
muxs=sub3.mux;
sigxs=sub3.sigx;
cal sub2=new cal();
sub2.mux=mux;
sub2.sigx=sigx;
sub2.number=number;
sub2.datanumber=datanumber;
sub2.avg=avg;
sub2.delta=delta;
sub2.rate=rate;
sub2.makedata();
delta=sub2.delta;
for(sx=1;sx<number+1;sx++){
mux[sx]=muxs[sx];
sigx[sx]=sigxs[sx];
}
System.out.println(mux[1]+","+sigx[1]);
}
}
double f(double x,double mux,double sigx){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigx*sigx);
f1=-(x-mux)*(x-mux)/(2*sigx*sigx);
return Math.exp(f1)/f2;
}
}
package dk;
public class rate {
int[] point=new int[100];
int[] pointx=new int[100];
double[] avg=new double[101];
double[] delta=new double[101];
double[] sigx=new double[11];
double[] mux=new double[11];
double[] p=new double[11];
double[] mu=new double[11];
double[] sig=new double[11];
int datanumber,number;
double[] ps=new double[11];
double[] mus=new double[11];
double[] sigs=new double[11];
double[][] q=new double[31][11];
double[] rate=new double[31];
void makedata(int tr){
int s,sx;
double[] px=new double[3000];
double[][] py=new double[11][3000];
int y;
for(y=1;y<2000;y++){
px[y]=f(y,avg[tr],delta[tr]);
}
for(y=1;y<2000;y++){
double p1=0;
for(s=1;s<number+1;s++){
p1=p1+f(y,mux[s],sigx[s]);
}
for(s=1;s<number+1;s++){
py[s][y]=f(y,mux[s],sigx[s])/p1;
}
}
double[] pp=new double[21];
for(s=1;s<number+1;s++){
double p2=0;
for(y=1;y<2000;y++){
p2=p2+py[s][y]*px[y];
}
pp[s]=p2;
}
double p3=0;
for(s=1;s<number+1;s++){
p3=p3+pp[s];
}
for(s=1;s<number+1;s++){
rate[s]=pp[s]/p3;
}
}
double f(double x,double mux,double sigx){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigx*sigx);
f1=-(x-mux)*(x-mux)/(2*sigx*sigx);
return Math.exp(f1)/f2;
}
}
package dk;
public class rev {
int[] point=new int[100];
int[] pointx=new int[100];
double[] avg=new double[101];
double[] delta=new double[101];
double[] sigx=new double[11];
double[] mux=new double[11];
double[] p=new double[11];
double[] mu=new double[11];
double[] sig=new double[11];
int datanumber,number;
double[] ps=new double[11];
double[] mus=new double[11];
double[] sigs=new double[11];
double[][] q=new double[12][2001];
double[][] rate=new double[31][11];
void makedata(){
int tr=5;
for(tr=1;tr<datanumber+1;tr++){
int y,s;
for(y=1;y<2000;y++){
double p1=0;
for(s=1;s<number+1;s++){
q[s][y]=q[s][y]+rate[tr][s]*f(y,avg[tr],delta[s]);
}
}
for(s=1;s<number+1;s++){
double a1=0;
double a2=0;
double a3=0;
for(y=1;y<2000;y++){
a1=a1+q[s][y];
a2=a2+q[s][y]*y;
}
mux[s]=a2/a1;
for(y=1;y<2000;y++){
a3=a3+q[s][y]*(y-mux[s])* (y-mux[s]);
}
sigx[s]=Math.sqrt(a3/a1);
}
}
}
double f(double x,double mux,double sigx){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigx*sigx);
f1=-(x-mux)*(x-mux)/(2*sigx*sigx);
return Math.exp(f1)/f2;
}
}
最終更新:2017年01月14日 03:42