アットウィキロゴ

こーど987

package del;
 
 
public class pro {
 
    int s;
  double[] p=new double[101];
double[] y=new double[101];
    double[] pi=new double[101];
    double maxy,miny;
    double h;
    int[] k=new int[101];
    double[] ys=new double[101];
     double[][] x=new double[1000][10];
     double[] sol=new double[100];
     double[][] v=new double[1000][11];
    int[][] gotok=new int[1000][11];
 
 
    int[] op=new int[101];
    public static void main(String[] args) {
        pro te=new pro();
    }
 
    pro(){
 
        for(s=1;s<101;s++){
        p[s]=100+10*Math.random();    
        y[s]=100+10*Math.random();
        }
 
 
      pi[1]=0;
      for(s=2;s<101;s++){
      pi[s]=p[s]-p[s-1];
      }
 
      maxy=0;
      miny=999;
 
      for(s=1;s<101;s++){
      if(y[s]>maxy)maxy=y[s];    
      if(y[s]<miny)miny=y[s];
      }  
 
      h=(maxy-miny)/10;
 
 
 
      for(s=1;s<101;s++){
      k[s]=5;
      }
 
      for(s=1;s<101;s++){
      ys[s]=(y[s]-miny)/h-k[s];
      x[s][1]=1;
      x[s][2]=ys[s];
      }
 
 
      ols sub=new ols();
      sub.datanumber=100;
      sub.number=2;
      sub.x=x;
      sub.y=pi;
      sub.makedata();
      sol=sub.sol;
 
 
      System.out.println(sol[1]+","+sol[2]);
 
   for(s=1;s<11;s++){
   double k1=miny+h*s;
 double p1=sol[1]+sol[2]*(y[1]-k1)/h;
 v[1][s]=(p1-p[s])*(p1-p[s]);
   }
 
   int t,sx,sxs;
  double u1,v1,minv;
 
   for(t=2;t<101;t++){
     for(s=1;s<11;s++){  
      double k1=miny+h*s;
 double p1=sol[1]+sol[2]*(y[t]-k1);
u1=(p1-p[t])*(p1-p[t]);
System.out.println(u1);
minv=9999;    
sxs=0;
for(sx=1;sx<11;sx++){   
    v1=u1+v[t-1][sx];
    double e=(s-sx)*(s-sx);
    if(e>1.1)v1=9999;
     if(v1<minv)sxs=sx;
    if(v1<minv)minv=v1;
    }
v[t][s]=minv;
   gotok[t][s]=sxs;
     }
   }   
 
 
 
     minv=999;
        sx=0;
         for(s=1;s<11;s++){
         if(v[100][s]<minv)sx=s;
         if(v[100][s]>minv)minv=v[100][s];
         }
        op[100]=sx;
         for(s=1;s<100;s++){
         sx=op[100-s+1];
         op[100-s]=gotok[100-s+1][sx];
         }
 
 
          for(s=1;s<101;s++){
          System.out.println(op[s]);
          }
 
 
 
 
 
 
 
 
    }
 
 
 
}
 
 
 
 
 
package del;
 
 
public class ols {
 
    int s,s1,s2;
    int datanumber,number;
    double x1;
    double[][] a=new double[100][100];
     double[] b=new double[100];
     double[] y=new double[1000];
    double[][] x=new double[1000][10];
     double[] sol=new double[100];
 
    void makedata(){
 
 
 
     for(s1=1;s1<number+1;s1++){
    for(s2=1;s2<number+1;s2++){   
     x1=0;   
    for(s=1;s<datanumber+1;s++){
    x1=x1+x[s][s1]*x[s][s2];
    }
    a[s1][s2]=x1;
    }
    }
 
 
 
    for(s1=1;s1<number+1;s1++){
    x1=0;   
    for(s=1;s<datanumber+1;s++){
    x1=x1+x[s][s1]*y[s];
    }
    b[s1]=x1;
    }
 
    double z;
 
   for(s1=1;s1<number+1;s1++){
   for(s2=1;s2<number+1;s2++){   
   z=a[s2][s1]/a[s1][s1];  
   if(s1==s2)z=0;
   for(s=1;s<number+1;s++){
   a[s2][s]=a[s2][s]-z*a[s1][s];
   } 
   b[s2]=b[s2]-z*b[s1];
   }
   }
 
   for(s1=1;s1<number+1;s1++){
   sol[s1]=b[s1]/a[s1][s1];
   }
 
 
 
 
 
    }
}
 
最終更新:2015年07月31日 19:07