system🚧
system
「系統」。多變量函數,輸入多道訊號,輸出多道訊號。
已經發展成熟,累積大量懸案,最近三十年沒有太大變化。
電力、機械相關科系基礎知識。暫且先做簡介,有空再來展開。
生成器:沒有輸入訊號。輸入一些參數,輸出一道訊號。 濾波器:系統輸出之後,追加一個系統,用來調整輸出訊號。 控制器:系統輸入之前,追加一個系統,用來調整輸入訊號暨輸出訊號。 觀測器:系統輸出之後,追加一個系統,用來觀測系統狀態。
verb | action noun | agent noun ---------|-------------|----------- generate | generation | generator filter | filter | filter control | control | controller observe | observation | observer
課程關係圖
多變量微積分 微分方程 動態系統 訊號與系統 聲學
↘ ↘ ↘ ↘ ↘
力學 → 電磁學 → 電路學 → 化學動力學 → 自動控制 → 電聲學
generator🚧
generator
「生成器」。函數,輸入參數,輸出訊號。
pulse generator / oscillator
脈衝生成器:產生三角形函數或者鐘形函數,寬度極窄,自訂寬度。 振盪器:產生週期函數。例如方波、三角波、鋸齒波、弦波。 實作方式採用程式語言,事情非常簡單。將函數直接寫成程式碼。 實作方式採用電子電路、生化反應,事情非常複雜。此處省略。
filter🚧
filter
「濾波器」。函數,輸入訊號,輸出訊號。
system
finite impulse response / infinite impulse response
系統有兩種款式。 有限脈衝響應:沒迴圈=>輸入的加權總和=>輸入只取幾項=>有限 無限脈衝響應:有迴圈=>輸入與輸出的加權總和=>展開迴圈,變成取所有項=>無限
moving average model / autoregressive model
系統有三種款式。 移動平均數模型:輸入訊號的加權總和=輸出訊號 (all zero) 自迴歸模型:輸出訊號的加權總和=輸出訊號 (all pole) 兩種都用:輸入訊號的加權總和=輸出訊號的加權總和
z-transform / convolution theorem / zero / pole
z-transform:訊號=>多項式 convolution theorem:輸入訊號加權總和=>多項式乘法 convolution theorem:輸出訊號加權總和=>多項式除法 zero:分子多項式的根(多項式變成0)。 pole:分母多項式的根(多項式變成±∞)。 大家用示波器看zero pole,然後反向推理系統是什麼。
Fourier transform / Laplace transform
離散傅立葉轉換:z轉換當中,多項式代入特定數值。 分別代入N種不同數值,z = exp(𝑖(2π/N)f),f從0到N-1。 離散時間傅立葉轉換:z轉換當中,多項式代入特定數值。 分別代入∞種不同數值,z = exp(𝑖2πω),ω從-∞到+∞。 exp的指數從自然數f推廣成實數ω。 完整名稱應該是離散時間連續頻率傅立葉轉換。重點在於連續頻率。 連續傅立葉轉換:訊號從離散數列推廣成連續函數。 分別代入∞種不同數值,z = exp(𝑖2πω),ω從-∞到+∞。 拉普拉斯轉換:訊號從離散數列推廣成連續函數。 分別代入∞×∞種不同數值,z = exp(s),s是各種複數a+b𝑖。 exp的指數從實數ω推廣成複數s。 很多人將拉普拉斯轉換解讀成z轉換的連續版本,但是這種解讀不太對。 嚴格來說,z轉換是普通生成函數,拉普拉斯轉換是指數生成函數。性質截然不同。 傅立葉轉換是特例,拉普拉斯轉換是通例,導致教科書很喜歡用拉普拉斯轉換。 但是現實世界無法取得數值、無法拿來計算啦。 實務上都是使用傅立葉轉換。
time domain / frequency domain
因為真實世界的訊號幾乎都是一堆波, 所以大家用傅立葉轉換,把訊號分解成波。 傅立葉轉換:振幅為1、頻率為自然數/各種數值。 拉普拉斯轉換:振幅為各種數值、頻率為各種數值。 原本訊號稱作時域(座標軸是時間),傅立葉轉換之後稱作頻域(座標軸是頻率)。
spectrum / Bode plot / magnitude spectrum / phase spectrum
訊號實施傅立葉轉換(時域轉頻域)。 一串數列的傅立葉轉換是一串數列,每個數值都是複數。 複數長度是強度。頻譜每個數值的強度,形成強度頻譜。 複數角度是相位。頻譜每個數值的相位,形成相位頻譜。 兩者合稱頻譜。 強度頻譜橫軸與縱軸都取log,相位頻譜橫軸取log,兩者合稱波特圖。
frequency response / transfer function / gain / phase shift
訊號實施傅立葉轉換(時域轉頻域)。 一串數列的傅立葉轉換是一串數列, 每個數值代表每種頻率(frequency)的波(wave)的強度(magnitude)和相位(phase)。 值得一提的是,除了訊號可以分解成波,其實系統也可以分解成波。 系統弄成加權總和的形式,然後把權重當作訊號,拿去分解。 (因為z-transform和convolution theorem) 兩種方式可以得到系統的頻譜: 一、系統的頻譜(權重做傅立葉轉換)。 二、輸出訊號頻譜除以輸入訊號頻譜(訊號做傅立葉轉換,再相除)。 頻率響應:系統的頻譜的數值,針對特定頻率。 傳遞函數:系統的頻譜的數學式,變數是頻率。 增益:系統的強度頻譜。各種頻率的波的強度變化倍率。 相位偏移:系統的相位頻譜。各種頻率的波的相位變化差距。
filter
low-pass filter / high-pass filter
濾波器只保留低頻波、只保留高頻波。
band-pass filter / band-stop filter
濾波器只保留中頻波、只刪除中頻波。
Shelving filter / Butterworth filter
濾波器保留低頻波或高頻波;其餘的波,頻率相差越遠、保留越少。比較平滑柔順啦。 濾波器保留中頻波;其餘的波,頻率相差越遠、保留越少。比較平滑柔順啦。 Shelving filter其實有時域公式喔! http://www.cs.cf.ac.uk/Dave/CM0268/PDF/10_CM0268_Audio_FX.pdf
peak filter / notch filter
濾波器頻譜呈現一個尖峰、頻譜呈現一個尖谷。
difference filter / feedforward comb filter / feedback comb filter
延遲1刻 yn = xn + a xn-1 延遲d刻 yn = xn + a xn-d (頻譜的強度呈現連綿圓峰) 改成回饋 yn = xn + a yn-d (頻譜的強度呈現梳子)(連綿圓丘上下顛倒) 2nd-order其實就是延遲時刻有小數點,需要做線性內插。 https://thewolfsound.com/allpass-filter/
all-pass filter
濾波器頻譜,強度不變(常數1)、相位改變。 例如feedforward comb filter與feedback comb filter串聯。 https://ccrma.stanford.edu/~jos/pasp/Allpass_Two_Combs.html
moving average filter
k點平均 yn = (xn + xn-1 + ... + xn-k+1) / k (頻譜的強度呈現連綿縮小圓丘)
window function / spectral leakage
傅立葉轉換,只有整數倍頻率波。 如果訊號不是整數倍頻率波所組成,那就完蛋了。 非整數倍頻率波,將分散到各個整數倍頻率波,漏的到處都是。 訊號預先乘以窗函數,才做傅立葉轉換,稍微有點療效。 窗函數也可以想成是一種濾波器:連綿圓丘,消滅非整數倍頻率波。
sampling / aliasing
取樣,連續波變離散波。 根據取樣定理, 頻率超過取樣頻率兩倍的連續波(高頻連續波、取樣間隔太大), 將得到頻率稍小的離散波(波長稍長)。 固定取樣頻率時,若上述連續波頻率增大,則上述離散波頻率減小。 從頻譜來看,差不多是往左鏡射、往左翻書,中譯疊頻。 解法是連續波事先做lowpass filter。 去除高頻連續波,讓它沒有東西用來鏡射翻書。 但是濾波器無法做到完美矩形,只能陡降斜下。 稱作sharp cutoff lowpass filter。 曲線越陡價格越貴。
controller🚧
controller
「控制器」。一個系統,一道輸入訊號,一道輸出訊號。調整輸入訊號,得到特別的輸出訊號。
control應用十分廣泛,是世上最實用的演算法之一。
https://www.mathworks.com/solutions/control-systems/feedback-control-systems.html https://ctms.engin.umich.edu/CTMS/index.php
system
causal system / linear system / time-invariant system
因果系統:遞迴公式的變數都是過去時刻。 線性系統:遞迴公式由變數的加法和倍率組成(加權總和)。 也就是說,輸入相加導致輸出相加、輸入倍率導致輸出倍率。 非時變系統:遞迴公式不因時刻而變。 也就是說,輸入移位導致輸出移位。
中譯 意譯
cause (noun) 原因 原因
cause (verb) 導致 因此而
cause (conj) 因為 because的精簡講法,原因是
causal 因果 原因的
causal LTI system / BIBO stability / Routh array
大家習慣省略字首causal。 LTI system可以寫成微分方程式(隱式)、寫成卷積(顯式)。 LTI system = constant-coefficient linear ODE = convolution 假設系統是線性非時變系統(例如物理運動、電路運作)。 一、最初是微分方程式。 二、改寫成transfer function(時域轉頻域)。形成多項式分式。 三、改寫成因式分解。分母的根pole、分子的根zero。 四、改寫成部分分式。形成分式連加。 五、改寫成符號解(頻域轉時域)。形成exp()連加。 輸入受限則輸出受限:可以改寫成訊號L¹-norm受限。 LTI system的情況下:所有pole都在左半複平面。 訊號學家還希望收斂至零:所有pole都在左半複平面,但不含虛軸。 滿足穩定性,才能形成穩態,才能控制。 不滿足穩定性,輸出可能正負無限大。 導致電路過載燒掉、動力機械暴衝、反應槽爆炸。 判斷穩定性, 直覺的方法是使用多項式函數求根演算法,求得所有pole。 經典演算法是companion matrix求特徵值,時間複雜度O(N³T)。 特殊的方法是使用特殊數學公式,檢查正負號。 經典演算法是Routh array,時間複雜度O(N²)。
https://tutorial.math.lamar.edu/classes/de/IVPWithLaplace.aspx https://lpsa.swarthmore.edu/LaplaceXform/InvLaplace/InvLaplaceXformPFE.html
system (explicit form):
y(t) = F(x(t))
system (implicit form):
L(x(t), y(t)) = 0
LTI system (implicit form) (expressed by differentiation):
L(x(t), x′(t), x″(t), ..., y(t), y′(t), y″(t), ..., ) = 0
linear differential equation (with zero initial condition):
a₀ x(t) + a₁ x′(t) + a₂ x″(t) + ...
= b₀ y(t) + b₁ y′(t) + b₂ y″(t) + ...
where x(0) = x′(0) = x″(0) = ... = 0
Laplace transform (time domain -> s-domain):
a₀ s⁰ X(s) + a₁ s¹ X(s) + a₂ s² X(s) + ...
= b₀ s⁰ Y(s) + b₁ s¹ Y(s) + b₂ s² Y(s) + ...
(a₀ s⁰ + a₁ s¹ + a₂ s² + ...) X(s)
= (b₀ s⁰ + b₁ s¹ + b₂ s² + ...) Y(s)
transfer function:
Y(s) a₀ s⁰ + a₁ s¹ + a₂ s² + ...
F(s) = ———— = ———————————————————————————
X(s) b₀ s⁰ + b₁ s¹ + b₂ s² + ...
polynomial factorization:
Y(s) (s-z₀)(s-z₁)(s-z₂)...
F(s) = ———— = —————————————————————
X(s) (s-p₀)(s-p₁)(s-p₂)...
partial fraction expansion (when all poles are distinct):
C₀ C₁ C₂
F(s) = ———— + ———— + ———— + ...
s-p₀ s-p₁ s-p₂
where C₀ = ... , C₁ = ... , C₂ = ...
inverse Laplace transform (s-domain -> time domain):
C₀ C₁ C₂
f(t) = ————————— + ————————— + ————————— + ...
exp(-p₀t) exp(-p₁t) exp(-p₂t)
= C₀ exp(p₀t) + C₁ exp(p₁t) + C₂ exp(p₂t) + ...
LTI system (explicit form) (expressed by convolution):
y(t) = x(t) ∗ f(t)
BIBO stability (and steady state is zero):
if |x(t)| < ∞ then |y(t)| < ∞ for all t≥0
=> if |x(t)| < ∞ then |Cᵢ exp(pᵢt)| < ∞ for all t≥0 and i≥0
=> |exp(pᵢt)| < ∞ for all t≥0 and i≥0
=> Re[pᵢt] < 0 for all t≥0 and i≥0
=> Re[pᵢ] < 0 for all i≥0
dynamic response
已知輸入、系統,求得輸出。 輸入:已知函數(教科書習慣討論下述三種) 系統:已知函數(教科書習慣討論一次微分方程、二次微分方程) 輸出:未知函數。 1. impulse response:脈衝波。隔壁棚結構分析很常用,控制系統則不使用。 2. step response:單位步進函數。主角。例如啟動馬達至定速。 3. frequency response:複弦波。得到波特圖其中一個數值。
steady state
已知輸入、系統,求得輸出最終數值。 輸入:教科書習慣討論步進函數(step response) 系統:教科書習慣討論一次微分方程、二次微分方程 輸出:求得穩態 步進函數:傅立葉轉換是1/s。 最終值定理:時域穩態(時間趨近無限大)=頻域乘上s後頻率趨近無限大。 系統改寫成transfer function形成分式。觀察分母: 一、實根(一次多項式):輸出指數衰減。 步進函數恰好跟最終值定理互相抵銷,剩下系統。 二、共軛複根(二次多項式):輸出振盪。兩種表達方式。 甲、decay rate σ and damped frequency ωd 乙、damping ratio ζ and natural frequency ωn 其他情況: 一、連乘積:實係數多項式因式分解,總是得到一次暨二次多項式連乘積。 因此只需討論實根、共軛複根兩種情況。 最後讓transfer function相乘。 二、重根:一次暨二次多項式的次方。
block diagram
for transfer function of causal LTI system, 1. series ──→ G₁ ──→ G₂ ──→ = ──→ G₁G₂ ──→ 2. parallel ──┬─→ G₁ ──┬──→ = ──→ G₁+G₂ ──→ └─→ G₂ ──┘+ 3. feedback u e y ──┬─→ G₁ ──┬──→ = ──→ G₁/(1+G₁G₂) ──→ -└── G₂ ←─┘ y = G₁e = G₁(u-G₂y) = G₁u - G₁G₂y u = (y + G₁G₂y)/G₁ = y(1 + G₁G₂)/G₁ y/u = G₁/(1+G₁G₂)
4.
──→ G₁ ─┬─→ G ──→ = ──→ G₁ ──→ G ─┬─→
──→ G₂ ─┘ ──→ G₂ ──→ G ─┘
5.
──→ G ──┬─→ G₁ ──→ = ─┬─→ G ──→ G₁ ──→
└─→ G₂ ──→ └─→ G ──→ G₂ ──→
6.
──┬─→ G₁ ──┬──→ = ──→ 1/G₂ ──┬─→ G₂ ──→ G₁ ──┬──→
-└── G₂ ←─┘ -└───────←───────┘
signal-flow graph
Mason's rule https://en.wikipedia.org/wiki/Mason's_gain_formula
controller
control
in practice:
plant
╭┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╮
reference ─┬─→ controller ─→┆actuator ─→ process┆──┬──→ output
↑ ╰┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╯ │
└────────────── sensor ←────────────────┘
in theory:
reference ─┬─→ controller ──→ plant ──┬──→ output
↑ ↓
└──────────────←───────────┘
時域 頻域
reference 參考訊號 r(t) R(s)
output 輸出訊號 y(t) Y(s)
controller 控制器 k(t) K(s)
plant 受控廠 g(t) G(s)
actuator 致動器
process 程序
sensor 感測器 h(t) H(s)
controller / plant
追加一個系統(控制器),用來控制原本系統(受控廠)。 控制器的輸出訊號,作為受控廠的輸入訊號。 控制器調整了輸入訊號,受控廠得到了特別的輸出訊號。
regulation / tracking
輸出訊號趨近(固定不變的)固定數值 輸出訊號趨近(即時改變的)參考訊號
open-loop controller / closed-loop controller
open-loop controller: r u y ──→ controller ──→ plant ──→ closed-loop controller: r e=r-y u y ───┬──────→ controller ──→ plant ──┬──→ -└─────────────←─────────────────┘
開迴路控制:控制器的輸入是參考訊號。 閉迴路控制:控制器的輸入是誤差。 誤差是參考訊號減輸出訊號(跟統計學家的習慣相反)。 用膝蓋想也知道,誤差訊息量更多,於是效果更好。 其實兩者可以一併使用,尤其是非線性系統。 甚至沒有必要計算誤差,直接使用參考訊號與輸出訊號,尤其是多變數系統。 效果更好的正式說法是靈敏度較低: (dT/T)/(dG/G),控制系統變化與受控廠變化的比值。 教科書談靈敏度,喜歡以P controller的穩態誤差當作範例。只是在誤導大眾。
PID controller
e(t) = r(t) - y(t) error
u(t) = kp e(t) + ki ∫ e(t) dt + kd d/dt e(t) control
^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ signal
proportional integral derivative
controller controller controller
y(t) = u(t) ∗ g(t) output
P controller:原值,再乘上權重kp。誤差當前數值。 I controller:積分,再乘上權重ki。誤差前綴和。過往累計。 D controller:微分,再乘上權重kd。誤差相鄰差。瞬間變化。
closed-loop PID controller (in theory): ───┬──→ kp + ki/s + kd*s ──→ G(s) ──┬──→ -└───────────────←────────────────┘ rate feedback PID controller (in practice): ───┬──→ kp + ki/s ───────┬─→ G(s) ──┬──→ -│ -└── kd*s ←─┤ └────────────────←───────────────┘
PID tuning
此處討論tracking。參考訊號是步進函數(目標數值是1,當前數值是0)。 此時大家觀察下述指標,評定優劣。 rising time tr 到達1的時間(從0.1到0.9的時間,避免計入緩速時段) settling time ts 到達穩態的時間(保持在0.99到1.01之內) peak time tp 到達第一個局部極值的時間(最高峰) peak overshoot Mp 超過1的部分(最高峰減1,單位百分比) 此時PID controller調整參數,輸出訊號會有下述效果。 kp 調整斜率、改變頻率。增益(效果是放大縮小)。 ki 調整平均、改變穩態。高通濾波器(效果是鋸齒化) kd 調整曲率、改變振幅。低通濾波器(效果是平滑化)。 Ziegler–Nichols tuning:古聖先賢發明了經驗公式。兩種調參方法。 1. quarter decay ratio 2. ultimate sensitivity method https://my.ece.utah.edu/~ece3510/Notes_PID_Tuning_long.pdf
程式範例,受控廠是二次微分方程、0 zero 2 poles、-1 -2。
詳細圖解,位於影片後段。
stability analysis
pole–zero plot
極零圖:transfer function的poles與zeros。極X零O。 畫出poles和zeros的位置,以便判斷穩定性。 如果極X都在左半複平面(開區間、不含虛軸),則穩定。 如果右半複平面沒有極X(閉區間、包含虛軸),則穩定。 transfer function的poles,就是分母的zeros。 畫出分母的極零圖,亦可判斷穩定性。 如果右半複平面沒有零O,則穩定。
PID tuning的四個指標,可以畫成圖形,併入極零圖。
參考訊號是步進函數,R(s) = 1/s。
參考訊號R(s)、閉/開迴路系統T(s),串聯就是乘法,
得到輸出訊號Y(s) = R(s)T(s)。
極零圖基本不變,只多了一個pole位於原點。
教科書只針對開迴路,受控廠G(s)是二次微分方程,沒有控制器K(s) = 1。
(教科書討論開迴路,但是照理應該討論閉迴路。因此以下結論沒有實用價值。)
(討論閉迴路,結果相當複雜,缺乏美感。)
(作者故意將閉迴路改成開迴路,然後挪到前面章節,我猜是為了美化。)
R(s) = 1/s unit step function
K(s) = 1 no controller
ωn²
G(s) = ——————————————————— second-order causal LTI system
s² + 2 ζ ωn s + ωₙ²
ωn²
Y(s) = R(s)K(s)G(s) = —————————————————————— open-loop
s(s² + 2 ζ ωn s + ωₙ²) controller
y(t) = 1 - exp(-ζ ωn t) sin(ωd t + ϕ) / sqrt(1 - ζ²)
where ωd = ωn(1 - ζ²)
ϕ = tan⁻¹(sqrt(1 - ζ²) / ζ)
根據y(t),推導tr/ts/tp/Mp的滿足條件(不等式),畫在複平面。
可行解位於交集(四張圖片左半複平面重疊區域)。
https://cf.ppt-online.org/files/slide/c/C4t2nPmwWsDjy96FoSxvVrU7Iq3gMHBY5ziX1l/slide-32.jpg
root locus plot
https://control.asu.edu/Classes/MAE318/318Lecture12.pdf
根軌跡圖:transfer function附帶一個參數(例如kp)。
窮舉參數值,畫出poles的變化軌跡,以便判斷穩定性。
1. open-loop controller:
r u y
───→ controller ──→ plant ────→
K(s) G(s)
transfer function:
K(s)G(s)
2. closed-loop controller:
r e=r-y u y
───┬──────→ controller ──→ plant ──┬──→
-↑ K(s) G(s) ↓
└─────────────←─────────────────┘
transfer function:
K(s)G(s)
————————————
1 + K(s)G(s)
3. 改寫成分式
K(s) = nᴋ(s) / dᴋ(s)
G(s) = nɢ(s) / dɢ(s)
transfer function:
K(s)G(s) nᴋ(s)nɢ(s)
———————————— = ———————————————————————
1 + K(s)G(s) dᴋ(s)dɢ(s) + nᴋ(s)nɢ(s)
4. P controller:
K(s) = kp
nᴋ(s) = kp
dᴋ(s) = 1
transfer function:
K(s)G(s) kp G(s) kp nɢ(s) nɢ(s)
———————————— = ——————————— = ———————————————— = ————————————————
1 + K(s)G(s) 1 + kp G(s) dɢ(s) + kp nɢ(s) dɢ(s)/kp + nɢ(s)
transfer function的poles,就是分母的根。
1 + kp G(s) = 0 或 dɢ(s) + kp nɢ(s) = 0 或 dɢ(s)/kp + nɢ(s) = 0
注意到,如果今天不是採用P controller,那麼需要重新推導。
現在要畫出transfer function的poles軌跡。kp = 0⋯∞。
當kp = [0,∞),根軌跡是分母1 + kp G(s)的根。
當kp = 0,根軌跡起點恰是dɢ(s)的根,即是G(s)的poles。
當kp → ∞,根軌跡終點恰是nɢ(s)的根,即是G(s)的zeros。
採用P controller的情況下,K(s) = kp只是一個倍率。
此時G(s)的zeros/poles,
恰是open-loop transfer function K(s)G(s)的zeros/poles。
導致大家認為root locus的起點和終點就是開迴路的poles/zeros。
然而一般情況下根本無法牽扯到開迴路。成為歷史共業。
古聖先賢發明了手工製圖方法。好幾條規則。
https://www.mit.edu/people/klund/weblatex/node8.html
5. closed-loop controller with sensor:
r e=r-y u y
───┬──────→ controller ──→ plant ──┬──→
-↑ K(s) G(s) │
│ │
└─────────── sensor ←───────────┘
H(s)
transfer function:
K(s)G(s)
————————————————
1 + K(s)G(s)H(s)
教科書定義K(s)G(s)H(s) = k L(s),但是內文根本沒有用到。來亂的。
Nyquist plot
https://lpsa.swarthmore.edu/Nyquist/NyquistStability.html https://ocw.mit.edu/courses/18-04-complex-variables-with-applications-spring-2018/44f1db513a6a17d655abe0b6ff7748fc_MIT18_04S18_topic11.pdf
Nyquist圖:實施下述變換。 輸入:圍線(封閉路徑)(點集合),順時針圍住右半複平面。s = (-𝑖∞,+𝑖∞) 函數:逐點對應,s -> 1+K(s)G(s)。 輸出:新圍線。稱作Nyquist圖。 總結:右半複平面圍線,每一點s計算1+K(s)G(s),逐點描繪新圍線。 性質:s = (-𝑖∞,0]與s = [0,+𝑖∞)的新圍線呈上下鏡面對稱。 取巧:加一就是圍線往右位移。大家習慣畫K(s)G(s),再用-1取代原點。 取巧:當K(s) = kp,大家習慣畫G(s),再用-1/kp取代-1。 Cauchy's integral theorem: 複變函數f(z),圍線積分路徑圍住零個洞,圍線積分是0。 Cauchy's residue theorem: 複變函數f(z),圍線積分路徑圍住多個洞,圍線積分是2π𝑖乘上留數和。 Cauchy's argument principle: 複變函數f′(z)/f(z),圍線積分路徑圍住P個極、Z個零,圍線積分是2π𝑖(Z-P)。 援引winding number,上述圍線積分重新視作逆時針繞圈(Z-P)次。 Cauchy's argument principle: 複變函數f(z),有多個極零。 一條圍線,逆時針繞圈一次,圍住P個poles、Z個zeros, 該條圍線實施f(z)變換之後, 一條圍線,逆時針繞圈(Z-P)次,圍住原點。 Nyquist stability criterion: 閉迴路系統極零圖,右半複平面不含閉迴路系統的pole,則穩定。 閉迴路系統K(s)G(s)/(1+K(s)G(s))的pole,就是分母1+K(s)G(s)的zero。 分母1+K(s)G(s),有多個極零。 分母極零圖,右半複平面不含分母1+K(s)G(s)的zero,則穩定。 分母極零圖,右半複平面圍線,沒有圍住分母1+K(s)G(s)的zero,則穩定。 分母極零圖,令右半複平面有P個pole、Z個zero,令圍線是逆時針。 Nyquist圖,逆時針繞圈(-P)次,且圍住原點,則Z=0,則穩定。 (必須事先知道P是多少。因此此定理不實用。) 分母極零圖,右半複平面圍線,習慣畫順時針。 Nyquist圖,習慣畫K(s)G(s)而非1+K(s)G(s),用-1取代原點。 Nyquist圖,逆時針繞圈P次,且圍住-1,則穩定。 採用P controller的情況下,K(s) = kp只是一個倍率。 Nyquist圖,習慣畫G(s)而非K(s)G(s),用-1/kp取代-1。 Nyquist圖,逆時針繞圈P次,且圍住-1/kp,則穩定。
兩種製圖方式。 一、已知系統,以紙筆計算: 先畫波特圖(頻譜),再依此畫Nyquist圖。 s = (-𝑖∞,+𝑖∞)恰好對應傅立葉轉換的每種頻率的波。 二、未知系統,以儀器測量: 大家假設K(s)G(s)的pole比zero數量多、分母比分子次方高, 當s → ∞,則分母1+K(s)G(s) → 1。Nyquist圖可以畫得出來。 即便系統不穩定,Nyquist圖在下述情況還是畫得出來: 分母極零圖,右半複平面圍線,沒有途經分母1+K(s)G(s)的zero。 也就是說,閉迴路系統的pole不在虛軸上面。
Bode plot
https://lpsa.swarthmore.edu/Bode/BodeReviewRules.html
波特圖:系統的頻譜。分為強度頻譜和相位頻譜。 強度頻譜:採用log-log plot。橫軸頻率取log、縱軸強度取log。 相位頻譜:採用semi-log plot。橫軸頻率取log、縱軸角度。 Bode stability criterion: if open-loop K(s)G(s) is stable and |K(s)G(s)| < 1 for all s: ∠K(s)G(s) ≡ 180° (mod 360°) then closed-loop (K(s)G(s))/(1+K(s)G(s)) is stable. 先看相位頻譜,-180°是哪幾個頻率。 再看強度頻譜,這幾個頻率的強度均小於1,則穩定。 這是利用開迴路來看閉迴路是否穩定。 實務上恰恰相反。大家利用閉迴路來讓開迴路變得穩定。
兩種製圖方式。 一、已知系統,以紙筆計算: 針對LTI system、並且已知zero/pole。 一、根是零:強度一段:過原點45°降線。(原點取log之後是1) 相位一段:-90°水平線。 二、實根:強度兩段:0°水平線、45°降線。 相位三段:0°水平線、45°降線、-90°水平線。 分裂點:彎曲過渡,其截距3dB。 三、共軛複根:強度兩段:0°水平線、分裂點隆起、45°降線。 相位兩段:0°水平線、分裂點漸變、-180°水平線。 四、重根:強度:水平線高度乘上倍率。降線斜率乘上倍率。 相位:水平線高度乘上倍率。 倍率是重根次數。 五、上述都是極。極零升降相反。 然而現在大家都用電腦軟體製圖。上述手法只能用來人工驗算。 二、未知系統,以儀器測量: 針對LTI system、不知zero/pole。 系統輸入:特定頻率的弦波,強度一、相位零。 系統輸出:以儀器測量其強度和相位,描出波特圖一點。 (即是frequency response。) 如果系統不穩定,系統輸出無限大,波特圖有些頻率畫不出來。
compensator
compensator = filter
補償器用來追加poles或zeros。用途如同filter。 根據transfer function串聯乘法原理,補償器接在控制器前面或後面都行。 PID controller + lead compensator是常見組合。 lead compensator ≈ high-pass filter ≈ PD controller lag compensator ≈ low-pass filter ≈ PI controller notch compensator ≈ band-pass filter lead compensator K(s) = (s-z)/(s-p) and |z| < |p| 左X右O lag compensator K(s) = (s-z)/(s-p) and |z| > |p| 左O右X
non-minimum phase system
右半複平面出現zeros。 當參考訊號是步進函數,則輸出訊號是先蹲後跳、聯結車轉彎。一開始衝向負值。 沒救了。compensator沒有辦法解決這種情況。 一種直覺的方式是追加poles抵銷zeros,分母分子約分之後一起消失不見。 然而實務上無法完全對準。 誤差、設備老化,都會導致zeros偏移。 稍有差池,輸出訊號就會偶然出現正負無限大。 導致電路過載燒掉、動力機械暴衝、反應槽爆炸。 非常危險。 實務上不能追加右半複平面poles抵銷右半複平面zeros。 我不知道有沒有其他解法。也許根本不需要解,順其自然就好。
gain margin / phase margin
兩個指標,用來粗略判斷前述四個調參指標以及穩定性。 增益邊界:相位為-180°=-π的頻率(波特圖相位曲線穿越橫軸之處)的強度,減去0dB=1。 相位邊界:強度為0dB=1的頻率(波特圖強度曲線穿越橫軸之處)的相位,減去-180°=-π。 lead/lag compensator直接影響這兩個指標。
type 0/1/2 system
有0/1/2個pole等於零。 兩種出現情況: 一、補償器追加pole。 二、輸入訊號是constant/unit step/ramp function。 如果是情況二,穩態定義必須隨之改變, 例如零函數/零次常數函數/一次直線函數/二次拋物線函數。
nonlinear system
sliding mode controller
nonlinear
model predictive control
optimization state space
Hamilton–Jacobi–Bellman equation
動態規劃,找到最好的動作方式。
Sylvester equation / Lyapunov equation
矩陣方程式,常見的最佳化問題的解。
fuzzy logic
把布林數的AND和OR運算,變成函數的min和max運算。 Karnik–Mendel algorithm
observer🚧
observer
「觀測器」。已知系統、輸入訊號、輸出訊號,求得系統狀態。
state transition state estimation (state observer) https://control.asu.edu/Classes/MAE507/507Lecture09.pdf
Luenberger observer sliding mode observer https://medium.com/@saurav310304/f9fc11c0177a
一階微分 = 取前一個時刻 二階微分 = 取前兩個時刻 markov process就是引入機率的連續動態系統 markov chain就是引入機率的離散動態系統
system
stochastic process
訊號的數值,從固定的改成浮動的。甚至前後項有某種特殊性關係。
system identification / system realization / system estimation
給你輸入訊號、輸出訊號,請你找到系統。 換句話說,就是迴歸!
mean squared error / Kullback–Leibler divergence
兩道訊號的距離。 換句話說,就是誤差!迴歸的時候拿來用吧。
observer
找到迴歸函數之後,就可以預測訊號啦。 常見方式有Kalman filter和hidden Markov model。 http://www.princeton.edu/~stengel/MAE546Seminars.html
Kalman filter
未知因:autoregression model (LTI filter) 已知業:LTI filter 已知果:一道訊號 請見本站文件「filter」。 未知輸入(因)已知函數(業)已知輸出(果),求因。 精髓:果的誤差,通過反濾波器,用以修正因。
hidden Markov model (Bayes filter)
未知因:Markov chain 未知業:hidden Markov model 已知果:許多道訊號 請見本站文件「hidden Markov model」。 未知輸入(因)未知函數(業)已知輸出(果),求因。 精髓:已知果,梯度下降法(反向傳播法)找最大值,得到機率最大的業。 未知果,動態規劃找最佳路線,得到機率最大的因。
system design🚧
system design
「系統設計」。系統是函數、甚至是函數網路。工程師設計函數網路,達成特定任務,例如生成/濾波/控制/觀測。
我目前只知道三種流派:
一、電子電路:風靡全世界。雖然台灣是地球上最大的電子零件生產基地,台灣也有專門設計電子電路的公司,但是我不太確定台灣是否有這方面的專家。有言道:十萬青年十萬肝,GG輪班救台灣。關鍵字:電路學、積體電路設計、自動控制、控制理論。
二、生化反應:發展中。雖然台灣之前打算成立藥物代工廠、學名藥設計實驗室,但是以失敗告終。有言道:一日生科,終生科科。關鍵字:化學動力學、酵素動力學、藥物動力學、系統生物學。
三、深度學習:最近十年才剛萌芽。已經做到生成/濾波,目前做不到控制/觀測。正在經歷大浪潮,準備迎接大泡沫。有言道:站在風口上,豬都會飛。關鍵字:人工智慧、機器學習、深度學習。
electronic circuit🚧
electric circuit
RC circuit / resistor–capacitor circuit
low-pass filter high-pass filter
RLC circuit / resistor–inductor–capacitor circuit
sine wave
electronic circuit
oscillator
https://en.wikipedia.org/wiki/Electronic_oscillator
synchronization
phase-locked loop
Phase Detector (PD): Compares the phase of the input signal with that of the output signal. Low-Pass Filter (LPF): Filters the output of the phase detector to produce a control voltage. Voltage-Controlled Oscillator (VCO): Adjusts its frequency based on the control voltage to lock onto the input signal.
VCO, Phase comparator and PID make a PLL.
electrical–mechanical–acoustical analogy
電流、機動、聲響,三者物理量相仿,可以類比。
https://en.wikipedia.org/wiki/Mechanical–electrical_analogies https://en.wikipedia.org/wiki/Impedance_analogy https://en.wikipedia.org/wiki/Harmonic_oscillator
mechanical impedance https://www.bksv.com/media/doc/17-179.pdf
chemical kinetics🚧
chemical kinetics
反應速度取決於當前濃度。
production and decay
production: k ───→ A ȧ = k a(t) = a(0) + kt
decay:
k
A ───→
ȧ = -k a
a(t) = a(0) exp(-kt)
steady state:
ȧₛₛ = -k aₛₛ = 0
aₛₛ = 0
production and decay: k₀ k₁ ───→ A ───→ ȧ = k₀ - k₁ a a(t) = (a(0) - k₀/k₁) exp(-k₁t) + k₀/k₁ steady state: ȧₛₛ = k₀ - k₁ aₛₛ = 0 aₛₛ = k₀/k₁
closed system
irreversible conversion: k A ───→ B ⎰ ȧ = -k a ⎱ ḃ = k a closed system: ȧ + ḃ = 0
reversible conversion: k₁ A ⇌⇌⇌ B k₋₁ ⎰ ȧ = -k₁ a + k₋₁ b ⎱ ḃ = k₁ a - k₋₁ b closed system: ȧ + ḃ = 0
open system
interaction with decay: k₁ k₂ A ⇌⇌⇌ B ───→ (k₁ + k₋₁ >> k₂) k₋₁ ⎰ ȧ = -k₁ a + k₋₁ b ⎱ ḃ = k₁ a - k₋₁ b - k₂ b rapid equilibrium assumption: a and b rapidly become and remain steady states. b̃/ã = k₁/k₋₁
equivalent model: k₂k₁/(k₁+k₋₁) C ──────────────→ c̃ = ã + b̃
interaction with production and decay:
k₀ k₁ k₂
───→ A ⇌⇌⇌ B ───→ (k₁ + k₋₁ >> k₂)
k₋₁
⎰ ȧ = k₀ - k₁ a + k₋₁ b
⎱ ḃ = k₁ a - k₋₁ b - k₂ b
quasi-steady state assumption:
a is always steady state respect to b
aₛₛ/bₛₛ = k₁/(k₋₁+k₂)
cooperativity
Michaelis–Menten equation:
k₁
P + X ⇌⇌⇌ PX
k₋₁
number of occupied binding sites
Y = ————————————————————————————————
total number of binding sites
[PX]
= ——————————
[P] + [PX]
[X]
= ————————— where Kₛₛ = k₋₁/k₁ = [P][X]/[PX]
Kₛₛ + [X]
Adair equation:
4k₁
P + X₁ ⇌⇌⇌ PX₁
k₋₁
3k₂
P + X₂ ⇌⇌⇌ PX₂
2k₋₂
2k₃
P + X₃ ⇄⇄⇄ PX₃
3k₋₃
k₄
P + X₄ ⇌⇌⇌ PX₄
4k₋₄
number of occupied binding sites
Y = ————————————————————————————————
total number of binding sites
1[PX₁] + 2[PX₂] + 3[PX₃] + 4[PX₄]
= ——————————————————————————————————————————
4([P] + 1[PX₁] + 2[PX₂] + 3[PX₃] + 4[PX₄])
[X]/K₁ + 3[X]²/K₁K₂ + 3[X]³/K₁K₂K₃ + [X]⁴/K₁K₂K₃K₄
= ———————————————————————————————————————————————————————
1 + 4[X]/K₁ + 6[X]²/K₁K₂ + 4[X]³/K₁K₂K₃ + [X]⁴/K₁K₂K₃K₄
Hill equation:
[X]⁴/K₁K₂K₃K₄
Y ≈ ————————————————— when K₄ << K₁,K₂,K₃
1 + [X]⁴/K₁K₂K₃K₄
([X]/K)⁴ [X]⁴
Y ≈ ———————————— = —————————
1 + ([X]/K)⁴ K⁴ + [X]⁴
interconversion
Goldbeter–Koshland kinetics:
4a₁ k₁
Zp + Ex ⇌⇌⇌ C₁ ───→ Z + Ex
a₋₁
4a₂ k₂
Zp + Ey ⇌⇌⇌ C₂ ───→ Z + Ey
a₋₂
X
k₁ ↓
Zp ⇌⇌⇌⇌⇌⇌ Z
k₂ ↑
Y
transport: diffusion
diffusion: A ←─→ B ⎰ ȧ = -D(a-b)/V₁ ⎱ ḃ = D(a-b)/V₂ V: volume D: diffusion rate
inhibition
time series plot / phase portrait
stichiometry matrix
antagonistic network
inhibition:
n₁
k₁↓├──── ↓k₃
A ───→ B
k₂↓ k₅ ↓k₄
⎰ ȧ = k₁/(1 + (b/K₂)ⁿ¹) - k₃a - k₅a
⎱ ḃ = k₂ - k₄b + k₅a
n: inhibition rate
cross-inhibition: k₁↓ n₁ ↓k₃ A |===| B k₂↓ n₂ ↓k₄ ⎰ ȧ = k₁/(1 + (b/K₂)ⁿ¹) - k₃a ⎱ ḃ = k₂/(1 + (a/K₁)ⁿ²) - k₄b n: inhibition rate
gene toggle switch
bistable
Collins toggle switch [Gardner et al. 2000]:
┌─→ protein1---┐├--inducer1
│ ┴
gene1 gene2
┬ │
inducer2--┤└---protein2 ←─┘
⎰ ȧ = α₁/(1+aⁿ¹) - δ₁a
⎱ ḃ = α₂/(1+aⁿ²) - δ₂b
⎰ ȧ = F₁(a,b) - δ₁a
⎱ ḃ = F₂(a,b) - δ₂b
oscillator
Goodwin oscillator:
┌── Y (protein) ←─┐
↓ │
Z (metabolite) X (mRNA)
╎ ↑
└----┤ gene ──────┘
⎧ ẋ = a/(kⁿ+zⁿ) - bx
⎨ ẏ = cx - dy
⎩ ż = ey - fz
Elowitz–Leibler repressilator:
┌─→ repressor1---┐
│ ┴
gene1 gene2
┬ │
╎ ↓
repressor3 repressor2
↑ ╎ ╎
└─── gene3 ├----─┘ └-----┤reporter gene
⎧ ṁ₁ = α₀ + α/(1+p₃ⁿ) - m₁
⎪ ṁ₂ = α₀ + α/(1+p₁ⁿ) - m₂
⎨ ṁ₃ = α₀ + α/(1+p₂ⁿ) - m₃
⎪ ṗ₁ = β(m₁ - p₁)
⎪ ṗ₂ = β(m₂ - p₂)
⎩ ṗ₃ = β(m₃ - p₃)
feedback
autocatalysis (self-activation):
δ
┌─--------A ──→
↓ ↑
gene ──────┘
a/K
ȧ = α ——————— - δ a
1 + a/K ^^^ degrade
autoinhibition (self-repression):
δ
┌─--------A ──→
┴ ↑
gene ──────┘
1
ȧ = α ——————— - δ a
1 + a/K
deep learning🚧
deep learning
「深度學習」。可以視作迴歸,迴歸函數是各種函數串聯並聯。
https://github.com/leemengtaiwan/deep-learning-resources
deep learning是新興理論,尚在發展當中,無法整理成篇。我將發展現況分成兩種方向,僅供參考。
邏輯推理觀點
我認為深度學習可以做到邏輯推理的歸納法。
邏輯推論logical inference宛如求解equation solving。根據一些邏輯運算式子的計算結果,判斷一個邏輯運算式子是否有唯一解。
邏輯推理logical reasoning宛如迴歸regression。根據一些邏輯運算式子的計算結果,調整一個邏輯運算式子,盡量達成唯一解。
機率分布即是二元邏輯的推廣版本。convolution即是加法運算。ReLU即是分支判斷。各種函數即是各種邏輯運算。
事先網羅足夠多的函數,事後練出足夠長的邏輯運算式子。
模組編程觀點
我認為深度學習就是在寫程式。
專案即是迴歸模型。編程即是拼湊函數,除錯即是降低誤差。運算子即是初階函數,函式庫即是進階函數。物件導向精簡函數架構,演算法形成函數單元。自行拼湊適當函數,考慮越多,效果越好。
以前是撰寫程式碼,經過編譯器,自動生成機器碼。現在是拼湊函數,經過deep learning,自動生成程式碼。封建升城堡。
與其說deep learning可以取代程式設計師,不如說deep learning是一種更高層次的編程方式。大家只是換個方式寫程式。
近況
近年來許多政商人士提倡人工智慧,呼籲大眾學習如何運用深度學習。他們認為深度學習可以彌補電子電路的不足。大家可以待在家中設計神經網路,透過電腦與網路,輕鬆控制生活周遭的事物──不必事事都得委託聯發科設計電子電路、委託台積電製造電子電路。
然而深度學習目前仍是煉金術。大家憑感覺發明許多結構,但是無法利用數學來論證其功能。
metaheuristics也是類似的新流派。既有的最佳化演算法無法投入實用,大家重新發明基因演算法、蟻群演算法、粒子群演算法。
machine learning也是類似的新流派,既有的模式識別演算法無法投入實用,大家重新發明梯度下降技巧、神經網路結構。
陽春白雪變成下里巴人,引經據典變成信口開河。但是它實用。