- ベストアンサー
JAVAで行列の計算についての質問
- JAVAで行列の計算をするプログラムを作成しているがうまくいかない。使用したプログラムはfor文を使ったもので、入力された行列数に応じて行列を作成して計算する。しかし、どうも正しく計算できない。
- 上記のプログラムにはfor文が2重に使われ、3重目のfor文で行列の計算を行う。しかし、正しい計算結果を得ることができていない。
- JAVAには行列の計算をするための専用の関数やクラスが存在するのか疑問である。また、行列の計算に関するソースコードや教材が欲しい。移行が急だったため、JAVAの行列計算につまづいている。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
cは、intではなく、配列として宣言してください。 どうでしょう。
その他の回答 (1)
- wolv
- ベストアンサー率37% (376/1001)
for (int i =0; i < 2; i++){ for (int j = 0; j<2; j++){ C[i][j]=0; // <-これが必要だと思います。 for (int k = 0; k<2; k++){ C[i][j]=C[i][j]+a[i][k]*b[k][j]; } } } 基本的には質問文にあるルーチンでよいと思いますが、 どこが問題ある、と感じているのでしょうか? 「エラーがでて動かない」 「予想と違う答えになる」 などの情報と、その詳しい内容を書いたほうが 回答がつきやすいと思います。
補足
ありがとうございます。 確かに、質問の仕方があいまいでした。すみません。 また、なんとかプログラムを組んでみましたが、エラーになってしまいます。 import java.io.*; public class Gyouretu { public static void main(String[] args) { System.out.println("行列数を入力"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in), 1); String line = reader.readLine(); int n = Integer.parseInt(line); int a[][] = new int[n][n]; int b[][] = new int[n][n]; int i,j,k,c; for ( i = 0; i < n; i++){ for ( j = 0; j < n; j++){ c[i][j]=0; for ( k = 0; k < n; k++){ c[i][j] += a[i][k] * b[k][j]; System.out.println(c); } } } System.out.println("end"); } } を実行すると Gyouretu.java:18: 配列が要求されましたが、int が見つかりました。 c[i][j]=0; ^ Gyouretu.java:20: 配列が要求されましたが、int が見つかりました。 c[i][j] += a[i][k] * b[k][j]; ^ というエラーになってしまいます。 どうも理由がわかりません。 アドバイスをいただけますでしょうか? よろしくお願いします。
お礼
お礼が遅くなってしまい、すみませんでした。なんとか解決できました。ありがとうございます!