package matrix;
public class pro {
double[][] a=new double[4][4];
double[][] ax=new double[4][4];
double[] b=new double[4];
double[] bs=new double[4];
int s,sx;
double[][] c=new double[3][3];
double z;
public static void main(String[] args) {
pro test=new pro();
}
pro(){
a[1][1]=1;
a[1][2]=0.5;
a[1][3]=0.3;
a[2][1]=0.5;
a[2][2]=1;
a[2][3]=0.6;
a[3][1]=0.3;
a[3][2]=0.6;
a[3][3]=1;
b[1]=1;
b[2]=0;
b[3]=0;
int mode;
mode=0;
while(mode<10){
seekb();
double e;
e=0;
for(s=1;s<4;s++){
e=e+ (bs[s]-b[s])*(bs[s]-b[s]);
}
if(e<0.01)mode=100;
for(s=1;s<4;s++){
b[s]=bs[s];
}
mode=mode+1;
}
System.out.println(z);
for(s=1;s<4;s++){
for(sx=1;sx<4;sx++){
ax[s][sx]=a[s][sx]-z*b[s]*b[sx];
}
}
b[1]=1;
b[2]=0;
b[3]=0;
mode=0;
while(mode<10){
seekbx();
double e;
e=0;
for(s=1;s<4;s++){
e=e+ (bs[s]-b[s])*(bs[s]-b[s]);
}
if(e<0.01)mode=100;
for(s=1;s<4;s++){
b[s]=bs[s];
}
mode=mode+1;
}
System.out.println(z);
for(s=1;s<4;s++){
for(sx=1;sx<4;sx++){
ax[s][sx]=ax[s][sx]-z*b[s]*b[sx];
}
}
mode=0;
while(mode<10){
seekbx();
double e;
e=0;
for(s=1;s<4;s++){
e=e+ (bs[s]-b[s])*(bs[s]-b[s]);
}
if(e<0.01)mode=100;
for(s=1;s<4;s++){
b[s]=bs[s];
}
mode=mode+1;
}
System.out.println(z);
}
void seekbx(){
int s,sx;
double b1;
for(s=1;s<4;s++){
b1=0;
for(sx=1;sx<4;sx++){
b1=b1+ax[s][sx]*b[sx];
}
bs[s]=b1;
}
double e;
z=0;
for(s=1;s<4;s++){
z=z+bs[s]*bs[s];
}
z=Math.sqrt(z);
for(s=1;s<4;s++){
bs[s]=bs[s]/z;
}
}
void seekb(){
int s,sx;
double b1;
for(s=1;s<4;s++){
b1=0;
for(sx=1;sx<4;sx++){
b1=b1+a[s][sx]*b[sx];
}
bs[s]=b1;
}
double e;
z=0;
for(s=1;s<4;s++){
z=z+bs[s]*bs[s];
}
z=Math.sqrt(z);
for(s=1;s<4;s++){
bs[s]=bs[s]/z;
}
}
}
最終更新:2014年01月10日 21:24