使用 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