行列の計算

[戻る]
kimen3 2001/06/11(月) 18:15:20
3行3列の行列ABにそれぞれデータを読み込ませます。そして二つを掛け合せます。
その積Cを計算して出力するプログラムを作りたいのですが
このやり方がわかりません。

この計算式は以下のようにするみたいです。

    n
Cij =狽`ik × Bkj  
で出るみたいなのですが

意味がわからないのです。

行列の掛け算をできるプログラムを教えてください。

Niji [E-Mail] [HomePage] 2001/06/16(土) 01:45:00
まずは計算方法を覚えましょう。

|a11 a12 a13|   |b11 b12 b13|
|a21 a22 a23| x |b21 b22 b23|
|a31 a32 a33|   |b31 b32 b33|

の場合、

| a11b11 + a12b21 + a13b31   a11b12 + a12b22 + a13b32   a11b13 + a12b23 + a13b33 |
| a21b11 + a22b21 + a23b31   a21b12 + a22b22 + a23b32   a21b13 + a22b23 + a23b33 |
| a31b11 + a32b21 + a33b31   a31b12 + a32b22 + a33b32   a31b13 + a32b23 + a33b33 |

となります。
法則をよく覚えましょう。

(覚えたらプログラムにおとすなんて簡単だよね(^-^))

kimen3 2001/06/21(木) 09:18:24
#include <stdio.h>

//  3行3列のA行列の読み込み
void rmatrix( int X[3][3] )
{ int i, j;
  
  for ( i=0; i<3; i++ )
    for ( j=0; j<3; j++ )
       scanf( "%d", &X[i][j] );




//  3行3列Aの行列の表示
void wmatrix( int X[3][3] )
{ int i, j;

  for ( i=0; i<3; i++ ) 
    { for ( j=0; j<3; j++ )
        printf( "%d ", X[i][j] );
      printf( "\n" );    } }



//  3行3列の行列の入出力
void main()
{ int A[3][3];

  printf( "\n3行3列の行列データを入力して下さい\n" );
  rmatrix( A );                          //  行列の入力

  printf( "\n3行3列の行列データを表示します\n" );
  wmatrix( A );                          //  行列の表示

}

というプログラムで読み込まなければならないのですが
教えていただいたものからどのようにしていったらいいのでしょうか?
まったくプログラムが苦手なので
教えてもらえないでしょうか?

古いスレッドには追加発言できません。