介绍
状态空间模型通常是用来描述动态系统随时间变化的数学模型,它由状态方程和观测方程组成。对于连续时间的状态空间模型,我们有时需要将其离散化,以便在数字计算机上进行处理。常见的离散化方法有:
- 欧拉方法(Forward Euler Method):
○ 最直接的一种离散化方法,通过用差分近似导数来实现。
○ 对于状态方程 x ˙ ( t ) = A x ( t ) + B u ( t ) \dot{x}(t) = Ax(t) + Bu(t) x˙(t)=Ax(t)+Bu(t),离散化形式为 x k + 1 = x k + T ( A x k + B u k ) x_{k+1} = x_k + T(Ax_k + Bu_k) xk+1=xk+T(Axk+Buk),其中 T T T是采样周期。 - 后向欧拉方法(Backward Euler Method):
○ 一种隐式的离散化方法,稳定性比前向欧拉方法好。
○ 离散形式为 x k + 1 = x k + T ( A x k + 1 + B u k ) x_{k+1} = x_k + T(Ax_{k+1} + Bu_k) xk+1=xk+T(Axk+1+Buk),需要在每一步解一个线性方程组。 - 梯形规则(Trapezoidal Rule):
○ 结合了前向欧拉方法和后向欧拉方法,通过取平均值以获得更高的精确度。
○ 离散方程为 x k + 1 = x k + T 2 ( A x k + A x k + 1 + B u k + B u k + 1 ) x_{k+1} = x_k + \frac{T}{2}(Ax_k + Ax_{k+1} + Bu_k + Bu_{k+1}) xk+1=xk+2T(Axk+Axk+1+Buk+Buk+1)。 - ZOH(Zero-Order Hold):
○ 在采样周期内,输入 u ( t ) u(t) u(t) 被认为是恒定的,这是最常用的离散化方法之一。
○ 利用拉普拉斯变换和反变换,可以得到精确的离散时间系统模型。 - 双线性变换(Bilinear Transformation/Tustin Method):
○ 一种将连续时间系统的s域(拉普拉斯变换域)转换到离散时间系统的z域(Z变换域)的方法,可以保持系统稳定性和频率响应的特性。
○ 变换公式为 s = 2 T z − 1 z + 1 s = \frac{2}{T}\frac{z-1}{z+1} s=T2z+1z−1,其中 T T T 是采样周期。 - 极点匹配法:
○ 直接将连续系统的极点转换为离散系统的极点,以保持系统动态特性。
每种方法都有其适用场景和优缺点。在实际应用中,选择哪种离散化方法取决于具体问题的需求,如系统的稳定性、精确度要求、计算复杂性以及实现的难易程度等。通常,这些方法可以在各种科学和工程计算软件中找到实现。
欧拉方法(Forward Euler Method)
欧拉方法是一种用于数值求解常微分方程初值问题(即,给定初始条件的常微分方程)的最简单形式的一步求解法。它也是最直观的数值方法之一,基于对微分方程的直接离散化。
常微分方程的一般形式可以表示为:
d y d t = f ( t , y ( t ) ) , y ( t 0 ) = y 0 \frac{dy}{dt} = f(t, y(t)), \quad y(t_0) = y_0 dtdy=f(t,y(t)),y(t0)=y0
其中, y ( t ) y(t) y(t) 是我们想要求解的函数, f ( t , y ( t ) ) f(t, y(t)) f(t,y(t)) 是给定的函数, y ( t 0 ) = y 0 y(t_0) = y_0 y(t0)=y0 是初始条件。
欧拉方法是这样工作的:
- 初始化:从初始条件 y ( t 0 ) = y 0 y(t_0) = y_0 y(t0)=y0 开始,选择一个小的步长 h h h(也称为时间步长或步长),这决定了离散时间点的间隔。
- 迭代:对于每个连续的点 t n + 1 = t n + h t_{n+1} = t_n + h tn+1=tn+h,使用下面的公式来计算 y y y的下一个估计值 y n + 1 y_{n+1} yn+1:
y n + 1 = y n + h ⋅ f ( t n , y n ) y_{n+1} = y_n + h \cdot f(t_n, y_n) yn+1=yn+h⋅f(tn,yn)
这里, f ( t n , y n ) f(t_n, y_n) f(tn,yn) 是微分方程在时间 t n t_n tn 和估计的 y n y_n yn 处的导数值。 - 循环:重复上面的步骤,直到覆盖整个区间。
欧拉方法可以被看作是微分的直接离散化。我们知道,微分 d y d t \frac{dy}{dt} dtdy 是函数 y ( t ) y(t) y(t) 在 t t t上的瞬时变化率。所以,在连续的框架下, d y = f ( t , y ( t ) ) ⋅ d t dy = f(t, y(t)) \cdot dt dy=f(t,y(t))⋅dt。在离散框架下,我们用 y n + 1 − y n y_{n+1} - y_n yn+1−yn来近似 d y dy dy,用 h h h 来近似 d t dt dt,所以我们得到 y n + 1 = y n + f ( t n , y n ) ⋅ h y_{n+1} = y_n + f(t_n, y_n) \cdot h yn+1=yn+f(tn,yn)⋅h。
尽管欧拉方法简单易懂,它也有一些明显的缺点:
● 准确性:欧拉方法是一种一阶方法,这意味着局部截断误差是 O ( h 2 ) O(h^2) O(h2),而全局截断误差是 O ( h ) O(h) O(h)。这意味着要达到较高的精度需要很小的步长,这会导致更多的计算。
● 稳定性:对于某些类型的问题,特别是当 f ( t , y ) f(t, y) f(t,y) 是关于 y y y 很强的函数时,欧拉方法可能会变得不稳定,除非采取非常小的步长。
因此,尽管欧拉方法适用于对计算精度要求不高或者对计算资源限制不大的情况,但在实际应用中,人们往往会使用更高级的方法,如Runge-Kutta方法,这些方法可以在每一步提供更高的精确度,而不必显著减小步长。
后向欧拉方法(Backward Euler Method)
后向欧拉方法(Backward Euler Method)也称为隐式欧拉方法,是一种用于数值求解常微分方程初值问题的一步求解法。与显式欧拉方法(或简称欧拉方法)不同,后向欧拉方法是一种隐式求解方法,因此在每一步都需要求解一个方程或方程组。它通常应用于求解刚性(stiff)常微分方程,因为其在这类问题上表现出较好的稳定性。
假设我们有一个一阶常微分方程如下:
d y d t = f ( t , y ( t ) ) , y ( t 0 ) = y 0 \frac{dy}{dt} = f(t, y(t)), \quad y(t_0) = y_0 dtdy=f(t,y(t)),y(t0)=y0
其中 y ( t ) y(t) y(t) 是我们想要求解的函数, f ( t , y ( t ) ) f(t, y(t)) f(t,y(t))是给定的函数, y ( t 0 ) = y 0 y(t_0) = y_0 y(t0)=y0 是已知的初始条件。
后向欧拉方法的工作原理如下:
- 初始化:从初始条件 y ( t 0 ) = y 0 y(t_0) = y_0 y(t0)=y0 开始,选择一个步长 h h h。
- 迭代:对于每个连续的点 t n + 1 = t n + h t_{n+1} = t_n + h tn+1=tn+h,计算 y y y 的下一个值 y n + 1 y_{n+1} yn+1 使用下面的公式:
y n + 1 = y n + h ⋅ f ( t n + 1 , y n + 1 ) y_{n+1} = y_n + h \cdot f(t_{n+1}, y_{n+1}) yn+1=yn+h⋅f(tn+1,yn+1)
注意这与显式欧拉方法不同,显式欧拉方法中的导数是在当前估计值 (t_n, y_n) 处计算的,而后向欧拉方法中的导数是在下一个未知值 t n + 1 , y n + 1 t_{n+1}, y_{n+1} tn+1,yn+1 处计算的。 - 求解:在每个步骤中,上述方程需要求解 y n + 1 y_{n+1} yn+1,因为它是隐式的。这通常涉及到求解一个非线性方程或方程组,可以使用牛顿法 N e w t o n ′ s m e t h o d Newton's method Newton′smethod或其他数值方法进行求解。
后向欧拉方法的优点:
● 稳定性:对于刚性问题,后向欧拉方法比显式方法(如普通欧拉方法)更稳定。
● 隐式方法:虽然隐式方法需要在每一步求解方程,但它们允许更大的步长而不牺牲稳定性。
缺点:
● 计算成本:每一步需要求解方程,这可能导致更高的计算成本,尤其是对于非线性问题。
● 难度:对于复杂的方程,每一步求解可能是困难的或计算成本极高。
后向欧拉方法的局部截断误差是 O ( h 2 ) O(h^2) O(h2),全局截断误差是 O ( h ) O(h) O(h)(与显式欧拉方法相同)。但由于其改进的稳定性特性,后向欧拉方法在处理刚性问题时通常是更好的选择,尽管其计算成本更高。在实际应用中,后向欧拉方法经常与其他技术结合使用,比如预测-校正方法,以提高其效率。
梯形规则(Trapezoidal Rule)
梯形规则(Trapezoidal Rule)是一种在数值分析中用于近似计算定积分(即函数在某个区间上的积分)的方法。除了用于积分近似,梯形规则也可以用于离散化连续时间系统的状态空间模型。在这里,我将重点介绍它在数值积分和离散化两个方面的应用。
梯形规则在数值积分中的应用
梯形规则基于线性插值,将被积函数近似为一系列线性段。具体来说,想象将积分区间 [ a , b ] [a, b] [a,b] 划分为 N N N 个小区间,每个区间的宽度相同,为 h = b − a N h = \frac{b - a}{N} h=Nb−a。在每个小区间 [ x i , x i + 1 ] [x_i, x{i+1}] [xi,xi+1],函数 f ( x ) f(x) f(x) 被一个经过点 ( x i , f ( x i ) ) (x_i, f(x_i)) (xi,f(xi))和 ( x i + 1 , f ( x i + 1 ) ) (x_{i+1}, f(x_{i+1})) (xi+1,f(xi+1)) 的直线段替代,形成一个梯形。梯形面积可以很容易计算,因此整个区间的积分近似为所有梯形面积之和。
数学表达为:
∫ a b f ( x ) , d x ≈ h 2 [ f ( a ) + 2 ∑ i = 1 N − 1 f ( x i ) + f ( b ) ] \int{a}^{b} f(x) , dx \approx \frac{h}{2} \left [ f(a) + 2 \sum{i=1}^{N-1} f(x_i) + f(b) \right ] ∫abf(x),dx≈2h[f(a)+2∑i=1N−1f(xi)+f(b)]
这里, x i = a + i h x_i = a + ih xi=a+ih,其中 i = 0 , 1 , . . . , N i = 0, 1, ..., N i=0,1,...,N。
梯形规则是一种二阶精确方法,意味着它的误差项与 h 2 h^2 h2成正比。
梯形规则在状态空间模型离散化中的应用
将梯形规则应用于连续时间状态空间模型的离散化时,通常是为了创建离散时间系统模型。对于线性连续系统:
x ˙ ( t ) = A x ( t ) + B u ( t ) \dot{x}(t) = Ax(t) + Bu(t) x˙(t)=Ax(t)+Bu(t)
梯形规则的应用导致下面的离散时间近似:
x ( ( k + 1 ) T ) = x ( k T ) + T 2 ( A x ( k T ) + A x ( ( k + 1 ) T ) + B u ( k T ) + B u ( ( k + 1 ) T ) ) x((k+1)T) = x(kT) + \frac{T}{2} (A x(kT) + A x((k+1)T) + Bu(kT) + Bu((k+1)T)) x((k+1)T)=x(kT)+2T(Ax(kT)+Ax((k+1)T)+Bu(kT)+Bu((k+1)T))
这里, T T T 是采样时间, k k k 是离散时间索引。
在离散化过程中,我们需要解决 x ( ( k + 1 ) T ) x((k+1)T) x((k+1)T)的隐式方程。假设输入 u ( t ) u(t) u(t) 在采样间隔内保持恒定,即 u ( ( k + 1 ) T ) = u ( k T ) u((k+1)T) = u(kT) u((k+1)T)=u(kT),则离散化方程简化为:
x k + 1 = x k + T 2 ( A x k + A x k + 1 + B u k + B u k ) x_{k+1} = x_k + \frac{T}{2} (A x_k + A x{k+1} + B u_k + B u_k) xk+1=xk+2T(Axk+Axk+1+Buk+Buk)
这可以进一步整理为:
( I − T 2 A ) x k + 1 = ( I + T 2 A ) x k + T B u k (I - \frac{T}{2} A) x_{k+1} = (I + \frac{T}{2} A) x_k + T B u_k (I−2TA)xk+1=(I+2TA)xk+TBuk
其中 I I I是单位矩阵。为了计算 x k + 1 x_{k+1} xk+1,必须求解上述线性方程组。这通常可以通过直接方法(例如LU分解)或迭代方法完成。
梯形规则在离散化方面的优点包括相对较好的数值稳定性和适中的精确度,使其适用于各种连续时间系统的离散时间模拟。
零阶保持器(Zero-Order Hold,ZOH)
零阶保持器(Zero-Order Hold,ZOH)是一种在数字控制和数字信号处理领域常用的数学模型或函数,用于在采样和数字到模拟转换(DAC)过程中保持信号的恒定值。ZOH通常用在连续时间信号被离散时间系统处理时,将数字信号转换回其连续时间形式。
在数字到模拟转换过程中,ZOH的作用是在连续时间信号的每个采样点上保持信号值恒定,直到下一个采样点的值准备好。这样,它在每个采样间隔内创建了一个阶跃函数,直到下一个采样值取代当前值为止。
具体来说,如果我们有一个离散时间信号 u [ k ] u[k] u[k],其中 k k k 是离散时间索引,并且我们知道采样周期为 T T T,则ZOH会在 t = k T t=kT t=kT 到 t = ( k + 1 ) T t=(k+1)T t=(k+1)T 期间将连续时间信号 u ( t ) u(t) u(t)保持为 u [ k ] u[k] u[k]。
数学上,ZOH可以定义为一个连续时间信号 u ( t ) u(t) u(t),它是由离散时间信号 u [ k ] u[k] u[k]通过ZOH操作得到的:
u ( t ) = u [ k ] for k T ≤ t < ( k + 1 ) T u(t) = u[k] \quad \text{for} \quad kT \leq t < (k+1)T u(t)=u[k]forkT≤t<(k+1)T
在控制系统的离散化中,ZOH的应用至关重要。当设计数字控制器来操纵一个连续时间系统时,需要一个模型来描述在采样点之间系统的行为。ZOH模型假设在每个采样间隔内控制输入保持不变。
在状态空间表示中,连续时间系统经常表示为:
x ˙ ( t ) = A x ( t ) + B u ( t ) \dot{x}(t) = Ax(t) + Bu(t) x˙(t)=Ax(t)+Bu(t)
其中, x ( t ) x(t) x(t)是状态向量, u ( t ) u(t) u(t)是输入信号。如果输入信号 u ( t ) u(t) u(t)由ZOH生成,则在每个采样间隔 [ k T , ( k + 1 ) T ) [kT, (k+1)T) [kT,(k+1)T) 内, u ( t ) u(t) u(t) 保持为 u [ k ] u[k] u[k]。
在这种情况下,离散时间系统模型可以通过考虑ZOH和连续时间系统动态来得到。离散时间状态方程通常可以表示为:
x [ k + 1 ] = A d x [ k ] + B d u [ k ] x[k+1] = A_d x[k] + B_d u[k] x[k+1]=Adx[k]+Bdu[k]
其中 A d A_d Ad和 B d B_d Bd是考虑到ZOH效应的离散时间系统矩阵,它们可以通过连续时间系统的矩阵 A A A和 B B B以及采样时间 T T T计算得到。具体计算过程通常涉及矩阵指数和积分的概念。
ZOH的主要优点是简单易行;它提供了一种方便的方法来近似在采样间隔内的系统行为,并且是实际数字到模拟转换器的工作方式的良好近似。然而,ZOH引入了一定的近似误差,特别是在信号频率接近或超过采样频率的一半(奈奎斯特频率)时。在这些情况下,可能需要更高阶的保持器来减少重构信号的误差。
双线性变换(Bilinear Transformation/Tustin Method)
双线性变换,也称为Tustin方法或Tustin变换,是将连续时间系统的传递函数转换为离散时间系统传递函数的一种常用技术。这种变换在数字信号处理和控制系统设计中尤其重要,因为它允许工程师将设计好的连续时间控制器转换为可以在数字计算机或微控制器上实现的离散时间控制器。
双线性变换基于s域(Laplace变换域)和z域(Z变换域)之间的映射。连续时间系统的动态通常是通过Laplace变换域中的变量s来描述的,而离散时间系统的动态则通过Z变换域中的变量z来描述。
双线性变换的定义
双线性变换将s域与z域通过以下关系联系起来:
s = 2 T ⋅ 1 − z − 1 1 + z − 1 s = \frac{2}{T} \cdot \frac{1 - z^{-1}}{1 + z^{-1}} s=T2⋅1+z−11−z−1
或者重新排列为:
z = 1 + T 2 s 1 − T 2 s z = \frac{1 + \frac{T}{2} s}{1 - \frac{T}{2} s} z=1−2Ts1+2Ts
其中, T T T是采样周期, s s s 是连续时间复变量, z z z是离散时间复变量。
这种变换保证了单位圆盘内的z域映射到s域的左半平面,这一点对于系统稳定性是至关重要的。双线性变换是一种保频率方法,它可以将s域的无穷远点映射到z域的单位圆上,从而有助于保持原始连续时间系统的相位特性。
应用双线性变换
当你有一个连续时间系统的传递函数 H ( s ) H(s) H(s) 并希望获得相应的离散时间传递函数 H ( z ) H(z) H(z) 时,你可以直接将上述双线性变换关系代入 H ( s ) H(s) H(s)中 s s s的每个实例。这将产生一个新的函数,其中的变量是 z z z 而不是 s s s。
双线性变换的优点
● 它保留了原始系统的稳定性特性。
● 它是一种保频率映射方法,频率响应的重要特性(如截止频率和带宽)可以被较好地保持。
双线性变换的局限性
● 频率翘曲(Warping):由于双线性变换是非线性的,它会在频率变换过程中造成翘曲,特别是在高频部分。这可以通过预翘曲技术预先补偿,以确保在关键频率处有精确的匹配。
● 变换后的系统中会引入额外的极点和零点,这可能会影响系统的频率响应。
由于上述优点和局限性,双线性变换是工程师在实现数字控制器设计时的一个重要工具,它允许将在频率域内设计的连续时间控制策略转换为可在数字平台上实施的离散时间控制策略。在实际应用中,通常需要使用预翘曲来校正高频处的翘曲效应,并确保系统在关键频率(例如截止频率)处表现出预期的行为。
极点匹配法(Pole Matching Method)
极点匹配法(Pole Matching Method)是将连续时间控制器设计转换为离散时间设计的一种技术,主要用于数字控制系统。该方法侧重于确保离散系统的极点位置与连续系统的极点位置相对应,以保持系统动态特性的一致性。
这种方法基于这样的理念:连续系统的动态行为大部分由其极点(即系统传递函数分母多项式的根)决定,而离散系统的动态行为则由其在z域的极点决定。因此,通过令离散系统的z域极点对应于连续系统的s域极点的某种映射,可以尝试保留系统的动态性能。
极点匹配法的步骤
极点匹配法包括以下步骤:
- 确定连续系统极点:
首先,需要确定连续时间控制系统的极点,这些极点通常由系统传递函数 H ( s ) H(s) H(s) 的分母多项式的根给出。 - 极点转换:
其次,将这些极点从连续时间的s域转换到离散时间的z域。这通常通过使用特定的变换完成,例如前向欧拉法(对应于 z = 1 + s T z = 1 + sT z=1+sT)或后向欧拉法(对应于 z = 1 1 − s T z = \frac{1}{1 - sT} z=1−sT1),其中 T T T 是采样周期。 - 设计离散时间控制器:
接着,根据转换后的极点设计一个离散时间控制器,确保在z域内的极点位置与转换后的连续时间系统的极点相匹配。 - 验证和调整:
最后,验证离散时间系统的性能是否符合连续时间设计的要求。在实际中,由于转换过程可能会引入一些动态性能上的差异,这一步可能需要调整或优化设计来满足性能标准。
极点匹配法的优缺点
优点:
● 直观易懂:极点匹配法直观且易于理解,因为它尝试直接保持系统的动态性能。
● 实现简单:该方法的实现相对简单,不需要复杂的数学运算。
缺点:
● 动态特性的变化:由于离散化过程本身的性质,可能无法完全保持连续系统的动态特性,特别是在高频区域的性能。
● 不是唯一方法:极点匹配法不是保持系统性能唯一或最优的方法。在某些情况下,可能需要结合其他方法来优化离散时间控制器的设计。
● 采样率限制:该方法的有效性受到采样率的限制;如果采样率不够高,就可能无法适当地模拟连续时间系统的行为。
极点匹配法在实践中可能需要与其他设计考虑相结合,例如考虑系统的零点位置、增益匹配以及离散化过程中可能出现的频率混叠等现象。在设计过程中,可能还需要采用试错方法来找到最佳的控制器参数。