使用 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() 函式。例如,讓我們用 x 替換轉換變數 t。請參閱下面的程式碼。

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