# 線形代数

## ベクトル

以下のように括弧の中に数を縦に配置したものを **ベクトル** と呼ぶ

$$
\left(\begin{array}{c} 5 \\ 7 \\ 9 \end{array}\right)
$$

ベクトルは $\vec{x}$ や $\vec{x}$ (太字斜体) などの表記で表される

ベクトルは数字を縦に並べたものだが、$ (5, 7, 9)^T $ のように **転置演算子** ($^T$) をつけた行ベクトルで表すこともある（大抵は紙面の都合でスペースを使いたくない時）

$$
\left(\begin{array}{c} 1 \\ 2 \\ 3 \end{array}\right) = (1, 2, 3)^T
$$

ベクトル内部に配置された各数を **成分** と呼び、それぞれの成分を上から順に第1成分、第2成分、... と呼ぶ

また、特別なベクトルとしてすべての成分が 0 である **ゼロベクトル** が以下のように定義されている

$$
\vec{0} = \left(\begin{array}{c} 0 \\ 0 \\ \vdots \\ 0 \end{array}\right)
$$

### ベクトルの次元
- **次元**:
    - ベクトルの成分の個数のこと
    - $d$ 次元ベクトルの実数集合を $\mathbb{R}^d$ と表現する

例えば、

$$
\vec{u} = \left(\begin{array}{c} 2 \\ 3 \end{array}\right), \vec{v} = \left(\begin{array}{c} 4 \\ 5 \\ 6 \\ 7 \end{array}\right)
$$

のとき、$\vec{u}$ は2次元ベクトルであり、$\vec{v}$ は4次元ベクトルである

### ベクトルの計算
ベクトルの和は、要素ごとの加算で定義される

$$
\vec{u} = \left(\begin{array}{c} u_1 \\ u_2 \\ \vdots \\ u_d \end{array}\right)
\quad
\vec{v} = \left(\begin{array}{c} v_1 \\ v_2 \\ \vdots \\ v_d \end{array}\right) \\
\vec{u} + \vec{v} = \left(\begin{array}{c} u_1 + v_1 \\ u_2 + v_2 \\ \vdots \\ u_d + v_d \end{array}\right)
$$

ベクトルの和が定義されるのは、和を取ろうとしているベクトルの次元が等しい場合に限られる

ベクトルと対比して、通常の数（実数など）を **スカラー** と呼ぶことがある

ここで、ベクトルのスカラー倍は、各成分にスカラーを掛けたものと定義される

$$
k\vec{v} = \left(\begin{array}{c} kv_1 \\ kv_2 \\ \vdots \\ kv_d \end{array}\right) \quad (k\in{\mathbb{R}})
$$

特に $k = 0$ のときは、任意ベクトル $\vec{v}$ について、次のようになる

$$
0\vec{v} = \vec{0}
$$

次に $k = -1$ の場合を考えると、

$$
(-1)\cdot{\vec{v}} = -\vec{v} = \left(\begin{array}{c} -v_1 \\ -v_2 \\ \vdots \\ -v_d \end{array}\right)
$$

となり、これはベクトルの符号反転となる

これにより、ベクトルの差は以下のように定義される

$$
\vec{u} - \vec{v} = \vec{u} + (-\vec{v}) = \left(\begin{array}{c} u_1 - v_1 \\ u_2 - v_2 \\ \vdots \\ u_d - v_d \end{array}\right)
$$

あるベクトルに対してそのスカラー倍であるベクトルを考えた時、それらのベクトルは **平行** であると呼ぶ

つまり $\vec{v} = k\vec{u}$ のとき、$\vec{u}$ と $\vec{v}$ は平行である

### 交換法則・結合法則・分配法則
ベクトルにも次のような交換法則・結合法則・分配法則が成り立つ

$$
\begin{align}
\vec{u} + \vec{v} &= \vec{v} + \vec{u} \\
(\vec{u} + \vec{v}) + \vec{w} &= \vec{u} + (\vec{v} + \vec{w}) \\
k(\vec{u} + \vec{v}) &= k\vec{u} + k\vec{v} \\
(k + l)\vec{v} &= k\vec{v} + l\vec{v}
\end{align}
$$

また、ゼロベクトルの性質について以下が成り立つ

$$
\begin{align}
\vec{0} + \vec{v} &= \vec{v} \\
\vec{0} - \vec{v} &= -\vec{v} \\
0\vec{v} &= \vec{0}
\end{align}
$$

### ノルム
- **ノルム**:
    - ベクトルの大きさを表す量
    - ノルムの定義はいくつか考えられるが、ここではL1ノルムとL2ノルムのみ考える
        - L1ノルム: $|\vec{v}|_1 = |v_1| + |v_2| + \dots + |v_d| \quad (|x|:\ xの絶対値)$
        - L2ノルム: $\|\vec{v}\| = \sqrt{v_1^2 + v_2^2 + \dots + v_d^2}$

本稿では、特に断りなくベクトルのノルムというときはL2ノルムを指すこととする

また、ベクトルの大きさ（長さ）というときもL2ノルムを指すこととする

ベクトルのスカラー倍のノルムについては以下の式が成り立つ

$$
\begin{align}
|k\vec{v}|_1 &= |k||\vec{v}|_1 \\
\|k\vec{v}\| &= |k|\|\vec{v}\|
\end{align}
$$

ノルムが1であるベクトルを特に **単位ベクトル** と呼び、$\hat{a}$ で表す

#### 演習
次のような3つのベクトルについて、

$$
\vec{u} = \begin{pmatrix}1\\2\\-2\end{pmatrix},\ \vec{v} = \begin{pmatrix}3\\5\\7\end{pmatrix},\ \vec{w} = \begin{pmatrix}1\\-1\\2\end{pmatrix}
$$

以下を求めよ

1. $\vec{u} + \vec{v}$
2. $\vec{u} - \vec{v}$
3. $3\vec{u}$
4. $2\vec{v} + 3\vec{w}$
5. $|\vec{u}|_1$
6. $\|\vec{u}\|$

##### 解
$$
\begin{align}
&1. \quad \vec{u} + \vec{v} = \begin{pmatrix}1+3\\2+5\\-2+7\end{pmatrix} = \begin{pmatrix}4\\7\\5\end{pmatrix} \\
&2. \quad \vec{u} - \vec{v} = \begin{pmatrix}1-3\\2-5\\-2-7\end{pmatrix} = \begin{pmatrix}-2\\-3\\-9\end{pmatrix} \\
&3. \quad 3\vec{u} = \begin{pmatrix}3\times{1}\\3\times{2}\\3\times(-2)\end{pmatrix} = \begin{pmatrix}3\\6\\-6\end{pmatrix} \\
&4. \quad 2\vec{v} + 3\vec{w} = \begin{pmatrix}2\times{3} + 3\times{1} \\ 2\times{5} + 3\times(-1) \\ 2\times{7} + 3\times{2}\end{pmatrix} = \begin{pmatrix}9\\7\\20\end{pmatrix} \\
&5. \quad |\vec{u}|_1 = |1| + |2| + |-2| = 5 \\
&6. \quad \|\vec{u}\| = \sqrt{1^2 + 2^2 + (-2)^2} = 3 \\
\end{align}
$$


```julia
# ベクトル u, v, w
u = [1, 2, -2]; display(u)
v = [3, 5, 7]; display(v)
w = [1, -1, 2]; display(w)
```


    3-element Vector{Int64}:
      1
      2
     -2



    3-element Vector{Int64}:
     3
     5
     7



    3-element Vector{Int64}:
      1
     -1
      2



```julia
u + v # => [4, 7, 5]
```




    3-element Vector{Int64}:
     4
     7
     5




```julia
u - v # => [-2, -3, -9]
```




    3-element Vector{Int64}:
     -2
     -3
     -9




```julia
3u # => [3, 6, -6]
```




    3-element Vector{Int64}:
      3
      6
     -6




```julia
2v + 3w # => [6, 10, 14] + [3, -3, 6] = [9, 7, 20]
```




    3-element Vector{Int64}:
      9
      7
     20




```julia
# L1ノルム: 各成分の絶対値を計算し、合計を算出
## Juliaでベクトルの各成分に対して関数適用する際は dot 演算子を用いる
abs.(u) |> sum
```




    5




```julia
# L2ノルム: 各成分の2乗を計算し、合計の平方根を算出
u.^2 |> sum |> sqrt
```




    3.0




```julia
# L2ノルム: LinearAlgebra.norm 関数でも算出可能
using LinearAlgebra

norm(u)
```




    3.0



### ベクトルの内積
ベクトル $\vec{u} = (u_1, \dots, u_d)^T$, $\vec{v} = (v_1, \dots, v_d)^T$ の **内積** は以下のように定義される

$$
\vec{u}\cdot{\vec{v}} = \vec{u}^T \vec{v} = u_1 v_1 + u_2 v_2 + \dots + u_d v_d
$$

ここで、内積はベクトルではなくスカラー値になることに注意

内積には次の性質がある

$$
\begin{align}
\vec{0}^T\vec{u} &= 0 \\
\vec{u}^T\vec{v} &= \vec{v}^T\vec{u} \\
(\vec{u} + \vec{v})^T\vec{w} &= \vec{u}^T\vec{w} + \vec{v}^T\vec{w} \\
(k\vec{u})^T\vec{v} &= k(\vec{u}^T\vec{v}) \\
\vec{v}^T\vec{v} &= \|\vec{v}\|^2
\end{align}
$$

#### 演習
$$
\begin{align}
&1. \quad \vec{u} = \begin{pmatrix}1\\3\\5\end{pmatrix},\ \vec{v} = \begin{pmatrix}2\\-1\\1\end{pmatrix}\ のとき、\vec{u}^T\vec{v}を求めよ \\
\\
&2. \quad \vec{u}, \vec{v} \in \mathbb{R}^d について、次の式が成り立つことを証明せよ \\
& \quad\quad \|\vec{u} + \vec{v}\|^2 + \|\vec{u} - \vec{v}\|^2 = 2(\|\vec{u}\|^2 + \|\vec{v}\|^2)
\end{align}
$$

##### 解



```julia
u = [1, 3, 5]
v = [2, -1, 1]

# 内積 u^T*v
## 内積演算子は \cdot <tabキー> で記述可能（REPL環境の場合）
u ⋅ v
```




    4




```julia
# 内積は転置ベクトルとベクトルの積でも表される
u' * v
```




    4




```julia
# 記号処理パッケージ
using SymPy

# シンボル U, V を定義
@vars U
@vars V

# ベクトルの和同士の内積 + 差同士の内積
(U + V)^2 + (U - V)^2 |> simplify
```




$\begin{equation*}2 U^{2} + 2 V^{2}\end{equation*}$





```julia
# 実数ベクトル u, v で確認
## (u + v)^2 + (u - v)^2
(u + v) ⋅ (u + v) + (u - v) ⋅ (u - v) |> println # => 82

## 2(|u|^2 + |v|^2)
2(u⋅u + v⋅v) |> println # => 82
```

    82
    82



```julia

```

224043f3c3703d1c43509450bedbc26767086d05
ipynb
Jupyter Notebook
02_machine-learning/01-01_vector.ipynb
amenoyoya/julia_ml-tuto
9c0be0923ea00ca4d1d51c0c6f61f6f2748232be
MIT
02_machine-learning/01-01_vector.ipynb
amenoyoya/julia_ml-tuto
9c0be0923ea00ca4d1d51c0c6f61f6f2748232be
MIT
02_machine-learning/01-01_vector.ipynb
amenoyoya/julia_ml-tuto
9c0be0923ea00ca4d1d51c0c6f61f6f2748232be
MIT
Qwen/Qwen-72B
1. YES
2. YES