1

逆行列にプログラムを書いているので、結果をに保存しました

double matrix[][] = new double[n][2*n];

結果をconsolで出力すると正しいのですが、プログラムを改善しようとしているので、配列を出力したいと思います。

JOptionPane.showMessageDialog

だから私は書く

StringBuilder builder = new StringBuilder(n*n);
for (i = 0; i < n; i++){
    for(j = 0; j < n; j++){
        builder.append(matrix[i][j]);
        builder.append(",");
    }
    builder.append("\n");
}
JOptionPane.showMessageDialog(null, builder.toString(), "The inverse matrix is:", JOptionPane.INFORMATION_MESSAGE);

これで、問題の出力は、たとえば次のように2倍になるはずです。

-0.14285714285714285    0.2857142857142857
0.4285714285714286  -0.35714285714285715    

しかし、どの入力行列でも毎回同じ結果が得られます

1.0,0.0,
-0.0,1.0,

ありがとう..そして申し訳ありませんが私の英語は上手ではありません


わかりました、それは解決しました私は行列のサイズを次のように保ちます

double matrix[][] = new double[n][2*n];

レイメウスが言ったようにループを修正します

for (int j = n; j < n*2; j++) {

みなさん、ありがとうございました。この素晴らしいサイトの最初の質問で、すぐに回答がありました。ありがとうございました。

4

1 に答える 1

1

あなたの行列はn*nだと思います。この行を修正する必要があります:

  double matrix[][] = new double[n][2*n];

  double matrix[][] = new double[n][n];

サイズが正しい場合は、反復を修正してください。

DecimalFormatフォーマットについては、以下のフォーマットクラスを使用してください。

 String fPattern = "0.00000000000000000"; //please supply the right format pattern
 DecimalFormat dFormat = new DecimalFormat(fPattern);
 StringBuilder builder = new StringBuilder(n*n);
 for (i = 0; i < n; i++){
    for(j = 0; j < n; j++){
      builder.append(dFormat.format(matrix[i][j]));
      builder.append(",");
    }
    builder.append("\n");
 }

0.00000000000000000常に小数点以下の長さを固定したい場合は、パターンとして使用してください。長さを変えたい場合は、を使用してください#.#################

于 2012-10-09T21:54:05.300 に答える