이 글을 읽기 전에 라플라스 변환이 궁금하다면 아래 글을 보고 오자!
2023.02.19 - [Computer Science/Matlab(수학)] - 매트랩 [2계 상미분 방정식] 라플라스 변환 (Laplace Transform)
라플라스 변환과 합성곱. 생소한 개념일 수 있는 사람을 위해 간단한 설명을 적어본다.
라플라스 변환은 덧셈, 뺄셈을 할 때는 분배가 가능하다.
하지만 곱셈은 분배가 안 된다. 대신에 합성곱(convolution)을 이용한다. 합성곱은 요즘 유행하는 AI 기법 중 하나인 CNN 딥러닝에도 사용된다. 여러모로 쓸모가 많으니 궁금한 사람은 추가 학습을 추천한다. 아래는 합성곱의 기본 정의이다.
라플라스 변환의 곱과의 관계는 아래와 같다.
보통 함수 H가 라플라스 변환 F, G 의 곱으로 표현 가능하여 더 간단한 풀이가 가능할 때 사용한다.
이제 매트랩 matlab 으로 들어가자! 함수 h가 라플라스 변환된 H라는 함수를 생각하자. a = 2라고 가정하자.
h를 다시 찾는 해석적 방법은
syms s
a = 2; % a는 2라고 가정
% Original way of getting h
H = 1/ ((s-a)*s);
h = ilaplace(H);
h =
exp(2*t)/2 - 1/2라는 값이 출력되고, 이를 그래프로 표현해 보자.
fplot(h, [0 10])
같은 문제를 이번에는 convolution(합성곱)과 라플라스 변환의 곱의 관계를 이용해서 풀어보자. (글 위 부분 참조)
은 1/(s-a)와 1/s의 곱으로 이루어졌다. 1/(s-a) 과 1/s 의 각각의 라플라스 역변환을 f, g라고 할 때 각각은
이다.
이를 참고해서 x 축 범위 0부터 10을 100개로 나눠서 문제를 풀어보자. (수치적 해법)
% Convolution way
k = linspace(0, 10);
f = @(k) exp(a*k);
g = @(k) ones(size(k));
이제 합성곱을 통해 h1를 구해주자. (k(2)-k(1)) 을 곱해주는 이유는 scale을 맞추기 위해서이다.
% conv(u,v) - v slides across u
h1 = conv(f(k),g(k))*(k(2)-k(1));
h1 에는 직접 수를 대입해서 얻은 합성곱의 값 199개가 있다. 그중에서 우리는 변수 k 안에 들어 있는 개수만큼 이 필요하다.
그래프를 그려 검증해 보자.
hold on
plot(k, h1(1:numel(k)), 'o');
hold off
위에서 해석적 방법으로 푼 h의 그래프와 동일한 그래프를 그린다.
'Computer Science > Matlab(수학)' 카테고리의 다른 글
매트랩 [선형 대수] 역행렬, 고유값(eigen value), 고유벡터(eigen vector) (0) | 2023.03.05 |
---|---|
매트랩 [선형 대수] 행렬(matrix), 사다리꼴 행렬(row echelon form), 행렬식(determinant) (0) | 2023.03.05 |
매트랩 [2계 상미분방정식] 라플라스 변환-단위계단함수 (Laplace Transform-Heaviside Function) (0) | 2023.02.27 |
매트랩 [2계 상미분방정식] 라플라스 변환 (Laplace Transform) (0) | 2023.02.19 |
매트랩 [2계 상미분방정식]의 연립 방정식으로의 변환 (수치적, 해석적 풀이) (0) | 2023.02.16 |