한빛미디어 Engineering Numerical Analysis Learning by MATLAB 1/50
CHAPTER 02
매트랩 응용
Advanced MATLAB
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 2/50
함수의 근 찾기
2.2
선형연립방정식
2.1
2.3
보간법수치 적분법
2.4
수치 미분법
2.5
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 3/50
학습목표
수치해석에서 자주 사용하는 매트랩의 응용 방법을 배우고, 문제에 적용할 수 있다.
매트랩 심볼릭 도구상자로 수학적 계산 과정을 자세히 나타낼 수
있다. 공식으로 적분값을 근사시킬 수 있다 .
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 4/50
2.1.1 수학적 풀이 방법
2.1 선형연립방정식
연립일차방정식의 해
일차방정식을 동시에 만족하는 x와 y의 값을 구한다.
가감법, 대입법, 등치법을 이용
가감법(Addition and Subtraction method)
두 일차방정식을 변끼리 더하거나 빼서 한 미지수를 소거하여 해를 구한다
소거하려는 미지수는 계수의 절댓값이 동일
대입법(Substitution method)
일차방정식 하나를 미지수 하나에 대해 푼다
다른 일차방정식에 대입하여 해를 구함
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 5/50
2.1.1 수학적 풀이 방법
2.1 선형연립방정식
등치법(Equivalence method)
주어진 두 방정식을 미지수 하나에 대하여 풀고 둘을 같다고 놓는다
미지수 하나를 소거하여 해를 구함
가감법 이용하여 세 개의 연립방정식 풀기
세 개의 미지수 중 z를 먼저 소거
첫 번째 방정식에 3을 곱하고 두 번째 방정식에 더함
첫 번째 방정식에 다시 -2를 곱하고 세 번째 방정식에 더함
미지수 x와 y만 갖는 새로운 방정식 생성
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 6/50
2.1.1 수학적 풀이 방법
2.1 선형연립방정식
첫 번째 방정식에 5를 곱하고 두 번째 방정식에 더하여 x를 소거
y의 해로 2를 구함
역계산에 의해서 차례대로 x = 1과 z = 3의 해를 구함
n개의 미지수를 구하기 위해서는 번의 가감법이 필요
미지수가 세 개인 이 경우에는 가감법이 3번이 필요
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 7/50
2.1.1 수학적 풀이 방법
2.1 선형연립방정식
매트랩을 이용한 연립방정식 해를 구하기
벡터-행렬 표시의 행렬방정식
일반화시킨 행렬방정식
행렬 A는 계수 x, y, z에 차례대로 대응
행렬식(determinant) |A|: 17세기 수학자 라이프니츠(Leibniz)가 처음 사용
행과 열의 수가 같은 정방행렬에 수를 대응시키는 함수
연립방정식이 유일한 해를 갖는지를 결정
|A|가 0이 아닌 경우에만 연립방정식의 해가 존재
매트랩에서 행렬식의 명령어는 det(A)
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 8/50
2.1.1 수학적 풀이 방법
2.1 선형연립방정식
다음의 행렬 A에 대한 행렬식 구하기
오른쪽 대각선 방향으로 차례대로 원소 3개씩 묶어서 곱하고 서로 더한다
왼쪽 대각선 방향으로 차례대로 원소 3개씩 묶어서 곱한 것을 모두 빼준다
행렬식은 다음과 같다
왼쪽 나눗셈을 이용하여 행렬방정식 (2.1) 푸는 수식
상수 벡터항 c를 행렬 A로 나누어 미지수 벡터 x를 구함
왼쪽 나눗셈 방법은 가우스 소거법을 근거
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 9/50
2.1.1 수학적 풀이 방법
2.1 선형연립방정식
[그림 2-1] 왼쪽 나눗셈을 이용한 연립방정식 풀이 과정
왼쪽 나눗셈 연산자 대신 오른쪽 나눗셈 연산자를 이용하면 오류 발생
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 10/50
2.1.1 수학적 풀이 방법
2.1 선형연립방정식
MATLAB 2-1
비정칙행렬 : 행렬 변환으로 풀 수 없는 연립방정식매트랩을 이용하여 주어진 세 연립방정식의 해를 구하라. 그리고 그 결과를 설명하라.
Tip !
세 연립방정식을 행렬방정식으로 표시
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 11/50
2.1.2 역행렬 계산
2.1 선형연립방정식
행렬 A에 대한 역행렬 A
-1 행렬 A는 정방행렬이고 정칙행렬
역행렬과 행렬 자신을 곱하면 단위행렬 I가 생성
식 (2.1)의 양변에 역행렬을 곱한 수식
식 (2.4)에 식 (2.3)을 적용
수학적으로 역행렬 표시 A-1은 행렬 A를 분모로 전환한 형태
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 12/50
2.1.2 역행렬 계산
2.1 선형연립방정식
식 (2.5)의 수학적 표시
매트랩 형식으로 전환하면 식 (2.2)와 같이 왼쪽 나눗셈 연산자로 대치 [그림 2-3] 역행렬을 이용한 연립방정식 풀이 과정
매트랩에서 역행렬 구하는 명령어는 inv(A)
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 13/50
2.1.3 크래머 법칙
2.1 선형연립방정식
행렬식으로 된 연립방정식을 체계적으로 풀 수 있다.
크래머 법칙을 이용한 다음에 주어진 행렬식 풀기
① 행렬식을 찾는다
② 오른쪽 상수 벡터를 계수행렬 A의 첫 번째 열에 모두 대치한 행렬식 구한다
③ 오른쪽 상수 벡터를 계수행렬 A의 두 번째 열에 모두 대치한 행렬식 구한다
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 14/50
2.1.3 크래머 법칙
2.1 선형연립방정식
④ 과정 ②와 ③에서 구한 값들을 ①에서 구한 값으로 나눈다.
다음과 같이 미지의 변숫값을 얻는다.
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 15/50
2.2.1 roots 함수
2.2 함수의 근 찾기
방정식의 근 찾기
: 응용 수학에서 흔히 다루는 문제로 간단한 수치적 방법을 활용하면 쉽게 해결
y = x +2에 대한 그래프
출력변수 y와 독립적인 입력변수 x에 따라 2차원 평면에 직선으로 표시
y는 x를 인수로 갖는 함수 f(x)로 표시하며 f(x) = x + 2로 사용 가능 [그림 2-4] 설명
매트랩을 이용하여 -5~+5까지 1씩 증가하는 구간에 f(x) = x + 2 대한 그래프
작은 동그라미는 x축의 -2를 통과할 때 f(x)축의 값이 0인 점을 표시
f(x) = 0 을 만족하는 x의 집합이 근
근은 그래프가 x축과 만나는 점의 x 좌표로 표시하고 x절편이라고 한다.
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 16/50
2.2.1 roots 함수
2.2 함수의 근 찾기
[그림 2-4] f(x) = x + 2의 그래프
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 17/50
2.2.1 roots 함수
2.2 함수의 근 찾기
roots 함수
매트랩에서 함수의 근을 찾을 때 사용
[그림 2-4] 설명
매트랩 내장함수 roots는 소괄호 사용
x차수의 계수값은 내림차순으로 입력하고 상숫값은 맨 마지막에 입력
홀수차 실수계수 다항식의 모든 근은 실수
짝수차 다항식의 경우 모든 근은 실수는 아님
n차 다항식은 중근을 포함해서 n개의 복소수 근을 가짐
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 18/50
2.2.1 roots 함수
2.2 함수의 근 찾기
[그림 2-5] roots 함수를 이용한 근 찾기
1차 함수 f(x) = x + 2와 2차 다항식 f(x) = x2 + 7x + 10의 근
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 19/50
2.2.1 roots 함수
2.2 함수의 근 찾기
MATLAB 2-2
roots 함수roots 함수를 사용하여 다항식 f(x) = x4 + 7x + 10의 근을 찾아라.
Tip !
x 차수의 계수가 0인 경우도 반드시 해당 차수 자리에 0을 입력
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 20/50
2.2.2 fzero 함수
2.2 함수의 근 찾기
fzero 함수
다항식이 아닌 함수 f(x) = 2x + e-x - 2와 같은 형태의 근을 찾을 때 유용
구하려는 함수에 대한 사용자정의함수를 먼저 생성
기본 형태
function은 사용자정의함수명과 동일
x0은 함수의 그래프를 그려본 후에 대충 근의 값에 접근하는 값 지정 [그림 2-7] 설명
fzero 함수를 이용하여 다항식 f(x) = x2 + 7x + 10의 근 찾기
그래프는 fzero 함수를 실행하기 전에 다항식의 근의 대략적인 위치 추정에 이용
다항식 f(x) = x2 + 7x + 10의 사용자정의함수 스크립트 파일 F1.m
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 21/50
2.2.2 fzero 함수
2.2 함수의 근 찾기
[그림 2-7] 다항식 f(x) = x2 + 7x + 10의 그래프
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 22/50
2.2.2 fzero 함수
2.2 함수의 근 찾기
[그림 2-8] fzero 함수를 이용한 f(x) = x2 + 7x + 10의 근 찾기
x0의 값을 -1과 -4로 지정하고 fzero 함수를 실행
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 23/50
2.2.2 fzero 함수
2.2 함수의 근 찾기
fzero 함수를 이용하여 함수 f(x) = 2x + e-x – 2의 근 찾기
대략적인 근의 위치를 추정하기 위해서 함수의 그래프를 먼저 그려본다 [그림 2-9] 함수의 그래프를 그리기 위한 명령어 입력
[그림 2-10] 설명
함수 f(x) = 2x + e-x – 2의 사용자정의함수 스크립트 파일 F2.m
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 24/50
2.2.2 fzero 함수
2.2 함수의 근 찾기
[그림 2-10] 함수 f(x) = 2x + e-x - 2의 그래프
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 25/50
2.2.2 fzero 함수
2.2 함수의 근 찾기
[그림 2-11] fzero 함수를 이용한 f(x) = 2x + e-x – 2의 근 찾기
fzero 함수를 이용하여 x0의 값을 0.5와 -1.5로 가정하여 얻은 결과
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 26/50
2.2.3 polyval 함수
2.2 함수의 근 찾기
다항식의 그림을 간편하게 그릴 수 있다.
polyval 함수를 이용하여 다항식 f(x) = x
3– 2x
2+ 2x + 1의 그래프 그리기
x의 값은 -2~4까지 0.01의 일정한 간격으로 증가
[그림 2-12]를 그리기 위한 명령어 입력
차수의 계수를 내림차순으로 배열 a로 지정
배열 연산자 사용에서 발생할 수 있는 실수를 방지
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 27/50
2.2.3 polyval 함수
2.2 함수의 근 찾기
[그림 2-12] polyval 함수를 이용한 다항식 그리기
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 28/50
2.2.3 polyval 함수
2.2 함수의 근 찾기
[그림 2-13] zeros 명령어 사용
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 29/50
2.2.3 polyval 함수
2.2 함수의 근 찾기
[그림 2-14] ones 명령어 사용
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 30/50
2.3.1 선형 보간법: interp 함수
2.3 보간법
보간법 (혹은 내삽법)
측정이나 실험을 통해서 얻은 자료점들 이용
자료점들 사이에 있는, 얻어지지 않은 자료점들의 평균을 추정
주어진 자료점들을 다항식과 같은 형태로 표준화
interp1 함수
변수가 한 개인 함수를 내삽
기본 형태
벡터 x는 독립변수 자료점
벡터 y는 x 값에 따라 달라지는 의존적 변수 자료점
x_int는 추정하려는 y 값에 상응하는 x 값을 지정하여 사용
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 31/50
2.3.1 선형 보간법: interp 함수
2.3 보간법
MATLAB 2-3
보간법 : interp1 함수화학물에서 발생하는 거품 반응을 화학적 센서를 이용하여 전력으로 변환시켜
측정하려고 한다. 거품 발생 후 30초~4분까지 전력을 측정한 결과가 다음 표와 같이 주어져 있다. 표를 이용하여 2분 경과 후, 3분 30초 경과 후 발생하는 전력을 보간법을 이용하여 각각 추정하라.
Tip !
30초는 0.5분으로 변환하여 벡터 x에 입력
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 32/50
2.3.1 선형 보간법: interp 함수
2.3 보간법
interp2 함수
변수가 두 개인 함수를 내삽할 때 사용
함수가 z = f(x, y)이고 x = xi 와 y = yi 에 대한 변수 z를 추정
기본 형태
벡터 x와 y는 독립변수 자료점들
벡터 z는 x와 y값에 의존하는 자료점들
인수 x_int는 추정하려는 z 값에 상응하는 x 값을 지정하여 사용
인수 y_int는 추정하려는 z 값에 상응하는 y 값을 지정하여 사용
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 33/50
2.3.2 스플라인 보간법: spline 함수
2.3 보간법
스플라인(spline) 보간법
일반적으로 3차 다항식에 많이 사용
인접한 자료점들의 각 쌍을 좀 더 세밀하게 추정
interp1이나 interp2 함수보다 좀 더 곡선 형태의 그래프를 생성
spline 함수의 기본 형태
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 34/50
2.3.2 스플라인 보간법: spline 함수
2.3 보간법
MATLAB 2-4
스플라인 보간법 : spline 함수[MATLAB 2-3]에서 주어진 문제를 spline 함수를 이용하여 구하라.
Tip !
인수 x_int는 입력 자료점 0.5~4까지의 값을 0.01씩 증가시키면서 추정
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 35/50
2.4.1 사다리꼴 적분법: trapz 함수
2.4 수치 적분법
적분의 기본
x축에 놓여있는 점 a와 b 사이에서 함수 f(x)의 아래쪽 면적 A를 계산
x는 적분 변수, f(x)는 피적분함수, a와 b는 적분의 하한과 상한 표시
사다리꼴 적분법
직사각형 조각을 이용하면 곡선 아래쪽 면적을 가장 간단하게 구함
정해진 구간 안의 여러 개로 나누어진 각각의 직사각형의 면적을 더함
직사각형 너비가 충분히 작은 값이면 식 (2.6)의 결과와 거의 근사한 값
사다리꼴 조각을 이용하는 방법이 직사각형보다 더욱 정교한 결과 생성
여러 조각으로 나눈 각각의 사다리꼴을 판이라 부름
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 36/50
2.4.1 사다리꼴 적분법: trapz 함수
2.4 수치 적분법
trapz 함수
매트랩에서 사다리꼴 적분법을 실행하기 위한 함수
기본 구문
x는 미리 정한 판들 사이의 간격을 나타내는 배열
y는 적분을 계산하는 함수
배열 x에 y대한 의 각 열을 적분
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 37/50
2.4.1 사다리꼴 적분법: trapz 함수
2.4 수치 적분법
MATLAB 2-5
trapz 함수수학적으로 피적분함수 sin(x)의 0 ~
p
구간을 적분한 값은 2이다. trapz 함수를 이용하여 적분을 실행하라.Tip !
0 ~
p
구간의 배열 지정에 linspace 함수 사용이 편리
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 38/50
2.4.2 구적법: quad 함수
2.4 수치 적분법
quad 함수
매트랩에서 제공하는 구적법 함수는 quad와 quadl
수치해석에서 적분을 계산하기 위해 자주 사용하는 심슨(Simpson) 공식을 응용
기본 구문
integrand는 피적분 함수
a는 적분의 하한, b는 적분의 상한 표시
허용 오차를 표시하는 매개변수 error tolerance는 선택적으로 사용
quadl 함수는 로바토(Lobatto) 적분 알고리즘을 기초로 만든 함수
quad 함수에 로바토의 첫 글자 l을 붙임
기본 구문은 quad 함수와 동일
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 39/50
2.4.2 구적법: quad 함수
2.4 수치 적분법
[그림 2-20] quad와 quadl 함수를 이용한 적분 계산
[MATLAB 2-5]에서 사용한 trapz 함수보다 더 정확한 결과를 얻음 (장점)
피적분함수가 적분의 상한값과 하한값 사이에 일정한 간격으로 지정된 모든 점의 집합에 대한 적분에는 사용할 수 없음 (단점)
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 40/50
2.4.3 심볼릭 적분: int 함수
2.4 수치 적분법
심볼릭(Symbolic) 수학 도구상자
이용하기 전에 매트랩의 설치 여부 확인 필요
기본 매트랩 프로그램에서는 제공하지 않음
기호로 표현되는 식을 간편하게 풀어주고 수치로 평가하는 것을 도와줌
적분 계산하는 함수명은 int이고 기본 구문은 다음과 같다.
f(x)는 피적분 함수
a는 적분의 하한, b는 적분의 상한 표시
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 41/50
2.4.3 심볼릭 적분: int 함수
2.4 수치 적분법
[그림 2-21] int 함수를 이용한 적분 계산
syms 명령어로 사용할 변수들을 반드시 미리 지정
사용할 변수와 지정한 변수는 일치시킴
clear 명령어의 지정
이미 지정한 명령어와 새롭게 지정한 명령어 사이의 충돌 발생을 방지
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 42/50
2.5.1 오일러 방법
2.5 수치 미분법
미분의 기본
연속적이고 지속적인 변화량에 대한 순간 변화율 표시
적분과 상호보완적 작용
합쳐져 있는 것을 잘게 쪼개는 과정
함수 그래프의 특정 지점에서 나타나는 접선의 기울기
함수를 미분하여 생성되는 함수를 도함수라 부름
식 (2.6)은 다음과 같이 표현 가능
x에 대한 함수 g(x)의 도함수가 f(x)
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 43/50
2.5.1 오일러 방법
2.5 수치 미분법
오일러 방법
미분방정식을 풀 수 있는 가장 기본적인 방법
복잡한 미분방정식을 계차방정식으로 변환
테일러(Taylor) 급수에서 유도된 방법으로 가장 간단한 알고리즘을 제시 (장점)
시간상수의 작은 변화에도 급격한 영향을 받아서 오차가 크게 발생 (단점)
1차 상미분방정식
오일러 방법으로 표시한 식 (2.9)
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 44/50
2.5.1 오일러 방법
2.5 수치 미분법
처음 시간 tk에서 시작하여 Dt만큼 증가한 새로운 시간
Dt는 아주 조금씩 증가하는 시간의 증분량
수정된 오일러 방법
오일러 방법의 결과로 나타난 오차를 더 줄이는데 사용
시간 간격 tk와 tk+1에서 식 (2.10)의 우항 중 f[tk, y(tk)]Dt에 평균을 치환
fk =
f[t
k, y(t
k)]Dt
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 45/50
2.5.1 오일러 방법
2.5 수치 미분법
MATLAB 2-6
오일러 방법 : 상미분방정식 풀이0 ~ 4
p
까지 시간이 0.1p씩 증가하고, 초깃값이 1인 1차 상미분방정식 y = cost의 해답을 오일러 방법을 이용하여 찾으려고 한다. 상미분방정식의 실제 풀이는 y = 1 + sint이다.실제 결과와 오일러 방법을 이용한 결과를 그래프로 비교할 수 있는 스크립트 파일을 작성하라
Tip !
배열의 제일 처음 자리의 색인은 0으로 시작할 수 없으므로 y(1) = 1로 표시
for 순환문 반복을 위해서 상수 k의 초깃값은 0으로 지정
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 46/50
2.5.1 오일러 방법
2.5 수치 미분법
MATLAB 2-7
수정된 오일러 방법 : 상미분방정식 풀이수정된 오일러 방법을 이용하여 [MATLAB 2-6]의 그래프를 다시 그려라.
Tip !
오일러 방법보다 많이 오차를 줄여주지만, 여전히 오차가 존재
이러한 단점을 보완하기 위해서 9.3절에서 룬게쿠타(Runge-Kutta) 방법을 설명
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 47/50
2.5.2 심볼릭 미분
2.45수치 미분법
독립변수의 이름과 무관하게 항상 t를 미분 변수로 사용
2차 상미분방정식은 독립변수 t에 대하여 1차 상미분 를 한 번 더 미분
미분 계산하는 함수명은 dsolve이고 기본 구문은 다음과 같다.
equation은 상미분방정식의 심볼릭 식 표시
y(0)은 1차 상미분방정식의 초깃값 표시
dsolve 함수를 이용하여 두 개 이상의 상미분방정식에 대한 기본 구문
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 48/50
2.5.2 심볼릭 미분
2.45수치 미분법
[그림 2-25] 설명
①번은 1차 상미분방정식 의 실제 풀이 y = 1 + sint를 구할 때 사용
기호 D는 독립변수에 대한 미분 표시 를 대치
②번은 두 개의 1차 상미분방정식에 주어진 각각의 초깃값에 대한 풀이 과정
의존변수 y와 z를 동시에 표시하도록 지정 연산자 왼쪽에 설정
③번은 2차 상미분방정식에 대한 풀이 과정
미분 차수가 , 과 같이 올라가는 경우는 D2, D3 형태로 대치
2차 상미분방정식에는 초기 조건인 초깃값과 1차 미분 초깃값을 제시
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 49/50
2.5.2 심볼릭 미분
2.5 수치 미분법
[그림 2-26] 심볼릭 함수 dsolve를 이용한 미분 계산
한빛미디어 Engineering Numerical Analysis Learning by MATLAB 50/50