【Pythonで学ぶ線形代数学講座(18)】直線の線形変換
直線の方程式と線形変換
下図のように、平面上に 2 点
このとき、
と表せます (
となります。これが ベクトルで表された直線の方程式 です。
直線の線形変換
位置ベクトル
となり、
例として方程式
で表される直線を行列
[1] 2点を変換する方法
まず直線上の 2 点を見つけます。
のように書き直して、右辺を強引に
とします。
となります。
で表される点はすべて (4) を満たします。
が得られます。
したがって、求める直線の方程式は
となります。分母を払って整理すると
が得られます。
[2] 逆行列を用いる方法
直線
となるので、これを (8) の両辺に左側から掛けて、
が得られます。
Pythonによる直線の線形変換
Python で直線を変換してみましょう。
以下のコードを実行するためには、コードライブラリ の coordinate() が必要です。
# python_linear_transformation_line # In[1] import numpy as np import matplotlib.pyplot as plt # FigureとAxes fig, ax = plt.subplots(1, 1, figsize=(6, 6)) # 座標を設定 coordinate(ax, [-6, 6], [-6, 6]) # 直線5x-3y=2上の点 x = np.linspace(-6, 6, 65) y = (5*x - 2)/3 # xとyを縦軸方向に連結 p = np.vstack((x, y)) # 変換行列aを定義 a = np.array([[1, -1], [3, 2]]) # 直線5x-3y=2を行列aで変換 ap = np.dot(a, p) # 直線を表示 ax.plot(x, y, color = "blue", label = "5x-3y=2") ax.plot(ap[0], ap[1], color = "red", label = "19x+2y=10") ax.legend()
コメント
(6)式の分子は 24-5 ではなく、5-24 だと思います。(11)式がどうしても 2Y+19X=10 にしかならず悩んでしまいましたが、プログラムの実行例の凡例も 19x+2y=10 となっていたのもう一度読み返して気づきました。
なかなか内容が手ごわくて大変ですが、「線形代数」は何とか最後までやってみようと思いますので,よろしくお願いいたします。
ご指摘の通りです。ご迷惑をおかけして申し訳ありません。
記事は訂正しておきました。
線形代数は学べば学ぶほど奥の深い学問ですし、習得すれば機械学習などプログラミングでやれることも大幅に広がります。ぜひ楽しみながら最後まで読んでいただけると嬉しいです。