アプリ版:「スタンプのみでお礼する」機能のリリースについて

LU分解を利用した逆行列のプログラムが作れません…
というか、作ったのですが実行するとエラーが出てしまいます(´Д`;)
どこをどう直せばいいか、もしくはこのようにプログラムした方が効率がよい
などのアドバイスどなたか下さい

double a[][]={{2,5,4},
{2,3,-1},
{6,9,28}};
int N=a.length;

double[][] s=new double[N][N];
for(int k=0; k<a[0].length-1; k++){
for(int i=k+1; i<N; i++){
s[i][k]=a[i][k]/a[k][k];
a[i][k]=s[i][k];
for(int j=k+1; j<N; j++){
a[i][j] -= s[i][k] * a[k][j];
}
}
}

double[][] y=new double[N][N];
double[][] X=new double[N][N];
double[][] e=new double[N][N];

for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(i==j){
e[i][j]=1;
}else{
e[i][j]=0;
}
}
}

for(int i=0;i<N;i++){
y[1][i]=e[1][i];
for(int k=2;k<=N;k++){
for(int j=1;j<=N;j++){
y[k][i]=e[k][i]-s[k][j]*y[j][i];
}
}
X[N][i]=y[N][i]/a[N][N];
for(int k=N-1;k>=1;k--){
for(int j=k+1;j<=N;j++){
X[k][j]=(y[k][j]-s[k][j]*X[j][i])/a[k][k];
}
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
System.out.printf(" %6.5f ", X[i][j] );
}
System.out.println("");
}

A 回答 (2件)

コンソールの


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
のしたの行のアクセスを修正してください。
    • good
    • 0

「エラーが出る」というなら, どんなエラーなのかくらい書けませんか?

    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!