?? ch4_1_4.htm
字號:
<html><head><title> 多項式函數(shù) </title><meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 3.0"></head><body BACKGROUND="../img1/bg0000.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img/bg0000.gif"><script language="JAVASCRIPT"><!--if (navigator.onLine){document.write("<!-- Spidersoft WebZIP Ad Banner Insert -->");document.write("<TABLE width=100% border=0 cellpadding=0 cellspacing=0>");document.write("<TR>");document.write("<TD>");document.write("<ILAYER id=ad1 visibility=hidden height=60></ILAYER>");document.write("<NOLAYER>");document.write("<IFRAME SRC='http://www.spidersoft.com/ads/bwz468_60.htm' width=100% height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no></IFRAME>");document.write("</NOLAYER>");document.write("</TD>");document.write("</TR>");document.write("</TABLE>");document.write("<!-- End of Spidersoft WebZIP Ad Banner Insert-->");} //--></script><!-- Spidersoft WebZIP Ad Banner Insert --><!-- End of Spidersoft WebZIP Ad Banner Insert--><h1><font SIZE="6" COLOR="#0000FF">4.1.4 多項式函數(shù) </font></h1><hr><p>在工程及科學分析上,多項式常被用來模擬一個物理現(xiàn)象的解析函數(shù),我們在第九章所介紹的「曲線契合」 即是一個這方面的應(yīng)用。之所以采用多項式,是因為它很容易計算。在這章中我們將說明如何做多項式的計 算及解多項式的根。 <br></p><p>令<i>p</i>(<i>x</i>) 代表一個多項式如下 </p><p><img SRC="../img4/img00008.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00008.gif" WIDTH="178" HEIGHT="26"> </p><p>MATLAB 以一最簡便方式代表上述的多項式 <font COLOR="#FF0000">p=[1 4 -7 -10]</font>,其中的數(shù)值是多項式的各階項(從高到低)的 各個系數(shù),其實<font COLOR="#FF0000">p</font> 也是一個陣列不過是用以代表這個多項式。 <br></p><p>有了多項式的表示式后,我們即可來計算其函數(shù)值。假設(shè)要計算一組數(shù)據(jù)<font COLOR="#FF0000">x</font>對應(yīng)的多項式值,依照一般的函數(shù) 計算須以下列式子計算: </p><p><font COLOR="#FF0000">>> p=x.^3+4*x.^2-7*x-10</font> </p><p>為了能直接運用多項式,可以用函數(shù) <font COLOR="#FF0000">polyval</font>直接做運算,語法為 <font COLOR="#FF0000">polyval(p,x)</font>,其中<font COLOR="#FF0000">p</font> 即是代表多項式各階系數(shù) 的陣列。因此 </p><p><font COLOR="#FF0000">>> x=linspace(-1,3);</font> </p><p><font COLOR="#FF0000">>> p=[1 4 7 -10];</font> </p><p><font COLOR="#FF0000">>> v=polyval(p,x);<br></font></p><p>我們接著說明如何對二個多項式做加減乘除運算,以及對多項式微分。當二個多項式間要做加減乘除時,加 減運算可以直接進行。假設(shè)有二個多項式<img SRC="../img4/img00009.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00009.gif" WIDTH="38" HEIGHT="22"> 和 <img SRC="../img4/img00010.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00010.gif" WIDTH="40" HEIGHT="22"> 定義如下: </p><p><img SRC="../img4/img00011.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00011.gif" WIDTH="360" HEIGHT="26"> </p><p>如果多項式 <img SRC="../img4/img00012.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00012.gif" WIDTH="38" HEIGHT="22"> 為上述二多項式相加,即 <img SRC="../img4/img00013.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00013.gif" WIDTH="136" HEIGHT="22">,因此 </p><p><img SRC="../img4/img00014.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00014.gif" WIDTH="189" HEIGHT="26"> </p><p>如果是二多項式相減得到的多項式為 <img SRC="../img4/img00015.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00015.gif" WIDTH="138" HEIGHT="22"> 則 </p><p><img SRC="../img4/img00016.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00016.gif" WIDTH="154" HEIGHT="26"><br></p><p>而將兩個多項式相乘可以得到一新的多項式<img SRC="../img4/img00017.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00017.gif" WIDTH="125" HEIGHT="22">: </p><p><img SRC="../img4/img00018.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00018.gif" WIDTH="324" HEIGHT="26"> </p><p>如果是兩個多項式相除,即<img SRC="../img4/img00019.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00019.gif" WIDTH="145" HEIGHT="46">: </p><p><img SRC="../img4/img00020.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00020.gif" WIDTH="170" HEIGHT="26"> </p><p>上述二個運算式不能直接運算,須要另外定義函數(shù)<font COLOR="#FF0000">conv</font>做乘法運算以及函數(shù)<font COLOR="#FF0000">deconv</font>做除法運算。當二多項式 相乘,在數(shù)學上等于二個陣列做旋積(convolution)運算(因為我們是以陣列來代表一個多項式的各階系數(shù)), 因此可利用<font COLOR="#FF0000">conv</font>函數(shù)做乘法運算,其語法為<font COLOR="#FF0000">conv(a,b)</font>,其中<font COLOR="#FF0000">a</font>,<font COLOR="#FF0000"> b</font>代表二個多項式的陣列。而二多項式相除就相 當于反旋積(de-convolution) 運算,因此有 <tt>deconv</tt> 函數(shù),其語法稍有不同 <font COLOR="#FF0000">[q,r]=deconv(a,b)</font>,其中<font COLOR="#FF0000">q</font>,<font COLOR="#FF0000">r</font>分別代表整 除多項式及余數(shù)多項式。<br></p><p>以下就介紹相關(guān)范例,來說明二個多項式的加減乘除運算: </p><p><font COLOR="#FF0000">>> a=[1 2 3 4]; b=[1 4 9 16];</font> </p><p><font COLOR="#FF0000">>> c=a+b</font> </p><p><font COLOR="#FF0000">c =</font> </p><p><font COLOR="#FF0000">2 6 12 20</font> </p><p><font COLOR="#FF0000">>> d=a-b</font> </p><p><font COLOR="#FF0000">d =</font> </p><p><font COLOR="#FF0000">0 -2 -6 -12</font> </p><p><font COLOR="#FF0000">>> e=conv(a,b)</font> </p><p><font COLOR="#FF0000">e =</font> </p><p><font COLOR="#FF0000">1 6 20 50 75 84 64</font> </p><p><font COLOR="#FF0000">>> g=e+[0 0 0 c]</font> </p><p><font COLOR="#FF0000">g =</font> </p><p><font COLOR="#FF0000">1 6 20 52 81 96 84</font> </p><p><font COLOR="#FF0000">>> [f,r]=deconv(e,b)</font> </p><p><font COLOR="#FF0000">f =</font> </p><p><font COLOR="#FF0000">1 2 3 4</font> </p><p><font COLOR="#FF0000">r =</font> </p><p><font COLOR="#FF0000">0 0 0 0 0 0 0 % 因為是整除所以余數(shù)多項式的各系數(shù)皆為零</font> </p><p><font COLOR="#FF0000">>> [h,r]=deconv(g,a)</font> </p><p><font COLOR="#FF0000">f =</font> </p><p><font COLOR="#FF0000">1 4 9 18</font> </p><p><font COLOR="#FF0000">r =</font> </p><p><font COLOR="#FF0000">0 0 0 0 2 6 12 % 余數(shù)多項式為 2*x^2 + 6*x + 12<br></font></p><p>一個多項式視其階數(shù)而定,它的根可以有一個到數(shù)個,可能為實數(shù)也可能是復數(shù)。要求一高階多項式的根 往往須借助數(shù)值方法,所幸MATLAB已將這些數(shù)值方法寫成一函數(shù)<font COLOR="#FF0000">roots(p)</font>,我們只要輸入多項式的各階系 數(shù)(以<font COLOR="#FF0000">p</font>代表)即可求解到對應(yīng)的根。 </p><p><font COLOR="#FF0000">>> p=[1 3 2];</font> </p><p><font COLOR="#FF0000">>> r=roots(p)</font> </p><p><font COLOR="#FF0000">r =</font> </p><p><font COLOR="#FF0000">-2</font> </p><p><font COLOR="#FF0000">-1</font> </p><p><font COLOR="#FF0000">>> p=[1 -12 0 25 116]; % 注意二階項系數(shù)為零須要輸入,否則多項式的階數(shù)就不對</font> </p><p><font COLOR="#FF0000">>> r=roots(p) % 有實數(shù)根及復數(shù)根</font> </p><p><font COLOR="#FF0000">r =</font> </p><p><font COLOR="#FF0000">11.7473</font> </p><p><font COLOR="#FF0000">2.7028</font> </p><p><font COLOR="#FF0000">-1.2251 + 1.4672i</font> </p><p><font COLOR="#FF0000">-1.2251 - 1.4672i<br></font></p><p>與 <font COLOR="#FF0000">roots</font> 相關(guān)的函數(shù)尚有 <font COLOR="#FF0000">poly</font>, <font COLOR="#FF0000">real</font>,這二個函數(shù)的用途是要驗算求解的根展開能求得原多項式。 例如有一個二次方程式的根為 2, 1,則以下式計算原多項式 </p><p><img SRC="../img4/img00021.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img4/img00021.gif" WIDTH="240" HEIGHT="26"> </p><p><font COLOR="#FF0000">poly</font>函數(shù)就是在求出多項式的各階系數(shù),其語法為 <font COLOR="#FF0000">poly(r)</font>,其中 <font COLOR="#FF0000">r </font>是代表根的陣列。而 <font COLOR="#FF0000">real</font>則是用來去除因計算時產(chǎn)生的假虛部系數(shù),為何會有此種情形請參考以下的例子。 </p><p><font COLOR="#FF0000">>> r=[-2 -1];</font> </p><p><font COLOR="#FF0000">>> pp=poly(r) % pp=(x+2)(x+1)=x^2+3x+2</font> </p><p><font COLOR="#FF0000">pp =</font> </p><p><font COLOR="#FF0000">1 3 2</font> </p><p><font COLOR="#FF0000">>> p=[1 -4 6 -4];</font> </p><p><font COLOR="#FF0000">>> r=roots(p)</font> </p><p><font COLOR="#FF0000">r =</font> </p><p><font COLOR="#FF0000">2.0000 1.0000 + 1.0000i 1.0000 - 1.0000i </font></p><p><font COLOR="#FF0000">>> pp=poly(r) % 這個多項式的系數(shù)與原多項式 p 相同</font> </p><p><font COLOR="#FF0000">pp =</font> </p><p><font COLOR="#FF0000">1 -4 6 -4</font> </p><p><font COLOR="#FF0000">>> pp=[1 7 12 9]; % 再看另一個多項式</font> </p><p><font COLOR="#FF0000">>> r=roots(pp)</font> </p><p><font COLOR="#FF0000">r =</font> </p><p><font COLOR="#FF0000">-4.9395 </font></p><p><font COLOR="#FF0000">-1.0303 + 0.8721i</font> </p><p><font COLOR="#FF0000">-1.0303 - 0.8721i</font> </p><p><font COLOR="#FF0000">>> pp=poly(r) % 注意因計算的誤差會有假虛部產(chǎn)生</font> </p><p><font COLOR="#FF0000">pp =</font> </p><p><font COLOR="#FF0000">1.0000 7.0000 12.0000 9.0000 + 0.0000i</font> </p><p><font COLOR="#FF0000">>> pp=real(pp) % 可以real將假虛部去除,將原多項式還原</font> </p><p><font COLOR="#FF0000">pp =</font> </p><p><font COLOR="#FF0000">1.0000 7.0000 12.0000 9.0000<br></font></p><hr><p><a HREF="ch4_1_3.htm" tppabs="http://webclass.ncu.edu.tw/~junwu/ch4_1_3.htm"><img SRC="../img1/lastpage.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img/lastpage.gif" BORDER="0" WIDTH="42" HEIGHT="42"></a> <a HREF="ch4_2.htm" tppabs="http://webclass.ncu.edu.tw/~junwu/ch4_2.htm"><img SRC="../img1/nextpage.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img/nextpage.gif" BORDER="0" HSPACE="10" WIDTH="42" HEIGHT="42"></a> <a HREF="../index.html" tppabs="http://webclass.ncu.edu.tw/~junwu/index.html"><img SRC="../img1/outline.gif" tppabs="http://webclass.ncu.edu.tw/~junwu/img/outline.gif" BORDER="0" HSPACE="6" WIDTH="42" HEIGHT="42"></a> <br><font SIZE="2" COLOR="#FF00FF">上一頁 下一頁 講義大綱 </font><layer src="http://www.spidersoft.com/ads/bwz468_60.htm" visibility="hidden" id="a1" width="600" onload="moveToAbsolute(ad1.pageX,ad1.pageY); a1.clip.height=60;visibility='show';"></layer> </p></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -