
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("");
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0dの意味を教えてください
-
Javaによる利率計算の実装方法
-
掛け算演算を使わない掛け算
-
Javaで何パーセント%かを表示...
-
べき乗
-
System.err. printlnとSystem.o...
-
オブジェクトの中のプロパティ...
-
変数を動的に利用するには?
-
IF関数でEmpty値を設定する方法。
-
ループ処理の際、最後だけ","を...
-
ORA-01858: 数値を指定する箇所...
-
flush()とclose()について
-
yyyymmddからyyyy/mm/d...
-
JSPやサーブレットでSystem.out...
-
C# ListBoxのインデックスの値...
-
C#から、C++で作成したdll内の...
-
C言語のポインターに関する警告
-
Javaで改行などが出来ないのです。
-
繰り返しによる星印の出力
-
Path型をString型へ変換する(Java)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報