アットウィキロゴ

景気の谷山

package k3;
 
import tool.*;
 
public class pro {
 
   String[] data=new String[6000];
    int s,datanumber;
    String file;
    double[] point=new double[600];
 
 
     double[] px=new double[600];
 
    double[] m=new double[700];
    double[] v=new double[700];
    int k;
    double v1,minv;
     int[] gotom=new int[700];
    int[] gotov=new int[700];
    int ks;
    int[] m2=new int[700];
    int[] v2=new int[700];
    int number;
 
    int peak[]=new int[100];
    int pk2[]=new int[100];
    int sx;
    int mou[]=new int[100];
    int mou2[]=new int[100];
    int ups[]=new int[600];
 
 
 
    public static void main(String[] args) {
        pro test=new pro();
    }
 
  pro(){  
 
       file="data4.txt";
 
      readfile sub=new readfile();
      sub.makedata(file,"UTF-8");
      data=sub.data;
      datanumber=sub.datanumber;
 
      for(s=1;s<datanumber+1;s++){
      point[s]=Double.parseDouble(data[s]);
      }
 
      for(s=2;s<10;s++){
      m[s]=mfast(s);
      v[s]=vfast(s);
      }
 
 
      for(s=10;s<datanumber+1;s++){
 
      minv=mfast(s);
      ks=0;
      for(k=2;k<s-10;k++){
      v1=seekm(s,k);
      if(v1<minv)ks=k; 
      if(v1<minv)minv=v1;    
      }
      m[s]=minv;
      gotom[s]=ks;
 
      minv=vfast(s);
      ks=0;
      for(k=2;k<s-10;k++){
      v1=seekv(s,k);
      if(v1<minv)ks=k; 
      if(v1<minv)minv=v1;    
      }
      v[s]=minv;
      gotov[s]=ks;
 
      }
 
 
      int sxs;
 
      s=1;
      sx=datanumber;
      peak[s]=sx;
      pk2[s]=1;
      if(m[sx]>v[sx])pk2[s]=2;
      sxs=0;
      if(pk2[s]==1)sxs=gotom[sx];
      if(pk2[s]==2)sxs=gotov[sx];
 
      int mode=0;
      mode=0;
      while(mode<50){
      s=s+1;
      peak[s]=sxs;
      if(pk2[s-1]==1)pk2[s]=2;
      if(pk2[s-1]==2)pk2[s]=1;
      sx=sxs;
      sxs=0;
      if(pk2[s]==1)sxs=gotom[sx];
      if(pk2[s]==2)sxs=gotov[sx];
      if(sxs<10)mode=100;
      }
 
      number=s;
 
      for(s=1;s<number+1;s++){
      mou[s]=peak[number+1-s];
      mou2[s]=pk2[number+1-s];   
      }
 
 
 
      for(sx=1;sx<mou[1]+1;sx++){
      ups[sx]=1;
      if(mou2[1]==1)ups[sx]=2;
      if(mou2[1]==2)ups[sx]=1;
      }
 
      for(s=1;s<number;s++){
      for(sx=mou[s]+1;sx<mou[s+1]+1;sx++){
      ups[sx]=1;
      if(mou2[s]==1)ups[sx]=2;
      if(mou2[s]==2)ups[sx]=1;
      } 
      }
 
      s=number;
      for(sx=mou[s]+1;sx<datanumber+1;sx++){
      ups[sx]=1;
      if(mou2[s]==1)ups[sx]=2;
      if(mou2[s]==2)ups[sx]=1;
      } 
 
      int h;
       System.out.println(point[1]+","+point[1]);  
      px[1]=point[1];
      for(s=2;s<datanumber;s++){
      px[s]=point[s];
      h=0;
      if(point[s]>px[s-1])h=h+1;   
      if(ups[s]==2)h=h+1;   
      if(h==2)px[s]=px[s-1];
       h=0;
      if(point[s]<px[s-1])h=h+1;   
      if(ups[s]==1)h=h+1;   
      if(h==2)px[s]=px[s-1];
      System.out.println(point[s]+","+px[s]);   
      }
 
 
 
 
 
 
  }
double seekm(int s,int k){
int sx;
double e1;
double[] p=new double[600];
p[k]=point[k];    
for(sx=k+1;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]>point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=k+1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
e1=e1+v[k];
return e1;
}
 
double seekv(int s,int k){
int sx;
double e1;
double[] p=new double[600];
p[k]=point[k];    
for(sx=k+1;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]<point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=k+1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
e1=e1+m[k];
return e1;
}
 
double mfast(int s){
int sx;
double e1;
double[] p=new double[600];
p[1]=point[1];    
for(sx=2;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]>point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
return e1;
}
double vfast(int s){
int sx;
double e1;
double[] p=new double[600];
p[1]=point[1];    
for(sx=2;sx<s+1;sx++){    
p[sx]=point[sx];
if(p[sx-1]<point[sx])p[sx]=p[sx-1];    
}  
e1=0;
for(sx=1;sx<s+1;sx++){   
e1=e1+(point[sx]-p[sx])*(point[sx]-p[sx]);
}
return e1;
}
 
}
最終更新:2014年03月01日 05:29