仿真步長和求解精度的概念對於理解這個問題至關重要。
首先是步長,步長和求解精度存在一對矛盾,步長的選擇是仿真消耗的時間和求解精度要求的折中。計算機只能一步一步計算你的電路或者其他方程,例如你輸入一個連續的信號,計算機在一個時刻僅僅會采集這個信號上的一個點,然后把這個點帶入你的控制器數學方程中,求出電路方程的一個解,根據這個解得到系統的輸出。因此,仿真波形其實是一個個的點聚集在一起形成的,並非所見的一條曲線。很顯然,一個個離散的點之間的間隔越小,出來的波形就越漂亮,你仿真所得到的誤差就會越小。如果步長無窮接近0 ,那么仿真結果就無窮接近於物理系統。為何不能讓計算機系統的步長無窮接近0 呢?如果這樣的話,計算機系統的計算量太大,導致仿真消耗的時間會太長。實際仿真中步長的選擇需要結合仿真所消耗的時間和仿真精度要求兩者之間的關系,在消耗的時間和精度之間進行折中。
其次是求解精度,精度不僅受到仿真步長的影響,而且系統的離散化方法和求解結束后通過離散的點得到連續曲線的插值算法也會影響求解精度。目前有多離散化方法,不同的離散化方法所得到的結果精度不同,不同的離散化方法都有一個“特征采樣時間”可以使得自己在這個采樣時間下精度最好。因此,離散化方法離散結束后不僅僅得到一個離散系統,還會有一個最佳仿真步長。
上述為步長和精度的概念以及兩者之間的關系,接下來分析MATLAB提供連續和離散兩種輸入方式的目的。
MATLAB提供連續系統的控制器和控制對象輸入是為了:便於用戶方便快捷使用仿真軟件。對於一個小白,他並不懂得上述步長、離散方法、求解精度的概念,但又想得到一個較好的仿真結果怎么辦?MATLAB提供這種方式,你只需要輸入一個連續傳遞函數,matlab會根據連續系統的特性使用內部自帶的離散化方法對你的系統離散化,並自動設置一個仿真步長,你需要完成的就是等待,這樣降低了用戶的使用門檻兒和難度。對於一個懂得理論的人,他也有可能不想自己耗費時間和精力去進行系統的離散化,這樣的“自動化”使得軟件用起來更加方便。
MATLAB提供離散的控制器和控制對象輸入是為了追求更高的仿真精度,為用戶提供更加廣泛的選擇。有些精度要求很高的系統,其仿真步長由其他因素決定,必須選擇固定的或一段范圍的步長。這種情況下系統自己的離散化方法以及自己計算的步長並不適合仿真,兩者同時或者有其一必須由用戶指定。為了在這種苛刻條件下依舊可以使用仿真軟件,用戶需要根據自己的要求對系統自行離散化,得到離散系統和對應的采樣時間,自己輸入到軟件中,從而得到相應精度要求下的仿真結果。離散的控制器和對象的輸入方法在在這種情況下拓寬了軟件的適用范圍,為用戶提供了更加自由的選擇空間。
因此,你所問的問題中,四種控制之間的區別在於仿真精度和消耗的時間。因為軟件現在很強大,所以,若想要看到四種控制之間的差異,需要找到一個精度要求很高,而且極易不穩定的系統才能看出差別在哪里。對於一般的應用,四種方法可以任選其一。
此文也在我的知乎文章中發表。