1、Matlab的应用-多项式函数及多项式拟合 作者: 日期:2 个人收集整理 勿做商业用途Matlab的应用多项式函数及多项式拟合本节将向大家简要介绍matlab 在多项式处理方面的应用.多项式函数主要有:roots 求多项式的根poly 特征多项式polyval 多项式的计算poly2str(p,x)多项式代换polyfit 多项式曲线拟合conv 多项式乘法deconv 多项式除法polyder 微分多项式下面我们将介绍这些函数的用法:1,roots-求多项式的根格式:roots(c)说明:它表示计算一个多项式的根,此多项式系数是向量c的元素。如果c有n+1个元素,那么此多项式为:c(1)*
2、xn+c(2)x(n1)+c(3)*x(n2)+-+c(n)x+c(n+1)2,poly特征多项式格式:poly(a)说明:(1)如果a是一个n阶矩阵,poly(a)是一个有n+1个元素的行向量,这n+1个元素是特征多项式的系数(降幂排列).(2)如果a是一个n维向量,则poly(a)是多项式(xa(1))(xa(2).(xa(n)),即该多项式以向量a的元素为根.3,polyval多项式计算格式:polyval(v,s)说明:如果v是一个向量,它的元素是一个多项式的系数,那麽polyval(v,s)是多项式在s处的值.如果s是一个矩阵或是一个向量,则多项式在s中所有元素上求值例如:v=1 2
3、 3 4;vv=poly2str(v,s)(即 v=s3+2s2+3s+4)s=2;x=polyval(v,s)x = 26例如:v=1 2 3 4;s=2 4;polyval(v,s)ans=26 1124,conv-多项式乘法例:as=1 2 3as = 1 2 3 az=2 4 2 1az = 2 4 2 1 conv(as,az)ans = 2 8 16 17 8 3conv(az,as)ans = 2 8 16 17 8 35,deconv-多项式除法例:deconv(az,as)%返回结果是商式的系数ans = 2 0awwq,qw=deconv(az,as)%awwq是商式的系数
4、,qw是余式的系数awwq = 2 0qw = 0 0 -4 16,polyder 微分多项式polyder(as)ans = 2 27,polyfit-多项式曲线拟合格式:polyfit(x,y,n)说明:polyfit(x,y,n)是找n次多项式p(x)的系数,这些系数满足在最小二乘法意义下p(x(i)) = y(i).“人口问题是我国最大社会问题之一,估计人口数量和发展趋势是我们制定一系列相关政策的基础。有人口统计年鉴,可查到我国从1949年至1994年人口数据资料如下:年份1949195419591964196919741979198419891994人口数 (百万)541.67602
5、。66672.09704.99806。71908.59975.421034.751106.761176.74 如何确定我国人口的发展变化规律呢?一般地,我们采用下面的分析处理方法:首先,在直角坐标系上作出人口数与年份的散点图象。观察随着年份的增加人口数与年份变化关系,初步估计出他们之间的关系可近似地可看做一条直线。那么我们如何把这条直线方程确定出来呢?并用他来估计1999年我国的人口数。方法一:先选择能反映直线变化的两个点,如(1949,541。67),(1984,1034.75)二点确定一条直线,方程为 N = 14.088 t 26915.842 ,代入t =1999,得N 12.46亿方
6、法二:可以多取几组点对,确定几条直线方程,将t = 1999代入,分别求出人口数,在取其算数平值.方法三:可采用“最小二乘法”求出直线方程。这就是曲线拟合的问题。方法一与方法二都具有一定的局限性,下面我们重点介绍数据的曲线拟合。所谓曲线拟合是指给定平面上的n个点(xi,yi),i=1,2,。,n,找出一条曲线使之与这些点相当吻合,这个过程称之为曲线拟合。最常见的曲线拟合是使用多项式来作拟合曲线。曲线拟合最常用的方法是最小二乘法。其原理是求f(x),使达到最小。matlab提供了基本的多项式曲线拟合函数命令polyfit格式::polyfit(x,y,n)说明:polyfit(x,y,n)是找n
7、次多项式p(x)的系数,这些系数满足在最小二乘法意义下p(x(i)) = y(i)。已知一组数据,用什么样的曲线拟合最好呢?可以根据散点图进行直观观察,在此基础上,选择几种曲线分别拟合,然后比较,观察那条曲线的最小二乘指标最小。下面我们给出常用的曲线(下面的为变量,等为参数)直线:多项式: (一般情况下,n不宜过高,n=2,3)双曲线:y=指数曲线:幂函数:有些曲线的拟合,为了利用数学软件,在拟合前需作变量替换,化为对未知数的线性函数。思考:如果根据经验,曲线是双曲线或指数曲线及幂函数等,如何利用matlab的多项式拟合函数来作曲线拟合?例2:在化学反应中,为研究某化合物的浓度随时间的变化规律
8、。测得一组数据如下表所示:x(分)12345678浓度y46.48.08。49.289。59。79.86x(分)910111213141516浓度y1010。210.3210.4210.510.5510.5810.6试求浓度y与时间t的经验函数关系。并推断第20、40分钟时的浓度值。本题是一个可以用数据的曲线拟合来解决的问题。下面是利用matlab编的一段程序.clear;%录入数据xy=1 4 2 6.4 3 8。0 4 8。4 5 9。28 6 9.5 7 9。7 8 9。86 9 10 10 10.211 10.3212 10.4213 10.514 10。5515 10。5816 10
9、。6; x=xy(:,1);y=xy(:,2); plot(x,y,r);画出散点图,观察曲线走势hold on;t=0:.3:10;pxdxs=polyfit(x,y,2);pxd=poly2str(pxdxs,x)pxdx=polyval(pxdxs,t);plot(t,pxdx,-k) 方法2:解下述方程组:(这是超定方程组(方程个数大于未知数个数的方程),这个方程组没有普遍意义下的解,但可以在最小二乘法意义下求解)把它写成矩阵乘法的形式:yaa,b,c其中,a=1,1,1;1 2 22;1 3 32;1 4 42;1 5 52;1 6 62;1 7 72; 1 8 82;1 9 92;1 10 102; 1 11 112;1 12 122;1 13 132;1 14 142;1 15 152;1 16 162;y=4 6。4 8。0 8。4 9。28 9.5 9.7 9。86 10 10。2 10。32 10.42 10。5 10。55 10。58 10.6; 于是,abc=ay