今日の人気記事

  1. printf関数の変換指定子
  2. 乱数 - 1〜10のランダムな数値を出力する
  3. continue文 - ループをスキップ
  4. MinGW - gcc の環境設定(パスを通す) - Windows環境
  5. 入力した文字列の文字数を表示する(出力)

入力した行列の積(掛け算)を計算する

当ページのリンクには広告が含まれています。

スポンサーリンク

行列の差(引き算)を計算するサンプルプログラムを紹介します。

ここでは入力した 2x3 の行列の積を計算します。

行列の積

入力した行列「A」

$$ A = \left( \begin{array}{ccc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array} \right) $$

と行列「B」

$$ B = \left( \begin{array}{ccc} b_{11} & b_{12} & b_{13}\\ b_{21} & b_{22} & b_{23} \end{array} \right) $$

の積(掛け算)

\begin{aligned} C & = A \times B \\ & = \left( \begin{array}{ccc} a_{11} b_{11} + a_{12} b_{21} & a_{11} b_{12} + a_{12} b_{22} & a_{11} b_{13} + a_{12} b_{23} \\ a_{21} b_{11} + a_{22} b_{21} & a_{21} b_{12} + a_{22} b_{22} & a_{21} b_{13} + a_{22} b_{23} \end{array} \right) \end{aligned}

を計算します。

サンプルプログラム

それではサンプルプログラムをみてみましょう。

/*
 * C言語のサンプルプログラム - Webkaru
 * - 入力した行列の積(掛け算)を計算 -
 */
#include <stdio.h>

int main(void){

  int i, j, k, term;

  /* 行列 */
  int a[2][2], b[2][3], c[2][3];

  printf("\n1つ目の行列 A を入力\n");
  for(i=0;i<2;++i){
    for(j=0;j<2;++j){
      printf("A[%d][%d] = ", i+1, j+1);
      scanf("%d", &a[i][j]);
    }
  }

  printf("\n2つ目の行列 B を入力\n");
  for(i=0;i<2;++i){
    for(j=0;j<3;++j){
      printf("B[%d][%d] = ", i+1, j+1);
      scanf("%d", &b[i][j]);
    }
  }

  /* 行列の積(掛け算) */
  for(i=0;i<2;++i){
    for(j=0;j<3;++j){
      c[i][j] = a[i][j] * b[i][j];

      // 行列の項を計算
      for(i=0;i<2;i++){
        for(j=0;j<3;j++){
          term = 0;
          for(k=0;k<2;k++)
            term = term + a[i][k]*b[k][j];
          c[i][j] = term;
        }
      }

    }
  }

  printf("\n行列 C = A x B\n");
  for(i=0;i<2;++i){
    for(j=0;j<3;++j){
      printf("C[%d][%d] = %d\n", i+1, j+1, c[i][j]);
    }
  }

  return 0;
}

サンプルプログラムで使っている構文

実行結果

実行結果です。

1つ目の行列 A を入力
A[1][1] = 1
A[1][2] = 2
A[2][1] = 3
A[2][2] = 4

2つ目の行列 B を入力
B[1][1] = 5
B[1][2] = 6
B[1][3] = 7
B[2][1] = 8
B[2][2] = 9
B[2][3] = 10

行列 C = A x B
C[1][1] = 21
C[1][2] = 24
C[1][3] = 27
C[2][1] = 47
C[2][2] = 54

このように行列の積を計算します。

サンプルプログラム の人気記事

  1. サンプルプログラム集
  2. 配列に格納した数値を昇順ソートする
  3. 乱数 - 0〜1のランダムな数値を出力
  4. 入力した2つの数値を交換する
  5. 入力した自然数を逆順に並べ替える
  6. 入力した自然数の約数を求める
  7. 入力した整数が偶数か奇数かを判別する
  8. 2次方程式の解を計算する
  9. 入力した2つの自然数の最大公約数を求める
  10. 10進数を2進数に変換する

関連記事(一部広告含む)