Skip to content

MATLAB - 拉普拉斯变换

MATLAB - 拉普拉斯变换:现代方法

Section titled “MATLAB - 拉普拉斯变换:现代方法”

拉普拉斯变换(Laplace Transform)是工程和应用数学中的一个基本工具,它能将复杂的线性常微分方程(ODEs)转换为更简单的代数问题,从而帮助我们求解这些方程。它是经典控制理论、信号处理和电路分析的基石。

本质上,拉普拉斯变换将一个时域函数 f(t) 转换为一个复频率变量 s 的函数。这个从“时域”(time domain)到“s域”(s-domain)或“频域”(frequency domain)的转换过程,使得微分和积分等运算变成了简单的乘法和除法。

MATLAB 的 Symbolic Math Toolbox(符号数学工具箱)提供了强大的 laplace 函数来解析地执行这种变换。本教程将指导您如何结合现代最佳实践来使用它。

用于求解拉普拉斯变换的主要函数是 laplace。

% 基本语法
F = laplace(f)
% 指定变换变量(默认为 's')
F = laplace(f, transVar)
% 同时指定独立变量和变换变量(默认为 't' 和 's')
F = laplace(f, var, transVar)
  • F = laplace(f):计算 f 的拉普拉斯变换。MATLAB 假定 f 是 t 的函数,并且得到的变换 F 将是 s 的函数。
  • F = laplace(f, transVar):计算 f(t 的函数)的变换,但结果以不同变量 transVar 而非 s 表示。
  • F = laplace(f, var, transVar):最明确的形式。计算 f 的变换,其中 f 是 var 的函数,并将结果 F 表示为 transVar 的函数。

让我们通过清晰、实用的例子来探索如何使用 laplace 函数。第一步始终是使用 syms 声明符号变量。

函数 f(t) = e^(-at) 是系统分析中的基本函数,代表了一种基本的一阶衰减。

% 1. 定义时间 (t)、变换域 (s) 和常数 (a) 的符号变量
syms t s a
% 2. 定义函数 f(t)
f = exp(-a * t);
% 3. 计算拉普拉斯变换
F = laplace(f);
% 4. 以可读格式显示结果
pretty(F)

工作原理:

  • 我们声明 t、s 和 a 为符号变量,允许 MATLAB 执行代数运算。
  • 我们用 t 和 a 定义了函数 f。
  • 我们调用 laplace(f)。由于没有指定变量,MATLAB 正确地使用了默认值:t 作为独立变量,s 作为变换变量。
  • pretty() 命令将符号输出格式化为更像排版数学的形式,使其更易于阅读。

预期输出:

1
-----
s + a

让我们找到 f(t) = sin(ωt)(一个纯正弦信号)的变换。请注意,这纠正了原始教程中的错误逻辑;这是直接且正确的方法。

% 1. 定义符号变量。我们假设 omega 是一个正实数。
syms t s
syms w positive
% 2. 定义正弦函数
f = sin(w * t);
% 3. 计算拉普拉斯变换
F = laplace(f);
% 4. 显示结果
pretty(F)

工作原理: 通过将 w 声明为 positive,我们帮助符号引擎做出在大多数物理系统中有效的简化假设(频率为正)。

预期输出:

w
---------
2 2
s + w

s域频移定理指出,e^(-at) * f(t) 的拉普拉斯变换是 F(s+a)。我们用阻尼余弦波 g(t) = e^(-at) * cos(ωt) 来验证这一点。

% 1. 定义符号变量
syms t s a
syms w positive
% 2. 定义阻尼余弦函数
g = exp(-a * t) * cos(w * t);
% 3. 计算拉普拉斯变换。我们使用默认变量 (t, s)。
G = laplace(g, t, s);
% 4. 显示结果
disp('Laplace transform of the damped cosine wave:')
pretty(G)

工作原理: 这个例子展示了一个更复杂的变换,它在二阶系统(如RLC电路或质量-弹簧-阻尼系统)中极为常见。结果显示余弦变换 s/(s^2 + w^2) 中的 ‘s’ 被替换为 (s+a)。

预期输出:

阻尼余弦波的拉普拉斯变换为:
s + a
-------------
2 2
(s + a) + w

拉普拉斯变换的真正强大之处在于求解微分方程。让我们求解一个简单的一阶常微分方程:y'(t) + 2y(t) = e^(-3t),初始条件为 y(0) = 5。

% 1. 定义符号函数 y(t) 和变量
syms y(t) t s a
% 2. 定义微分方程
% 使用 diff(y, t) 表示导数
ODE = diff(y, t) + 2*y == exp(-3*t);
% 3. 对整个常微分方程进行拉普拉斯变换
% y'(t) 的变换变为 s*Y(s) - y(0)
L_ODE = laplace(ODE, t, s);
% 4. 替换 y(t) 的拉普拉斯变换 Y(s) 和初始条件
syms Ys % 这是 y(t) 的拉普拉斯变换的占位符
L_ODE = subs(L_ODE, laplace(y,t,s), Ys);
L_ODE = subs(L_ODE, y(0), 5);
% 5. 求解 Y(s) 的代数方程
Ys_sol = solve(L_ODE, Ys);
% 6. 计算逆拉普拉斯变换以得到 y(t)
y_sol(t) = ilaplace(Ys_sol, s, t);
disp('常微分方程的解为:')
disp(y_sol(t))

预期输出:

常微分方程的解为:
6*exp(-2*t) - exp(-3*t)
  • 逆变换:ilaplace() 函数用于将表达式从 s 域转换回时域,如 ODE 示例所示。
  • 常见陷阱:务必使用 syms 声明所有变量(包括函数本身,如 y(t))。忘记这一点是常见的错误来源。
  • Control System Toolbox(控制系统工具箱):对于更复杂的系统分析,Control System Toolbox 提供了更高级的工具,例如 tf()(传递函数)对象,它在这些原理的基础上用于设计和分析控制系统。