Introduction to
Numerical Analysis
수치해석이란 무엇이며, 왜 공학에서 필수적인가
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
해석적 방법 vs 수치적 방법
같은 문제를 두 가지 방법으로 풀어봅니다 — 좌우를 비교하며 차이를 느껴보세요
번지점퍼 자유낙하
dv/dt = g − (c_d/m)v²v(t) = 51.7·tanh(0.1898·t), 종단속도 = 51.7 m/s
Euler (Δt=2s) — 큰 step size에서 오차가 보입니다. 해석해(점선)와 비교하세요.
해석해는 단순 1D이므로 가능하지만, 3D 형상·바람·탄성 로프가 추가되면 수치해만 가능합니다.
1D 정상상태 열전도
d²T/dx² = 0정상상태 1D 열전도 → 온도가 직선 분포 (해석해: T(x) = T₁ + (T₂−T₁)·x/L)
Gauss-Seidel 3회 반복 — 반복 횟수를 늘려 해석해(점선)에 수렴하는 과정을 확인하세요
1D 균일 물성치는 해석해 가능. 2D/3D 복잡 형상이나 온도 의존 물성치에서는 수치해 필수.
감쇠 자유진동 (1-DOF)
mẍ + cẋ + kx = 0감쇠 자유진동: x(t) = e^{-ζωt}cos(ω_d·t), ω_d = 4.90 rad/s
Euler Method (Δt=0.02s) — 감쇠비를 높여보세요. 점선은 해석해.
선형 1자유도는 해석해 존재. 다자유도·비선형 감쇠·외력이 추가되면 수치적분 필요.
원관 층류 유동 (Poiseuille)
d²u/dr² + (1/r)du/dr = (1/μ)dp/dxHagen-Poiseuille: u(r) = (R²−r²)/(4μ)·(−dp/dx), u_max = 2500.0 m/s
유한차분법 5회 반복 — 반복 횟수를 늘려 포물선(점선)에 수렴시켜 보세요
완전발달 층류는 해석해 가능. 난류, 입구 영역, 복잡 단면에서는 CFD(수치해) 필수.
외팔보 처짐
EI · d²y/dx² = M(x)외팔보: y(x) = Px²(3L−x)/(6EI), 끝단 처짐 = 2.67 mm
유한차분 (6격자) — 격자를 늘려 해석해(점선)와 비교해보세요
단순 하중·균일 단면은 해석해 가능. 복잡 하중·가변 단면·비선형 재료에서는 FEM(수치해) 필수.
핵심 요약
정확하지만 단순한 문제에서만 가능
근사이지만 거의 모든 문제에 적용 가능
해석해로 검증하며 수치해를 배웁니다
수치해석 5단계 프로세스
모든 수치해석 문제는 이 다섯 단계를 따릅니다
Problem
물리적 문제 정의
번지점퍼가 다리에서 뛰어내립니다. 시간에 따른 속도를 알고 싶습니다.
Model
수학적 모델 수립
뉴턴 제2법칙을 적용하여 속도 변화를 수식으로 표현합니다.
Approximate
미분을 유한차분으로 근사
수치해석의 가장 핵심적인 아이디어입니다. 미분(dv/dt)을 유한한 차분(Δv/Δt)으로 바꿉니다.
미적분에서 배운 미분의 정의
미분은 Δt를 무한히 작게 만든 극한입니다. 하지만 컴퓨터는 무한히 작은 값을 다룰 수 없죠.
수치해석의 핵심 아이디어
극한을 취하지 않고, 유한한 크기의 Δt를 사용합니다. 이것이 유한차분(Finite Difference)입니다.
이것을 뒤집으면
현재 상태와 기울기만 알면 다음 값을 예측할 수 있습니다!
할선(secant)의 기울기 Δv/Δt는 접선(tangent)의 기울기 dv/dt의 근사값입니다. Δt가 작아질수록 할선이 접선에 가까워지고, 근사가 정확해집니다.
Compute
컴퓨터로 반복 계산
유한차분 공식을 반복 적용하여 시간별 속도를 계산합니다.
Verify
결과 검증
해석해(있다면)와 비교하고, 물리적 타당성을 검증합니다.
수식 유도부터 수치해까지
번지점퍼의 자유낙하 — 물리 모델링에서 Euler Method까지 단계별로 따라갑니다
Part 1수식 유도
번지점퍼에 작용하는 힘
질량 m = 68.1 kg인 사람이 번지점프를 합니다. 자유낙하 중 두 가지 힘이 작용합니다:
= 0.25 kg/m (항력계수), v = 속도 (m/s)
Part 2해석해 vs 수치해 비교
Δt가 작아질수록 수치해가 해석해에 가까워집니다.
그러나 수치해의 진정한 힘은 — 해석해가 존재하지 않는 경우에도 적용할 수 있다는 점입니다.
만약 가 속도의 복잡한 함수라면? 해석해는 불가능하지만, 수치해는 동일한 방법으로 구할 수 있습니다.
Part 3MATLAB로 직접 구현하기
% 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Δt에 따른 오차 비교
% 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 | 수치해 v(12) | 해석해 v(12) | 오차 | 상대오차 |
|---|---|---|---|---|
| 2 s | 51.6008 | 50.6175 | 0.9833 | 1.9426% |
| 1 s | 51.2008 | 50.6175 | 0.5833 | 1.1524% |
| 0.5 s | 50.9259 | 50.6175 | 0.3084 | 0.6093% |
| 0.1 s | 50.6814 | 50.6175 | 0.0639 | 0.1263% |
Exercise
위의 MATLAB 코드를 직접 실행해보세요.
- 1.
bungee_euler.m을 실행하고, Δt를 2, 1, 0.5, 0.1로 바꿔가며 출력을 비교하세요. - 2.
bungee_compare.m을 실행하여 그래프로 수렴 과정을 확인하세요. - 3.Δt = 0.01로 했을 때 t = 12s에서의 상대오차는 얼마인가요?
Part 4파라미터 실험실
질량(m)과 항력계수()를 바꾸고, 해석해/수치해를 선택하여 두 케이스를 비교해보세요.
Case A
Case B
물리적 직관
종단속도 ↑, 가속 초기에 더 빠르게 속도 증가. 무거운 사람이 더 빨리 떨어집니다.
종단속도 ↓, 공기저항이 커서 더 빨리 감속. 낙하산을 펼친 효과입니다.
Numerical에서 Δt를 줄여보세요 — 수치해가 해석해에 수렴하는 과정을 두 케이스에서 동시에 확인할 수 있습니다.
MATLAB 실습 스크립트
각 코드를 한 줄씩 따라 치면서 MATLAB에 익숙해지세요.
줄을 클릭하면 상세 설명을 볼 수 있습니다.
🔢MATLAB 기본 연산
변수, 산술 연산, 내장 함수 사용법
| 1 | clc |
| 2 | clear |
| 3 | |
| 4 | a = 3 |
| 5 | b = 4; |
| 6 | c = a + b |
| 7 | d = a * b |
| 8 | e = a^2 |
| 9 | |
| 10 | % 내장 함수 사용 |
| 11 | x = sqrt(16) |
| 12 | y = exp(1) |
| 13 | z = log(y) |
| 14 | w = pi |
a =
3
c =
7
d =
12
e =
9
x =
4
y =
2.7183
z =
1
w =
3.1416clc명령 창(Command Window) 내용을 모두 지웁니다.
clear워크스페이스의 모든 변수를 삭제합니다.
a = 3변수 a에 3을 대입합니다. 세미콜론(;)이 없으므로 결과가 출력됩니다.
b = 4;변수 b에 4를 대입합니다. 세미콜론(;)이 있으므로 결과가 출력되지 않습니다.
c = a + ba와 b를 더한 결과를 c에 저장합니다.
d = a * ba와 b를 곱한 결과를 d에 저장합니다.
e = a^2a의 제곱을 계산합니다. (^는 거듭제곱 연산자)
x = sqrt(16)16의 제곱근을 계산합니다. → 4
y = exp(1)e^1 = 2.7183... (자연상수)
z = log(y)자연로그 ln(e) = 1 (MATLAB에서 log는 자연로그입니다)
w = pi원주율 π = 3.1416...
공학 응용 분야
수치해석은 기계공학의 거의 모든 분야에서 사용됩니다 — 카드를 클릭해서 자세히 보세요
강의 로드맵
이번 학기에 배우게 될 내용의 전체 구조
Introduction
수치해석 개론
MATLAB
프로그래밍 도구
Errors
반올림/절단 오차
Nonlinear Eq. I
Bisection, Newton-Raphson
Nonlinear Eq. II
Secant, 응용
Linear Systems I
Gauss Elimination, LU
Linear Systems II
Jacobi, Gauss-Seidel
Curve Fitting
최소자승법, 회귀
Interpolation
Lagrange, Spline
Integration
Simpson, Gauss
Differentiation
유한차분
ODE
Euler, Runge-Kutta
PDE & Eigenvalues
유한차분, Power Method
다음 시간
Week 2: MATLAB Fundamentals
수치해석의 핵심 도구인 MATLAB의 기초를 배웁니다