非零初始條件系統的傳遞函數分析
在傳遞函數的定義中,通常假設系統滿足零初始條件。然而在實際應用中,很多系統需要處理非零初始狀態。為了探討這一問題,我們以一個一階微分方程為例進行分析。
一、一階系統的分析
考慮以下一階微分方程:
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+a1??X(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+a1??X(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;