class game1103{
int s,m,n,m1,m2;
int num,mx1,mx2;
double[][] sample=new double[500][500];
double[][] gsample=new double[500][500];
double[] data=new double[500];
double[][] alpha=new double[500][25];
double[][] galpha=new double[500][25];
double[][] beta=new double[25][25];
double[] gamma=new double[25];
public static void main(String args[]){
game1103 test=new game1103();
}
game1103(){
for (m=0;m<500;m++){
for (n=0;n<500;n++){
sample[m][n]=2*m+3*n;
}
}
num=500;
makefou();
revfou();
System.out.print(gsample[100][50]);
}
public static double seekfou(double[] gamma,int s,int num){
double x,z;
int mx;
x=(double)(s*Math.PI/num);
z=gamma[0]/2;
for (mx=1;mx<25;mx++){
z=z+gamma[mx]*Math.cos(mx*x);
}
return z;
}
public static double seekalpha(int mx,int num,double[] data){
int n,nx;
double x1,y1,z;
double delta;
delta=(double)Math.PI/num;
z=0;
for (n=-num+1;n<num;n++){
nx=n;
if (nx<0)nx=-nx;
x1=nx*delta;
y1=data[nx]*Math.cos(mx*x1);
z=z+delta*y1;
}
z=z/Math.PI;
return z;
}
void makefou(){
for (m1=0;m1<500;m1++){
for (m2=0;m2<num;m2++){
data[m2]=sample[m1][m2];
}
for (mx1=0;mx1<25;mx1++){
alpha[m1][mx1]=seekalpha(mx1,num,data);
}
}
for (mx1=0;mx1<25;mx1++){
for (m1=0;m1<num;m1++){
data[m1]=alpha[m1][mx1];
}
for (mx2=0;mx2<25;mx2++){
beta[mx1][mx2]=seekalpha(mx2,num,data);
}
}
}
void revfou(){
for (m1=1;m1<num;m1++){
for (mx1=0;mx1<25;mx1++){
for (mx2=0;mx2<25;mx2++){
gamma[mx2]=beta[mx1][mx2];
}
galpha[m1][mx1]=seekfou(gamma,m1,num);
}
}
for (m1=0;m1<num;m1++){
for (m2=0;m2<num;m2++){
for (mx1=0;mx1<25;mx1++){
gamma[mx1]=galpha[m1][mx1];
}
gsample[m1][m2]=seekfou(gamma,m2,num);
}
}
}
}
最終更新:2011年03月08日 01:34