官术网_书友最值得收藏!

4.1 多項式

多項式在代數中占有重要的地位,廣泛用于數據插值、數據擬合和信號與系統等應用領域。MATLAB提供了多項式的創建和各種多項式的運算方法,處理起來非常簡單方便。

4.1.1 多項式的創建

一個多項式按降冪排列為

在MATLAB中多項式的各項系數用一個行向量表示,使用長度為n+1的行向量按降冪排列,多項式中某次冪的缺項用0表示,則表示為

例如,多項式p1x)=x3﹣2x2+4x+6,在MATLAB中可以表示為p1=[1,﹣2,4,6];p2x)=x3+3x+6可表示為p2=[1,0,3,6]。

在MATLAB中,創建一個多項式,可以用poly2str和poly2sym函數實現,其調用格式如下:

其中,f=poly2str(p,'x')表示創建一個系數為p,變量為x的字符串型多項式;f=poly2sym(p)表示創建一個系數為p,默認變量為x的符號型多項式。兩者在命令窗口的顯示形式類似,但數據類型是不一樣的,一個是字符串型,另一個是符號型。

【例4-1】 已知多項式系數為p=[1,﹣2,4,6],分別用poly2str(p,'x')和poly2sym(p)創建多項式,比較它們有什么不同。

程序代碼如下:

顯然,兩種函數創建的多項式f1和f2顯示形式類似,但數據類型和大小都不一樣,如圖4-1所示。

圖4-1 兩種多項式的比較

4.1.2 多項式的值和根

1.多項式的值

在MATLAB里,求多項式的值可以用polyval和polyvalm函數。它們的輸入參數都是多項式系數和自變量,兩者區別是前者是代數多項式求值,后者是矩陣多項式求值。

1)代數多項式求值

polyval函數可以求代數多項式的值,其調用格式為

其中,p為多項式的系數,x為自變量,當x為一個數值,則求多項式在該點的值;若x為向量或矩陣,則對向量或矩陣的每個元素求多項式的值。

【例4-2】 已知多項式為fx)=x3﹣2x2+4x+6,分別求x1=2和x=[0,2,4,6,8,10]向量的多項式的值。

程序代碼如下:

程序運行結果:

2)矩陣多項式求值

polyvalm函數以矩陣為自變量求多項式的值,其調用格式為

其中,p為多項式系數,X為自變量,要求為方陣。

MATLAB用polyvalm和polyval函數求多項式的值是不一樣的,因為運算規則不一樣。例如,假設A為方陣,p為多項式x2﹣5x+6的系數,則polyvalm(p,A)表示A?A﹣5?A+6?eye(size(A)),而polyval(p,A)表示A?A﹣5?A+6?ones(size(A))。

【例4-3】 已知多項式為fx)=x2﹣3x+2,分別用polyvalm和polyval函數,求的多項式的值。

程序代碼如下:

程序運行結果:

2.多項式的根

一個n次多項式有n個根,這些根有實根,也有可能包含若干對共軛復根。MATLAB提供了roots函數用于求多項式的全部根,其調用格式為

其中,p為多項式的系數向量,r為多項式的根向量,r(1),r(2),…,r(n)分別表示多項式的n個根。

MATLAB還提供了一個由多項式的根,求多項式的系數的函數poly,其調用格式為

其中,r為多項式的根向量,p為由根r構造的多項式系數向量。

【例4-4】 已知多項式為fx)=x4+4x3﹣3x+2。

(1)用roots函數求該多項式的根r。

(2)用poly函數求根為r的多項式系數。

程序代碼如下:

程序運行結果:

顯然,roots和poly函數的功能正好相反。

4.1.3 多項式的四則運算

多項式之間可以進行四則運算,其結果仍為多項式。在MATLAB中,用多項式系數向量進行四則運算,得到的結果仍為多項式系數向量。

1.多項式的加減運算

MATLAB沒有提供多項式加減運算的函數。事實上多項式的加減運算,是合并同類型,可以用多項式系數向量相加減運算。如果多項式階次不同,則把低次多項式系數不足的高次項用0補足,使得多項式系數矩陣具有相同維度,以便進行加減運算。

2.多項式乘法運算

在MATLAB中,兩個多項式的乘積可以用函數conv實現。其調用格式為

其中,p1和p2是兩個多項式的系數向量;p是兩個多項式乘積的系數向量。

3.多項式除法運算

MATLAB可以用函數deconv實現兩個多項式的除法運算。其調用格式為

其中,q為多項式p1除以p2的商式;r為多項式p1除以p2的余式。q和r都是多項式系數向量。

deconv是conv的逆函數,即滿足p1=conv(p2,q)+r。

【例4-5】 已知兩個多項式為fx)=x4+4x3﹣3x+2,gx)=x3﹣2x2x

(1)求兩個多項式相加fx)+gx)和兩個多項式相減fx)﹣gx)的結果。

(2)求兩個多項式相乘fx)×gx)和兩個多項式相除fx)/gx)的結果。

程序代碼如下:

程序運行結果:

4.1.4 多項式的微積分運算

1.多項式的微分

對于n階多項式px)=anxnan﹣1xn﹣1+…+a1x1a0的求導,其導數為n﹣1階多項式dpx)=nanxn﹣1+(n﹣1)an﹣1xn﹣2+…+a1。原多項式及其導數多項式的系數分別為p=[anan﹣1,…,a1a0],d=[nan,(n﹣1)an﹣1,…,a1]。

在MATLAB中,可以用polyder函數來求多項式的微分運算,polyder函數可以對單個多項式求導,也可以對兩個多項式乘積和商求導,其調用格式如下:

【例4-6】 已知兩個多項式為fx)=x4+4x3﹣3x+2,gx)=x3﹣2x2x。

(1)求多項式fx)的導數。

(2)求兩個多項式乘積fx)?gx)的導數。

(3)求兩個多項式相除gx)/fx)的導數。

程序代碼如下:

程序運行結果:

2.多項式的積分

對于n階多項式px)=anxnan﹣1xn﹣1+…+a1x1a0,其不定積分為n+1階多項式,其中k為常數項。原多項式和積分多項式分別可以表示為系數向量p=[anan﹣1,…,a1,a0],I=。

在MATLAB中,提供了polyint函數用于多項式的積分。其調用格式為

顯然polyint是polyer的逆函數,即有p=polyder(I)。

【例4-7】 求多項式的積分I=∫(x44x33x+2)dx。

程序代碼如下:

程序運行結果:

4.1.5 多項式的部分分式展開

由分子多項式B(s)和分母多項式A(s)構成的分式表達式進行多項式的部分分式展開,表達式如下:

MATLAB可以用residue函數實現多項式的部分分式展開,residue函數的調用格式如下:

其中,B為分子多項式系數行向量;A為分母多項式系數行向量;[p1;p2;…;pn]為極點列向量;[r1;r2;…;rn]為零點列向量;k為余式多項式行向量。

residue函數還可以將部分分式展開式轉換為兩個多項式的除的分式,其調用格式為

【例4-8】 已知分式表達式為。

(1)求fs)的部分分式展開式。

(2)將部分分式展開式轉換為分式表達式。

程序代碼如下:

程序運行結果:

主站蜘蛛池模板: 平南县| 吉林市| 高台县| 子长县| 塔河县| 招远市| 德格县| 朝阳县| 鹤壁市| 合肥市| 西盟| 东山县| 淮南市| 阳新县| 和田县| 新竹市| 伊通| 叶城县| 左云县| 德格县| 邓州市| 方正县| 北辰区| 南充市| 家居| 若羌县| 衡南县| 获嘉县| 林西县| 镇原县| 凌云县| 仁布县| 汪清县| 开江县| 太原市| 桃江县| 湘西| 同江市| 虞城县| 宁津县| 霍城县|