アットウィキロゴ

さくら

import java.io.*;

class sakura{

String[] data=new String[50000];
int[][] number=new int[230][101];
double[] alpha=new double[101];
double beta;
double[] delta=new double[101];
int[] y=new int[230];
double[][] x=new double[230][101];
int n1;
int m,n;
int datanumber;
double e;
double j;
int t1;

public static void main(String args[]){
sakura test=new sakura();
}

sakura(){

readfile("xdata.txt");

for (n=1;n<datanumber+1;n++){
String[] z=data[n].split(",");
for(m=0;m<z.length;m++){
number[n][m+1]=Integer.parseInt(z[m]);
}
}

for (m=1;m<datanumber+1;m++){
n1=0;
for(n=1;n<101;n++){
n1=n1+number[m][n];
}
for(n=1;n<101;n++){
x[m][n]=(double)100*number[m][n]/n1;
}
}


for (n=1;n<8;n++){
y[n]=1;
}

for (n=8;n<datanumber+1;n++){
y[n]=0;
}

for(m=1;m<101;m++){
alpha[m]=1;
}
beta=-99;

t1=0;
while(t1<100){

for(m=1;m<101;m++){
delta[m]=dg(m,alpha,beta,x,y);
}
delta[0]=db(alpha,beta,x,y);

e=0;
for(m=0;m<101;m++){
e=e+delta[m]*delta[m];
}

e=Math.sqrt(e);

j=-0.01;
for(m=1;m<101;m++){
alpha[m]=alpha[m]+j*delta[m]/e;
}

beta=beta+j*delta[0];
t1=t1+1;
}


for(m=1;m<215;m++){
System.out.println(f(m,alpha,beta,x));
}


}
double db(double[] alpha,double beta,double[][] x,int[] y){
double g1,g2,h;
h=0.01;
g1=g(alpha,beta,x,y);
g2=g(alpha,beta+h,x,y);
return (g2-g1)/h;
}
double dg(int m,double[] alpha,double beta,double[][] x,int[] y){
double g1,g2,h;
int mx;
double[] a=new double[101];
for(mx=1;mx<100+1;mx++){
a[mx]=alpha[mx];
}
h=0.01;
a[m]=a[m]+h;

g1=g(alpha,beta,x,y);
g2=g(a,beta,x,y);
return (g2-g1)/h;
}


double g(double[] alpha,double beta,double[][] x,int[] y){
double g1;
int m;
g1=0;
for(m=1;m<datanumber+1;m++){
if(con(m,alpha,beta,x,y)<50)g1=g1+met(m,alpha,beta,x);
}
return g1;
}

int con(int m,double[] alpha,double beta,double[][] x,int[] y){
int h,c1;
c1=0;
h=0;
if(f(m,alpha,beta,x)>0)h=h+1;
if(y[m]>0)h=h+1;
if(h==2)c1=100;
h=0;
if(f(m,alpha,beta,x)<0)h=h+1;
if(y[m]<0)h=h+1;
if(h==2)c1=100;
return c1;
}




double met(int m,double[] alpha,double beta,double[][] x){
double m1,m2,t1,me;
m1=0;
for(n=1;n<101;n++){
m1=m1+alpha[n]*alpha[n];
}
m2=-beta;
for(n=1;n<101;n++){
m2=m2-alpha[n]*x[m][n];
}
t1=m2/m1;
me=m1*t1*t1;
return me;
}

double f(int m,double[] alpha,double beta,double[][] x){
double f1;
f1=beta;
for(n=1;n<101;n++){
f1=f1+alpha[n]*x[m][n];
}
return f1;
}
void readfile(String file){

String str;
BufferedReader br;

n=0;

try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"SJIS"));  
while((str = br.readLine()) != null) {  
n=n+1;
data[n]=str;  
}
br.close();
} catch (IOException e) {System.out.println(e);}
datanumber=n;

}






}
最終更新:2011年05月19日 00:28