迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > MATLAB >

使用 MATLAB 进行拉普拉斯逆变换

作者:迹忆客 最近更新:2023/04/23 浏览次数:

本教程将讨论如何在 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 中。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Matplotlib Pyplot 中显示网格

发布时间:2024/02/04 浏览次数:142 分类:Python

本文演示了如何在 Python Matplotlib 中在一个图上画一个网格。使用 grid()函数来绘制网格,并解释了如何改变网格颜色和线条类型。

如何在 Matplotlib 中画一条任意线

发布时间:2024/02/04 浏览次数:166 分类:Python

本教程讲解了我们如何在 Matplotlib 中使用 matplotlib.pyplot.plot()、matplotlib.pyplot.vlines()、matplotlib.pyplot.hlines()方法和 matplotlib.collection.LineCollection 绘制任意线条。

Matplotlib 中的叠加条形图

发布时间:2024/02/04 浏览次数:182 分类:Python

本教程展示了如何使用 plt.bar()方法将某些数据集的条形图堆叠在另一个数据集上。我们在 Matplotlib 中使用 matplotlib.pyplot.bar()方法生成条形图。

设置 Matplotlib 网格间隔

发布时间:2024/02/04 浏览次数:250 分类:Python

本教程将介绍我们如何在 Matplotlib 绘图中设置网格间距,并对主要网格和次要网格应用不同的样式。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便