{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 🤔行列とは\n", "\n", "3DCGでもさんざんお世話になっているので、復習\n", "\n", "> 数学の線型代数学周辺分野における行列(ぎょうれつ、英: matrix)は、数や記号や式などを縦と横に矩形状に配列したものである。横に並んだ一筋を行、縦に並んだ一筋を列と呼ぶ。例えば、下記のような行列\n", "> \n", "> $$\\begin{bmatrix}1&9&-13\\\\20&5&-6\\end{bmatrix}$$\n", "> \n", "> は2つの行と3つの列によって構成されているため、(2,3)型または2×3型の行列と呼ばれる。\n", "> \n", "> 書き並べられた要素は行列の成分と呼ばれ、行列の第 $i$ 行目、$j$ 列目の成分を特に行列の $(i, j)$ 成分と言う。行列の $(i, j)$ 成分はふつう $a_{ij}$ のように二つの添字を単に横並びに書くが、誤解を避けるために添字の間にコンマを入れることもある。また略式的に、行列 $A$ の $(i, j)$ 成分を指定するのに $A_{ij}$ という記法を用いることもある。\n", "> \n", "> [行列 - Wikipedia](https://ja.wikipedia.org/wiki/%E8%A1%8C%E5%88%97)\n", "\n", "ぶっちゃけ、数字を矩形に並べただけのもの(テキトー)。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## どっちが行で、どっちが列なのさ\n", "\n", "よく混乱する。Excelとか。\n", "\n", "> 文字送りの方向(横)の並びを行 (英: row) といい、行送りの方向(縦)の並びを列 (英: column) と呼ぶ\n", ">\n", "> [行列 - Wikipedia](https://ja.wikipedia.org/wiki/%E8%A1%8C%E5%88%97)\n", "\n", "漢字で覚えるとかもありますが、[呪いの画像](https://twitter.com/motcho_tw/status/966992405437194241?s=20) もあるのでやめたほうがいい。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## $m \\times n$ 行列\n", "\n", "> 行列に含まれる行の数が $m$, 列の数が $n$ である時に、その行列を $m$ 行 $n$ 列行列や $m \\times n$ 行列、$mn$ 行列などと呼ぶ。行列を構成する行の数と列の数の対を型 (英: type) あるいはサイズという。したがって $m$ 行 $n$ 列行列のことを $(m, n)$ 型行列などと呼ぶこともある。$K$ 上の $m \\times n$ 行列の全体は $K^{m \\times n}$, $K^{m,n}$ や $Mat(m, n; K)$, $M_{m \\times n}(K)$ などで表される。\n", ">\n", "> [行列 - Wikipedia](https://ja.wikipedia.org/wiki/%E8%A1%8C%E5%88%97)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 乗算\n", "\n", "### スカラー倍\n", "\n", "行列とスカラー倍の乗算は $\\lambda$ (ラムダ)で表すらしい。 https://oguemon.com/study/linear-algebra/matrix-op/\n", "\n", "$$\n", " \\lambda A = [\\lambda a_{ij}]\n", "$$\n", "\n", "### 行列同士\n", "\n", "行列同士の乗算はちょっと複雑。納得するためにちょっとWikibooksから引用しよう。\n", "\n", "> 1次方程式\n", "> \n", "> $$\n", " \\begin{cases}\n", " x + 2y = 1 \\\\\n", " 2x + 3y = 2\n", " \\end{cases}\n", "$$\n", "> を、次のような記法で現してみる\n", "> $$\n", " \\begin{pmatrix}\n", " 1 & 2 \\\\\n", " 2 & 3\n", " \\end{pmatrix}\n", " \\begin{pmatrix}\n", " x \\\\\n", " y\n", " \\end{pmatrix}\n", " =\n", " \\begin{pmatrix}\n", " 1 \\\\\n", " 2\n", " \\end{pmatrix}\n", "$$\n", "> これから勉強するのは、連立方程式とベクトルとの関係であり、それを考察しやすくするために、あらたに行列(ぎょうれつ)という量を導入する。\n", "> https://ja.wikibooks.org/wiki/%E9%AB%98%E7%AD%89%E5%AD%A6%E6%A0%A1%E6%95%B0%E5%AD%A6C/%E8%A1%8C%E5%88%97\n", "\n", "まず、この連立1次方程式の $x$, $y$ を解いてみる。\n", "\n", "$x + 2y = 1$ を式変形して…\n", "$$\n", " x = 1 - 2y\n", "$$\n", "この$x$を$2x + 3y = 2$に代入すると、\n", "$$\n", " 2(1 - 2y) + 3y = 2\n", "$$\n", "ここから、$2 \\times 1 - 2 \\times 2y + 3y = 2$、$2 - 4y + 3y = 2$、$2 - y = 2$となり、最終的に$y$は\n", "$$\n", " y = 0\n", "$$\n", "となる。後は$x = 1 - 2y$に$y = 0$を代入して、$x = 1 - 2 \\times 0$、\n", "$$\n", " x = 1\n", "$$\n", "\n", "では、行列に代入してみよう。\n", "\n", "$$\n", " \\begin{pmatrix}\n", " 1 & 2 \\\\\n", " 2 & 3\n", " \\end{pmatrix}\n", " \\begin{pmatrix}\n", " 1 \\\\\n", " 0\n", " \\end{pmatrix}\n", " =\n", " \\begin{pmatrix}\n", " 1 \\\\\n", " 2\n", " \\end{pmatrix}\n", "$$\n", "\n", "この式を成り立たせるために、行列同士の積はどう計算すればよいだろうか?\n", "\n", "一旦、$2$とか$3$とかになっている数字(プログラムでいえば、マジックナンバーだね!)を変数にしてみよう。\n", "\n", "$$\n", " \\begin{cases}\n", " ax + by = p \\\\\n", " cx + dy = q\n", " \\end{cases}\n", "$$\n", "\n", "$$\n", " \\begin{pmatrix}\n", " a & b \\\\\n", " c & d\n", " \\end{pmatrix}\n", " \\begin{pmatrix}\n", " x \\\\\n", " y\n", " \\end{pmatrix}\n", " =\n", " \\begin{pmatrix}\n", " p \\\\\n", " q\n", " \\end{pmatrix}\n", "$$\n", "\n", "行列式にある$p$, $q$を置き換えてみよう。\n", "\n", "$$\n", " \\begin{pmatrix}\n", " a & b \\\\\n", " c & d\n", " \\end{pmatrix}\n", " \\begin{pmatrix}\n", " x \\\\\n", " y\n", " \\end{pmatrix}\n", " =\n", " \\begin{pmatrix}\n", " ax + by \\\\\n", " cx + dy\n", " \\end{pmatrix}\n", "$$\n", "\n", "行列の積っぽいものが出てきた。いや、「ぽいもの」ではなく、これが行列の積である。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 加算・減算\n", "\n", "あんまりしない気がする🤔\n", "\n", "$$\n", " A = \\left(\n", " \\begin{array}{ccc}\n", " a_1 & a_2 \\\\\n", " a_3 & a_4\n", " \\end{array}\n", " \\right) = [a_{ij}]\n", "$$\n", "$$\n", " B = \\left(\n", " \\begin{array}{ccc}\n", " b_1 & b_2 \\\\\n", " b_3 & b_4\n", " \\end{array}\n", " \\right) = [b_{ij}]\n", "$$\n", "$$\n", " A + B = \\left|\n", " \\begin{array}{ccc}\n", " a_1 + b_1 & a_2 + b_2 \\\\\n", " a_3 + b_3 & a_4 + b_4\n", " \\end{array}\n", " \\right| = [a_{ij} + b_{ij}]\n", "$$\n", "\n", "行数、列数が同じもの同士でなければ加算、減算はできない。" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }