技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

ベクトルの画像的表示(練習)

ベクトルプロットの練習がてらベクトルの計算
まずは単純にベクトル表示

import numpy as np
import matplotlib.pyplot as plt

plt.figure()

LX, LY=5,5

# ベクトルの
plt.quiver(0, 0, 2.5, 1, angles='xy', scale_units='xy', scale=1)

plt.xlim([-LX,LX])
plt.ylim([-LY,LY])
plt.grid()
plt.draw()
plt.show()

f:id:white-azalea:20210520205446p:plain

なるほどこんな感じでプロットするのか
複数ベクトルの表示は

plt.figure()

# ベクトルを行列で表示
X1 = [0, 1, 2]
Y1 = [0, 0, 0]
U = [0.5,  0.25, -0.5]
V = [0.25, 0.5,  -0.25]

# ベクトルの
plt.quiver(X1, Y1, U, V, angles='xy', scale_units='xy', scale=1)

plt.xlim([-1, 3])
plt.ylim([-1, 3])
plt.grid()
plt.draw()
plt.show()

f:id:white-azalea:20210520205539p:plain

癖が強い…w

因みに矢印の長さは=L2 ノルムって事らしい


\parallel a \parallel

仮に以下の様に指定すると


a = (2, 3)^T \\
b = (1, 5)^T

と仮定したとき、  a+b

plt.figure()

# ベクトルを行列で表示
X1 = [0, 0, 2]
Y1 = [0, 0, 3]
U = [3, 2, 1]
V = [8, 3, 5]

# ベクトルの
plt.quiver(X1, Y1, U, V, angles='xy', scale_units='xy', scale=1)

plt.xlim([-1, 5])
plt.ylim([-1, 10])
plt.grid()
plt.draw()
plt.show()

f:id:white-azalea:20210520205730p:plain

こんなイメージになると。
ベクトルの引き算  a-b とすると

plt.figure()

# ベクトルを行列で表示
# a, b, a-b
X1 = [0, 0, -1]
Y1 = [0, 0, -5]
U = [2, -1, 3]
V = [3, -5, 8]

# ベクトルの
plt.quiver(X1, Y1, U, V, angles='xy', scale_units='xy', scale=1)

plt.xlim([-2, 4])
plt.ylim([-6, 4])
plt.grid()
plt.draw()
plt.show()

f:id:white-azalea:20210520205838p:plain

この一番長いヤツが引き算結果のベクトルらしい
ベクトルの内積…ってどう書くんだ?とおもったら公式があった。


a^T b = \parallel a \parallel \parallel b \parallel cos \theta

ってことで  \theta ベクトル間の開き角度ってことになるようだ

plt.figure()

# ベクトルを行列で表示
# a, b
X1 = [0, 0]
Y1 = [0, 0]
U  = [2, 1]
V  = [3, 5]

# ベクトルの
plt.quiver(X1, Y1, U, V, angles='xy', scale_units='xy', scale=1)

plt.xlim([-1, 3])
plt.ylim([-1, 6])
plt.grid()
plt.draw()
plt.show()

f:id:white-azalea:20210520210117p:plain

要するにこの角度