matlab 符號運算

在matlab裏,進行符號運算。一般在用在離散化的時候用的比較多,關於離散化用符號運算,離散化的那個blog裏有栗子。
下面記錄一寫我自己常用到的符號運算的方法。

  1. 建立符號變量和常量,一般用syms就可以。
  2. 精度。精度可以用digits,vpa,和double。
    用法如下:
digits(n)
vpa(sys,n)
double(sys)

3.符號表達式的化簡和替換;常用的有如下:
函數collect(sys) %將sys中表達式li相同次冪的項合併;
collect(sys,s) % 講sys中以變量s的相同次冪的項合併;
函數factor(sys)對符號多項式進行因式分解;
函數simplify(sys) 將表達式化簡成最簡形式。
函數pretty(sys) 將表達式轉化爲排版數學的形式輸出。
自己比較常用的是collect和simplify。
當然還有很多其他的,自己不用,就不列舉了。

4.符號表達式的替換。
自己常用的是subs。
用法:sys_new = subs(sys,old,new) 用新符號裏的new替換舊的old。
舉幾個例子:

syms s z 
sys = s^2+2*s+1;
sys1 = subs(sys,s,z)   % 將sys裏的s替換成z

同樣的,這樣還可以做數值運算。eg:

sys2 = subs(sys,s,1)

此時將s=1帶入sys,輸出是4.
還可以將某個表達式帶入,做離散化數值運算之類的。eg:

syms wr w0 Kp Kr s Ts z    % 定義符號變量
G1 =2*Kr*wi*s/(s^2+2*wi*s+w0^2)         %R控制
G2 = subs(G1,s,2*(z-1)/Ts/(z+1))    %離散化  tustin變換
G3 = collect(G2,z)  % 將表達式G2中的以z爲變量合併相同次冪;

上面是利用tustin變換用數值運算進行離散化,這樣就不用手去操作了。
或:

syms wr w0 Kp Kr s Ts z    % 定義符號變量
G1 =2*Kr*wi*s/(s^2+2*wi*s+w0^2)         %R控制
sys_s2c = 2*(z-1)/Ts/(z+1)
G2 = subs(G1,s,sys_s2c)    %離散化  tustin變換
G3 = collect(G2,z)  % 將表達式G2中的以z爲變量合併相同次冪;

5.可視化數學分析
command :funtool

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章