「プログラマのための線形代数」ウォーミングアップ

「プログラマのための線形代数(3/16,17 土日)」に向けて講師・佐野がウォーミングアップ連ツイをお送りしています。興味を持った方は是非勉強会の詳細を覗いて見てください 👉 https://linalg-math4pg.peatix.com/
37
さのたけと @taketo1024

【線形変換と行列4】さて、V から V への写像 f で、次の二つの性質(線形性)を満たすものを「V 上の線形変換」と言います: 1) f(v + w) = f(v) + f(w) 2) f(av) = a f(v) (ただし a は実数) これは f が「足し算と実数倍」に関して「可換」、つまり「どちらを先にやってもいい」ということです。 pic.twitter.com/I6Yn3iSfTt

2019-02-26 13:40:45
拡大
拡大
さのたけと @taketo1024

【線形変換と行列5】線形変換は「とても簡単な」写像です。V 上のベクトル v を v = x e_1 + y e_2 と分解すると、線形性から f(v) = x f(e_1) + y f(e_2) となります。つまり f は「e_1 と e_2 の行き先だけ」で決まってしまうのです。f の像は、 V をマス目状にするとよく見えます。 pic.twitter.com/ermYWchTxy

2019-02-26 13:40:45
拡大
さのたけと @taketo1024

【線形変換と行列6】「線形でない」変換の例としては、 f(x, y) = (x, y + x^2) など、いかようにも取れます。線形である場合と比べて「真っ直ぐでない」感じは一目瞭然ですね。 pic.twitter.com/Eo5AJG861y

2019-02-26 13:40:46
拡大
さのたけと @taketo1024

【線形変換と行列7】さて、e_1 と e_2 の f による行き先も V 上にあり、再び e_1, e_2 で分解できるので、 f(e_1) = a e_1 + c e_2, f(e_2) = b e_1 + d e_2 と書けます。線形性から「f を決めること」と「A = (a, b; c, d) を決めること」は同じことです。A を f の「行列表示」と言います。 pic.twitter.com/jEDBsEzJpt

2019-02-26 13:40:46
拡大
さのたけと @taketo1024

【線形変換と行列8】A の第一列 (a, c)^T は e_1 = (1, 0)^T の、A の第二列 (b, d)^T は e_2 = (0, 1)^T の行き先となっています。一般のベクトル v = (x, y)^T に対しては f(v) = (ax + by, cx + dy)^T と計算でき、これはまさに行列 A とベクトル (x, y)^T の積です。 pic.twitter.com/rZGqCwynOS

2019-02-26 13:40:47
拡大
さのたけと @taketo1024

【線形変換と行列9】「矢印の世界」と「数の組の世界」の間で、「変換 f で移す」ことと「行列 A を掛ける」ことがちょうど対応してることが見えるでしょうか?そういう綺麗な対応が「成り立つように」行列とベクトルの積を定義したのです。 pic.twitter.com/F9VHgNKiZm

2019-02-26 13:40:47
拡大
さのたけと @taketo1024

【線形変換と行列10】線形変換 f と行列 A が対応するポイントは 1) f が線形性を満たす 2) V の元は e_1, e_2 で分解できる 3) 線形性により f は e_1, e_2 の行き先だけで決まる でした。e_1, e_2 を V の「基底」と言います。V を「2次元平面」というときの 2 は、この個数を指しているのです。

2019-02-26 13:40:48
さのたけと @taketo1024

【予告】次回は、今回の話を一般のベクトル空間に一般化します。例えば「微分」も線形変換で、(適当に空間を制限することで)行列として書くことができます😉 【宣伝】「プログラマのための線形代数(3/16,17 土日)」一般枠は2万円に、学生枠は1万円に値下げしました! linalg-math4pg.peatix.com/view

2019-02-26 13:40:48
さのたけと @taketo1024

【線形変換で遊ぼう1】もう少し2次元平面上の線形変換で遊んでみましょう。「プログラマのための線形代数」なので、プログラマらしく線形変換を可視化するデモアプリを作ってみました👍 pic.twitter.com/EP6AUdMWes

2019-02-28 20:37:05
さのたけと @taketo1024

【線形変換で遊ぼう2】2次元平面上の線形変換は、基底 e_1 = (1, 0) と e_2 = (0, 1) の行き先で決まり、それぞれの行き先の成分表示(縦ベクトル)を横に並べて行列表示が得られるのでした。行き先を動かすのに応じて、行列の対応する列(縦の並び)が動くことに注目してください。 pic.twitter.com/qpOpIVqt9F

2019-02-28 20:37:06
さのたけと @taketo1024

【線形変換で遊ぼう3】行き先をグリグリと動かしても、赤矢印は「右に2、上に1」、青矢印は「右に1、上に3」の位置にあることが、変換の前と後で保たれています。この「平行と比率」を保つ性質こそが「線形性」です。

2019-02-28 20:37:06
さのたけと @taketo1024

【線形変換で遊ぼう4】線形変換の例をいくつか見てみましょう。まずは「拡大縮小」。A = [2, 0; 0, 3] による変換 f で、 e_1 は 2e_1 に、e_2 は 3e_2 に移ります。つまり f は x 方向に 2 倍、y 方向に 3 倍拡大する変換です。円運動が楕円運動に移るのが見えます。 pic.twitter.com/0kdO7nuUKR

2019-02-28 20:37:06
さのたけと @taketo1024

【線形変換で遊ぼう5】次は「反転」。A = [1, 0; 0, -1] による変換 f で、 e_1 は e_1 のまま、e_2 は -e_2 に移るので、これは y 軸に関する反転です。円の回転が逆向きになっています。 pic.twitter.com/YZ4Af2uuu1

2019-02-28 20:37:07
さのたけと @taketo1024

【線形変換で遊ぼう6】次は「回転」。三角関数の定義から e_1 を θ 回転した点は (cosθ, sinθ) で、e_2 を θ 回転した点は (cos(θ+90°), sin(θ+90°)) = (-sinθ, cosθ) です。これより行列は A = [cosθ, -sinθ; sinθ, cosθ] となります(それぞれ縦にしてから横に並べる)。動画は θ = 30° の場合です。 pic.twitter.com/y9gQu3jsUT

2019-02-28 20:37:08
さのたけと @taketo1024

【線形変換で遊ぼう7】最後に「正射影」。A = [1, 0; 0, 0] によって、e_1 は e_1 のまま、e_2 は 0 に潰れるので、これは平面全体を x 軸にグシャッと潰す変換です。x 軸に垂直な方向から光を当てて x 軸に映る影を見ているとも見えます。これは上の例たちとは異なる「非可逆」な変換の例です。 pic.twitter.com/vLJR35ikn7

2019-02-28 20:37:08
さのたけと @taketo1024

【線形変換で遊ぼう8】3D プログラミングや画像処理では「アフィン変換」というものが出てきますが、これは「線形変換+平行移動」のことです。動作環境がアフィン変換に対応してれば、このように行列を与えて画像を変形することができます😊 pic.twitter.com/LlSBZZqbGT

2019-02-28 20:37:09
さのたけと @taketo1024

【宣伝 & 予告】「プログラマのための線形代数」では、今回作ったアプリ(iOS + Swift)の簡単な解説もする予定です。皆さんも得意な環境でプログラムを作ってみて下さい😊 次回は前回の予告通り、一般のベクトル空間上の線形変換について書きます👍 linalg-math4pg.peatix.com/view

2019-02-28 20:37:10
さのたけと @taketo1024

【基底と線形変換1】線形代数ウォーミングアップシリーズの最終回として、一般のベクトル空間上の基底と線形変換について書きます。今回の話は一般のベクトル空間論に慣れていない人には難しく感じると思いますが、「線形代数の広がり」としてその景色を楽しんで頂ければと思います。

2019-03-08 22:23:57
さのたけと @taketo1024

【基底と線形変換2】まず一般のベクトル空間 V について、 E = {e_1, ..., e_n} が V の「基底」であるとは、V の全てのベクトル v が v = a_1 e_1 + ... + a_n e_n と一通りに書けることを言います。基底 E は V の要素を表すのに「必要最小限」なベクトルの組です。

2019-03-08 22:23:57
さのたけと @taketo1024

【基底と線形変換3】基底の取り方は一通りではありませんが、その要素の個数は一定となります(定理)。この個数を「V の次元」と言います。平面の場合は (1, 0), (0, 1) の 2つが取れたので 2次元。一般に基底の要素は有限個とは限らず、無限個となる場合もあります(そのとき V は無限次元という)。

2019-03-08 22:23:57
さのたけと @taketo1024

【基底と線形変換4】具体例を見てみましょう。 V を 2次以下の(一変数)多項式全体とします。V の要素 p は p(x) = a + bx + cx² と一通りに書けます。V の基底として {1, x, x²} が取れるので、V は 3次元のベクトル空間となります。この基底の元で、p は (a, b, c) という数の組と同一視できます。 pic.twitter.com/HNB1NInigU

2019-03-08 22:23:58
拡大
さのたけと @taketo1024

【基底と線形変換5】V 上の線形変換 F を「微分」とします。微分は (f + g)' = f' + g', (af)' =a f' を満たすので、V 上の線形変換です。p(x) = a + bx + cx² に対して p'(x) = b + 2cx で(線形性を使っています)、上の基底に関して p' は (b, 2c, 0) と同一視できます。

2019-03-08 22:23:58
さのたけと @taketo1024

【基底と線形変換6】この同一視の元で F は行列 A = [0, 1, 0; 0, 0, 2; 0, 0, 0] と対応しています。一般に、ベクトル空間の基底を定めると、V の要素は数の組に、V 上の変換は行列に対応します。一般のベクトル空間の議論が、具体的に計算できる数ベクトルと行列の世界に落ちてくるのです。 pic.twitter.com/9EaCllTvtI

2019-03-08 22:23:59
拡大
さのたけと @taketo1024

【基底と線形変換7】もう一つ例を。バネ振り子の運動方程式は ma = -kx です。a(t) = x''(t) より x'' = -(k/m)x と書けます。簡単のため k/m = 1 として x'' = -x という方程式を考えましょう。この方程式を満たす x(t) の全体を V とおくと、V はベクトル空間となります。 pic.twitter.com/80mVahpCNF

2019-03-08 22:23:59
拡大
さのたけと @taketo1024

【基底と線形変換8】いま x = cos t と x = sin t は方程式を満たします。線形代数の一般論から V は 2次元であることが言えて、{cos t, sin t} は V の基底となります。一般解を x(t) = A cos t + B sin t と書けるのはこのためです。三角関数の合成公式から、これも一つの三角関数で書けるのでした。

2019-03-08 22:24:00