이번 강의에서는 수치해석에서 발생하는 주요 오차의 종류와 오차를 정량적으로 표현하는 방법,
컴퓨터의 숫자 표현 방식, Taylor Series를 이용한 Truncation Error 분석, 그리고 Numerical Differentiation의 Forward / Backward / Centered Difference를 다룬다.
1. 수치해석에서 왜 오차가 발생하는가?
공학 문제에서는 해석적인 방법으로 정확한 해를 구할 수 없는 경우가 많다. 따라서 Numerical Method를 사용하여 실제 해에 가까운 근사값(Approximation)을 구한다.
| 오차 | 원인 | 핵심 |
|---|---|---|
| Roundoff Error | 컴퓨터의 유한한 숫자 표현 | 컴퓨터 표현의 한계 |
| Truncation Error | 수학적 절차를 근사식으로 대체 | 수학적 근사의 한계 |
Numerical Error = Roundoff Error + Truncation Error
2. Significant Figures — 유효숫자
유효숫자(Significant Figures)는 숫자에서 우리가 신뢰할 수 있는 자릿수를 의미한다.
예제
5.38 × 10⁴→ 유효숫자 3개5.380 × 10⁴→ 유효숫자 4개5.3800 × 10⁴→ 유효숫자 5개
예를 들어 0.00001753의 앞쪽 0들은 단순히 소수점의 위치를 나타내므로 유효숫자는 4개이다.
컴퓨터는 유한한 자릿수로 숫자를 표현하기 때문에 π, e, √7과 같은 무리수를 정확하게 표현할 수 없다.
3. Accuracy vs Precision
| 개념 | 의미 |
|---|---|
| Accuracy | 실제 True Value에 얼마나 가까운가? |
| Precision | 반복 측정값들이 서로 얼마나 가까운가? |
따라서 Accuracy와 Precision은 서로 다른 개념이다.
- Inaccurate & Imprecise
- Accurate & Imprecise
- Inaccurate & Precise
- Accurate & Precise
4. Error의 기본 정의
True Value = Approximation + Error
| True Value | 실제 정확한 값 |
| Approximation | 실제 값을 대신하는 근사값 |
| Error | 둘 사이의 차이 |
True Error
Et = True Value − Approximation
True Relative Error
εt = (True Value − Approximation) / True Value
True Percent Relative Error
εt = |True Error / True Value| × 100%
절대오차와 상대오차
| 참값 | 측정값 | 절대오차 | 상대오차 |
|---|---|---|---|
| 10,000 cm | 9,999 cm | 1 cm | 0.01% |
| 10 cm | 9 cm | 1 cm | 10% |
같은 1 cm의 오차라도 상대오차는 크게 달라질 수 있다.
5. Approximation Error
실제 수치해석 문제에서는 True Value를 미리 알 수 없는 경우가 많다. 따라서 반복 계산에서는 이전 근사값과 현재 근사값의 차이를 이용한다.

Stopping Criterion
반복 계산은 다음 조건을 만족하면 종료한다. (충분히 수렴했다라고 봄)
εa < εs
여기서 εs는 미리 지정한 허용오차(Tolerance)이다.
유효숫자와 허용오차
εs = 0.5 × 102−n %
예를 들어 최소 3개의 유효숫자를 원한다면:
εs = 0.05%
따라서 εa < 0.05%가 될 때까지 반복한다.
6. Roundoff Error
Roundoff Error는 컴퓨터가 숫자를 제한된 자릿수로 표현하기 때문에 발생한다.
컴퓨터의 숫자 표현
- Bit → 0 또는 1
- Byte → 8 bits
- Word → 컴퓨터 구조에 따라 다르며 32-bit, 64-bit 등이 사용됨
컴퓨터는 일반적으로 2진수(Binary)를 사용하기 때문에 10진수의 일부 숫자를 정확하게 표현할 수 없다.
7. Floating Point Representation
실수는 일반적으로 Floating Point 형태로 표현한다.
m × be
- m : Mantissa / Significand
- b : Base
- e : Exponent
예를 들어:
0.0294 × 10⁰ → 0.2941 × 10⁻¹
정규화(Normalization)를 통해 유효숫자를 더 효율적으로 사용할 수 있다.
8. Python Floating Point
Python의 float가 64-bit double precision을 사용
- 표현 범위: 약 10⁻³⁰⁸ ~ 10³⁰⁸
- 정밀도: 약 15~16 decimal digits
- Machine Epsilon: 약 2.22 × 10⁻¹⁶
Overflow / Underflow
| Overflow | 표현 가능한 범위를 초과하는 매우 큰 값 |
| Underflow | 표현하기 어려운 매우 작은 값 |
9. Roundoff Error가 커지는 경우
① 많은 계산
수많은 연산을 수행하면 작은 roundoff error가 누적될 수 있다.
② 큰 수 + 작은 수
예:
4000 + 0.0000001
큰 수에 맞춰 작은 수의 자릿수가 손실될 수 있다.
③ Subtractive Cancellation
수학적으로
x + 10⁻²⁰ − x = 10⁻²⁰
이지만 컴퓨터의 유한 정밀도로 인해 특정 상황에서는 0으로 계산될 수 있다.
④ Inner Product
Σ xᵢyᵢ와 같이 많은 곱셈과 덧셈이 필요한 계산은 계산량이 증가할수록 Roundoff Error에 취약해진다.
10. Truncation Error
미분을 근사해서 계산 하다 발생하는 오차 -> Truncation Error
Truncation Error는 정확한 수학적 절차를 근사식으로 대체할 때 발생한다.
예: 미분의 근사
정확한 미분:
dv/dt
근사:
dv/dt ≈ [v(tᵢ₊₁) − v(tᵢ)] / [tᵢ₊₁ − tᵢ]
이처럼 미분을 유한차분으로 근사하면 Truncation Error가 발생한다.
10 - 1 . Taylor Series
Taylor Series는 Truncation Error를 분석하는 핵심 도구이다.
f(xᵢ₊₁)
=
f(xᵢ)
+ f′(xᵢ)h
+ f″(xᵢ)h²/2!
+ f‴(xᵢ)h³/3!
+ ...
+ Rₙ
여기서
h = xᵢ₊₁ − xᵢ
Remainder:
Rₙ = f⁽ⁿ⁺¹⁾(ξ)hⁿ⁺¹/(n+1)!
Taylor Approximation의 차수
- 0차 →
f(xᵢ₊₁) ≈ f(xᵢ) - 1차 →
f(xᵢ₊₁) ≈ f(xᵢ) + f′(xᵢ)h - 2차 →
f(xᵢ₊₁) ≈ f(xᵢ) + f′(xᵢ)h + f″(xᵢ)h²/2
즉, Taylor Series를 이용하면 무한히 많은 항이 나오게 되는데 이때 중간에서 잘라버리게(truncate) 됨
때문에 버린 항 때문에 생기는 오차가 Truncation Error이다.
11. Numerical Differentiation
컴퓨터는 미분을 직접 계산하는 대신 주변의 함수값을 이용해서 미분을 근사
① Forward Difference
앞쪽 점(xᵢ₊₁)을 사용하여 기울기를 계산
f′(xᵢ) ≈ [f(xᵢ₊₁) − f(xᵢ)] / h
와 xᵢ₊₁ 을 연결한 구간의 기울기를 사용하기 때문에 정확한 미분과 차이가 생김
오차의 크기 : Truncation Error = O(h)
② Backward Difference
뒤쪽 점(xᵢ-₁)을 사용하여 기울기를 계산
f′(xᵢ) ≈ [f(xᵢ) − f(xᵢ₋₁)] / h
마찬가지로 와 xᵢ-₁ 을 연결한 구간의 기울기를 사용하기 때문에 정확한 미분과 차이가 생김
오차의 크기 : Truncation Error = O(h)
③ Centered Difference
앞과 뒤를 동시에 사용하여 기울기를 구함 때문에 오른쪽 항과 왼쪽 항을 빼면 짝수항이 사라짐
f′(xᵢ) ≈ [f(xᵢ₊₁) − f(xᵢ₋₁)] / 2h
오차의 크기 : Truncation Error = O(h²) <- 오차가 대략 1/4로 줄어듬!
| 방법 | 공식 | 오차 |
|---|---|---|
| Forward | (fᵢ₊₁ − fᵢ)/h | O(h) |
| Backward | (fᵢ − fᵢ₋₁)/h | O(h) |
| Centered | (fᵢ₊₁ − fᵢ₋₁)/2h | O(h²) |
12. Second Derivative
Forward
f″(xᵢ) ≈ [fᵢ₊₂ − 2fᵢ₊₁ + fᵢ] / h²
Error = O(h)
Backward
f″(xᵢ) ≈ [fᵢ − 2fᵢ₋₁ + fᵢ₋₂] / h²
Error = O(h)
Centered
f″(xᵢ) ≈ [fᵢ₊₁ − 2fᵢ + fᵢ₋₁] / h²
Error = O(h²)
13. Total Numerical Error ⭐
Total Error = Roundoff Error + Truncation Error
여기서 중요한 점은 두 오차를 줄이는 방법이 서로 반대라는 것이다.
Step Size h를 작게 하면?
h ↓ → Truncation Error ↓
하지만 계산 횟수가 증가하고 subtractive cancellation 가능성이 커질 수 있기 때문에
h ↓ → Roundoff Error ↑
가 될 수 있다.
한 종류의 오차를 줄이려는 과정에서 다른 종류의 오차가 증가할 수 있기 때문에 무조건 step size를 작게 만드는 것이 최선은 아니다.
14. Centered Difference의 Total Error
Centered Difference의 경우 강의에서는 전체 오차의 상한을 다음과 같이 제시한다.
Total Error ≲ ε/h + (M/6)h²
| ε/h | Roundoff Error |
| (M/6)h² | Truncation Error |
따라서 전체적인 관계는
Total Error ≈ Roundoff Error + Truncation Error
15. 한 줄 정리
① Numerical Error
Roundoff + Truncation
② True Error
Eₜ = True − Approximation
③ Approximate Error
εₐ = |New − Old| / |New| × 100%
④ Stopping Criterion
εₐ < εₛ
⑤ Forward Difference
O(h)
⑥ Backward Difference
O(h)
⑦ Centered Difference
O(h²)
⑧ Step Size
h ↓ → Truncation ↓ but Roundoff ↑
댓글