今日の人気記事

  1. サンプルプログラム集
  2. MinGW - gccのコンパイルと実行 - Windows環境
  3. 配列に格納した数値を昇順ソート
  4. int main(void) - プログラムの基本
  5. MinGW - gcc のインストール - Windows環境

3×3行列の行列式の計算

スポンサーリンク

3×3行列の行列式の計算するサンプルプログラムを紹介します。

行列式の計算

入力した3x3行列「A」

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

から行列式

\begin{aligned} det A &= \left| \begin{array}{ccc} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{array} \right| \\ &= a_{11} \cdot det \left( \begin{array}{cc} a_{22} & a_{23}\\ a_{32} & a_{33} \end{array} \right) - a_{21} \cdot det \left( \begin{array}{cc} a_{12} & a_{13}\\ a_{32} & a_{33} \end{array} \right) + a_{31} \cdot det \left( \begin{array}{cc} a_{12} & a_{13}\\ a_{22} & a_{23} \end{array} \right) \end{aligned}

を計算します。

例えば、次の行列の行列式は

\begin{aligned} det A &= \left| \begin{array}{ccc} 1 & 5 & 3\\ 2 & 4 & 7\\ 4 & 6 & 2 \end{array} \right| \\ &= 1 \cdot det \left( \begin{array}{cc} 4 & 7\\ 6 & 2 \end{array} \right) - 2 \cdot det \left( \begin{array}{cc} 5 & 3\\ 6 & 2 \end{array} \right) + 4 \cdot det \left( \begin{array}{cc} 5 & 3\\ 4 & 7 \end{array} \right) \\ &= 1(4 \cdot 2 - 7 \cdot 6) - 2(5 \cdot 2 - 3 \cdot 6) + 4(5 \cdot 7 - 3 \cdot 4) \\ &= 1(8-42) - 2(10-18) + 4(35-12) \\ &= 1 \cdot (-34) - 2 \cdot (-8) + 4 \cdot 23 \\ &= -34 + 16 + 92 \\ &= 74 \end{aligned}

と計算できます。

スポンサーリンク

サンプルプログラム

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

/*
 * C言語のサンプルプログラム - Webkaru
 * - 3×3行列の行列式の計算 -
 */
#include <stdio.h>

int main(void){

  int i, j;

  /* 3x3 行列 */
  int a[3][3];

  /* 行列式 */
  int det = 0;

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

  /* 行列式の計算 */
  for(i=0;i<3;++i){
    det = det + a[0][i] * ( a[1][(i+1)%3] * a[2][(i+2)%3] - a[1][(i+2)%3] * a[2][(i+1)%3] );
  }

  /* 計算結果の出力 */
  printf("◆ 行列式の計算結果\n");
  printf("det A = %d\n", det);

  return 0;
}

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

実行結果

実行結果です。

◆ 3x3の行列を入力
A[1][1] = 1
A[1][2] = 2
A[1][3] = 4
A[2][1] = 5
A[2][2] = 4
A[2][3] = 6
A[3][1] = 3
A[3][2] = 7
A[3][3] = 2
◆ 行列式の計算結果
det A = 74

このように行列式を計算・出力します。

スポンサーリンク