非零初始条件系统的传递函数分析
在传递函数的定义中,通常假设系统满足零初始条件。然而在实际应用中,很多系统需要处理非零初始状态。为了探讨这一问题,我们以一个一阶微分方程为例进行分析。
一、一阶系统的分析
考虑以下一阶微分方程:
d
x
(
t
)
d
t
+
a
x
(
t
)
=
u
(
t
)
\frac{dx(t)}{dt} + ax(t) = u(t)
dtdx(t)+ax(t)=u(t)
对其两边进行拉普拉斯变换,根据线性微分方程的性质,可得:
L
[
d
x
(
t
)
d
t
+
a
x
(
t
)
]
=
L
[
u
(
t
)
]
\mathcal{L}\left[\frac{dx(t)}{dt} + ax(t)\right] = \mathcal{L}[u(t)]
L[dtdx(t)+ax(t)]=L[u(t)]
展开得到:
s
X
(
s
)
−
x
(
0
)
+
a
X
(
s
)
=
U
(
s
)
sX(s) - x(0) + aX(s) = U(s)
sX(s)−x(0)+aX(s)=U(s)
1. 零初始条件的情况
当初始条件
x
(
0
)
=
0
x(0) = 0
x(0)=0时,上式简化为:
s
X
(
s
)
+
a
X
(
s
)
=
U
(
s
)
sX(s) + aX(s) = U(s)
sX(s)+aX(s)=U(s)
系统的传递函数可定义为:
G
(
s
)
=
X
(
s
)
U
(
s
)
=
1
s
+
a
G(s) = \frac{X(s)}{U(s)} = \frac{1}{s + a}
G(s)=U(s)X(s)=s+a1
2. 非零初始条件的情况
当初始条件
x
(
0
)
≠
0
x(0) \neq 0
x(0)=0时,上式变为:
s
X
(
s
)
+
a
X
(
s
)
=
U
(
s
)
+
x
(
0
)
sX(s) + aX(s) = U(s) + x(0)
sX(s)+aX(s)=U(s)+x(0)
我们定义一个新的系统输入:
U
1
(
s
)
=
U
(
s
)
+
x
(
0
)
U_1(s) = U(s) + x(0)
U1(s)=U(s)+x(0)
代入后可以得到传递函数:
G
(
s
)
=
X
(
s
)
U
1
(
s
)
=
1
s
+
a
G(s) = \frac{X(s)}{U_1(s)} = \frac{1}{s + a}
G(s)=U1(s)X(s)=s+a1
可以看出,无论系统是否具有初始条件,其传递函数形式都是一致的。 在非零初始条件的情况下,系统的输入中会多出一个等于初始条件的附加项 x ( 0 ) x(0) x(0)。
二、非零初始条件的物理意义
根据上述分析,非零初始条件的拉普拉斯变换为
x
(
0
)
x(0)
x(0),其拉普拉斯逆变换为:
L
−
1
[
x
(
0
)
]
=
x
(
0
)
δ
(
t
)
\mathcal{L}^{-1}[x(0)] = x(0)\delta(t)
L−1[x(0)]=x(0)δ(t)
其中, δ ( t ) \delta(t) δ(t)是单位冲激函数,表示在极短的时间内释放一个单位能量。将其乘以系数 x ( 0 ) x(0) x(0)后,可以理解为瞬间施加了 x ( 0 ) x(0) x(0)个单位的能量。对于系统而言,这种瞬间施加的能量不会影响到系统的稳定性或特征分析。
三、系统框图分析
1. 零初始条件系统的框图
→ U ( s ) G ( s ) = 1 s + a → X ( s ) \xrightarrow{U(s)} \boxed{G(s)=\frac{1}{s+a}} \xrightarrow{X(s)} U(s)G(s)=s+a1X(s)
2. 非零初始条件系统的框图
→ U ( s ) → x ( 0 ) G ( s ) = 1 s + a → X ( s ) \begin{array}{c} \xrightarrow{U(s)} \\ \xrightarrow{x(0)} \end{array} \boxed{G(s)=\frac{1}{s+a}} \xrightarrow{X(s)} U(s)x(0)G(s)=s+a1X(s)
四、总结
从上述框图可以看出,无论是否具有初始条件,系统的传递函数形式均相同。非零初始条件仅在输入中引入了一项与初始状态相关的附加能量。对于高阶系统,其非零初始条件的处理思想与一阶系统一致,均可理解为瞬间赋予系统的“能量”。 这种能量的引入不会影响系统的稳定性与特征分析,但在特定分析场景中可能需要单独考虑其影响。
%% 非零初始条件系统响应分析
clc; clear; close all;
%% 系统参数定义
a = 2; % 系统参数
x0 = 1; % 非零初始条件
t = 0:0.01:5; % 时间向量(0到5秒,步长0.01)
%% 创建传递函数模型
s = tf('s');
G = 1/(s + a); % 系统传递函数
%% 场景1:零初始条件下的阶跃响应
figure;
step(G, t); % 绘制阶跃响应
title('零初始条件下的阶跃响应');
grid on;
%% 场景2:非零初始条件下的零输入响应(自然响应)
zero_input_response = x0 * exp(-a * t); % 解析解:x0*e^{-at}
figure;
plot(t, zero_input_response, 'LineWidth', 1.5);
title('非零初始条件下的零输入响应 (x(0)=1, u(t)=0)');
xlabel('时间 (秒)');
ylabel('x(t)');
grid on;
%% 场景3:非零初始条件下的阶跃响应(叠加法)
% 计算零状态阶跃响应
[step_response, t_step] = step(G, t);
% 总响应 = 零输入响应 + 零状态响应
total_response_superposition = zero_input_response' + step_response;
% 绘制叠加结果
figure;
plot(t, total_response_superposition, 'LineWidth', 1.5);
title('非零初始条件下的总响应 (叠加法)');
xlabel('时间 (秒)');
ylabel('x(t)');
grid on;
%% 场景4:状态空间模型直接计算(验证一致性)
% 转换为状态空间模型
sys_ss = ss(G); % 系统状态空间表示
% 定义输入信号(阶跃信号)
u = ones(size(t)); % u(t) = 1 的数组
% 计算带初始条件的响应
[total_response_ss, t_ss, x_state] = lsim(sys_ss, u, t, x0);
% 绘制状态空间方法结果
figure;
plot(t_ss, total_response_ss, 'r--', 'LineWidth', 1.5);
title('状态空间法计算的非零初始条件响应');
xlabel('时间 (秒)');
ylabel('x(t)');
grid on;
%% 场景5:方法对比(叠加法 vs 状态空间法)
figure;
hold on;
plot(t, total_response_superposition, 'b', 'LineWidth', 1.5);
plot(t_ss, total_response_ss, 'r--', 'LineWidth', 1);
legend('叠加法', '状态空间法');
title('响应方法对比');
xlabel('时间 (秒)');
ylabel('x(t)');
grid on;
hold off;
% 计算两种方法的最大误差
error = max(abs(total_response_superposition - total_response_ss));
disp(['最大绝对误差: ', num2str(error)]);
%% 场景6:等效输入法(将初始条件视为冲激输入)
% 构造等效输入 u_equiv(t) = u(t) + x0*δ(t)
delta = zeros(size(t));
delta(1) = x0/(t(2)-t(1)); % 离散冲激近似(强度x0)
u_equiv = u + delta; % 等效输入信号
% 计算等效输入的零状态响应
equiv_response = lsim(G, u_equiv, t);
% 对比等效输入法与叠加法
figure;
hold on;
plot(t, total_response_superposition, 'b', 'LineWidth', 1.5);
plot(t, equiv_response, 'g--', 'LineWidth', 1);
legend('叠加法', '等效输入法');
title('等效输入法对比');
xlabel('时间 (秒)');
ylabel('x(t)');
grid on;
hold off;