Matlab的应用-多项式函数及多项式拟合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab的应用-多项式函数及多项式拟合
本节将向大家简要介绍matlab 在多项式处理方面的应用。
下面我们将介绍这些函数的用法:
1,roots---求多项式的根
格式:roots(c)
说明:它表示计算一个多项式的根,此多项式系数是向量c的元素.如果c有n+1个元素,那么此多项式为:
c(1)*x^n+c(2)*x^(n-1)+c(3)*x^(n-2)+--+c(n)*x+c(n+1)
2,poly---特征多项式
格式:poly(a)
说明:(1)如果a是一个n阶矩阵,poly(a)是一个有n+1个元素的行向量,这n+1个元素是特征多项式的系数(降幂排列).
(2)如果a是一个n维向量,则poly(a)是多项式(x-a(1))*(x-a(2))*..(x-a(n)),即该多项式以向量a的元素为根。
3,polyval—多项式计算
格式:polyval(v,s)
说明:
如果v是一个向量,它的元素是一个多项式的系数,那麽polyval(v,s)是多项式在s处的值.
如果s是一个矩阵或是一个向量,则多项式在s中所有元素上求值
例如:
v=[1 2 3 4];vv=poly2str(v,’s’)
(即 v=s^3+2*s^2+3*s+4)
s=2;
x=polyval(v,s)
x =
26
例如:
v=[1 2 3 4];
s=[2 4];
polyval(v,s)
ans=26 112
4,conv-多项式乘法
例:as=[1 2 3]
as =
1 2 3
>> az=[2 4 2 1]
az =
2 4 2 1
>> conv(as,az)
ans =
2 8 16 17 8 3
conv(az,as)
ans =
2 8 16 17 8 3
5,deconv-多项式除法
例:deconv(az,as)%返回结果是商式的系数
ans =
2 0
[awwq,qw]=deconv(az,as)%awwq是商式的系数,qw是余式的系数
awwq =
2 0
qw =
0 0 -4 1
6,polyder 微分多项式
polyder(as)
ans =
2 2
7,polyfit--多项式曲线拟合
格式::polyfit(x,y,n)
说明:polyfit(x,y,n)是找n次多项式p(x)的系数,这些系数满足在最小二乘法意义下p(x(i)) ~= y(i).
“人口问题”是我国最大社会问题之一,估计人口数量和发展趋势是我们制定一
系列相关政策的基础。有人口统计年鉴,可查到我国从1949年至1994年人口数
一般地,我们采用下面的分析处理方法:
首先,在直角坐标系上作出人口数与年份的散点图象。观察随着年份的增加人口数与年份变化关系,初步估计出他们之间的关系可近似地可看做一条直线。那么我们如何把这条直线方程确定出来呢?并用他来估计1999年我国的人口数。 方法一:先选择能反映直线变化的两个点,如(1949,541.67),(1984,1034.75)二点确定一条直线,方程为 N = 14.088 t – 26915.842 ,代入t =1999,得N ≈12.46亿
方法二:可以多取几组点对,确定几条直线方程,将t = 1999代入,分别求出人口数,在取其算数平值。
方法三:可采用“最小二乘法”求出直线方程。这就是曲线拟合的问题。
方法一与方法二都具有一定的局限性,下面我们重点介绍数据的曲线拟合。所谓曲线拟合是指给定平面上的n 个点(x i ,y i ),i=1,2,….,n,找出一条曲线使之与这
些点相当吻合,这个过程称之为曲线拟合。最常见的曲线拟合是使用多项式来作拟合曲线。曲线拟合最常用的方法是最小二乘法。其原理是求f(x),使21])([i n
i i y x f -=∑=δ达到最小。matlab 提供了基本的多项式曲线拟合函数命令
polyfit
格式::polyfit(x,y,n)
说明:polyfit(x,y,n)是找n 次多项式p(x)的系数,这些系数满足在最小二乘法意义下p(x(i)) ~= y(i).
已知一组数据,用什么样的曲线拟合最好呢?可以根据散点图进行直观观察,在此基础上,选择几种曲线分别拟合,然后比较,观察那条曲线的最小二乘指标最小。
下面我们给出常用的曲线(下面的,x y 为变量,,a b 等为参数)
直线:y ax b =+
多项式:121231....n n n n n y a x a x a x a x a ---=+++++ (一般情况下,n 不宜过高,n=2,3)
双曲线:y=a y b x
=+ 指数曲线:bx y ae =
幂函数:b y ax =
有些曲线的拟合,为了利用数学软件,在拟合前需作变量替换,化为对未知数的线性函数。
思考:如果根据经验,曲线是双曲线
a
y b
x
=+或指数曲线bx
y ae
=及幂函数b
y ax
=
等,如何利用matlab的多项式拟合函数来作曲线拟合?
例2:在化学反应中,为研究某化合物的浓度随时间的变化规律。测得一组数据
本题是一个可以用数据的曲线拟合来解决的问题。下面是利用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.2
11 10.32
12 10.42
13 10.5
14 10.55
15 10.58
16 10.6];
x=xy(:,1);
y=xy(:,2);
plot(x,y,'r*');%画出散点图,观察曲线走势