代數環

代數環

數字計算機模擬中,當輸入信號直接取決於輸出信號,同時輸出信號也直接取決於輸入信號時,由於數字計算的時序性,而出現的由於沒有輸入無法計算輸出,沒有輸出也無法得到輸入的“死鎖環” ,稱之為代數環。

輸出中的一部分反饋到輸入,或者說,輸入直接決定於輸出,這是反饋迴路的共同特點。代數環是一種特殊的反饋迴路,它的特殊之處就在於除了輸入直接決定於輸出外,輸出還直接決定於輸入,在這裡, “直接”二字很重要,它體現了代數環的實質,模擬計算中的“死鎖”就是由此產生的。

產生條件


如前所述,代數環是一種反饋迴路,但並非所有的反饋迴路都是代數環。代數環存在的充分必要條件是:存在一個閉合路徑,該閉合路徑中的每一個模塊都是直通模塊。所謂直通,指的是模塊輸入中的一部分直接到達輸出。SimuLink的模塊庫中提供的很多模塊都是直通模塊。

消除方法


代數環對應於一定的數學模型的形式(即隱函數的形式) ,如果能夠將原始的數學模型進行等價變換,得到顯函數形式,則按顯函數實現模擬模型,就可以消除代數環。
簡單的解決方式是在代數環迴路中增加一個memory模塊(加memory模塊的目的,相當於離散系統中加一個delay模塊的功能是一樣的是為了避免具有代數環的模塊,都在同一時刻有輸出,產生錯誤,讓各模塊輸出的時間有一個延時,有前後順序,達到遵循模擬原理的要求,進而能輸出結果),或者增加一個微量延遲環(如1/(0.0001s+1)),最好放在輸出回傳時這個位置,這樣,由於時間的差異,會使模擬順利進行。
Simulink提供了一些專門手段來拆解代數環,例如代數約束模塊(Algebraic Constraint),積分模塊(以及離散積分模塊)的狀態輸出端等。這些手段可以解決一些特定的代數環問題。下面舉一個利用積分模塊的狀態輸出端的例子。
從積分模塊的輸人埠到輸出埠是非直通的,但從積分模塊的初始值輸人埠到輸出埠,以及從複位輸人埠到輸出埠卻都是直通的。因此,如果從積分模塊的輸出埠引出的信號再經過一些直通模塊后又反饋到積分模塊的初始值輸人埠或者複位輸人埠,則構成一個代數環。為了解決這個問題,Simulink專門為積分模塊設計了一個狀態埠(state port),其輸出與輸出埠完全相同,僅在內部計算的時序上有細微區別,而無論是從積分模塊的初始值輸人埠還是從複位輸人埠到狀態埠都是非直通的。因此,當出現上述的代數環問題時,可以從積分模塊的狀態埠引出信號。這樣,代數環就被拆解了。