📄 ch4_1_4.htm
字号:
<html><head><title> 多项式函数 </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 多项式函数 </font></h1><hr><p>在工程及科学分析上,多项式常被用来模拟一个物理现象的解析函数,我们在第九章所介绍的「曲线契合」 即是一个这方面的应用。之所以采用多项式,是因为它很容易计算。在这章中我们将说明如何做多项式的计 算及解多项式的根。 <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>,其中的数值是多项式的各阶项(从高到低)的 各个系数,其实<font COLOR="#FF0000">p</font> 也是一个阵列不过是用以代表这个多项式。 <br></p><p>有了多项式的表示式后,我们即可来计算其函数值。假设要计算一组数据<font COLOR="#FF0000">x</font>对应的多项式值,依照一般的函数 计算须以下列式子计算: </p><p><font COLOR="#FF0000">>> p=x.^3+4*x.^2-7*x-10</font> </p><p>为了能直接运用多项式,可以用函数 <font COLOR="#FF0000">polyval</font>直接做运算,语法为 <font COLOR="#FF0000">polyval(p,x)</font>,其中<font COLOR="#FF0000">p</font> 即是代表多项式各阶系数 的阵列。因此 </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>我们接著说明如何对二个多项式做加减乘除运算,以及对多项式微分。当二个多项式间要做加减乘除时,加 减运算可以直接进行。假设有二个多项式<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>上述二个运算式不能直接运算,须要另外定义函数<font COLOR="#FF0000">conv</font>做乘法运算以及函数<font COLOR="#FF0000">deconv</font>做除法运算。当二多项式 相乘,在数学上等于二个阵列做旋积(convolution)运算(因为我们是以阵列来代表一个多项式的各阶系数), 因此可利用<font COLOR="#FF0000">conv</font>函数做乘法运算,其语法为<font COLOR="#FF0000">conv(a,b)</font>,其中<font COLOR="#FF0000">a</font>,<font COLOR="#FF0000"> b</font>代表二个多项式的阵列。而二多项式相除就相 当于反旋积(de-convolution) 运算,因此有 <tt>deconv</tt> 函数,其语法稍有不同 <font COLOR="#FF0000">[q,r]=deconv(a,b)</font>,其中<font COLOR="#FF0000">q</font>,<font COLOR="#FF0000">r</font>分别代表整 除多项式及余数多项式。<br></p><p>以下就介绍相关范例,来说明二个多项式的加减乘除运算: </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 % 因为是整除所以余数多项式的各系数皆为零</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 % 余数多项式为 2*x^2 + 6*x + 12<br></font></p><p>一个多项式视其阶数而定,它的根可以有一个到数个,可能为实数也可能是复数。要求一高阶多项式的根 往往须借助数值方法,所幸MATLAB已将这些数值方法写成一函数<font COLOR="#FF0000">roots(p)</font>,我们只要输入多项式的各阶系 数(以<font COLOR="#FF0000">p</font>代表)即可求解到对应的根。 </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]; % 注意二阶项系数为零须要输入,否则多项式的阶数就不对</font> </p><p><font COLOR="#FF0000">>> r=roots(p) % 有实数根及复数根</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> 相关的函数尚有 <font COLOR="#FF0000">poly</font>, <font COLOR="#FF0000">real</font>,这二个函数的用途是要验算求解的根展开能求得原多项式。 例如有一个二次方程式的根为 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>函数就是在求出多项式的各阶系数,其语法为 <font COLOR="#FF0000">poly(r)</font>,其中 <font COLOR="#FF0000">r </font>是代表根的阵列。而 <font COLOR="#FF0000">real</font>则是用来去除因计算时产生的假虚部系数,为何会有此种情形请参考以下的例子。 </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) % 这个多项式的系数与原多项式 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) % 注意因计算的误差会有假虚部产生</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 + -