1. 程式人生 > >MATLAB多項式運算與符號運算

MATLAB多項式運算與符號運算

利用多項式運算和符號表達式運算十分方便,下面總結了一些常用的函式,並附上自己編寫的將s域變換到z域的函式

多項式運算

1.r=roots(p)多項式求根

2.p3=conv(p1,p2)多項式相乘

3.p1=polyder(p)多項式求導

3.polyval(p,x)多項式代入求值

4.polyfit(x,y,n)多項式擬合

5. [r,p,k] =residue(b,a)部分分式展開

注:多項式運算的函式都是以向量來表示的,注意與符號表達式的區別,兩者間可以相互轉換 poly2sym(),sym2poly()

符號運算

1.syms x,y,z; 定義符號變數

2.sym=poly2sym(p,’s’);將多項式向量轉換成符號表達式

3.p=sym2poly(sym);將符號表達式轉化成多項式向量

4.[N,D]=numden(sym);將符號表達式分離出分子分母

5.subs(sym,’x’,value)符號表達式代數求值

6. simplify(sym)化簡

7.pretty(sym)美化輸出符號表達式

8.expand(sym)展開

9.collect(sym)合併

10.solve(sym)求解sym=0的解。

function [numz,denz]=s2z(nums,dens,Ts)
%[numz,denz]=s2z(nums,dens,Ts)
%功能:將s域傳遞函式變換到z域
%輸入:
%nums,dens 連續系統以s為變數分子,分母多項式
%輸出:
%numz,denz 離散系統以z為變數分子,分母多項式
syms t n s z;
Gs_num=poly2sym(nums);
Gs_den=poly2sym(dens);
Gs=Gs_num/Gs_den;
ft=ilaplace(Gs); %對連續傳函Laplace反變換
Gnt=subs(ft,t,n*Ts); %離散化
Gz=ztrans(Gnt); %z變換
[a,b]=numden(Gz); %numden函式將符號表達式的分子與分母分離
numz=sym2poly(a);
denz=sym2poly(b);
end