0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonで線形代数のイメージをとらえる(初回はベクトルとスカラー)

Last updated at Posted at 2020-08-13

#昨日の投稿について
昨日投稿した解析学系の内容がかなりのLGTMが得られて、正直困惑しています。いろんなところのサイトから引用して、自分で作ったコードが後半の二つだけなので、なぜたくさん視聴してくれたのかが分からないです。しかし、このまま勢いでもっと皆様に見てもらえるよう大学で学んだ線形代数を一からやっていきたいと思います。線形代数は、理工系や数学などを専攻する人は必ずといってもいいほど必要な科目ではないでしょうか。正直自分も数学は苦手なので、この機会で学びなおすのは絶好の機会だと思っております。自分はAI関連の方に今力を注いでいるので、その土台を整えていきたいと思います。よろしくお願いします。

#線形代数を頑張ってイメージでとらえたい
大学の線形代数の教科書はやたら記号ばっかりで、何言ってるかわからないですよね。最初の線形代数の講義は足し算引き算だけでこれ余裕かもと思った矢先に、基底やら、線形独立やら、線形従属、固有値、固有ベクトル、対角化などやたら難しいワードや記号が出てきて萎えてしまった一年のころから懐かしいです。大学一年で足し算引き算から二次変換や、グラムシュミットの直行化法まで進んで(ワードだけ覚えていて、意味は知らないです)成績が低かった苦い思い出。教授たちや助教授たちはもっとかみ砕いて一般人にもわかるように教えてほしいなあって当時思ってました。というわけでイメージをつかむためにこの記事やこれ以降の記事も、なるべくベクトルのグラフ表示させていきます。これグラフ出す意味あるのって内容も出していきたいと思います。すべてはイメージをとらえるために!!!アウトプットのため詳しい証明は載せられないです。勉強不足なので詳しく説明できるように学びます。

#参考サイト
https://python.atelierkobato.com/linear/
すいませんこのサイトを中心にして説明を補足する感じで書かせて頂きます
#スカラーとベクトルについて

スカラーは大きさを持つ量。どれくらいの量があるかを定める物差し。
ベクトルはその大きさ、と向きを持つこと。
何言ってるかわからないと思うのでグラフを使いたいと思います。
とりあえずコードは見ずにグラフだけを見てください。
正直に言えばグラフは、一つ一つ絵を書くのはめんどくさいのでプログラミングに頼ってます。なのでコードに関しては説明しません。


import matplotlib.pyplot as plt
import numpy as np
# 座標設定関数
def coordinate(axes, range_x, range_y, grid = True,
               xyline = True, xlabel = "x", ylabel = "y"):
    axes.set_xlabel(xlabel, fontsize = 16)
    axes.set_ylabel(ylabel, fontsize = 16)
    axes.set_xlim(range_x[0], range_x[1])
    axes.set_ylim(range_y[0], range_y[1])
    if grid == True:
        axes.grid()
    if xyline == True:
        axes.axhline(0, color = "gray")
        axes.axvline(0, color = "gray")

# ベクトル描画関数
def visual_vector(axes, loc, vector, color = "red"):
    axes.quiver(loc[0], loc[1],
              vector[0], vector[1], color = color,
              angles = 'xy', scale_units = 'xy', scale = 1)
# SLA_009-3

# FigureとAxes
fig = plt.figure(figsize = (6, 6))
ax = fig.add_subplot(111)

# 座標を設定
coordinate(ax, [-4, 4], [-4, 4])

# ベクトルv,wを定義
v = np.array([0, 1])
w = np.array([3, 0])

# [0,0]を始点にv1を描画
visual_vector(ax, [0, 0], v, "red")

# v1の終点を始点にv2を描画
visual_vector(ax, v, w, "blue")

# [0,0]を始点にv+wを描画
visual_vector(ax, [0, 0], v + w, "green")

plt.show()

vector2.png

赤い矢印の始点が原点から始まりx座標から+1進んでいることが分かります。それに対して、青の矢印は赤の矢印の終点からy座標へ+3進んでいることが分かります。その後、緑の矢印もありますがこれは何でしょうか。
これは、青の矢印と赤の矢印のベクトルスカラーの合計であらわされています。

赤のベクトルをOA、青のベクトルをAB、緑のベクトルをOBとすると

\vec{OA} = \left( \begin{array}{cc} 1\\ 0\\ \end{array} \right)\\
\vec{AB} = \left( \begin{array}{cc} 0\\ 3\\ \end{array} \right)\\
\vec{OB} = \left( \begin{array}{cc} 1\\ 3\\ \end{array} \right)


となっていることが分かります。これを足し算していくと、

\vec{OB} = \left( \begin{array}{cc} 1\\ 0\\ \end{array} \right)+ \left( \begin{array}{cc} 0\\ 3\\ \end{array} \right)= \left( \begin{array}{cc} 1\\ 3\\ \end{array} \right)

となり値が一致していることが分かります。これがベクトルの計算です。今回はベクトルはx,yに分かれていて、与えられたその数字の大きさがスカラーといいます。直感的にOAの長さは1ABは3ぽいですね。
しかし、OBのスカラーは何でしょうか。こういう時は、ピタゴラスの定理を使えば長さ分かりそうですね。
今回は原点から(1,3)の点の長さを測ればいいですね。ということは


\sqrt{(3-0)^2+(1-0)^2} =\sqrt{10}\\

がスカラー量になります。
これでベクトルの初歩の土台はできましたね。

#感想
ここまで書くのになんかかなり時間かかった気がする。
次は、もっとざっくり説明していこうかな。これにプログラムコードの説明は。。うんしばらく後にしよう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?