滤波算法数学前置——线性化

线性化

线性系统:应符合叠加原理。

若对于系统 x ˙ = f ( x ) \dot x = f(x) x˙=f(x),有:

  • x 1 , x 2 x_1,\ x_2 x1, x2是解
  • x 3 = k 1 x 1 + k 2 x 2 ( k 1 k 2 为常数 ) x_3 = k_1x_1 + k_2x_2\ (k_1\ k_2为常数) x3=k1x1+k2x2 (k1 k2为常数)
  • x 3 x_3 x3是解

则该系统为线性的。

例:
x ¨ + 2 x ˙ + 2 x = 0 ① x ¨ + 2 x ˙ + 2 x 2 = 0 ② x ¨ + sin ⁡ x ˙ + 2 x = 0 ③ \begin{align} \ddot x + 2\dot x + \sqrt 2x &= 0\ ①\\ \ddot x + 2\dot x + \sqrt 2x^2 &= 0\ ②\\ \ddot x + \sin\dot x + \sqrt 2x &= 0\ ③ \end{align} x¨+2x˙+2 xx¨+2x˙+2 x2x¨+sinx˙+2 x=0 ①=0 ②=0 ③

①线性,②第三项非线性,③第二项非线性。

要线性化一个系统,要用到泰勒级数/泰勒展开。

f ( x ) = f ( x 0 ) + f ′ ( x 0 ) 1 ! ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + ⋯ + f ( n ) ( x 0 ) n ! ( x − x 0 ) n f(x)=f(x_0)+\frac{f'(x_0)}{1!}(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+\dots + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n f(x)=f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+⋯+n!f(n)(x0)(x−x0)n

若 x − x 0 → 0 x-x_0 \rightarrow 0 x−x0→0,则高阶项 ( x − x 0 ) n ( n ≥ 2 ) (x-x_0)^n\ (n \ge 2) (x−x0)n (n≥2) 可以忽略。

则:
f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) = f ( x 0 ) − f ′ ( x 0 ) x 0 + f ′ ( x 0 ) x = k 2 x + b ( 其中 k 2 = f ′ ( x 0 ) , b = f ( x 0 ) − f ′ ( x 0 ) x 0 ) \begin{align} f(x) &\approx f(x_0)+f'(x_0)(x-x_0)\\ &= f(x_0) - f'(x_0)x_0 + f'(x_0)x \\ &= k_2x+b \quad (\text{其中 } k_2 = f'(x_0), b = f(x_0) - f'(x_0)x_0) \end{align} f(x)≈f(x0)+f′(x0)(x−x0)=f(x0)−f′(x0)x0+f′(x0)x=k2x+b(其中 k2=f′(x0),b=f(x0)−f′(x0)x0)

这就是线性化的过程。

为什么泰勒展开可以线性化?因为泰勒展开的第0项为常数,第一项为线性项,第二三四项为高次项。

取前两项作为近似结果,得到的就是线性的函数。

**例一:**将 f ( x ) = sin ⁡ x f(x)=\sin x f(x)=sinx 在 x 0 = 0 x_0=0 x0=0 附近线性化。
f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) 因为 f ( x ) = sin ⁡ x , f ′ ( x ) = cos ⁡ x 所以 f ( 0 ) = sin ⁡ 0 = 0 , f ′ ( 0 ) = cos ⁡ 0 = 1 f ( x ) ≈ 0 + 1 ⋅ ( x − 0 ) f ( x ) ≈ x \begin{align} f(x) &\approx f(x_0) + f'(x_0)(x-x_0) \\ \text{因为 } f(x) &= \sin x, f'(x) = \cos x \\ \text{所以 } f(0) &= \sin 0 = 0, f'(0) = \cos 0 = 1 \\ f(x) &\approx 0 + 1 \cdot (x-0) \\ f(x) &\approx x \end{align} f(x)因为 f(x)所以 f(0)f(x)f(x)≈f(x0)+f′(x0)(x−x0)=sinx,f′(x)=cosx=sin0=0,f′(0)=cos0=1≈0+1⋅(x−0)≈x

Check:

当 x = π 6 x = \frac{\pi}{6} x=6π (即 30°) 时:

  • 精确值: f ( π 6 ) = sin ⁡ π 6 = 0.5 f(\frac{\pi}{6}) = \sin \frac{\pi}{6} = 0.5 f(6π)=sin6π=0.5
  • 近似值: x = π 6 ≈ 3.14159 6 ≈ 0.5236 x = \frac{\pi}{6} \approx \frac{3.14159}{6} \approx 0.5236 x=6π≈63.14159≈0.5236

只有在 x x x与 x 0 x_0 x0非常接近时,才可以忽略展开的平方项,这样的线性化是局部的线性化而非全局的,当线性化的区域越接近于线性化的这个点( x 0 x_0 x0),准确率越高。


**例二:**对于: x ¨ + x ˙ + 1 x = 1 \ddot x + \dot x + \frac 1 x = 1 x¨+x˙+x1=1 在平衡点附近线性化

  1. 寻找平衡点:

    x ¨ = x ˙ = 0 ⇒ 1 x = 1 ⇒ x 0 = 1 \ddot x = \dot x = 0 \Rightarrow \frac 1 x = 1 \Rightarrow x_0 = 1 x¨=x˙=0⇒x1=1⇒x0=1,此时 x 0 x_0 x0 为平衡点

  2. 引入偏差变量:

    在 x 0 x_0 x0附近进行线性化,引入 x δ = x 0 + x d x_\delta = x_0 + x_d xδ=x0+xd, x d x_d xd为对于 x 0 x_0 x0的微小偏差

带入原式: x ¨ δ + x ˙ δ + 1 x δ = 1 \ddot x_\delta + \dot x_\delta + \frac{1}{x_\delta} = 1 x¨δ+x˙δ+xδ1=1,则 1 x δ \frac 1 {x_\delta} xδ1为非线性项,令 f ( x ) = 1 x δ f(x)=\frac{1}{x_\delta} f(x)=xδ1,在 x 0 = 1 x_0 = 1 x0=1 处进行线性化。

  1. 线性化非线性项:

    由泰勒展开:

f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) 又 : f ′ ( x ) = d d x ( 1 x ) = − 1 x 2 则 : f ′ ( x 0 ) = − 1 又 : x δ = x 0 + x d 则 : f ( x δ ) = 1 − x d 1 x δ = 1 − x d \begin{align} &&f(x) &\approx f(x_0) + f'(x_0)(x-x_0)\\ 又:&&f'(x) &= \frac{d}{dx} \left( \frac{1}{x} \right) = -\frac{1}{x^2}\\ 则:&&f'(x_0)&=-1\\ 又:&&x_\delta&=x_0 + x_d\\ 则:&&f(x_\delta)&=1-x_d\\ &&\frac{1}{x_\delta}&=1-x_d\\ \end{align} 又:则:又:则:f(x)f′(x)f′(x0)xδf(xδ)xδ1≈f(x0)+f′(x0)(x−x0)=dxd(x1)=−x21=−1=x0+xd=1−xd=1−xd

即:当 x δ x_\delta xδ非常接近 1 1 1时, 1 x δ \frac{1}{x_\delta} xδ1的关系可以被 1 − x d 1-x_d 1−xd近似,可以用其代替非线性关系

  1. 得到线性化方程:

    带入原微分方程得:

x ¨ d + x ˙ d + ( 1 − x d ) = 1 x ¨ d + x ˙ d − x d = 0 \begin{align} \ddot x_d+\dot x_d+(1-x_d)&=1\\ \ddot x_d+\dot x_d - x_d &= 0 \end{align} x¨d+x˙d+(1−xd)x¨d+x˙d−xd=1=0


多维系统线性化:

对于二维系统:
x ˙ = f ( x , y ) y ˙ = g ( x , y ) ⇒ x ˙ = f ( x 0 , y 0 ) = 0 y ˙ = g ( x 0 , y 0 ) = 0 ⇒ ( x 0 , y 0 ) \begin{matrix} \dot x = f(x,y)\\ \dot y = g(x,y) \end{matrix} \Rightarrow \begin{matrix} \dot x = f(x_0,y_0) = 0\\ \dot y = g(x_0,y_0) = 0 \end{matrix} \Rightarrow (x_0, y_0) x˙=f(x,y)y˙=g(x,y)⇒x˙=f(x0,y0)=0y˙=g(x0,y0)=0⇒(x0,y0)

在平衡点 ( x 0 , y 0 ) (x_0, y_0) (x0,y0)附近引入偏差变量:
x δ = x 0 + x d y δ = y 0 + y d ⇒ x ˙ δ = x ˙ d y ˙ δ = y ˙ d \begin{matrix} x_\delta=x_0+x_d\\ y_\delta=y_0+y_d \end{matrix} \Rightarrow \begin{matrix} \dot x_\delta = \dot x_d\\ \dot y_\delta = \dot y_d \end{matrix} xδ=x0+xdyδ=y0+yd⇒x˙δ=x˙dy˙δ=y˙d

对 f ( x , y ) f(x,y) f(x,y) 和 g ( x , y ) g(x,y) g(x,y) 在 ( x 0 , y 0 ) (x_0, y_0) (x0,y0) 点进行多元泰勒展开,并只保留到一阶项:
f ( x , y ) = f ( x 0 , y 0 ) + ∂ f ∂ x ∣ ( x 0 , y 0 ) ( x − x 0 ) + ∂ f ∂ y ∣ ( x 0 , y 0 ) ( y − y 0 ) f(x,y) = f(x_0, y_0) + \left. \frac{\partial f}{\partial x} \right|{(x_0,y_0)} (x - x_0) + \left. \frac{\partial f}{\partial y} \right|{(x_0,y_0)} (y - y_0) f(x,y)=f(x0,y0)+∂x∂f (x0,y0)(x−x0)+∂y∂f (x0,y0)(y−y0)

g ( x , y ) = g ( x 0 , y 0 ) + ∂ g ∂ x ∣ ( x 0 , y 0 ) ( x − x 0 ) + ∂ g ∂ y ∣ ( x 0 , y 0 ) ( y − y 0 ) g(x,y) = g(x_0, y_0) + \left. \frac{\partial g}{\partial x} \right|{(x_0,y_0)} (x - x_0) + \left. \frac{\partial g}{\partial y} \right|{(x_0,y_0)} (y - y_0) g(x,y)=g(x0,y0)+∂x∂g (x0,y0)(x−x0)+∂y∂g (x0,y0)(y−y0)

代入原状态方程,并利用 f ( x 0 , y 0 ) = 0 , g ( x 0 , y 0 ) = 0 f(x_0, y_0)=0, g(x_0, y_0)=0 f(x0,y0)=0,g(x0,y0)=0 以及 x δ − x 0 = x d , y δ − y 0 = y d x_\delta-x_0=x_d, y_\delta-y_0=y_d xδ−x0=xd,yδ−y0=yd,得到:
x ˙ δ = x ˙ d = f ( x 0 , y 0 ) + ∂ f ∂ x ∣ ( x 0 , y 0 ) ( x − x 0 ) + ∂ f ∂ y ∣ ( x 0 , y 0 ) ( y − y 0 ) = ∂ f ∂ x ∣ ( x 0 , y 0 ) x d + ∂ f ∂ y ∣ ( x 0 , y 0 ) y d y ˙ δ = y ˙ d = g ( x 0 , y 0 ) + ∂ g ∂ x ∣ ( x 0 , y 0 ) ( x − x 0 ) + ∂ g ∂ y ∣ ( x 0 , y 0 ) ( y − y 0 ) = ∂ g ∂ x ∣ ( x 0 , y 0 ) x d + ∂ g ∂ y ∣ ( x 0 , y 0 ) y d \begin{align} \dot x_\delta = \dot x_d &= f(x_0, y_0) + \left. \frac{\partial f}{\partial x} \right|{(x_0,y_0)} (x - x_0) + \left. \frac{\partial f}{\partial y} \right|{(x_0,y_0)} (y - y_0)\\ &= \left. \frac{\partial f}{\partial x} \right|{(x_0,y_0)} x_d + \left. \frac{\partial f}{\partial y} \right|{(x_0,y_0)} y_d\\ \dot y_\delta = \dot y_d &= g(x_0, y_0) + \left. \frac{\partial g}{\partial x} \right|{(x_0,y_0)} (x - x_0) + \left. \frac{\partial g}{\partial y} \right|{(x_0,y_0)} (y - y_0)\\ &= \left. \frac{\partial g}{\partial x} \right|{(x_0,y_0)} x_d + \left. \frac{\partial g}{\partial y} \right|{(x_0,y_0)} y_d \end{align} x˙δ=x˙dy˙δ=y˙d=f(x0,y0)+∂x∂f (x0,y0)(x−x0)+∂y∂f (x0,y0)(y−y0)=∂x∂f (x0,y0)xd+∂y∂f (x0,y0)yd=g(x0,y0)+∂x∂g (x0,y0)(x−x0)+∂y∂g (x0,y0)(y−y0)=∂x∂g (x0,y0)xd+∂y∂g (x0,y0)yd

这是一个关于微小偏差 ( x d , y d ) (x_d,y_d) (xd,yd)的线性常微分方程组。

写成雅可比矩阵:

x ˙ d y ˙ d \] = \[ ∂ f ∂ x ∂ f ∂ y ∂ g ∂ x ∂ g ∂ y \] ∣ x 0 , y 0 \[ x d y d \] ⇒ X ˙ d = J ( x 0 , y 0 ) X d \\begin{bmatrix} \\dot x_d\\\\ \\dot y_d \\end{bmatrix}= \\left. \\begin{bmatrix} \\frac{\\partial f}{\\partial x} \& \\frac{\\partial f}{\\partial y}\\\\ \\frac{\\partial g}{\\partial x} \& \\frac{\\partial g}{\\partial y} \\end{bmatrix} \\right\|_{x_0,y_0} \\begin{bmatrix} x_d\\\\ y_d \\end{bmatrix} \\Rightarrow \\dot X_d=J(x_0,y_0)X_d \[x˙dy˙d\]=\[∂x∂f∂x∂g∂y∂f∂y∂g\] x0,y0\[xdyd\]⇒X˙d=J(x0,y0)Xd 其中 X d = \[ x d y d \] J = \[ ∂ f ∂ x ∂ f ∂ y ∂ g ∂ x ∂ g ∂ y \] X_d = \\begin{bmatrix} x_d\\\\ y_d \\end{bmatrix} \\\\ J = \\begin{bmatrix} \\frac{\\partial f}{\\partial x} \& \\frac{\\partial f}{\\partial y}\\\\ \\frac{\\partial g}{\\partial x} \& \\frac{\\partial g}{\\partial y} \\end{bmatrix} Xd=\[xdyd\]J=\[∂x∂f∂x∂g∂y∂f∂y∂g

再次分析例二: x ¨ + x ˙ + 1 x = 1 \ddot x + \dot x + \frac 1 x = 1 x¨+x˙+x1=1

  1. 建立状态空间方程:

    选择状态变量 x 1 = x , x 2 = x ˙ x_1 = x, x_2 = \dot x x1=x,x2=x˙。
    { x ˙ 1 = x 2 ( = f ( x 1 , x 2 ) ) x ˙ 2 = x ¨ = 1 − 1 x 1 − x 2 ( = g ( x 1 , x 2 ) ) \begin{cases} \dot x_1 = x_2 & (= f(x_1, x_2)) \\ \dot x_2 = \ddot x = 1 - \frac{1}{x_1} - x_2 & (= g(x_1, x_2)) \end{cases} {x˙1=x2x˙2=x¨=1−x11−x2(=f(x1,x2))(=g(x1,x2))

  2. 找到平衡点:

    令 x ˙ 1 = 0 , x ˙ 2 = 0 \dot x_1 = 0, \dot x_2 = 0 x˙1=0,x˙2=0,得 x 2 = 0 x_2=0 x2=0 且 1 − 1 x 1 − x 2 = 0 1 - \frac{1}{x_1} - x_2 = 0 1−x11−x2=0。

    解得平衡点 ( x 10 , x 20 ) = ( 1 , 0 ) (x_{10}, x_{20}) = (1, 0) (x10,x20)=(1,0)。

  3. 计算雅可比矩阵 J J J:
    J = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ∂ g ∂ x 1 ∂ g ∂ x 2 ] = [ 0 1 1 x 1 2 − 1 ] J = \begin{bmatrix} \frac{\partial f}{\partial x_1} & \frac{\partial f}{\partial x_2}\\ \frac{\partial g}{\partial x_1} & \frac{\partial g}{\partial x_2} \end{bmatrix}= \begin{bmatrix} 0 & 1\\ \frac{1}{x_1^2} & -1 \end{bmatrix} J=[∂x1∂f∂x1∂g∂x2∂f∂x2∂g]=[0x1211−1]

  4. 在平衡点处求值:

    J ( 1 , 0 ) = [ 0 1 1 1 2 − 1 ] = [ 0 1 1 − 1 ] J(1,0) = \begin{bmatrix} 0 & 1\\ \frac{1}{1^2} & -1 \end{bmatrix}= \begin{bmatrix} 0 & 1\\ 1 & -1 \end{bmatrix} J(1,0)=[01211−1]=[011−1]

  5. 写出线性化方程:

    令偏差 x 1 d = x 1 − 1 , x 2 d = x 2 − 0 x_{1d} = x_1 - 1, x_{2d} = x_2 - 0 x1d=x1−1,x2d=x2−0。

    x ˙ 1 d x ˙ 2 d \] = \[ 0 1 1 − 1 \] \[ x 1 d x 2 d \] \\begin{bmatrix} \\dot x_{1d}\\\\ \\dot x_{2d} \\end{bmatrix}= \\begin{bmatrix} 0 \& 1\\\\ 1 \& -1 \\end{bmatrix} \\begin{bmatrix} x_{1d}\\\\ x_{2d} \\end{bmatrix} \[x˙1dx˙2d\]=\[011−1\]\[x1dx2d

    x ˙ 1 d = x 2 d x ˙ 2 d = x 1 d − x 2 d \begin{align} \dot x_{1d}& = x_{2d} \\ \dot x_{2d} &= x_{1d} - x_{2d} \end{align} x˙1dx˙2d=x2d=x1d−x2d

    因为 x 1 d x_{1d} x1d 就是之前的 x d x_d xd,而 x 2 d = x ˙ 1 d = x ˙ d x_{2d} = \dot x_{1d} = \dot x_d x2d=x˙1d=x˙d,代入第二个式子:
    x ¨ d = x d − x ˙ d ⇒ x ¨ d + x ˙ d − x d = 0 \ddot x_d = x_d - \dot x_d \Rightarrow \ddot x_d + \dot x_d - x_d = 0 x¨d=xd−x˙d⇒x¨d+x˙d−xd=0

总结:

公式: f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) , x − x 0 → 0 f(x) = f(x_0) + f'(x_0)(x-x_0),\ x-x_0 \rightarrow 0 f(x)=f(x0)+f′(x0)(x−x0), x−x0→0

x ˙ d y ˙ d \] = \[ ∂ f ∂ x ∂ f ∂ y ∂ g ∂ x ∂ g ∂ y \] ∣ x = x 0 , y = y 0 \[ x d y d \] \\begin{bmatrix} \\dot x_d\\\\ \\dot y_d \\end{bmatrix}= \\begin{bmatrix} \\frac{\\partial f}{\\partial x} \& \\frac{\\partial f}{\\partial y}\\\\ \\frac{\\partial g}{\\partial x} \& \\frac{\\partial g}{\\partial y} \\end{bmatrix}_{\|x=x_0,y=y_0} \\begin{bmatrix} x_d\\\\ y_d \\end{bmatrix} \[x˙dy˙d\]=\[∂x∂f∂x∂g∂y∂f∂y∂g\]∣x=x0,y=y0\[xdyd

对于多变量系统,步骤:

  1. 建立状态空间方程
  2. 找到平衡点
  3. 计算雅可比矩阵
  4. 在平衡点处求得线性系统的系数矩阵
  5. 写出关于偏差的线性化方程
建立状态空间方程

目的是将一个n阶微分方程转换为n个一阶微分方程组。

以 x ¨ + x ˙ + 1 x = 1 \ddot x + \dot x + \frac 1 x = 1 x¨+x˙+x1=1为例:

  1. 选择状态变量

通常选择系统中的变量及其导数,直到(n-1)阶导数,作为状态变量。

在这里我们选择 x = x , y = x ˙ x = x,y = \dot x x=x,y=x˙作为状态变量

  1. 建立状态方程

目标是写出形如 x ˙ = ... \dot x = \dots x˙=...和 y ˙ = ... \dot y = \dots y˙=...的两个方程,且右边只能包含 x 、 y x、y x、y和外部输入。

第一个状态方程为 x ˙ = y \dot x = y x˙=y

要求解第二个状态方程( y ˙ \dot y y˙),就得对于 y = x ˙ y=\dot x y=x˙两边求导并带入原式,得 y ˙ = x ¨ = 1 − 1 x − y \dot y = \ddot x = 1 - \frac 1 x - y y˙=x¨=1−x1−y。

  1. 组合状态空间

即将状态方程组合到一起,构成这个系统的状态空间表达:
x ˙ = y y ˙ = 1 − 1 x − y \begin{align} \dot x &= y\\ \dot y &= 1 - \frac 1 x - y \end{align} x˙y˙=y=1−x1−y

平衡点

为使得系统能够保持不变的状态,对于一个微分方程描述的系统(如 x ˙ = f ( x ) \dot x = f(x) x˙=f(x)),平衡点 x 0 x_0 x0为系统变化率为0的点,即 f ( x ) = 0 f(x)=0 f(x)=0的解,系统一旦处于平衡点,若没有外部干扰,将一直静止。

整个系统的状态最终可能趋近于一个平衡点,或是从一个平衡点向外发散。

雅可比矩阵

雅可比矩阵是单变量函数导数在多变量函数中的推广。

对于一个单变量函数,其导数为一个标量,但对于一个接受多个输入并产生多个输出的向量函数,其变化是多维度的。

雅可比矩阵包含了这个向量函数所有输出相对于所有输入的一阶偏导数。

在上述例子中,雅可比矩阵充当了标准线性系统 x ˙ = A x \dot x = Ax x˙=Ax中的 A A A。

雅可比矩阵的作用就是将一个非线性的耦合的多变量系统,在局部近似为一个更易分析的线性系统。

相关推荐
t198751282 小时前
火电机组热经济性分析MATLAB程序实现
人工智能·算法·matlab
Hello娃的2 小时前
【半导体】肖特基接触AND欧姆接触
人工智能·算法
橘颂TA2 小时前
【剑斩OFFER】算法的暴力美学——交易逆序对的总数
数据结构·算法·leetcode
xiyuping242 小时前
强化学习之——moutaincar
算法·机器学习
小画家~2 小时前
第三十七:类型断言
开发语言·c++·算法·golang
九年义务漏网鲨鱼2 小时前
【大模型微调】QLoRA微调原理及实战
深度学习·算法·大模型·智能体
2401_841495642 小时前
【LeetCode刷题】合并区间
数据结构·python·算法·leetcode·合并·遍历·排序
千天夜2 小时前
线性代数核心概念:正定矩阵、合同矩阵与正交矩阵
线性代数·矩阵
勇气要爆发2 小时前
【第一阶段—数学基础】第六章:AI数学入门:线性代数基础—变形金刚的骨架
人工智能·线性代数·机器学习