class fou{
public static void main(String args[]){
double a,beta,h;
double ks;
double k[]=new double[101];
double cx[]=new double[101];
double cxs[]=new double[101];
double alpha[]=new double[21];
double k1;
double n1;
int m,n,n2,n3;
double c1,r1;
double ep;
double delta;
int t;
delta=Math.PI/100;
a=0.3;
beta=0.9;
ks=Math.pow((1 / beta - 1) / a , 1 / (a - 1));
h=2*ks/100;
for (n=1;n<101;n++){
k[n]=n*h;
cx[n]=Math.pow(k[n],a);
}
t=0;
while(t<100){
for (m=0;m<20;m++){
alpha[m]=seekalpha(m,cx);
}
for (n=10;n<91;n++){
k1=k[n]+Math.pow(k[n],a)-seekfou(alpha,n*delta);
n1=k1/h;
c1=seekfou(alpha,n1*delta);
r1=a*Math.pow(k1,a-1);
cxs[n]=c1/(beta*(1+r1));
}
ep=0;
for (n=10;n<91;n++){
ep=ep+Math.pow(cx[n]-cxs[n],2);
}
for (n=10;n<91;n++){
cx[n]=cxs[n];
}
if (ep<0.0001)t=1000;
System.out.println(ep);
t=t+1;
}
for (n=10;n<91;n++){
System.out.println(cx[n]);
}
}
public static double seekalpha(int m,double[] data){
int n,nx,n1,n2;
double delta,x1,x2,y1,y2,z;
delta=Math.PI/2000;
z=0;
for (nx=-1999;nx<2000;nx++){
n=nx;
if (n<0)n=-n;
x1=nx*delta;
n1=(int)(n/20);
y1=data[n1]*Math.cos(m*x1);
z=z+delta*y1;
}
z=z/Math.PI;
return z;
}
public static double seekfou(double[] alpha,double x){
double z;
int m;
z=alpha[0]/2;
for (m=1;m<20;m++){
z=z+alpha[m]*Math.cos(m*x);
}
return z;
}
}
最終更新:2010年12月30日 19:00