【君の知らない複式簿記5】簿記とベクトル、行列、そしてテンソルへ

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

 

複式簿記における試算表や仕訳はベクトルとして表現できることを、以下の記事で紹介しました。

【君の知らない複式簿記4】簿記代数の教科書『Algebraic Models For Accounting Systems』とバランスベクトル

本記事では複式簿記の「ベクトル」を、「行列」や「テンソル」へと拡張するアイデアについて述べます。

 

バランスベクトルとその性質

複式簿記のベクトル表現は、勘定科目をベクトルの各要素に対応させ、借方に置かれる勘定の金額はプラス、貸方に置かれる勘定の金額をマイナスとして表すことで得られます。

\[ \begin{array}{cr|cr} \hline
資産 & a & 負債 & l\\
& & 純資産 & e\\
費用 & c & 収益 & r\\
\end{array}
= \left(
\begin{array}{r}
a\\
-l\\
-e\\
-r\\
c \end{array} \right)
\leftarrow \left(
\begin{array}{c}
資産\\
負債\\
純資産\\
収益\\
費用
\end{array} \right)\]

このようにして試算表をベクトル表示したものを、バランスベクトルといいます。

 

試算表の借方・貸方の合計額は一致するというのが、複式簿記の大原則です。つまり

\begin{equation} \begin{split}
借方合計金額&=貸方合計金額\\
\Leftrightarrow a+c&=l+e+r
\end{split} \end{equation}

が成り立ちます。右辺を移項すると

\begin{equation} \begin{split}
a-l-e-r+c&=0\\
\Leftrightarrow\left( 1,1,1,1,1\right)\left(
\begin{array}{r}
a\\
-l\\
-e\\
-r\\
c \end{array} \right)&=0
\end{split} \end{equation}

であることがわかります。2つ目の等式は\( \vec{1}\)ベクトル\(=\left(1,\cdots,1\right)\)とバランスベクトルの内積がゼロ、つまり両者が直交することを意味します。

 

バランス行列への拡張

\begin{equation} \begin{split}
b&=\left(
\begin{array}{r}
a_1\\
a_2\\
\vdots\\
a_n \end{array} \right)=\left( a_i\right)
\end{split} \end{equation}

をバランスベクトルとします。つまり\(\sum_{i=1}^na_i=0\)です。

バランスベクトル\( b_1,b_2,\cdots,b_m\)を横に並べて得られる行列

\begin{equation} \begin{split}
M&=\left( b_1,b_2,\cdots,b_m\right)\\
&=\left(
\begin{array}{rrrr}
a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\
a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\\\
\vdots\\
a_{n,1}&a_{n,2}&\cdots&a_{n,m}\\ \end{array}
\right)\\
&=\left( a_{i,j}\right)
\end{split} \end{equation}

は、複数のバランスベクトルを行列という形で同時に扱うことができ、バランスベクトルを拡張したものと言えます。これをバランス行列と呼ぶことにしましょう。バランス行列の各列は\( \vec{1}\)ベクトルに直交します。

バランス行列を使うことで、バランスベクトルでは扱えなかった異なる「軸」を扱うことができ、たとえば次のようなケースで活躍します。

  • 異なる「時間」のバランスベクトルを表す(バランスベクトルの時間変化)
  • 異なる「基準」のバランスベクトルを表す(いわゆるGAAP差)
  • 異なる「主体」のバランスベクトルを表す(例えば連結会計)

参考文献[1]ではここで示したようなバランス行列を「時間の経過順に並べたバランスベクトル」として導入し、ある会社のバランスベクトル(試算表)の推移を表すものとして紹介しています。

完全バランス行列

上述の

\begin{equation} \begin{split}
M&=\left( b_1,b_2,\cdots,b_m\right)\\
&=\left(
\begin{array}{rrrr}
a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\
a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\\\
\vdots\\
a_{n,1}&a_{n,2}&\cdots&a_{n,m}\\ \end{array}
\right)\\
&=\left( a_{i,j}\right)
\end{split} \end{equation}

は、各「列」がバランスベクトルになっていましたが、各「行」もまたバランスベクトルであるようなものを考えることもできます。すなわち

\begin{equation} \begin{split}
M&=\left( a_{i,j}\right)
\end{split} \end{equation}について、列(縦)方向の要素和がゼロに等しいというバランスベクトルの要件

\begin{equation} \begin{split}
\sum_{i=1}^na_{i,j}=0
\end{split} \end{equation}に加え、行(横)方向の要素和もゼロに等しいもの、つまり

\begin{equation} \begin{split}
\sum_{j=1}^ma_{i,j}=0
\end{split} \end{equation}であるようなものを特殊ケースとして考えることができます。

このように「列」方向にも「行」方向にもバランスベクトルであると考えることができるバランス行列を、完全バランス行列と呼ぶことにします。

例として、次のような\(3\times 3\)完全バランス行列を考えることができます。

\begin{equation} \begin{split}
M&=\left(
\begin{array}{rrr}
100&-120&20\\
-50&80&-30\\
-50&40&10\\
\end{array}
\right)
\end{split} \end{equation}

この完全バランス行列の各列の要素はそれぞれ

\begin{equation} \begin{split}
\left(
\begin{array}{c}
資産a\\
負債l\\
純資産e\\
\end{array} \right)
\end{split} \end{equation}をイメージしており、第1列は「連結試算表」、第2列は「単体試算表の合計値(にマイナスをつけたもの)」、第3列は「連結修正仕訳(にマイナスをつけたもの)」をイメージしています。

つまり

\begin{equation} \begin{split}
M&=\left(
\begin{array}{rrr}
連a&-単a&-修正a\\
連l&-単l&-修正l\\
連e&-単e&-修正e\\
\end{array}
\right)
\end{split} \end{equation}を意味しています。

列(縦)方向は資産=負債+純資産が成り立っており、バランスベクトルとなっていますが、行(横)方向についても、

\begin{equation} \begin{split}
連結ベースの資産=単体ベースの資産合計+資産に係る連結修正
\end{split} \end{equation}が成り立つので、バランスベクトルになっています。

\begin{equation} \begin{split}
M&=\left(
\begin{array}{rrr}
100&-120&20\\
-50&80&-30\\
-50&40&-10\\
\end{array}
\right)
\end{split} \end{equation}を完全バランス行列として具体的に解釈するなら、単体ベースの合計試算表(第2列)である

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
120 & 80\\
& 40
\end{array}
\end{split} \end{equation}に対して、連結修正仕訳(第3列)である

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
-20 & -30\\
& 10
\end{array}
\end{split} \end{equation}を加味した結果、連結試算表(第1列)である

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
100 & 50\\
& 50
\end{array}
\end{split} \end{equation}を得る、ということになります。

 

仕訳の仕訳

\begin{equation} \begin{split}
M
&=\left(
\begin{array}{rrrr}
a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\
a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\\\
\vdots\\
a_{n,1}&a_{n,2}&\cdots&a_{n,m}\\
\end{array}
\right)\\
&=\left( b_1,b_2,\cdots,b_m\right)\\
\end{split} \end{equation}が\(n\times m\)完全バランス行列であるとします。このとき\( b_1,b_2,\cdots,b_m\)は(列)バランスベクトルですが、これらの和について、

\begin{equation} \begin{split}
\sum_{j=1}^m b_j&=
\sum_{j=1}^m\left(
\begin{array}{c}
a_{1,j}\\
\vdots\\
a_{n_j}
\end{array}\right)\\
&=
\left(
\begin{array}{c}
\sum_{j=1}^ma_{1,j}\\
\vdots\\
\sum_{j=1}^ma_{n_j}
\end{array}\right)\\
&=\left(
\begin{array}{c}
0\\
\vdots\\
0
\end{array}\right)\\
&={\bf 0}
\end{split} \end{equation}が成り立っています。

完全バランス行列\(M=\left(b_1,\cdots,b_m\right),\sum b_j={\bf 0}\)という式は、バランスベクトル\(b=\left(a_1,\cdots,a_n\right),\sum a_i=0\)と構造が全く同じであることに気づくでしょう。

バランスベクトル\(b=\left(a_1,a_2,a_3\right)\)が、試算表や仕訳のT勘定図

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
a_1 & a_2\\
& a_3
\end{array}
\end{split} \end{equation}に対応していたように、完全バランス行列\(M=\left(b_1,b_2,b_3\right)\)も

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
b_1 & b_2\\
& b_3
\end{array}
\end{split} \end{equation}のようなT勘定図で表せます。さしずめこれは「完全バランス行列のT表現」とでも呼ぶべきものです。

バランスベクトルにおける各要素\(a_i\)は勘定の金額を表していましたが、T表現した完全バランス行列の各要素\(b_j\)はそれぞれがバランスベクトル、つまり試算表や仕訳です。

標語的なフレーズで表すとしたら、完全バランス行列のT表現は「仕訳の仕訳」と呼べるものです。

なぜなら、完全バランス行列\(M\)をT表現した時の各\(b_j\)がそれぞれT表現を持ち、

\begin{equation} \begin{split}
\begin{array}{r|r} \hline
\begin{array}{r|r} \hline
a_{1,1} & a_{2,1}\\
& a_{3,1}
\end{array}
&
\begin{array}{r|r} \hline
a_{1,2} & a_{2,2}\\
& a_{3,2}
\end{array}\\
&
\begin{array}{r|r} \hline
a_{1,3} & a_{2,3}\\
& a_{3,3}
\end{array}
\end{array}
\end{split} \end{equation}と表せるからです。

 

バランステンソル

ベクトルは1次元配列、行列は2次元配列の一種です。3次元以上の配列は、テンソルと呼ばれます(数学的には別の定義があります、参考文献をご覧ください)。

バランスベクトルやバランス行列を考えることができるなら、バランステンソルも同様に考えうるのではないか、というのは素朴なアイデアです。

バランス行列\( M_1,M_2,\cdots,M_K\)を並べた

\begin{equation} \begin{split}
T=\left( M_1,M_2,\cdots,M_K\right)=\left( a_{i,j,k}\right)
\end{split} \end{equation}は3階のテンソルです。

\(M_k\)が(必ずしも完全バランス行列ではない)バランス行列であるとき、これらを並べてできる\(T\)を、バランステンソルと呼ぶことにしましょう。

この\(T\)をさらに並べて、より高階のテンソルも考えることができます。

バランスベクトルは1階のバランステンソル、バランス行列は2階のバランステンソルです。

バランス行列で異なる「軸」を考えることができたように、高階のバランステンソルを考えればより複雑な状況を表せると考えられます。

 

完全バランステンソル

バランス行列(2階バランステンソル)\(M=\left(a_{i,j}\right)\)について

\begin{equation} \begin{split}
\sum_i a_{ i,j  }=\sum_j a_{ i,j  }=0
\end{split} \end{equation}が成り立つとき、\(M\)を完全バランス行列と呼ぶのでした。

同様に、\(D\)階のバランステンソル

\begin{equation} \begin{split}
T^D=\left(a_{ i_1,\cdots,i_D  }\right)
\end{split} \end{equation}について、

\begin{equation} \begin{split}
\sum_{i_1} a_{ i_1,\cdots,i_D  }=\cdots=\sum_{i_D} a_{ i_1,\cdots,i_D  }=0
\end{split} \end{equation}が成り立つとき(つまりどのインデックス\(i_d\)をとってきても、それに関する要素和がゼロ)、\(T^D\)は\(D\)階完全バランステンソルと呼ぶのがふさわしいでしょう。

一般の\(D\)階のテンソル(\(D\)次元配列)\(\left(x_{ i_1,\cdots,i_D  }\right)\)について、\(d\)番目のインデックス\(i_d\)に関する要素和がゼロになるようなもの、つまり

\begin{equation} \begin{split}
\mathrm{ tensor:}~x_{ i_1,\cdots,i_D  } \mathrm{  s.t.}~\sum_{i_d}x_{ i_1,\cdots,i_D  }= 0
\end{split} \end{equation}はバランステンソルと呼んでよいもので、これを\(D\)階の\(d-\)バランステンソルと呼ぶことにしましょう。

バランス行列\(a_{i,j}\)で、列(縦、\(i\))方向にはバランスベクトルであって、行(横、\(j\))方向にはバランスベクトルではないものは、\(2\)階の\( 1-\)バランステンソルです。

 

 

参考文献

複式簿記の代数構造やバランスベクトルの性質について、この本に述べられている内容が最先端と言っていいでしょう。

 

テンソルを「\( n\)次元配列」と考えること、その応用についてはこちらが参考になります。高次元配列を関係データの分析に活用する方法が述べられています。

 

テンソルの直感的定義と具体的な計算方法については、こちらをおすすめします。基礎的な線形代数の理解があれば読めるでしょう。テンソルの計算方法や「アインシュタイン記法」「縮約」などのルールについて、詳しく説明されています。

 

テンソルの数学的な定義については、以下が詳しいです。由緒ある教科書であり、線形代数の基礎から学ぶことができます。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*