Week 1

Introduction to
Numerical Analysis

수치해석이란 무엇이며, 왜 공학에서 필수적인가

Motivation

Why Study Numerical Analysis?

A Mechanical Engineer's Power

“Everybody should learn to program a computer, because it teaches you how to think.”

— Steve Jobs, 1995

수치해석은 복잡한 문제를 풀기 위한 알고리즘을 설계하고 구현하는 과정입니다. 이 과정은 다음과 같은 사고 능력을 키워줍니다:

Decompose

복잡한 문제를 더 단순한 단계로 분해합니다.

Develop

논리적 알고리즘을 개발하고 오류를 효과적으로 디버깅합니다.

Convert

수학적 개념을 코드로 변환하고 결과를 분석합니다.

Explore

다양한 수치 방법을 탐색하여 최적의 해를 찾습니다.

The Problem

Most real-world engineering problems are too complex to be solved with pen-and-paper mathematics. Think about the airflow over a race car, the heat distribution in a processor, or the vibrations in a bridge. Exact equations are often impossible to find.

The Solution

Numerical analysis gives us the tools to solve these complex problems using computers. It's about finding powerful, practical approximations that are accurate enough to design and build the future.

Solve the Unsolvable

복잡한 형상, 비선형 재료, 난류 유동 — 해석해가 없는 문제를 풉니다. 교과서 예제에서 산업 수준의 도전으로 나아갑니다.

Virtual Designer & Tester

FEA로 부품의 강도를 가상 테스트하고, CFD로 유동을 시뮬레이션합니다. 물리적 프로토타입 없이 설계를 검증합니다.

Optimize Everything

하중을 견디면서 가장 가벼운 부품? 가장 공기역학적인 형상? 수치 방법이 최적 설계의 엔진입니다.

Make Sense of Data

실험 데이터에 곡선을 적합하여 예측 모델을 만들고, 노이즈가 있는 실제 측정 데이터를 처리합니다.

From the Textbook

“Numerical methods greatly expand the types of problems you can address. They are capable of handling large systems of equations, nonlinearities, and complicated geometries that are often impossible to solve analytically with standard calculus. As such, they greatly enhance your problem-solving skills.”

— Chapra, Applied Numerical Methods with MATLAB

Two Approaches

해석적 방법 vs 수치적 방법

같은 문제를 두 가지 방법으로 풀어봅니다 — 좌우를 비교하며 차이를 느껴보세요

동역학

번지점퍼 자유낙하

dv/dt = g − (c_d/m)v²
해석적 방법변수분리 → tanh 해 (정확)
024681012t (s)

v(t) = 51.7·tanh(0.1898·t), 종단속도 = 51.7 m/s

수치적 방법Euler Method Δt=2s (근사)
024681012t (s)

Euler (Δt=2s) — 큰 step size에서 오차가 보입니다. 해석해(점선)와 비교하세요.

💡

해석해는 단순 1D이므로 가능하지만, 3D 형상·바람·탄성 로프가 추가되면 수치해만 가능합니다.

열전달

1D 정상상태 열전도

d²T/dx² = 0
해석적 방법적분 → 직선 온도분포 (정확)
20416384105x / LT (°C)

정상상태 1D 열전도 → 온도가 직선 분포 (해석해: T(x) = T₁ + (T₂−T₁)·x/L)

수치적 방법Gauss-Seidel 반복법 (근사)
20416384105x / LT (°C)

Gauss-Seidel 3회 반복 — 반복 횟수를 늘려 해석해(점선)에 수렴하는 과정을 확인하세요

💡

1D 균일 물성치는 해석해 가능. 2D/3D 복잡 형상이나 온도 의존 물성치에서는 수치해 필수.

진동

감쇠 자유진동 (1-DOF)

mẍ + cẋ + kx = 0
해석적 방법특성방정식 → 지수·삼각함수 (정확)
01234t (s)x

감쇠 자유진동: x(t) = e^{-ζωt}cos(ω_d·t), ω_d = 4.90 rad/s

수치적 방법Euler Method Δt=0.02s (근사)
01234t (s)x

Euler Method (Δt=0.02s) — 감쇠비를 높여보세요. 점선은 해석해.

💡

선형 1자유도는 해석해 존재. 다자유도·비선형 감쇠·외력이 추가되면 수치적분 필요.

유체역학

원관 층류 유동 (Poiseuille)

d²u/dr² + (1/r)du/dr = (1/μ)dp/dx
해석적 방법적분 → 포물선 속도분포 (정확)
u (m/s)r

Hagen-Poiseuille: u(r) = (R²−r²)/(4μ)·(−dp/dx), u_max = 2500.0 m/s

수치적 방법유한차분 반복법 (근사)
u (m/s)r

유한차분법 5회 반복 — 반복 횟수를 늘려 포물선(점선)에 수렴시켜 보세요

💡

완전발달 층류는 해석해 가능. 난류, 입구 영역, 복잡 단면에서는 CFD(수치해) 필수.

고체역학

외팔보 처짐

EI · d²y/dx² = M(x)
해석적 방법이중적분 → 3차 곡선 (정확)
Px (m)y (m)

외팔보: y(x) = Px²(3L−x)/(6EI), 끝단 처짐 = 2.67 mm

수치적 방법유한차분법 FDM (근사)
Px (m)y (m)

유한차분 (6격자) — 격자를 늘려 해석해(점선)와 비교해보세요

💡

단순 하중·균일 단면은 해석해 가능. 복잡 하중·가변 단면·비선형 재료에서는 FEM(수치해) 필수.

핵심 요약

해석적 방법

정확하지만 단순한 문제에서만 가능

수치적 방법

근사이지만 거의 모든 문제에 적용 가능

이 수업에서

해석해로 검증하며 수치해를 배웁니다

Process

수치해석 5단계 프로세스

모든 수치해석 문제는 이 다섯 단계를 따릅니다

1

Problem

물리적 문제 정의

번지점퍼가 다리에서 뛰어내립니다. 시간에 따른 속도를 알고 싶습니다.

1.질량 m = 68.1 kg
2.항력계수 cd = 0.25 kg/m
3.초기 속도 v(0) = 0
4.궁금한 것: v(t) = ?
2

Model

수학적 모델 수립

뉴턴 제2법칙을 적용하여 속도 변화를 수식으로 표현합니다.

1.F = ma → mg − cd·v² = m·(dv/dt)
2.정리: dv/dt = g − (cd/m)·v²
3.의미: 속도의 변화율 = 중력 − 공기저항
4.초기조건: v(0) = 0 (정지 상태에서 출발)
3

Approximate

미분을 유한차분으로 근사

수치해석의 가장 핵심적인 아이디어입니다. 미분(dv/dt)을 유한한 차분(Δv/Δt)으로 바꿉니다.

미적분에서 배운 미분의 정의

dvdt=limΔt0ΔvΔt\textcolor{#e2e8f0}{\frac{dv}{dt} = \lim_{\Delta t \to 0} \frac{\Delta v}{\Delta t}}

미분은 Δt를 무한히 작게 만든 극한입니다. 하지만 컴퓨터는 무한히 작은 값을 다룰 수 없죠.

수치해석의 핵심 아이디어

dvdtΔvΔt\textcolor{#e2e8f0}{\frac{dv}{dt} \approx \frac{\Delta v}{\Delta t}}
=v나중v지금Δt\textcolor{#e2e8f0}{= \frac{v_{\text{나중}} - v_{\text{지금}}}{\Delta t}}

극한을 취하지 않고, 유한한 크기의 Δt를 사용합니다. 이것이 유한차분(Finite Difference)입니다.

이것을 뒤집으면

v나중=v지금+(기울기)×Δt\textcolor{#e2e8f0}{v_{\text{나중}} = v_{\text{지금}} + (\text{기울기}) \times \Delta t}
New = Old + Slope × Step

현재 상태와 기울기만 알면 다음 값을 예측할 수 있습니다!

기하학적 의미
010203040500123456접선 (dv/dt)Δt = 2.0sΔv = 18.7t (s)v (m/s)실제 곡선 v(t)할선 (Δv/Δt)
정확한 기울기 (접선)
dv/dt = 9.81
근사 기울기 (할선)
Δv/Δt = 9.36
오차: 4.5%— Δt를 줄여보세요!

할선(secant)의 기울기 Δv/Δt는 접선(tangent)의 기울기 dv/dt의 근사값입니다. Δt가 작아질수록 할선이 접선에 가까워지고, 근사가 정확해집니다.

4

Compute

컴퓨터로 반복 계산

유한차분 공식을 반복 적용하여 시간별 속도를 계산합니다.

1.현재 기울기 계산: dv/dt = 9.81 − (0.25/68.1)·v²
2.다음 값 예측: v_new = v_old + 기울기 × Δt
3.시간 전진: t = 0 → 2 → 4 → ... → 12s
4.MATLAB으로 이 반복을 자동화
5

Verify

결과 검증

해석해(있다면)와 비교하고, 물리적 타당성을 검증합니다.

1.해석해와 비교 → 오차 확인
2.Δt를 줄여서 수렴 확인
3.종단속도 ≈ 51.69 m/s (물리적으로 합리적?)
4.오차가 허용범위 내인지 판단
Bungee Jumper Example

수식 유도부터 수치해까지

번지점퍼의 자유낙하 — 물리 모델링에서 Euler Method까지 단계별로 따라갑니다

Part 1수식 유도

Step 1: 문제 설정

번지점퍼에 작용하는 힘

질량 m = 68.1 kg인 사람이 번지점프를 합니다. 자유낙하 중 두 가지 힘이 작용합니다:

중력 (하향)
FD=mg\textcolor{#e2e8f0}{F_{D} = mg}
공기저항 (상향)
FU=cdv2\textcolor{#e2e8f0}{F_{U} = c_{d}v^{2}}

cd\textcolor{#e2e8f0}{c_{d}} = 0.25 kg/m (항력계수), v = 속도 (m/s)

m = 68.1 kgcd\textcolor{#e2e8f0}{c_{d}} = 0.25 kg/mg = 9.81 m/s2\textcolor{#e2e8f0}{^{2}}v(0) = 0

Part 2해석해 vs 수치해 비교

0102030405060024681012Terminal: 51.7 m/st (s)v (m/s)AnalyticalNumerical (Δt = 2)
Analytical Solution
t = 0 s0.0000 m/s
t = 2 s18.7292 m/s
t = 4 s33.1118 m/s
t = 6 s42.0762 m/s
t = 8 s46.9575 m/s
t = 10 s49.4214 m/s
t = 12 s50.6175 m/s
t = ∞51.6938 m/s
Numerical (Δt = 2 s)
t = 0 s0.0000 m/s
t = 2 s19.6200 m/s
t = 4 s36.4137 m/s
t = 6 s46.2983 m/s
t = 8 s50.1802 m/s
t = 10 s51.3123 m/s
t = 12 s51.6008 m/s

Δt가 작아질수록 수치해가 해석해에 가까워집니다.

그러나 수치해의 진정한 힘은 — 해석해가 존재하지 않는 경우에도 적용할 수 있다는 점입니다.
만약 cd\textcolor{#e2e8f0}{c_{d}}가 속도의 복잡한 함수라면? 해석해는 불가능하지만, 수치해는 동일한 방법으로 구할 수 있습니다.

Part 3MATLAB로 직접 구현하기

bungee_euler.m
% Bungee Jumper - Euler Method
g  = 9.81;
m  = 68.1;    % kg
cd = 0.25;    % kg/m
dt = 2;       % step size (s)
tEnd = 12;    % end time (s)

% Initial conditions
t = 0;
v = 0;

% Euler iteration
fprintf('  t(s)    v_num    v_exact\n')
fprintf('----------------------------\n')

while t <= tEnd
    % Analytical solution
    vExact = sqrt(g*m/cd) * ...
             tanh(sqrt(g*cd/m)*t);

    fprintf('%5.1f  %8.4f  %8.4f\n',...
            t, v, vExact)

    % Euler step
    dvdt = g - (cd/m)*v^2;
    v = v + dvdt * dt;
    t = t + dt;
end
Euler 계산 과정 (Δt = 2s)
i = 0t = 0s, v = 0.0000 m/s
slope: 9.81 − (0.25/68.1)·0² = 9.81
vnext\textcolor{#e2e8f0}{v_{\text{next}}}: 0 + 9.81 × 2 = 19.62
해석해:0.0000오차:0%
i = 1t = 2s, v = 19.6200 m/s
slope: 9.81 − (0.25/68.1)·19.62² = 8.3968
vnext\textcolor{#e2e8f0}{v_{\text{next}}}: 19.62 + 8.3968 × 2 = 36.4137
해석해:18.7292오차:4.76%
i = 2t = 4s, v = 36.4137 m/s
slope: 9.81 − (0.25/68.1)·36.41² = 4.9418
vnext\textcolor{#e2e8f0}{v_{\text{next}}}: 36.4137 + 4.9418 × 2 = 46.2973
해석해:33.1118오차:9.97%
i = 3t = 6s, v = 46.2973 m/s
slope: 9.81 − (0.25/68.1)·46.30² = 1.9452
vnext\textcolor{#e2e8f0}{v_{\text{next}}}: 46.2973 + 1.9452 × 2 = 50.1876
해석해:42.0762오차:10.03%
i = 4t = 8s, v = 50.1876 m/s
slope: 9.81 − (0.25/68.1)·50.19² = 0.5639
vnext\textcolor{#e2e8f0}{v_{\text{next}}}: 50.1876 + 0.5639 × 2 = 51.3154
해석해:46.9575오차:6.88%
i = 5t = 10s, v = 51.3154 m/s
slope: 9.81 − (0.25/68.1)·51.32² = 0.1453
vnext\textcolor{#e2e8f0}{v_{\text{next}}}: 51.3154 + 0.1453 × 2 = 51.6059
해석해:49.4214오차:3.83%

Δt에 따른 오차 비교

bungee_compare.m
% Compare Euler with different step sizes
g = 9.81;  m = 68.1;  cd = 0.25;
tEnd = 12;
dtList = [2, 1, 0.5, 0.1];

figure; hold on;

% Analytical (fine grid)
tExact = 0:0.01:tEnd;
vExact = sqrt(g*m/cd) * tanh(sqrt(g*cd/m)*tExact);
plot(tExact, vExact, 'b-', 'LineWidth', 2)

% Euler for each dt
colors = {'r--o','m--s','g--d','k--'};
for k = 1:length(dtList)
    dt = dtList(k);
    t = 0:dt:tEnd;
    v = zeros(size(t));
    for i = 1:length(t)-1
        dvdt = g - (cd/m)*v(i)^2;
        v(i+1) = v(i) + dvdt*dt;
    end
    plot(t, v, colors{k}, 'LineWidth', 1.5)
end

legend('Analytical','dt=2','dt=1','dt=0.5','dt=0.1')
xlabel('t (s)');  ylabel('v (m/s)')
title('Bungee Jumper: Euler Method Convergence')
grid on
t = 12s에서의 오차 비교
Δt수치해 v(12)해석해 v(12)오차상대오차
2 s51.600850.61750.98331.9426%
1 s51.200850.61750.58331.1524%
0.5 s50.925950.61750.30840.6093%
0.1 s50.681450.61750.06390.1263%

Exercise

위의 MATLAB 코드를 직접 실행해보세요.

  1. 1.bungee_euler.m을 실행하고, Δt를 2, 1, 0.5, 0.1로 바꿔가며 출력을 비교하세요.
  2. 2.bungee_compare.m을 실행하여 그래프로 수렴 과정을 확인하세요.
  3. 3.Δt = 0.01로 했을 때 t = 12s에서의 상대오차는 얼마인가요?

Part 4파라미터 실험실

질량(m)과 항력계수(cd\textcolor{#e2e8f0}{c_{d}})를 바꾸고, 해석해/수치해를 선택하여 두 케이스를 비교해보세요.

Euler Δt:

Case A

질량 m68.1 kg
30150 kg
항력계수 cd\textcolor{#e2e8f0}{c_{d}}0.25 kg/m
0.051.00
종단속도: 51.69 m/s(186 km/h)

Case B

질량 m100.0 kg
30150 kg
항력계수 cd\textcolor{#e2e8f0}{c_{d}}0.25 kg/m
0.051.00
종단속도: 62.64 m/s(226 km/h)
010203040506070051015202530t (s)v (m/s)A: m=68.1, c_d=0.25 [analytical]B: m=100.0, c_d=0.25 [analytical]
v(4s)
33.1vs34.8
v(8s)
47.0vs53.2
v(15s)
51.3vs61.5
v(25s)
51.7vs62.6
v(∞)
51.7vs62.6

물리적 직관

질량(m)이 클수록:

종단속도 ↑, 가속 초기에 더 빠르게 속도 증가. 무거운 사람이 더 빨리 떨어집니다.

항력계수(cd\textcolor{#e2e8f0}{c_{d}})가 클수록:

종단속도 ↓, 공기저항이 커서 더 빨리 감속. 낙하산을 펼친 효과입니다.

Numerical에서 Δt를 줄여보세요 — 수치해가 해석해에 수렴하는 과정을 두 케이스에서 동시에 확인할 수 있습니다.

MATLAB Practice

MATLAB 실습 스크립트

각 코드를 한 줄씩 따라 치면서 MATLAB에 익숙해지세요.
줄을 클릭하면 상세 설명을 볼 수 있습니다.

🔢MATLAB 기본 연산

변수, 산술 연산, 내장 함수 사용법

basics.m — MATLAB Script
1clc
2clear
3 
4a = 3
5b = 4;
6c = a + b
7d = a * b
8e = a^2
9 
10% 내장 함수 사용
11x = sqrt(16)
12y = exp(1)
13z = log(y)
14w = pi
Command Window — 실행 결과
a =
     3

c =
     7

d =
    12

e =
     9

x =
     4

y =
    2.7183

z =
     1

w =
    3.1416
줄별 설명
clc

명령 창(Command Window) 내용을 모두 지웁니다.

clear

워크스페이스의 모든 변수를 삭제합니다.

a = 3

변수 a에 3을 대입합니다. 세미콜론(;)이 없으므로 결과가 출력됩니다.

b = 4;

변수 b에 4를 대입합니다. 세미콜론(;)이 있으므로 결과가 출력되지 않습니다.

c = a + b

a와 b를 더한 결과를 c에 저장합니다.

d = a * b

a와 b를 곱한 결과를 d에 저장합니다.

e = a^2

a의 제곱을 계산합니다. (^는 거듭제곱 연산자)

x = sqrt(16)

16의 제곱근을 계산합니다. → 4

y = exp(1)

e^1 = 2.7183... (자연상수)

z = log(y)

자연로그 ln(e) = 1 (MATLAB에서 log는 자연로그입니다)

w = pi

원주율 π = 3.1416...

Applications

공학 응용 분야

수치해석은 기계공학의 거의 모든 분야에서 사용됩니다 — 카드를 클릭해서 자세히 보세요

Roadmap

강의 로드맵

이번 학기에 배우게 될 내용의 전체 구조

기초
Week 1–3
W1

Introduction

수치해석 개론

W2

MATLAB

프로그래밍 도구

W3

Errors

반올림/절단 오차

방정식
Week 4–7
W4

Nonlinear Eq. I

Bisection, Newton-Raphson

W5

Nonlinear Eq. II

Secant, 응용

W6

Linear Systems I

Gauss Elimination, LU

W7

Linear Systems II

Jacobi, Gauss-Seidel

데이터
Week 9–10
W9

Curve Fitting

최소자승법, 회귀

W10

Interpolation

Lagrange, Spline

미적분
Week 11–14
W11

Integration

Simpson, Gauss

W12

Differentiation

유한차분

W13

ODE

Euler, Runge-Kutta

W14

PDE & Eigenvalues

유한차분, Power Method

Week 8: 중간고사
Week 15: 기말고사

다음 시간

Week 2: MATLAB Fundamentals

수치해석의 핵심 도구인 MATLAB의 기초를 배웁니다