みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

行列の計算について。

こんにちは。

JAVAで行列の計算をするプログラムを作っていますが、なかなかうまくいきません。
自分で考えたのはfor文を使った物です。行列数を入力するとその数だけの行列を作る、という物なのですが、どうもうまくいきません。
「2」を入力すると、

│1 2││5 6│
│   ││   │
│3 4││7 8│

こんな2行2列の行列の計算をする、というものです。

for (int i =0; i < 2; i++){
for (int j = 0; j<2; j++){
for (int k = 0; k<2; k++){
C[i][j]=C[i][j]+a[i][k]*b[k][j];
}
}
}

上のようなプログラムを考えました。
JAVAには行列の計算をする専用の関数(クラス?)などあるのでしょうか?
また、ソースなど教えていただけると、とても助かります。

CからJAVAに急に移ったので、つまづくことが非常に多いです。
よろしくお願いします。

投稿日時 - 2003-01-19 10:26:32

QNo.449277

すぐに回答ほしいです

質問者が選んだベストアンサー

cは、intではなく、配列として宣言してください。

どうでしょう。

投稿日時 - 2003-01-22 20:34:43

お礼

お礼が遅くなってしまい、すみませんでした。なんとか解決できました。ありがとうございます!

投稿日時 - 2003-01-26 14:50:35

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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];
}
}
}

基本的には質問文にあるルーチンでよいと思いますが、
どこが問題ある、と感じているのでしょうか?

「エラーがでて動かない」
「予想と違う答えになる」
などの情報と、その詳しい内容を書いたほうが
回答がつきやすいと思います。

投稿日時 - 2003-01-19 22:14:52

補足

ありがとうございます。
確かに、質問の仕方があいまいでした。すみません。
また、なんとかプログラムを組んでみましたが、エラーになってしまいます。

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];
 ^
というエラーになってしまいます。
どうも理由がわかりません。
アドバイスをいただけますでしょうか?
よろしくお願いします。

投稿日時 - 2003-01-21 23:19:41

あなたにオススメの質問