Chap10多项式.docVIP

  • 1
  • 0
  • 约8.05千字
  • 约 9页
  • 2016-11-27 发布于天津
  • 举报
Chap10多项式.doc

第10章 多 项 式 10.1 根 找出多项式的根,即多项式为零的值,可能是许多学科共同的问题,。MATLAB求解这个问题,并提供其它的多项式操作工具。在MATLAB里,多项式由一个行向量表示,它的系数是按降序排列。例如,输入多项式x4-12x3+0x2+25x+116 ? p=[1 -12 0 25 116] p = 1 -12 0 25 116 注意,必须包括具有零系数的项。除非特别地辨认,MATLAB无法知道哪一项为零。给出这种形式,用函数roots找出一个多项式的根。 ? r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i 因为在MATLAB中,无论是一个多项式,还是它的根,都是向量,MATLAB按惯例规定,多项式是行向量,根是列向量。给出一个多项式的根,也可以构造相应的多项式。在MATLAB中,命令poly执行这个任务。 ? pp=poly(r) pp = 1.0e+002 * Columns 1 through 4 0.0100 -0.1200 0.0000 0.2500 Column 5 1.1600 + 0.0000i ? pp=real(pp) %throw away spurious imaginary part pp = 1.0000 -12.0000 0.0000 25.0000 116.0000 因为MATLAB无隙地处理复数,当用根重组多项式时,如果一些根有虚部,由于截断误差,则poly的结果有一些小的虚部,这是很普通的。消除虚假的虚部,如上所示,只要使用函数real抽取实部。 10.2 乘法 函数conv支持多项式乘法(执行两个数组的卷积)。考虑两个多项式a(x)=x3+2x2+3x+4和b(x)= x3+4x2+9x+16的乘积: ? a=[1 2 3 4] ; b=[1 4 9 16]; ? c=conv(a , b) c = 1 6 20 50 75 84 64 结果是c(x)=x6+6x5+20x4+50x3+75x2+84x+64。两个以上的多项式的乘法需要重复使用conv。 10.3 加法 对多项式加法,MATLAB不提供一个直接的函数。如果两个多项式向量大小相同,标准的数组加法有效。把多项式a(x)与上面给出的b(x)相加。 ? d=a+b d = 2 6 12 20 结果是d(x)= 2x3+6x2+12x+20。当两个多项式阶次不同,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次。考虑上面多项式c和d相加: ? e=c+[0 0 0 d] e = 1 6 20 52 81 96 84 结果是e(x)= x6+6x5+20x4+52x3+81x2+96x+84。要求首零而不是尾零,是因为相关的系数象x幂次一样,必须整齐。 如果需要,可用一个文件编辑器创建一个函数M文件来执行一般的多项式加法。精通MATLAB工具箱包含下列实现: function p=mmpadd(a,b) % MMPADD Polynomial addition. % MMPADD(A,B) adds the polynomial A and B % Copyright (c) 1996 by Prentice Hall,Inc. if nargin2 error( Not enough input arguments ) end a=a(:). ; % make sure inputs are polynomial row vectors b=b(:). ; na=length(a) ; % find lengths of a and b nb=length(b) ; p=[zeros(1,nb-na) a]+[zeros(1,na-nb) b] ; % add zer

文档评论(0)

1亿VIP精品文档

相关文档