package p4;
public class pro {
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[] avg=new double[101];
double[] delta=new double[101];
double[] ps=new double[11];
double[] deltas=new double[101];
double[][] px=new double[11][2001];
double[][] pxs=new double[11][2001];
int[] point=new int[100];
public static void main(String[] args) {
pro t=new pro();
}
pro(){
number=10;
int sx;
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 ;
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 ;
for(sx=1;sx<number+1;sx++){
mu[sx]=200*sx;
sig[sx]=100;
mux[sx]=200*sx;
sigx[sx]=100;
p[sx]=0.1;
}
int s;
for(s=1;s<22;s++){
delta[s]=100;
}
datanumber=21;
int tr=5;
for(tr=1;tr<datanumber+1;tr++){
delta sub=new delta();
sub.number=number;
sub.datanumber=datanumber;
sub.mu=mu;
sub.sig=sig;
sub.mux=mux;
sub.sigx=sigx;
sub.p=p;
sub.avg=avg;
sub.delta=delta;
sub.makedata(tr);
deltas[tr]=sub.deltas;
}
for(tr=1;tr<datanumber+1;tr++){
rev sub2=new rev();
sub2.number=number;
sub2.datanumber=datanumber;
sub2.mu=mu;
sub2.sig=sig;
sub2.mux=mux;
sub2.sigx=sigx;
sub2.p=p;
sub2.avg=avg;
sub2.delta=delta;
sub2.makedata(tr);
px=sub2.pxs;
int y;
for(s=1;s<11;s++){
for(y=0;y<2000;y++){
pxs[s][y]=pxs[s][y]+point[tr]*px[s][y];
}}
}
int y;
for(s=1;s<number+1;s++){
double a1=0;
double a2=0;
for(y=0;y<2000;y++){
a1=a1+pxs[s][y];
a2=a2+y*pxs[s][y];
}
double a3=0;
for(y=0;y<2000;y++){
a3=a3+(y-a2)*(y-a2)*pxs[s][y];
}
System.out.println(Math.sqrt(a3/a1));
}
}
}
package p4;
public class rev {
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[] avg=new double[101];
double[] delta=new double[101];
double[] ps=new double[11];
double deltas;
double[][] pxs=new double[11][2001];
void makedata(int tr){
int sx,s;
int y,y1,y2;
y1=50*tr-50;
y2=50*tr;
if(y2>1000)y2=2000;
for(s=1;s<11;s++){
double p1=0;
for(y=y1;y<y2;y++){
p1=p1+p[s]*f(y,mu[s],sig[s]);
}
ps[s]=p1;
}
for(y=1;y<2000;y++){
double[] px=new double[11];
for(s=1;s<11;s++){
px[s]=ps[s]*f(y,mux[s],sigx[s]);
}
double p1=0;
for(s=1;s<11;s++){
p1=p1+px[s];
}
for(s=1;s<11;s++){
pxs[s][y]=f(y,avg[tr],delta[tr])*px[s]/p1;
}
}
}
double f(double x,double mup,double sigp){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigp*sigp);
f1=-(x-mup)*(x-mup)/(2*sigp*sigp);
return Math.exp(f1)/f2;
}
}
package p4;
public class delta {
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[] avg=new double[101];
double[] delta=new double[101];
double[] ps=new double[11];
double deltas;
void makedata(int tr){
int sx,s;
int y,y1,y2;
y1=50*tr-50;
y2=50*tr;
if(y2>1000)y2=2000;
for(s=1;s<11;s++){
double p1=0;
for(y=y1;y<y2;y++){
p1=p1+p[s]*f(y,mu[s],sig[s]);
}
ps[s]=p1;
}
double[] q=new double[11];
for(y=0;y<2000;y++){
double p2=0;
double[] px=new double[12];
for(s=1;s<11;s++){
px[s]=ps[s]*f(y,mux[s],sigx[s]);
}
p2=0;
for(s=1;s<11;s++){
p2=p2+px[s];
}
for(s=1;s<11;s++){
px[s]=px[s]/p2;
}
for(s=1;s<11;s++){
q[s]=q[s]+px[s]*f(y,avg[tr],delta[tr]);
}
}
double[] pp=new double[2001];
for(y=0;y<2000;y++){
double p3=0;
for(s=1;s<11;s++){
p3=p3+q[s]*f(y,mux[s],sigx[s]);
}
pp[y]=p3;
}
double z1=0;
for(y=0;y<2000;y++){
z1=z1+pp[y]*(y-avg[tr])*(y-avg[tr]);
}
double z2=0;
for(y=0;y<2000;y++){
z2=z2+pp[y];
}
deltas=Math.sqrt(z1/z2);
}
double f(double x,double mup,double sigp){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigp*sigp);
f1=-(x-mup)*(x-mup)/(2*sigp*sigp);
return Math.exp(f1)/f2;
}
}
最終更新:2017年01月09日 23:17