class game1104{
int s,m,n;
int num1,num2,qx,qx1,qx2;
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[]){
game1104 test=new game1104();
}
game1104(){
num1=500;
num2=500;
for (m=0;m<num1;m++){
for (n=0;n<num2;n++){
sample[m][n]=2*m+3*n;
}
}
makefou();
revfou();
System.out.print(gsample[30][50]);
}
public static double seekfou(double[] gamma,int s,int num){
double x,z;
int qx;
x=(double)(s*Math.PI/num);
z=gamma[0]/2;
for (qx=1;qx<25;qx++){
z=z+gamma[qx]*Math.cos(qx*x);
}
return z;
}
public static double seekalpha(int qx,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(qx*x1);
z=z+delta*y1;
}
z=z/Math.PI;
return z;
}
void makefou(){
for (m=0;m<500;m++){
for (n=0;n<num2;n++){
data[n]=sample[m][n];
}
for (qx1=0;qx1<25;qx1++){
alpha[m][qx1]=seekalpha(qx1,num2,data);
}
}
for (qx1=0;qx1<25;qx1++){
for (m=0;m<num1;m++){
data[m]=alpha[m][qx1];
}
for (qx2=0;qx2<25;qx2++){
beta[qx1][qx2]=seekalpha(qx2,num1,data);
}
}
}
void revfou(){
for (m=1;m<num1;m++){
for (qx1=0;qx1<25;qx1++){
for (qx2=0;qx2<25;qx2++){
gamma[qx2]=beta[qx1][qx2];
}
galpha[m][qx1]=seekfou(gamma,m,num1);
}
}
for (m=0;m<num1;m++){
for (n=0;n<num2;n++){
for (qx1=0;qx1<25;qx1++){
gamma[qx1]=galpha[m][qx1];
}
gsample[m][n]=seekfou(gamma,n,num2);
}
}
}
}
最終更新:2011年03月08日 02:06