package x1;
public class pro {
double[][] p=new double[11][11];
double[][] u=new double[11][11];
double[] n=new double[11];
double[][] delta=new double[11][11];
double[] lb=new double[11];
double[] lbs=new double[11];
double[] lc=new double[11];
double[] w=new double[11];
double[] r=new double[11];
double[] v=new double[11];
double alpha,beta,theta,gamma;
int s,sx,number;
public static void main(String[] args) {
pro test=new pro();
}
pro(){
number=10;
for(s=1;s<number+1;s++){
for(sx=1;sx<number+1;sx++){
p[s][sx]=0.01;
}
}
alpha=0.7;
beta=0.6;
theta=0.9;
gamma=0.5;
int t;
for(s=1;s<number+1;s++){
for(sx=1;sx<number+1;sx++){
t=s-sx;
if(t<0)t=-t;
delta[s][sx]=Math.pow(theta,t);
}
}
for(s=1;s<number+1;s++){
for(sx=1;sx<number+1;sx++){
n[sx]=delta[s][sx]*p[s][sx]+n[sx];
}
}
int s1;
for(s=1;s<number+1;s++){
for(sx=1;sx<number+1;sx++){
s1=s-sx;
if(s1<0)s1=-s1;
v[s]=Math.pow(gamma,s1)*n[sx]+v[s];
}
}
for(s=1;s<11;s++){
lb[s]=0.5;
}
int mode;
mode=0;
while(mode<50){
for(s=1;s<number+1;s++){
w[s]=v[s]*beta*Math.pow(n[s],beta-1)*Math.pow(lb[s],1-beta);
r[s]=v[s]*(1-beta)*Math.pow(n[s],beta)*Math.pow(lb[s],-beta);
}
for(s=1;s<number+1;s++){
lc[s]=0;
for(sx=1;sx<number+1;sx++){
lc[s]=lc[s]+p[s][sx]*(1-alpha)*delta[s][sx]*w[sx]/r[s];
}}
for(s=1;s<number+1;s++){
lbs[s]=seekl(s);
}
for(s=1;s<11;s++){
lb[s]=lbs[s];
}
mode=mode+1;
}
double c1,l1;
for(s=1;s<number+1;s++){
for(sx=1;sx<number+1;sx++){
w[sx]=v[sx]*beta*Math.pow(n[sx],beta-1)*Math.pow(lb[sx],1-beta);
r[s]=v[s]*(1-beta)*Math.pow(n[s],beta)*Math.pow(lb[s],-beta);
c1=alpha*delta[s][sx]*w[sx];
l1=(1-alpha)*delta[s][sx]*w[sx]/r[s];
u[s][sx]=Math.pow(c1,alpha)*Math.pow(l1,1-alpha);
}
}
}
double seekl(int s){
double l1,l2,l3;
double x1,x2;
int mode;
l1=0.1;
l2=0.9;
l3=0;
mode=0;
while(mode<50){
l3=(l1+l2)/2;
x1=lx(s,l3)+l3;
if(x1>1)l2=l3;
if(x1<1)l1=l3;
mode=mode+1;
}
return l3;
}
double lx(int s ,double lp){
double ws,rs;
ws=v[s]*beta*Math.pow(n[s],beta-1)*Math.pow(lp,1-beta);
rs=v[s]*(1-beta)*Math.pow(n[s],beta)*Math.pow(lp,-beta);
int sx;
double lx;
lx=0;
for(sx=1;sx<number+1;sx++){
lx=lx+p[s][sx]*delta[s][sx]*(1-alpha)*w[sx]/r[s];
}
return lx;
}
}
最終更新:2014年05月27日 04:59