1 為什么要探討線性化
注:這里所說的線性化,包括下面會用到的"Exact Linearization", 都是指基于一階泰勒展開的線性化近似,而不是基于微分幾何的全局線性化或者輸出反饋線性化。
很多人看到這個(gè)題目,或許第一感覺會是:“為什么要研究線性化?線性化不就是一階泰勒展開嗎?這再簡單不過了,用小學(xué)數(shù)學(xué)就好啦!”
在理論上,這一點(diǎn)也沒錯(cuò)。比如我們要在原點(diǎn)線性化如下的非線性模型,相信大多數(shù)人不假思索的就能告訴我:線性化的結(jié)果是 y = u。
既然如此,我們?yōu)槭裁催€要探討線性化呢? 答案很簡單,上面一個(gè)例子是理論上的,也就是經(jīng)過很大程度上簡化了的,幾乎完美的。
那么實(shí)際上,工程中需要線性化的問題是什么樣的呢?
假如有這樣一個(gè)航天飛機(jī)的模型。工程師現(xiàn)在想把控制器參數(shù)優(yōu)化一下。為此,他需要線性化從飛機(jī)控制器的輸入到導(dǎo)航控制器的輸入之間這個(gè)可能含有幾千個(gè)模塊,幾萬個(gè)信號的子系統(tǒng)。
很顯然,想要解析的泰勒展開這樣一個(gè)模型,在實(shí)際中是相當(dāng)費(fèi)時(shí)費(fèi)力的。
那么,我們來看看難點(diǎn)都在哪:
1. 沒有非線性方程
理論上,動態(tài)系統(tǒng)總是可以用光滑的ODE來建模。而實(shí)際上,在工程應(yīng)用中,系統(tǒng)往往是用框圖來搭建的,比如用Simulink等軟件。 用框圖來建模有非常多的好處,比如可以方便的模塊化,通過觀察某個(gè)具體的信號值來debug, 還有其他的好處就不一一列舉了。但是像這樣復(fù)雜的框圖模型是很難等價(jià)的轉(zhuǎn)化成一組非線性方程組的。甚至有些模塊,根本就不存在解析表達(dá)式。所以,很難對一個(gè)非線性方程去求偏導(dǎo)數(shù)來獲得泰勒一階展開項(xiàng)。
2. 不光滑
有些模塊或許存在解析數(shù)學(xué)表達(dá)式,但是根本不可導(dǎo);有些可能存在大量的奇異點(diǎn);有些甚至導(dǎo)數(shù)無從定義,比如enabled subsystem, triggered subsystem等。
3. 多重采樣時(shí)間
在很多實(shí)際模型里面,有些模塊是連續(xù)的,例如積分器。有些模塊是離散的,采樣時(shí)間可以是0.1秒,可以是10秒,甚至可以是無窮大,比如constant block。那么,最后線性化出來的系統(tǒng)到底應(yīng)該是連續(xù)的,還是離散的?
4. 牽一發(fā)而動全局
假設(shè),在最理想的情況下:我們真的把這個(gè)模型對應(yīng)的非線性方程組表示出來了, 并且最終驗(yàn)證了模型的準(zhǔn)確性,然后成功的進(jìn)行了線性化??墒?,第二天模型的作者表示:”我把某幾個(gè)子系統(tǒng)里的幾條信號刪掉了,然后把其它幾條信號的連接方式重新設(shè)計(jì)了一下,你再幫我泰勒展開一下吧“。很不幸,這很大程度上意味著我們之前的解析方程組被徹底改變了,所有的工作需要重頭在來過。這樣的分析方式在實(shí)際的工程開發(fā)中是很不現(xiàn)實(shí)的,因?yàn)闀r(shí)間成本太高。
2 數(shù)值擾動
既然解析方法不行,那么應(yīng)該怎么做呢?
一個(gè)比較傳統(tǒng)而且有效的方法是數(shù)值擾動。
來看看第一個(gè)例子:
我們可以在輸入端輸入一個(gè)常數(shù),比如說du = 0.1。 然后, 我們測量輸出信號,發(fā)現(xiàn):
dy = 0.0998
兩者相除,我們得到了一個(gè)基于數(shù)值線性化的結(jié)果:
y = 0.998*u
如果用更小的du,事實(shí)上我們可以得到更精確的結(jié)果。
現(xiàn)在這個(gè)方法看起來比解析方法好用了很多。在某種程度上,它的思想其實(shí)就是把整個(gè)系統(tǒng)當(dāng)成是一個(gè)黑箱,通過輸入輸出來進(jìn)行辨識。
事實(shí)上,對于比較小和比較簡單的模型,數(shù)值擾動的效果都還是不錯(cuò)的。
1. 延時(shí)的處理
在這個(gè)例子中,“黑箱”里有一個(gè)隱藏的很深的延時(shí)模塊。在這種情況下,我們給這個(gè)系統(tǒng)提供擾動輸入,然后去測量輸出的時(shí)候,會發(fā)現(xiàn)輸出信號過了很久都沒有發(fā)生變化。由此,我們很有可能會錯(cuò)誤的把這個(gè)系統(tǒng)線性化成一個(gè)0增益! 當(dāng)然了,如果事先能知道其中有一個(gè)這樣的Delay block,是可以采取一些措施來進(jìn)行更好的辨識的。但即使如此,自動控制原理告訴我們,在頻域上逼近一個(gè)Delay Block的一個(gè)很好的方式是用Pade Approximation。 但是這種逼近用數(shù)值擾動是很難做到的,特別是對于復(fù)雜的,含有多個(gè)具有不同時(shí)間長度的延時(shí)環(huán)節(jié)的系統(tǒng)。
現(xiàn)在,你也許已經(jīng)可以看出此處存在的一個(gè)矛盾: 數(shù)值擾動是把整個(gè)模型當(dāng)成一個(gè)黑箱,不需要知道黑箱里面的信息;但是我們實(shí)際上是知道這個(gè)黑箱里所有模塊的具體情況的。可是這些信息在數(shù)值擾動的過程中沒法有效的利用上。
2. 一些特殊的模塊
再看看下面這個(gè)例子:
如我們用數(shù)值擾動來線性化這個(gè)模型,那么我們會遇到兩個(gè)不同的情況:
擾動的足夠小,我們得到的是一個(gè)0增益的線性化結(jié)果;
擾動信號大到一定的程度,我們會得到一個(gè)線性的關(guān)系。
那么,哪個(gè)結(jié)果是對的呢?
答案是:都對,也都不對。這取決于用戶的具體問題。
如果用戶故意用這樣一組quantizer, 目的就是想分析在一個(gè)很小的范圍內(nèi)此模型的動態(tài)。在此情況下,a是所期望的。還有一種可能,就是用戶本身是不想用Quantizer的,但是在用數(shù)字電路實(shí)現(xiàn)某個(gè)部件的時(shí)候,不得已的讓一個(gè)本來應(yīng)該是線性增益的關(guān)系變成了這樣的Quantization的結(jié)果。那么在這種情況,b是用戶所期望的。
對于這樣一個(gè)特殊的模塊,我們的確可以通過調(diào)整干擾信號的大小來得到不同的結(jié)果。但是假設(shè)有無數(shù)多個(gè)類似這樣的模塊存在于某個(gè)模型中,有些模塊是屬于情況a,有些屬于情況b,那么整個(gè)基于數(shù)值擾動的線性化結(jié)果就無法如用戶所期望的了。
Simulink Control Design和Block-by-Block
Simulink Control Design工具箱的一大特點(diǎn)就是它提供了Block-by-Block的線性化方法。這個(gè)方法有時(shí)也叫Exact Linearization(不同于基于微分幾何的全局線性化)。簡單來講,在線性化的過程中,每個(gè)模塊會先被線性化,算出各自的Jacobian矩陣。然后由Simulink Control Design工具箱把這些信息有效的整合在一起(這是一個(gè)非常復(fù)雜的過程),從而計(jì)算出整個(gè)模型的線性化結(jié)果。
看下面這個(gè)例子:
線性化通路上有3個(gè)模塊,他們的Jacobian分別是cos(0) = 1, n階的pade approximation的狀態(tài)空間表達(dá)式和1。那么對于這個(gè)簡單的系統(tǒng)而言,整個(gè)線性化的結(jié)果就是這三個(gè)線性系統(tǒng)的級聯(lián)。
在第二個(gè)例子中:
用戶可以打開Quantizer的窗口:
把Treat as gain when linearizing的選項(xiàng)打上勾,這樣就會使得這個(gè)模塊被線性化成一個(gè)線性增益。
Simulink Control Design工具箱還帶有各種高級的功能。例如,對于一些很難線性化的模塊,用戶可以自己配置此模塊的線性化結(jié)果,用于整個(gè)模型或者子系統(tǒng)的線性化。
-
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1595瀏覽量
80379 -
線性化
+關(guān)注
關(guān)注
1文章
14瀏覽量
11706
發(fā)布評論請先 登錄
相關(guān)推薦
評論