线性化
线性系统:应符合叠加原理。
若对于系统 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 在平衡点附近线性化
-
寻找平衡点:
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 为平衡点
-
引入偏差变量:
在 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 处进行线性化。
-
线性化非线性项:
由泰勒展开:
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近似,可以用其代替非线性关系
-
得到线性化方程:
带入原微分方程得:
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
-
建立状态空间方程:
选择状态变量 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)) -
找到平衡点:
令 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)。
-
计算雅可比矩阵 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] -
在平衡点处求值:
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]
-
写出线性化方程:
令偏差 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
对于多变量系统,步骤:
建立状态空间方程
目的是将一个n阶微分方程转换为n个一阶微分方程组。
以 x ¨ + x ˙ + 1 x = 1 \ddot x + \dot x + \frac 1 x = 1 x¨+x˙+x1=1为例:
- 选择状态变量
通常选择系统中的变量及其导数,直到(n-1)阶导数,作为状态变量。
在这里我们选择 x = x , y = x ˙ x = x,y = \dot x x=x,y=x˙作为状态变量
- 建立状态方程
目标是写出形如 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。
- 组合状态空间
即将状态方程组合到一起,构成这个系统的状态空间表达:
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。
雅可比矩阵的作用就是将一个非线性的耦合的多变量系统,在局部近似为一个更易分析的线性系统。