数値計算とは?ベクトル・行列・数列・掃出法・誤差を応用情報向けに理解しよう
はじめに
コンピュータでは、
- 大量の連立方程式を解く
- データを行列として処理する
- 将来の値を数式から計算する
- 正確な答えが難しい問題の近似値を求める
など、さまざまな数値計算が行われています。
**数値計算(Numerical Computation)**とは、
数値を使って数学的な問題をコンピュータで計算するための考え方や方法
です。
応用情報技術者試験では、
スカラー
↓
ベクトル
↓
行列
↓
連立一次方程式
数列・対数・三角関数
近似解
↓
収束
↓
誤差
といった内容を理解しておくことが重要です。
この記事では、応用情報の数値計算で押さえておきたい内容を順番に見ていきます。
1. 数値計算とは
数値計算とは、数学的な問題を具体的な数値を使って計算することです。
例えば、
2x + y = 5
x - y = 1
という連立方程式があります。
人間なら式を変形して解くこともできますが、方程式が数百、数千と増えると非常に大変です。
そこでコンピュータを使って効率的に計算します。
数値計算では、
- ベクトル
- 行列
- 連立一次方程式
- 数列
- 近似計算
などが重要になります。
🍯 はちみつメモ
数値計算 = 数学の問題を具体的な数値として計算する
2. 線形代数とは
**線形代数(Linear Algebra)**とは、
ベクトルや行列などを扱う数学の分野
です。
例えば連立一次方程式、
2x + y = 5
x + 3y = 7
は、行列を使うと、
[ 2 1 ] [ x ] [ 5 ]
[ 1 3 ] [ y ] = [ 7 ]
のように表せます。
大量のデータをまとめて計算できるため、
- コンピュータグラフィックス
- AI・機械学習
- 統計
- シミュレーション
などでも線形代数が利用されています。
3. スカラー
**スカラー(Scalar)**とは、
大きさだけを持つ一つの数値
です。
例えば、
5
-3
10.5
などです。
身近な例なら、
気温 = 25℃
質量 = 10kg
など、一つの値として表せるものがあります。
4. ベクトル
**ベクトル(Vector)**とは、
複数の数値をまとめて表したもの
です。
例えば、
v =
[ 2 ]
[ 3 ]
のように表します。
数学では大きさと向きを持つ量として扱われます。
例えば平面上で、
右に2
上に3
進む移動を、
(2, 3)
というベクトルで表せます。
5. スカラーとベクトルの違い
整理すると、
| 種類 | イメージ |
|---|---|
| スカラー | 1つの値 |
| ベクトル | 複数の値を並べたもの |
例えば、
5
はスカラーです。
一方、
(2, 3)
はベクトルです。
🍯 はちみつメモ
スカラー = 1つの値
ベクトル = 複数の値をまとめたもの
6. ベクトルの演算
ベクトル同士は足し算できます。
例えば、
a = (1, 2)
b = (3, 4)
なら、
a + b
=
(1+3, 2+4)
=
(4, 6)
です。
また、スカラーを掛けることもできます。
2 × (1, 3)
=
(2, 6)
となります。
7. テンソル
**テンソル(Tensor)**は、スカラーやベクトル、行列をさらに一般化した考え方です。
イメージとしては、
スカラー
↓
1つの値
ベクトル
↓
1次元に並んだ値
行列
↓
2次元に並んだ値
テンソル
↓
さらに多次元に並んだ値
と考えると分かりやすいでしょう。
例えば画像データでは、
高さ × 幅 × RGB
のような多次元データを扱います。
AI・機械学習でもテンソルという言葉がよく登場します。
8. 行列
**行列(Matrix)**とは、
数値を縦と横に並べたもの
です。
例えば、
A =
[ 1 2 ]
[ 3 4 ]
のように表します。
横方向を行(Row)、縦方向を**列(Column)**と呼びます。
この行列は、
2行2列
の行列です。
9. 行列の加算・減算
同じ大きさの行列なら、対応する要素同士を計算します。
例えば、
A =
[ 1 2 ]
[ 3 4 ]
B =
[ 5 6 ]
[ 7 8 ]
なら、
A + B
=
[ 6 8 ]
[ 10 12 ]
です。
10. 行列の乗算
行列の掛け算は、単純に同じ位置の数を掛けるわけではありません。
例えば、
A =
[ 1 2 ]
[ 3 4 ]
B =
[ 5 6 ]
[ 7 8 ]
なら、
AB =
[ 1×5+2×7 1×6+2×8 ]
[ 3×5+4×7 3×6+4×8 ]
となり、
AB =
[ 19 22 ]
[ 43 50 ]
です。
行列の積が計算できるためには、
左側の行列の列数 = 右側の行列の行数
である必要があります。
11. 行列の掛け算では順番が重要
普通の数では、
2 × 3
=
3 × 2
です。
しかし行列では一般に、
AB ≠ BA
です。
場合によっては、
AB
は計算できても、
BA
は計算できないこともあります。
🍯 はちみつメモ
行列の掛け算は順番を入れ替えられない
12. 単位行列
**単位行列(Identity Matrix)**とは、
普通の掛け算における「1」のような役割を持つ行列
です。
例えば2行2列なら、
I =
[ 1 0 ]
[ 0 1 ]
です。
行列Aに対して、
AI = IA = A
となります。
13. 逆行列
普通の数では、
5 × 1/5 = 1
となります。
行列でも似た考え方があります。
行列Aに対して、
AA⁻¹ = A⁻¹A = I
となるA⁻¹を**逆行列(Inverse Matrix)**と呼びます。
逆行列は、連立一次方程式を解く考え方にも利用できます。
ただし、すべての正方行列に逆行列が存在するわけではありません。
14. 転置行列
**転置行列(Transpose Matrix)**とは、
行と列を入れ替えた行列
です。
例えば、
A =
[ 1 2 3 ]
[ 4 5 6 ]
なら、転置行列は、
Aᵀ =
[ 1 4 ]
[ 2 5 ]
[ 3 6 ]
です。
つまり、
行
↕
列
を入れ替えます。
15. 固有値と固有ベクトル
行列Aにベクトルvを掛けたとき、
Av = λv
となる場合があります。
このとき、
v
=
固有ベクトル
λ
=
固有値
と呼びます。
これは、
行列による変換を受けても、向きが変わらず、大きさだけがλ倍になる特別なベクトル
と考えると分かりやすいでしょう。
例えば、
A =
[ 2 0 ]
[ 0 3 ]
に、
v =
[ 1 ]
[ 0 ]
を掛けると、
Av =
[ 2 ]
[ 0 ]
=
2v
です。
したがって、この場合、
固有値 = 2
です。
16. 連立一次方程式と行列
例えば、
2x + y = 5
x + 3y = 7
という連立一次方程式は、
Ax = b
という形で表せます。
具体的には、
[ 2 1 ] [ x ] [ 5 ]
[ 1 3 ] [ y ] = [ 7 ]
です。
行列を使うことで、複数の方程式をまとめて扱えるようになります。
17. 掃出法
連立一次方程式を解く代表的な方法の一つが掃出法です。
ガウスの消去法などとも関係する方法で、行列に対して基本的な行操作を行い、徐々に解きやすい形へ変形していきます。
例えば、
x + y = 5
x - y = 1
があるとします。
2つの式を引くと、
2y = 4
なので、
y = 2
です。
これを、
x + y = 5
に代入すると、
x = 3
です。
したがって、
x = 3
y = 2
となります。
掃出法では、このような消去の考え方を行列に対して体系的に行います。
18. 数列
**数列(Sequence)**とは、
ある規則に従って数を並べたもの
です。
例えば、
1, 2, 3, 4, 5, ...
も数列です。
応用情報では、
- 等差数列
- 等比数列
- フィボナッチ数列
などを押さえておきましょう。
19. 等差数列
**等差数列(Arithmetic Sequence)**とは、
隣り合う数の差が一定の数列
です。
例えば、
2, 5, 8, 11, 14, ...
では、
+3
ずつ増えています。
この3を公差と呼びます。
初項をa、公差をdとすると、第n項は、
aₙ = a + (n-1)d
です。
20. 等差数列の和
等差数列の初項から第n項までの和は、
Sₙ
=
n(a₁ + aₙ) / 2
で求められます。
例えば、
1 + 2 + 3 + 4 + 5
なら、
5 × (1 + 5) / 2
=
15
です。
21. 等比数列
**等比数列(Geometric Sequence)**とは、
隣り合う数の比が一定の数列
です。
例えば、
2, 6, 18, 54, ...
なら、
×3
ずつ増えています。
この3を公比と呼びます。
初項をa、公比をrとすると、
aₙ
=
ar^(n-1)
です。
22. 等比数列の和
初項a、公比rの等比数列について、r ≠ 1なら、
Sₙ
=
a(1-r^n) / (1-r)
で求められます。
例えば、
1 + 2 + 4 + 8
なら、
a = 1
r = 2
n = 4
なので、
S₄
=
1 × (1-2⁴)/(1-2)
=
15
です。
23. フィボナッチ数列
**フィボナッチ数列(Fibonacci Sequence)**とは、
直前の2つの数を足して次の数を作る数列
です。
代表的には、
0, 1, 1, 2, 3, 5, 8, 13, ...
と続きます。
つまり、
Fₙ
=
Fₙ₋₁ + Fₙ₋₂
という関係です。
フィボナッチ数列は、再帰処理やアルゴリズムの問題でも登場することがあります。
24. 対数
**対数(Logarithm)**とは、
何乗したらその数になるか
を表す考え方です。
例えば、
2³ = 8
なので、
log₂8 = 3
です。
つまり、
2を何乗すると8?
↓
3
という意味です。
25. 対数の基本
a^x = b
なら、
logₐb = x
です。
対数には、
logₐ(xy)
=
logₐx + logₐy
logₐ(x/y)
=
logₐx - logₐy
logₐ(x^n)
=
n logₐx
などの性質があります。
情報理論で登場した自己情報量、
I = -log₂p
にも対数が使われています。
26. 三角関数
応用情報の数値計算では三角関数も用語例に含まれます。
代表的なのが、
sin
cos
tan
です。
直角三角形では、
sinθ = 対辺 / 斜辺
cosθ = 隣辺 / 斜辺
tanθ = 対辺 / 隣辺
という関係があります。
コンピュータグラフィックスや座標変換などでも利用されます。
27. 厳密解と近似解
数学的に正確な答えを求められる場合、その答えを厳密解と呼びます。
しかし、問題によっては正確な解を簡単に求められないことがあります。
そこで、
十分に正しいと考えられる値
を計算によって求めます。
これが近似解です。
例えば、
√2
=
1.41421356...
という値を、
1.414
として扱うことも近似の一例です。
28. 近似解法
近似解法とは、
正確な解を直接求めるのではなく、計算を繰り返しながら解に近い値を求める方法
です。
イメージとしては、
最初の予想
↓
1.0
計算
↓
1.4
さらに計算
↓
1.414
さらに計算
↓
1.4142
...
のように、少しずつ正しい値に近づけていきます。
29. 収束
近似計算を繰り返した結果、値がある一定の値に近づいていくことを**収束(Convergence)**と呼びます。
例えば、
1
1.4
1.41
1.414
1.4142
...
と続き、
√2
に近づいていくなら、
√2に収束する
と表現できます。
反対に、値が一定の値へ近づかない場合は発散するといいます。
30. 誤差
コンピュータによる数値計算では、計算結果が正確な値と完全に一致しないことがあります。
この差を**誤差(Error)**と呼びます。
例えば、
真の値
=
3.141592...
近似値
=
3.14
なら、その間には誤差があります。
誤差は数値計算・数値解析において非常に重要です。
31. 絶対誤差
**絶対誤差(Absolute Error)**とは、
真の値と近似値の差の絶対値
です。
絶対誤差
=
|真の値 - 近似値|
例えば、
真の値 = 100
近似値 = 98
なら、
|100 - 98|
=
2
です。
32. 相対誤差
絶対誤差が同じでも、元の値の大きさによって誤差の重要性は変わります。
例えば、
100に対する誤差2
と、
10,000に対する誤差2
では意味が違います。
そこで使われるのが**相対誤差(Relative Error)**です。
一般的には、
相対誤差
=
絶対誤差 / |真の値|
で考えます。
例えば、
真の値 = 100
近似値 = 98
なら、
絶対誤差 = 2
相対誤差
=
2 / 100
=
0.02
なので、
2%
です。
33. 丸め誤差
コンピュータでは扱える桁数に限界があります。
例えば、
1 / 3
=
0.333333333...
を、
0.3333
として扱ったとします。
このように、
有限の桁数に丸めることで発生する誤差
を**丸め誤差(Rounding Error)**と呼びます。
34. 打切り誤差
本来なら無限に計算を続ける必要がある処理を、途中で打ち切ることで発生する誤差を**打切り誤差(Truncation Error)**と呼びます。
例えば、
1
+ 1/2
+ 1/4
+ 1/8
+ ...
のように無限に続く計算を、
1
+ 1/2
+ 1/4
までで終了すれば、本来の値との差が発生します。
これが打切り誤差です。
35. 数値計算と数値解析
応用情報では、
- 数値計算
- 数値解析
が分けて整理されています。
数値計算
主に、
線形代数
ベクトル
行列
固有値・固有ベクトル
数列
対数
三角関数
掃出法
近似解法
収束
誤差
などを扱います。
数値解析
さらに、
二分法
補間法
オイラー法
数値積分
シンプソン法
ニュートン法
絶対誤差
相対誤差
丸め誤差
打切り誤差
など、コンピュータで近似解を求める具体的な方法を扱います。
この記事では数値計算を中心に、つながりを理解するために誤差についても扱っています。
36. 数値計算の全体像
今回の内容を整理すると、
数値計算
│
├─ 線形代数
│ ├─ スカラー
│ ├─ ベクトル
│ ├─ テンソル
│ ├─ 行列
│ ├─ 単位行列
│ ├─ 逆行列
│ ├─ 転置行列
│ └─ 固有値・固有ベクトル
│
├─ 連立一次方程式
│ └─ 掃出法
│
├─ 数列
│ ├─ 等差数列
│ ├─ 等比数列
│ └─ フィボナッチ数列
│
├─ 数学的な計算
│ ├─ 対数
│ └─ 三角関数
│
└─ 近似計算
├─ 近似解
├─ 収束
└─ 誤差
という形で考えると分かりやすいでしょう。
37. 応用情報で押さえたいポイント
スカラー・ベクトル・行列
スカラー
=
1つの値
ベクトル
=
複数の値を並べたもの
行列
=
値を縦横に並べたもの
行列の積
左の行列の列数
=
右の行列の行数
のとき計算できます。
また、
AB ≠ BA
となるのが一般的です。
単位行列
AI = IA = A
となる行列です。
逆行列
AA⁻¹
=
A⁻¹A
=
I
となります。
固有値・固有ベクトル
Av = λv
なら、
λ = 固有値
v = 固有ベクトル
です。
等差数列
aₙ
=
a + (n-1)d
等比数列
aₙ
=
ar^(n-1)
フィボナッチ数列
Fₙ
=
Fₙ₋₁ + Fₙ₋₂
対数
a^x = b
なら、
logₐb = x
です。
収束
計算を繰り返す
↓
ある値へ近づく
↓
収束
です。
誤差
真の値
↕
近似値
このズレ
↓
誤差
です。
さらに数値解析では、
絶対誤差
相対誤差
丸め誤差
打切り誤差
の違いも重要になります。
まとめ
今回は応用情報技術者試験で扱われる数値計算について学びました。
この記事で覚えること
- 数値計算は数学的な問題を具体的な数値として計算する
- 線形代数ではベクトルや行列を扱う
- スカラーは一つの値
- ベクトルは複数の値をまとめたもの
- テンソルはスカラー・ベクトル・行列を一般化した考え方
- 行列は数値を縦横に並べたもの
- 行列の積では順番が重要
- 単位行列は通常の数における1のような役割を持つ
- 逆行列は掛けると単位行列になる
- 転置行列は行と列を入れ替えたもの
- 固有値・固有ベクトルは
Av = λvの関係を満たす - 掃出法は連立一次方程式を解く代表的な方法
- 等差数列は差が一定
- 等比数列は比が一定
- フィボナッチ数列は直前の2項を足して次の項を作る
- 対数は「何乗したらその値になるか」を表す
- 近似解法では正確な値に近い値を計算する
- ある値へ近づくことを収束という
- 数値計算では誤差が発生する
- 数値解析では絶対誤差・相対誤差・丸め誤差・打切り誤差などを扱う
🍯 はちみつメモ
応用情報の数値計算は「行列だけ」ではありません。
ベクトル・行列 → 連立方程式 → 数列・対数 → 近似解・収束・誤差
という全体像を持っておくと、それぞれの用語がつながって見えてきます。