MATLAB을 사용한 역 라플라스 변환

Ammar Ali 2021년11월29일
MATLAB을 사용한 역 라플라스 변환

이 튜토리얼에서는 MATLAB에서 ilaplace() 함수를 사용하여 역 라플라스 변환을 찾는 방법에 대해 설명합니다.

MATLAB의 ilaplace() 함수를 사용하여 역 라플라스 변환 찾기

역 라플라스 변환을 사용하여 라플라스 영역 함수를 시간 영역 함수로 변환합니다. Matlab에서 ilaplace() 함수를 사용하여 라플라스 영역 함수를 시간 영역 함수로 변환할 수 있습니다. ilaplace() 함수는 세 개의 입력 변수를 제외합니다. 첫 번째 변수는 필수 변수로 라플라스 영역 함수이고 두 번째 변수는 선택 사항으로 라플라스 영역의 독립 변수입니다. 기본적으로 Matlab은 변수 s를 독립 변수로 사용하고 세 번째 변수는 시간 영역의 변환 변수입니다. 기본적으로 Matlab은 변수 t를 변환 변수로 사용합니다. 예를 들어 Matlab에서 ilaplace() 함수를 사용하여 함수의 역 라플라스 변환을 찾아보겠습니다. 아래 코드를 참조하십시오.

syms s
fun = 1/s^2;
Output = ilaplace(fun)

출력:

Output =
 
t

위 코드에서 보시다시피 ilaplace() 함수에만 함수를 제공했습니다. 그러나 변환 변수를 변경하려면 해당 변수를 ilaplace() 함수에 두 번째 인수로 전달해야 합니다. 예를 들어, 변환 변수 t를 x로 바꾸자. 아래 코드를 참조하십시오.

syms s
fun = 1/s^2;
Output = ilaplace(fun,x)

출력:

Output =
 
x

위의 코드에서 보시다시피 변환 변수 t는 x로 변경됩니다. 이제 독립 변수와 변환 변수를 변경하는 또 다른 예를 살펴보겠습니다. 아래 코드를 참조하십시오.

syms a s
Fun = 1/(s-a);
Output = ilaplace(Fun)

출력:

Output =
 
exp(a*t)

위의 코드에서는 ilaplace() 함수에만 함수를 제공했으므로 독립 변수와 변환 변수에 기본값을 사용합니다. 이제 이 두 변수를 모두 변경하고 대신 a를 독립 변수로 사용하고 x를 변환 변수로 사용하겠습니다. 아래 코드를 참조하십시오.

syms a s
Fun = 1/(s-a);
Output = ilaplace(Fun,a,x)

출력:

Output =
 
-exp(s*x)

위의 코드에서 보시다시피 출력과 출력의 변수가 변경되었습니다. 따라서 독립 변수를 변경하면 결과가 변경됩니다. ilaplace() 함수를 사용하여 행렬 또는 배열의 역 라플라스 변환을 찾을 수도 있습니다. 독립 및 변환 변수를 라플라스 도메인 함수 행렬과 같은 차원의 행렬로 정의할 수 있습니다. ilaplace() 함수는 행렬의 인수가 스칼라가 아닌 경우 요소별로 작동합니다. 예를 들어, 행렬의 역 라플라스 변환을 찾아보겠습니다. 아래 코드를 참조하십시오.

syms a b c d w x y z
Matrix = [1/x 1; sin(y) i*z];
var = [w x; y z];
tVars = [a b; c d];
Output = ilaplace(Matrix,var,tVars)

출력:

Output =
 
[             dirac(a)/x,       dirac(b)]
[ ilaplace(sin(y), y, c), dirac(1, d)*1i]

행렬의 출력도 같은 차원의 행렬로 나옵니다. 다항식의 역 라플라스 변환을 찾고 싶고 Matlab에서 전체 방정식을 작성하고 싶지 않다고 가정합니다. 이 경우 분자와 분모의 다항식 계수만 쓸 수 있습니다. 그런 다음 poly2sym() 함수를 사용하여 다항식 계수를 기호 다항식으로 변환할 수 있습니다. poly2sym() 함수는 두 개의 입력 인수를 제외하고 첫 번째 인수는 다항식 계수 벡터이고 두 번째 인수는 다항식 표현식에 추가하려는 기호입니다. 예를 들어, 다항식의 역 라플라스 변환을 찾아보겠습니다. 아래 코드를 참조하십시오.

syms s t;
numerator=[1 1];
denominator=[1 3 5];
numS=poly2sym(numerator,s);
denS=poly2sym(denominator,s);           
Fun=numS./denS

Output = ilaplace(Fun,s,t)
NumericOutput = vpa(Output)

출력:

Fun =
 
(s + 1)/(s^2 + 3*s + 5)
 
 
Output =
 
exp(-(3*t)/2)*(cos((11^(1/2)*t)/2) - (11^(1/2)*sin((11^(1/2)*t)/2))/11)
 
 
NumericOutput =
 
exp(-1.5*t)*(cos(1.6583123951776999245574663683353*t) - 0.30151134457776362264681206697006*sin(1.6583123951776999245574663683353*t))

Fun은 위 출력의 다항식 표현이고 변수 Output은 역 라플라스 변환입니다. 보시다시피 Output 변수에는 풀리지 않은 거듭제곱과 나눗셈이 포함되어 있습니다. 단순화된 숫자 결과를 얻으려면 vpa() 함수를 사용하여 결과를 숫자 형식으로 변환할 수 있습니다. 이 예에서 숫자 결과는 NumericOutput 변수에 저장됩니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook