2016-04-12 2 views
0

Ich versuche eine Toeplitz Matrix in Java zu initialisieren. Ich will es dieses Formular
6 -4 1 0 0 ... 0 -4 6 -4 1 0 ... 0 1 -4 6 -4 1 ...0 ................ 0 ... 1 -4 6 -4 1 0 ... ...1 -4 6-4 0 .. ... 0 1 -4 6Toeplitz Matrix Initialisierung

ich, dass das Problem in den if(j>i) ist in den Grenzen von data[i-j-1] realisiert haben. Ich habe versucht, es zu ändern, aber ich bekomme den IndexOutOfBounds Fehler. Hier ist der Code, den ich geschrieben habe bisher

int a1[][] = new int[size][size]; 


    int data[] = new int[size]; 

    data[0] = 6; 
    data[1] = -4; 
    data[2] = 1; 

    for(int i=3; i<size; i++){ 
     data[i] = 0; 
    } 

    /* Creating the A1 matrix */ 
    for(int i=0; i<size; i++) 
    { 
     for(int j=0; j<size; j++) 
     { 
      if(j>i){ 
       a1[i][j] = data[j-i-1]; 

      }else if(j==i){ 
       a1[i][j] = data[0]; 

      }else{ 
       a1[i][j] = data[i-j-1]; 
      } 


     } 
    } 

Und der Ausgang ist

The Matrix is : 
6 6 -4 1 0 0 0 0 0 0 
6 6 6 -4 1 0 0 0 0 0 
-4 6 6 6 -4 1 0 0 0 0 
1 -4 6 6 6 -4 1 0 0 0 
0 1 -4 6 6 6 -4 1 0 0 
0 0 1 -4 6 6 6 -4 1 0 
0 0 0 1 -4 6 6 6 -4 1 
0 0 0 0 1 -4 6 6 6 -4 
0 0 0 0 0 1 -4 6 6 6 
0 0 0 0 0 0 1 -4 6 6 

Antwort

1

Das Problem ist, wenn i = j+1 oder j = i+1, a1a1[i][j] = data[0] zugeordnet ist. Dies ist ein Fehler nach dem anderen, Sie sollten die 1:

for(int j=0; j<size; j++) { 
    if(j>i){ 
     a1[i][j] = data[j-i]; 
    }else if(j==i){ 
     a1[i][j] = data[0]; 
    }else{ 
     a1[i][j] = data[i-j]; 
    } 
} 
entfernen