アットウィキロゴ

しゆ

var;
 
public class pro {
 
    int datanumber;
    int[] point=new int[50];
 
    double[] mu=new double[11];
  double[] sig=new double[11];
  double[] p=new double[11];
  int number;
 
   double[] dp=new double[11];
 
   double[][] v=new double[11][21];
   int[][] gotop=new int[11][21];
 
 
    public static void main(String[] args) {
        pro te=new pro();
    }
    pro(){
 
 
        number=10;
        datanumber=10;
        int s;
        for(s=1;s<datanumber+1;s++){
        point[s]=20;   
        }
 
 
        for(s=1;s<number+1;s++){
        mu[s]=s;
        sig[s]=2;
        p[s]=0.1;
        }
 
 
        cal sub=new cal();
        sub.point=point;
        sub.number=number;
        sub.datanumber=datanumber;
        sub.mu=mu;
        sub.sig=sig;
        sub.p=p;
        double u1=sub.makedata();
 
        System.out.println(u1);
 
        double[] ps=new double[11];
 
 
 
        for(s=1;s<number+1;s++){
 
            int sx;
        for(sx=1;sx<number+1;sx++){
        ps[sx]=p[sx];    
        }
        ps[s]=ps[s]+0.01;
 
        cal sub2=new cal();
        sub2.point=point;
        sub2.number=number;
        sub2.datanumber=datanumber;
        sub2.mu=mu;
        sub2.sig=sig;
        sub2.p=ps;
        double u2=sub2.makedata();
 
        dp[s]=(u2-u1)/0.01;
 
 
        }
 
 
     for(s=-10;s<11;s++){
     v[1][s+10]=-999;    
     }
 
   for(s=-1;s<2;s++){
   v[1][s+10]=s*dp[1];
   double p1=p[1]+0.01*s;
   if(p1<0.01)v[1][s+10]=-999;
   }     
 
   int t,sx,s1;
   t=2;
   for(s=-10;s<11;s++){
   int z=0;
   double maxv=-999;
   int sxs=0;
   for(sx=-1;sx<2;sx++){
   u1=dp[t]*sx; 
 
   s1=s-sx;
   if(s1>10)z=100;
   if(s1<-10)z=100;
   if(z>50)s1=0;
   double v1=u1+v[t-1][s1];
   if(z>60)v1=-999;
   if(v1>maxv)sxs=sx;
   if(v1>maxv)maxv=v1;
   }       
   v[t][s+10]=maxv;
   gotop[t][s+10]=sxs;
   }
 
 
 
 
 
 
 
    }
 
 
 
 
 
}
 
 
package var;
 
 
 
public class cal{
 
   int datanumber;
    int[] point=new int[50];
 
    double[] mu=new double[11];
  double[] sig=new double[11];
  double[] p=new double[11];
  int number;
 
    double makedata(){
 
 
        int s,sx;
 
 
 
 
 
 
    double v1=0;
    for(s=1;s<number+1;s++){
    for(sx=1;sx<datanumber+1;sx++){
    v1=v1+p[s]*point[sx]*f(sx,mu[s],sig[s]);
    }
    }
 
 
    return v1;
 
 
 
 
 
 
 
    }
 
        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;
}
 
 
 
 
}
 
最終更新:2016年12月19日 10:22