文档库 最新最全的文档下载
当前位置:文档库 › 最小二乘法matlab多项式拟合

最小二乘法matlab多项式拟合

最小二乘法matlab多项式拟合
最小二乘法matlab多项式拟合

最小二乘法拟合探究

吴春晖

(中国海洋大学海洋环境学院山东青岛 266100)

摘要:

本文的拟合对象为含多个变量的待定系数的多项式。通过最小二乘法对多项式作出拟合,以向量矩阵的形式来解出待定的系数。在matlab中,通过算法,写出具体的解法。之后,先对最小二乘法的准确性作出检验,分析该方法在应对复杂情况的误差。在检验该方法的可行性之后,对给定的变量值进行拟合与解题。同时,本文将对基于Laguerre多项式的最小二乘法进行分析检验,

关键词:最小二乘法拟合多变量Laguerre多项式

引言:

在之前的计算方法中,在给出已知节点后,如果需要根据给出的节点来确定未知节点的值,我们需要运用插值。在对插值的精准性进行分析后,我们发现不同插值方式的误差都极大,而且插值所得出的函数的特征由插值方式所决定,并不能反映具体的节点原来可能的规律与分布。所以,拟合的方法相比插值而言,并不要求函数值在原节点处的值相等,却能在一定程度上反映原函数的规律。在该文中,我们主要运用最小二乘法进行拟合。

目录

第一章matlab最小二乘法拟合程序 (3)

1.1最小二乘法拟合的数学法 (3)

1.2 编写最小二乘法的matlab拟合程序 (3)

1.2.1程序算法 (3)

1.2.2 最小二乘法拟合的程序 (4)

1.3程序的分析说明 (4)

第二章最小二乘拟合法的检验及应用 (5)

2.1 最小二乘法拟合的检验 (5)

2.2最小二乘法拟合的实际应用 (7)

第三章Laguerre多项式的最小二乘拟合 (8)

3.1 算法与程序 (8)

3.2检验与分析 (9)

第四章最小二乘法拟合的分析总结 (11)

第一章matlab 最小二乘法拟合程序

1.1 最小二乘法拟合的数学方法

最小二乘法拟合的算法如下:

对于给定的一组数据

(,)i i x y ,1,2,,i N = 求t ()t N 次多项式

j

t

i j y a x ==∑使总误差

2

1

()j N t

i i i j Q y a x ===-∑∑最小.

由于Q 可以视作关于i a (0,1,2,,)i t = 的多元函数,故上述拟合多项式的构造可归结

为多元函数的极值问题.

令0,0,1,2,,k Q

k t a ?==? 得到10

()0,0,1,2,,N t

j k i j i i i j y a x x k t ==-==∑∑

即有方程组

0121

01120

1t i t i i

t i i t i i i t t t t i i t i i i a N a x a x y a x a x a x x y a x a x a x x y

++?+∑++∑=∑?∑+∑++∑=∑????∑+∑++∑=∑?

求解该正规方程组,即可得到最小二乘法的拟合系数。

1.2 编写最小二乘法的matlab 拟合程序 1.

2.1程序算法

在最小二乘法的数学算法的基础上,对算法进行优化,给出具体的程序算法。 由线性代数的知识,易知可将每一组变量表现为在一个多维空间的向量。故对于基本方程组而言,无解即代表由多个变量所确定的多维空间的集合中,无法找到Y 值的向量。在只有两个变量的情况下,即为Y 的向量到平面的最短距离的向量与转置的自变量向量的向量积为0.

所以我们可以建立两个矩阵,一个代表Y 向量,另一个代表X 向量。通过循环求得代表X 向量的每个变量的在确定的位置的转置与另一变量的向量积,另一变量为Y 或X 向量。之后利用左除法解出待定的系数,即得到了我们要知道的具体的函数。

然后通过符号变量,对给定的x 值进行运算,并给出拟合值。

1.2.2 最小二乘法拟合的程序

在这里,我们选取了特定的含二次幂,一次幂,常数及负一次幂的多项式进行拟合,每一系数对应一个不同的变量。

具体的程序代码如下:

x=[1 2 1 1];

x1=[2 4 2 3];

x2=[3 6 5 3];

y=[6 14 7 7];

vec_1=x.^-1;

vec_2=x1.^2;

vec_3=ones(1,length(x));

vec_4=x2

%length(x)=length(x1)

matrix=zeros(4,4);

yx=zeros(1,4);

for j=1:4

matrix(1,j)=eval(['sum(vec_',num2str(j),'.*(x.^(-1)))'])

matrix(2,j)=eval(['sum(vec_',num2str(j),'.*(x1.^2))'])

matrix(3,j)=eval(['sum(vec_',num2str(j),'.*1)'])

matrix(4,j)=eval(['sum(vec_',num2str(j),'.*x2)'])

yx(j)=eval(['sum(vec_',num2str(j),'*y)'])

end

solve=matrix\yx';

syms xv;

syms w;

syms sabcd;

f=a*x^(-1)+b*w^2+c*1+d*s;

out=0;

in=double(in);

in=[1 2 3 solve(1) solve(2) solve(3) solve(4)];

format long;

out=double(subs(f,[x w s a b c d],in));

1.3程序的分析说明

在程序的开头,是输入x与y值,变量的个数与幂次由输入决定。之后程序会自动进行运算,给出所要求的每个变量的所对应的系数值。之后求得的拟合函数表现为符号变量的形

式。

程序的适用性较好,通过符号变量能直接输出需要求的拟合曲线。

程序也存在可以改进的地方,比如可以将整个解法优化为一个函数,对输入的变量,直接进行处理。另外程序的循环算法的效率不高。代码较多。

第二章最小二乘拟合法的检验及应用

2.1 最小二乘法拟合的检验

在上文所给出的拟合程序自带检验部分,分别输入原值与随机的几组数据来进行验证。

图2.1.1 最小二乘法的原变量检验(4个点)

Fig.2.1.1 Lagrange interpolation nodes of interpolation(for 4)

我们加大原变量的拟合个数。共有8组数据,得到的拟合曲线如下。

图2.1.2最小二乘法的原变量检验(8个点)

Fig.2.1.2Lagrange interpolation nodes of interpolation(for 8)

从上述原变量检验的结果来看,最小二乘法能较好的拟合出符合原函数规律的区间值。

我们给出一系列由符合标准形式函数所构造的略微偏离原值的变量组,来进行检验。为了实现结果的直观性,保留一个单变量。

构造的函数为x^2+x+1.

y值离原函数值在1的范围内波动,取2,4,10,100,1000组自变量值,并绘制出图像进行比较,来检验最小二乘法的准确性。

拟合得出的该二次项的系数随自变量的组数发生变化,见

一次项值 1.2407 0.9690 0.9712 0.9990 1.0000

表2.1.1 拟合系数随自变量组数变化的规律

Table 2.1.1 fitting coefficient with the number of sets of independent variables

图2.1.3 拟合系数随自变量组数变化的规律

Table 2.1.3 fitting coefficient with the number of sets of independent variables

分析总结:从以上单变量与多变量的多项式的检验结果看,拟合在体现原函数潜在的规律上,具有较好的表现。对于单变量的多项式,在检验中,我们通过随机函数,使因变量在原函数附近波动。随着自变量组数的增多,拟合的结果越来越接近原函数,当自变量达到一个较大数值时,拟合所得曲线基本等于原函数。

对于多变量的最小二乘法拟合,原理与单变量基本类似,我们所采取的用向量来表示正规方程组的方式同样适用于多变量。只需要改变列向量的数值,使其等于某变量的二次项的值。之后用右除法来解出各项的系数。

2.2最小二乘法拟合的实际应用

选取《计算方法引论》上的P65的第3小题,并加以改进为:用最小二乘原理,求一个形如y=a+b*x^2+c*x的经验公式,使其与下列数据相拟合。

表2.2.1 拟合数据表

Table.2.2.1 the data table

运用之前的程序进行拟合,得到的2次项系数为0.0497,常数项系数为0.6882,一次项系数为0.0193.

所得的拟合图线与拟合的节点吻合得较好。

图2.2.2拟合曲线

Figure.2.2.2 Fitting curve

对二次拟合方法进行简单应用后,我们发现该方法所得的拟合函数与原值吻合得较好。证明最小二乘法在实际运用中能发挥较大的作用。

第三章Laguerre多项式的最小二乘拟合

3.1算法与程序

正交多项式的最小二乘法的拟合,主要改变的是各项的表达式,使其具有较好的独立性,随着项数的增加,能较好地逼近原函数。

故整体算法与之前相仿,求各项系数的方法不变。由于项数是可以改变的,所以要设置项数,及多组符号变量,来使程序简洁。求正交多项式,也应用符号变量表示,注意常数项的特殊情况。故程序如下

syms x f;

syms l;

m=3;

data=[19 25 31 38 44];

y=[19 25 31 38 44];

l(1)=1;

for n=2:m

l(n)=exp(x)/factorial(n-1)*diff(x^(n-1)*exp(-x),x,n-1);

end

for i=1:m

eval(['vec_',num2str(i),'=subs(l(i),x,data)'])

end

vec_1=ones(1,length(data));

% vec_2=data;

% vec_3=ones(1,length(data));

%length(x)=length(x1)

matrix=zeros(m,m);

yx=zeros(1,m);

out=zeros(m,length(data));

for i=1:m

for j=1:m

matrix(i,j)=eval(['sum(vec_',num2str(j),'.*vec_',num2str(i),')'])

%可写成两层循环

yx(j)=eval(['sum(vec_',num2str(j),'.*y)'])

end

end

solve=matrix\yx';

for k=1:m

f(k)=l(k)*solve(k)

out(k,:)=subs(f(k),x,data)

end

values=sum(out,1);

fun=sum(f,2);

3.2检验与分析

我们先选取比较有规律的自变量与因变量,为data=[19 25 31 38 44],y=[19 25 31 38 44],x与y呈正比关系,对这些节点作基于Laguerre多项式的二次拟合。设项数为3,解得的系数分别对应为1.000000000000145,-0.999999999999990,3.492540352537980e-16,拟合的值在原节点相等。见图3.2.1。

图3.2.1拟合点为直线上点时的拟合曲线

Figure.3.2.1 When fitting point for straight line point of curve fitting

在完成一个比较简单的检验后,我们构造无序的自变量与因变量各一组,其值均为0~100随机数。对其进行基于Laguerre多项式的最小二乘拟合,改变项数,来观察拟合的情况。下面4幅图分别是项数为3,10,20,50所对应的拟合曲线图。

图3.2.2 拟合项数分别为3,10,20,50时的拟合曲线

Figure.3.2.2Fitting a count of 3,10,20,50 fitting curve respectively

观察拟合的曲线,随着项数的增加,拟合的精准程度越来越高。在项数为20时,误差为10^-5数量级,50时,误差的数量级为10^-9数量级。但随着项数的增多,在项数较大时,拟合的曲线震荡较为明显。在一定程度上,缺乏美感与规律性。

总的来说,基于正交多项式的最小二乘法,随着项数的增加,在一定的程度内,拟合的结果越来越好。但当项数持续增大,拟合的结果接近插值,也出现了插值存在的问题,震荡与波动较大。在利用正交多项式时,要选好项数。

第四章最小二乘法拟合的分析总结

本文中,我们运用matlab编写了在不同情况下的最小二乘法拟合程序。在拟合项为单变量,多变量及正交多项式的情况下,用最小二乘法拟合。这些情况下的拟合有一个共同点,即求各项前的系数。而附中的调和分析,并不是严格意义上的多项式,是三角函数的拟合,它的算法程序会有所不同,按照最小二乘法的标准做法解调和常数。在求各项前系数时,可以利用矩阵与向量将过程简化,具有普适性

最小二乘法的特点是拟合,允许与原值有误差,尽可能体现曲线的规律,如分布在一条曲线附近。在单变量的多次项的拟合中,拟合值在标准函数附近波动。当拟合值增多时,拟合的系数值越来越逼近标准值。多变量的拟合,也会在多维空间,接近某条特定曲线,由于变量维数较多,无法较好展示。

单变量与多变量的拟合中,各项决定了曲线的基本面貌。在项数较少时,原值与拟合值的误差会变大。如果增大项数,合适的项数选择较为困难。所以在最后我们又应用了基于Laguerre多项式的拟合多项,可以形成无限多的拟合项。但当拟合项过多时,曲线的震荡会越来越剧烈。对100内的随机数拟合中,在拟合项在20左右,拟合结果都会比较理想,误差也在10^-5数量级。50时,毛刺过多,可能滤波平滑处理后,能得到较好的拟合曲线。对于其它正交多项式,规律相似。

拟合项的选择,对最小二乘法极为重要。在调和分析时,已知三角函数,拟合的结果变

会相对准确。如果给出没有规律的多组数,正交多项式拟合是较好的方法。但要注意质量控制,不能一味增加项数。

总之,最小二乘法,作为通用且较好用的拟合方法,有很大的研究与实用价值。

参考文献

[1] 徐萃薇,孙绳武.计算方法引论.北京:高等教育出版社,2015

[2] 郑成德。数值计算方法.北京:清华大学出版社,2010

Abstract:

In this paper, the given function with a given domain [1, 1] for a variety of interpolation, including Hermite interpolation, though laser interpolation, cubic spline interpolation, the piecewise linear interpolation, etc.Interpolation is mainly composed of matlab, by writing multiple interpolation function to calculate, optimization and comparison interpolation by the main program.Research on the accuracy of the interpolation, mainly from the from the original interpolation nodes on the effect of interpolation and the accuracy of the interpolation function.Take different interpolation nodes, the interpolation accuracy of evaluation under the take again.The accuracy of the interpolation function mainly from the perspective of the following considerations: computing interpolation function and integral function difference;Computing the interpolation function and the function interpolation of variance and mean.

Keywords: multivariate Laguerre polynomial least squares fitting

附调和分析matlab程序(个人计算机运算耗时太长,尚未解出)

syms a0 a1 a2 a3 a4 w1 w2 w3 w4 s1 s2 s3 s4 y sda0 sda1 sda2 sda3 sda4 sdw1 sdw2 sdw3 sdw4 sds1 sds2 sds3 sds4 t;

f=a0+a1*cos(w1*t+s1)+a2*cos(w2*t+s2)+a3*cos(w3*t+s3)+a4*cos(w4*t+s4);

w=y-f;

f='f1';

name={'a0' 'a1' 'a2' 'a3' 'a4' 'w1' 'w2' 'w3' 'w4' 's1' 's2' 's3' 's4'};

name_v=struct(f,name);

x=;

z=;

for i=1:13

oo=name_v(i).f1;

eval(['d',oo,'=diff(w^2,name_v(i).f1)'])

end

for k=1:13

kk=name_v(k).f1;

for j=1:length(x);

eval(['save_',num2str(j),'=subs(',['d',kk],',[t,y],[x(j),z(j)])']);

end

eval(['sd',kk,'=save_1+save_2+save_3+save_4']);

end

strings='';

strings=[strings,'sd',kk,'=0'];

[j1 j2 j3 j4 j5 j6 j7 j8 j9 j10 j11 j12 j13]=solve([char(sda0),'=0'], [char(sda1),'=0'],[char(sda2),'=0'],[char(sda3),'=0'],[char(sda4),'=0'],[char(s dw1),'=0'],[char(sdw2),'=0'],[char(sdw3),'=0'],[char(sdw4),'=0'],[char(sds1),'= 0'],[char(sds2),'=0'],[char(sds3),'=0'],[char(sds4),'=0'],'a0','a1','a2','a3',' a4','w1','w2','w3','w4','s1','s2','s3','s4');

% ['a0' 'a1' 'a2' 'a3' 'a4' 'w1' 'w2' 'w3' 'w4' 's1' 's2' 's3' 's4']=solve('sda0','sda1','sda2','sda3','sda4','sdw1','sdw2','sdw3','sdw4','sds 1','sds2','sds3','sds4','a0' 'a1' 'a2' 'a3' 'a4' 'w1' 'w2' 'w3' 'w4' 's1' 's2' 's3' 's4'];

最小二乘法的基本原理和多项式拟合

最小二乘法的基本原理和多项式拟合 一 最小二乘法的基本原理 从整体上考虑近似函数)(x p 同所给数据点),(i i y x (i=0,1,…,m)误差 i i i y x p r -=)((i=0,1,…,m) 的大小,常用的方法有以下三种:一是误差 i i i y x p r -=)((i=0,1,…,m)绝对值的最大值i m i r ≤≤0max ,即误差 向量 T m r r r r ),,(10 =的∞—范数;二是误差绝对值的和∑=m i i r 0 ,即误差向量r 的1— 范数;三是误差平方和∑=m i i r 02 的算术平方根,即误差向量r 的2—范数;前两种方法简单、自然,但不便于微分运算 ,后一种方法相当于考虑 2—范数的平方,因此在曲线拟合中常采用误差平方和∑=m i i r 02 来 度量误差i r (i=0,1,…,m)的整 体大小。 数据拟合的具体作法是:对给定数据 ),(i i y x (i=0,1,…,m),在取定的函数类Φ中,求Φ∈)(x p ,使误差i i i y x p r -=)((i=0,1,…,m)的平方和最小,即 ∑=m i i r 2 = 从几何意义上讲,就是寻求与给定点),(i i y x (i=0,1,…,m)的距离平方和为最 小的曲线 )(x p y =(图6-1)。函数)(x p 称为拟合函数或最小二乘解,求拟合函数)(x p 的方法称为曲线拟合的最小二乘法。 在曲线拟合中,函数类Φ可有不同的选取方法 . 6—1 二 多项式拟合 假设给定数据点),(i i y x (i=0,1,…,m),Φ为所有次数不超过)(m n n ≤的多项式构成的函数类,现求一 Φ ∈=∑=n k k k n x a x p 0 )(,使得 [] min )(0 02 02 =??? ??-=-=∑∑∑===m i m i n k i k i k i i n y x a y x p I (1) [ ] ∑ = = - m i i i y x p 0 2 min ) (

最小二乘法曲线拟合 原理及matlab实现

曲线拟合(curve-fitting ):工程实践中,用测量到的一些离散的数据},...2,1,0),,{(m i y x i i =求一个近似的函数)(x ?来拟合这组数据,要求所得的拟合曲线能最好的反映数据的基本趋势(即使)(x ?最好地逼近()x f ,而不必满足插值原则。因此没必要取)(i x ?=i y ,只要使i i i y x -=)(?δ尽可能地小)。 原理: 给定数据点},...2,1,0),,{(m i y x i i =。求近似曲线)(x ?。并且使得近似曲线与()x f 的偏差最小。近似曲线在该点处的偏差i i i y x -=)(?δ,i=1,2,...,m 。 常见的曲线拟合方法: 1.使偏差绝对值之和最小 2.使偏差绝对值最大的最小 3.使偏差平方和最小 最小二乘法: 按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。 推导过程: 1. 设拟合多项式为: 2. 各点到这条曲线的距离之和,即偏差平方和如下: 3. 问题转化为求待定系数0a ...k a 对等式右边求i a 偏导数,因而我们得到 了: ....... 4、 把这些等式化简并表示成矩阵的形式,就可以得到下面的矩阵: 5. 将这个范德蒙得矩阵化简后可得到:

6. 也就是说X*A=Y,那么A = (X'*X)-1*X'*Y,便得到了系数矩阵A,同时,我们也就得到了拟合曲线。 MATLAB实现: MATLAB提供了polyfit()函数命令进行最小二乘曲线拟合。 调用格式:p=polyfit(x,y,n) [p,s]= polyfit(x,y,n) [p,s,mu]=polyfit(x,y,n) x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s包括R(对x进行QR分解的三角元素)、df(自由度)、normr(残差)用于生成预测值的误差估计。 [p,s,mu]=polyfit(x,y,n)在拟合过程中,首先对x进行数据标准化处理,以在拟合中消除量纲等影响,mu包含标准化处理过程中使用的x的均值和标准差。 polyval( )为多项式曲线求值函数,调用格式: y=polyval(p,x) [y,DELTA]=polyval(p,x,s) y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。 [y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。 如下给定数据的拟合曲线: x=[0.5,1.0,1.5,2.0,2.5,3.0], y=[1.75,2.45,3.81,4.80,7.00,8.60]。 解:MATLAB程序如下: x=[0.5,1.0,1.5,2.0,2.5,3.0]; y=[1.75,2.45,3.81,4.80,7.00,8.60]; p=polyfit(x,y,2) x1=0.5:0.05:3.0; y1=polyval(p,x1); plot(x,y,'*r',x1,y1,'-b') 运行结果如图1 计算结果为: p =0.5614 0.8287 1.1560 即所得多项式为y=0.5614x^2+0.08287x+1.15560 图1 最小二乘法曲线拟合示例 对比检验拟合的有效性: 例:在[0,π]区间上对正弦函数进行拟合,然后在[0,2π]区间画出图形,比较拟合区间和非拟合区间的图形,考察拟合的有效性。 在MATLAB中输入如下代码: clear x=0:0.1:pi; y=sin(x); [p,mu]=polyfit(x,y,9)

最小二乘法的多项式拟合

用最小二乘法进行多项式拟合(m a t l a b 实现) 西安交通大学 徐彬华 算法分析: ,1,2,3,..,m),一共m+1 个数据点,取多项式P(x),使 函数P(x)称为拟合函数或最小二乘解,令似的 使得 其中,a0,a1,a2,…,an 为待求未知数,n 为多项式的最高次幂,由此,该问题化为求 的极值问题。由多元函数求极值的必要条件: j=0,1,…,n 得到: 总共有7个数据点,令m=6 第一步:画出已知数据的的散点图,确定拟合参数n; x=::;y=[,,,,,,]; plot(x,y,'*') xlabel 'x 轴' ylabel 'y 轴' title '散点图' hold on

因此将拟合参数n设为3. 第二步:计算矩阵 A= 注意到该矩阵为(n+1)*(n+1)矩阵, 多项式的幂跟行、列坐标(i,j)的关系为i+j-2,由此可建立循环来求矩阵的各个元素,程序如下: m=6;n=3; A=zeros(n+1); for j=1:n+1 for i=1:n+1 for k=1:m+1 A(j,i)=A(j,i)+x(k)^(j+i-2) end end end; 再来求矩阵 B= B=[0 0 0 0]; for j=1:n+1 for i=1:m+1 B(j)=B(j)+y(i)*x(i)^(j-1) end end 第三步:写出正规方程,求出a0,,a1…,an.

B=B'; a=inv(A)*B; 第四步:画出拟合曲线 x=[::]; z=a(1)+a(2)*x+a(3)*x.^2+a(4)*x.^3; plot(x,z) legend('离散点','y=a(1)+a(2)*x+a(3)*x.^2+a(4)*x.^3') title('拟合图') 总程序附下: x=::;y=[,,,,,,]; plot(x,y,'*') xlabel 'x轴' ylabel 'y轴' title '散点图' hold on m=6;n=3; A=zeros(n+1); for j=1:n+1 for i=1:n+1 for k=1:m+1 A(j,i)=A(j,i)+x(k)^(j+i-2) end end end; B=[0 0 0 0]; for j=1:n+1 for i=1:m+1 B(j)=B(j)+y(i)*x(i)^(j-1) end end B=B'; a=inv(A)*B; x=[::]; z=a(1)+a(2)*x+a(3)*x.^2+a(4)*x.^3; plot(x,z) legend('离散点','y=a(1)+a(2)*x+a(3)*x.^2+a(4)*x.^3') title('拟合图')

matlab多项式拟合

matlab_最小二乘法数据拟合 (2012-10-21 12:19:27) 转载▼ 标签: matlab 最小二乘 数据拟合 定义: 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最 小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可 以简便地求得未知的数据,并使得这些求得的数据与实际数据之 间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一 些优化问题也可通过最小化能量或最大化熵用最小二 乘法来表 达。 最小二乘法原理: 在我们研究两个变量(x,y)之间的相互关系时,通 常可以得到一系列成对的数据(x1,y1.x2,y2... xm,ym);

将这些数据描绘在x -y直角坐标系中,若发现这些点在一条直线附近,可以令这条直线方程如(式1-1)。 Yj= a0 + a1 X (式1-1) 其中:a0、a1 是任意实数 1.多项式曲线拟合:polyfit 1.1常见拟合曲线: 直线:y=a0X+a1 多项式: 一般次数不易过高2 3 双曲线:y=a0/x+a1 指数曲线:y=a*e^b 1.2 matlab中函数 P=polyfit(x,y,n) [P S mu]=polyfit(x,y,n) polyval(P,t):返回n次多项式在t处的值 注:其中x y已知数据点向量分别表示横纵坐标,n 为拟合多项 式的次数,结果返回:P-返回n次拟合多项式系数从高到低 依次存放于向量P中,S-包含三个值其中normr是残差平方

和,mu-包含两个值mean(x)均值,std(x)标准差。 1.3举例 1. 已知观测数据为: X:0 1 2 3 4 5 6 7 8 9 1 Y:-0.447 1.987 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2 用三次多项式曲线拟合这些数据点: x=0:0.1:1 y=[- 0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,1 1. 2] plot(x,y,'k.','markersize',25) hold on axis([0 1.3 -2 16]) p3=polyfit(x,y,3) t=0:0.1:1.2: S3=polyval(P3,t); plot(t,S3,'r');

最小二乘法多项式拟合

最小二乘法多项式拟合 对于给定的数据点N i y x i i ≤≤1),,(,可用下面的n 阶多项式进行拟合,即 为了使拟合出的近似曲线能尽量反映所给数据的变化趋势,要求在所有数据点上的残差 都较小。为达到上述目标,可以令上述偏差的平方和最小,即 称这种方法为最小二乘原则,利用这一原则确定拟合多项式)(x f 的方法即为最小二乘法多项式拟合。 确定上述多项式的过程也就是确定)(x f 中的系数n k a k ≤≤0,的过程,根据最小二乘原则,则偏差平方和应该是这些系数的函数,即 为使上式取值最小,则其关于n k a k ≤≤0,的一阶导数应该为零,即有 将上面各等式写成方程组的形式可有 写成矩阵形式有 上述方程组可以通过克莱姆法则来计算,从而解出各系数n k a k ≤≤0,得到拟合方程。 考虑到一般情况提高拟合多项式的阶数并不能提高拟合精度,所以常用的多项拟合阶数为一阶和二阶,即线性拟合和二次拟合。两者的计算公式如下: 关于线性拟合,除上面按克莱姆法则来计算外,还可以有另一思路,下面对

此进行说明。由于是线性拟合,最后得到的是一条直线,因此,直线可以由斜率和截距两个参数来确定,因此,求出这两个参数即可。首先对克莱姆法的求解结果进行展开可以得到 下面考虑先计算斜率再计算截距的方法,从下图可见,斜率计算与坐标系的 位置无关,所以可以将坐标原点平移到样本的i x 和i y 坐标的均值所在点上 图中 则在新的坐标系),(y x ''下斜率的计算公式与前面1a 的计算公式相同,将其中的坐标 ),(y x 换成),(y x ''即可得到下面的计算公式 由样本在新坐标系下的坐标i x '和i y '的均值为零,或者由下面推导可知 则斜率的计算公式可以简化为 还原为原坐标有 下面推导截距的计算公式 x '

最小二乘拟合平面和直线matlab

利用Matlab实现直线和平面的拟合 1、直线拟合的matlab代码 % Fitting a best-fit line to data, both noisy and non-noisy x = rand(1,10); n = rand(size(x)); % Noise y = 2*x + 3; % x and y satisfy y = 2*x + 3 yn = y + n; % x and yn roughly satisfy yn = 2*x + 3 due to the noise % Determine coefficients for non-noisy line y=m1*x+b1 Xcolv = x(:); % Make X a column vector Ycolv = y(:); % Make Y a column vector Const = ones(size(Xcolv)); % Vector of ones for constant term Coeffs = [Xcolv Const]\Ycolv; % Find the coefficients m1 = Coeffs(1); b1 = Coeffs(2); % To fit another function to this data, simply change the first % matrix on the line defining Coeffs % For example, this code would fit a quadratic % y = Coeffs(1)*x^2+Coeffs(2)*x+Coeffs(3) % Coeffs = [Xcolv.^2 Xcolv Const]\Ycolv; % Note the .^ before the exponent of the first term % Plot the original points and the fitted curve figure plot(x,y,'ro') hold on x2 = 0:0.01:1; y2 = m1*x2+b1; % Evaluate fitted curve at many points plot(x2, y2, 'g-') title(sprintf('Non-noisy data: y=%f*x+%f',m1,b1)) % Determine coefficients for noisy line yn=m2*x+b2 Xcolv = x(:); % Make X a column vector Yncolv = yn(:); % Make Yn a column vector Const = ones(size(Xcolv)); % Vector of ones for constant term NoisyCoeffs = [Xcolv Const]\Yncolv; % Find the coefficients m2 = NoisyCoeffs(1); b2 = NoisyCoeffs(2); % Plot the original points and the fitted curve figure plot(x,yn,'ro')

Matlab的应用-多项式函数及多项式拟合

Matlab的应用-多项式函数及多项式拟合 本节将向大家简要介绍matlab 在多项式处理方面的应用。 多项式函数主要有: roots 求多项式的根 poly 特征多项式 polyval 多项式的计算 poly2str(p,'x')多项式代换 polyfit 多项式曲线拟合 conv 多项式乘法 deconv 多项式除法 polyder 微分多项式 下面我们将介绍这些函数的用法: 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年人口数据资料如下: 年份 1949

最小二乘法数据拟合

最小二乘法数据拟合 设给定数据),(i i f x ,),,2,1(m i = 在集合},,,{Span 10n ??? =Φ中找一个函数 )()(* 0** x a x S k n k k ?∑==,)(m n < (1) 其误差是 i i i f x S -=)(*δ,),,2,1(m i = (2) 使)(* x S 满足 2 1 )(2 *1 1 2 ])()[(min ])()[(i i m i i x S i i m i i m i i f x S x f x S x -=-=∑∑∑=Φ ∈==ωωδ (3) 0)(≥x ω是],[b a 上给定的权函数。上述求逼近函数)(*x S 的方法就称为曲线拟合的最小二 乘法。满足关系式(3)的函数)(* x S 称为上述最小二乘问题的最小二乘解。 并且有结论: 1)对于给定的函数表),(i i f x ,),,2,1(m i =,在函数类},,,{Span 10n ??? =Φ中存在唯一的函数)()(*0** x a x S k n k k ?∑== ,使得关系式(3)成立。 2)最小二乘解的系数* *1*0,,,n a a a 可以通过解法方程 ),(),(0 ???f a k n k j k =∑=,),,2,1,0(n j = (4) 作为曲线拟合的一种常用的情况,如果讨论的是代数多项式拟合,即取 },,,,1{},,,{210n n x x x =??? 那么相应的法方程(4)就是 ??????????????=???????????????????????? ??∑∑∑∑∑∑∑∑∑∑∑∑++i n i i i i i i i n n i i n i i n i i n i i i i i i n i i i i i f x f x f a a a x x x x x x x x ωωωωωωωωωωωω 102112 (5)

最小二乘法的本原理和多项式拟合

第一节 最小二乘法的基本原理和多项式拟合 一 最小二乘法的基本原理 从整体上考虑近似函数)(x p 同所给数据点),(i i y x (i=0,1,…,m)误差 i i i y x p r -=)((i=0,1,…,m) 的大小,常用的方法有以下三种:一是误差 i i i y x p r -=)((i=0,1,…,m)绝对值的最大值i m i r ≤≤0max ,即误差 向量 T m r r r r ),,(10 =的∞—范数;二是误差绝对值的和∑=m i i r 0 ,即误差向量r 的1— 范数;三是误差平方和∑=m i i r 02 的算术平方根,即误差向量r 的2—范数;前两种方法简单、自然,但不便于微分运算 ,后一种方法相当于考虑 2—范数的平方,因此在曲线拟合中常采用误差平方和∑=m i i r 02 来 度量误差i r (i=0,1,…,m)的整 体大小。 数据拟合的具体作法是:对给定数据 ),(i i y x (i=0,1,…,m),在取定的函数类Φ中,求Φ∈)(x p ,使误差i i i y x p r -=)((i=0,1,…,m)的平方和最小,即 ∑=m i i r 0 2 =[]∑==-m i i i y x p 0 2 min )( 从几何意义上讲,就是寻求与给定点),(i i y x (i=0,1,…,m)的距离平方和为最 小的曲线)(x p y =(图6-1)。函数)(x p 称为拟合 函数或最小二乘解,求拟合函数)(x p 的方法称为曲线拟合的最小二乘法。 在曲线拟合中,函数类Φ可有不同的选取方法. 6—1 二 多项式拟合 假设给定数据点),(i i y x (i=0,1,…,m),Φ为所有次数不超过)(m n n ≤的多项式构成的函数类,现求一 Φ ∈=∑=n k k k n x a x p 0 )(,使得 [] min )(0 02 02 =??? ??-=-=∑∑∑===m i m i n k i k i k i i n y x a y x p I (1) 当拟合函数为多项式时,称为多项式拟合,满足式(1)的)(x p n 称为最小二乘 拟合多项式。特别地,当n=1时,称为线性拟合或直线拟合。

Matlab的应用-多项式函数及多项式拟合

Matlab 的应用-多项式函数及多项式拟合 所谓曲线拟合是指给定平面上的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). 可采用“最小二乘法”求出直线方程。这就是曲线拟合的问题。 已知一组数据,用什么样的曲线拟合最好呢?可以根据散点图进行直观观察,在此基础上,选择几种曲线分别拟合,然后比较,观察那条曲线的最小二乘指标最小。 思考:如何利用matlab 的多项式拟合函数来作曲线拟合? 例1:在化学反应中,为研究某化合物的浓度随时间的变化规律。测得一组 本题是一个可以用数据的曲线拟合来解决的问题。下面是利用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*');%画出散点图,观察曲线走势 hold on;t=0:.3:10;pxdxs=polyfit(x,y,2); pxd=poly2sym(pxdxs) pxdx=polyval(pxdxs,t);plot(t,pxdx,'-k') 例2“人口问题”是我国最大社会问题之一,估计人口数量和发展趋势是我们制定一系列相关政策的基础。有人口统计年鉴,可查到我国从1949年至1994

数值计算_第6章 曲线拟合的最小二乘法

第6章曲线拟合的最小二乘法 6.1 拟合曲线 通过观察或测量得到一组离散数据序列,当所得数据比较准确时,可构造插值函数逼近客观存在的函数,构造的原则是要求插值函数通过这些数据点,即。此时,序列与 是相等的。 如果数据序列,含有不可避免的误差(或称“噪音”),如图6.1 所示;如果数据序列无法同时满足某特定函数,如图6.2所示,那么,只能要求所做逼近函数最优地靠近样点,即向量与的误差或距离最小。按与之间误差最小原则作为“最优”标准构造的逼近函数,称为拟合函数。 图6.1 含有“噪声”的数据 图6.2 一条直线公路与多个景点 插值和拟合是构造逼近函数的两种方法。插值的目标是要插值函数尽量靠近离散点;拟合的目标是要离散点尽量靠近拟合函数。 向量与之间的误差或距离有各种不同的定义方法。例如: 用各点误差绝对值的和表示: 用各点误差按模的最大值表示: 用各点误差的平方和表示: 或(6.1)

其中称为均方误差,由于计算均方误差的最小值的方法容易实现而被广泛采用。按 均方误差达到极小构造拟合曲线的方法称为最小二乘法。本章主要讲述用最小二乘法构造拟合曲线的方法。 在运筹学、统计学、逼近论和控制论中,最小二乘法都是很重要的求解方法。例如,它是统计学中估计回归参数的最基本方法。 关于最小二乘法的发明权,在数学史的研究中尚未定论。有材料表明高斯和勒让德分别独立地提出这种方法。勒让德是在1805年第一次公开发表关于最小二乘法的论文,这时高斯指出,他早在1795年之前就使用了这种方法。但数学史研究者只找到了高斯约在1803年之前使用了这种方法的证据。 在实际问题中,怎样由测量的数据设计和确定“最贴近”的拟合曲线?关键在选择适当的拟合曲线类型,有时根据专业知识和工作经验即可确定拟合曲线类型;在对拟合曲线一无所知的情况下,不妨先绘制数据的粗略图形,或许从中观测出拟合曲线的类型;更一般地,对数据进行多种曲线类型的拟合,并计算均方误差,用数学实验的方法找出在最小二乘法意义下的误差最小的拟合函数。 例如,某风景区要在已有的景点之间修一条规格较高的主干路,景点与主干路之间由各具特色的支路联接。设景点的坐标为点列;设主干路为一条直线 ,即拟合函数是一条直线。通过计算均方误差最小值而确定直线方程(见图6.2)。 6.2线性拟合和二次拟合函数 线性拟合 给定一组数据,做拟合直线,均方误差为 (6.2) 是二元函数,的极小值要满足 整理得到拟合曲线满足的方程:

MATLAB数据分析与多项式计算_习题答案

第6章 MATLAB数据分析与多项式计算 习题6 一、选择题 1.设A=[1,2,3,4,5;3,4,5,6,7],则min(max(A))的值是()。B A.1 B.3 C.5 D.7 2.已知a为3×3矩阵,则运行mean(a)命令是()。B A.计算a每行的平均值B.计算a每列的平均值 C.a增加一行平均值D.a增加一列平均值 3.在MATLAB命令行窗口输入下列命令: >> x=[1,2,3,4]; >> y=polyval(x,1); 则y的值为()。D A.5 B.8 C.24 D.10 4.设P是多项式系数向量,A为方阵,则函数polyval(P,A)与函数polyvalm(P,A)的值()。D A.一个是标量,一个是方阵B.都是标量 C.值相等D.值不相等 5.在MATLAB命令行窗口输入下列命令: >> A=[1,0,-2]; >> x=roots(A); 则x(1)的值为()。C A.1 B.-2 C.D. 6.关于数据插值与曲线拟合,下列说法不正确的是()。A A.3次样条方法的插值结果肯定比线性插值方法精度高。 B.插值函数是必须满足原始数据点坐标,而拟合函数则是整体最接近原始数据点,而不一定要必须经过原始数据点。 C.曲线拟合常常采用最小二乘原理,即要求拟合函数与原始数据的均方误差达到极小。 D.插值和拟合都是通过已知数据集来求取未知点的函数值。 二、填空题 1.设A=[1,2,3;10 20 30;4 5 6],则sum(A)= ,median(A)= 。 [15 27 39],[4 5 6[ 2.向量[2,0,-1]所代表的多项式是。2x2-1

多项式拟合MATLAB

多项式拟合 1 数表的拟合计算 所谓拟合是指寻找一条平滑的曲线,最不失真地去表现测量数据。反过来说,对测量的实验数据,要对其进行公式化处理,也就是用一种计算方法,构造一个函数来近似表达数表的函数关系。由于函数构造方法的不同,有许多的逼近方法,机械设计中常用最小平方逼近(最小二乘法理论)来实现曲线的拟合。根据该理论可推导出计算公式,而MATLAB 在此数学基础上用一个函数命令polyfit 即可实现,命令格式为: ),,(n y x polyfit p = 式中:x 、y 为已知数据,n 为拟合多项式的阶次,p 为返回所得多项式的系数向量,通常多项式拟合中阶数越大,拟合的精度就越高。 例1:在工程技术中,通过实验获得一组)(i i x f y =实验数据如下表1: 表1 实验实测数据 下面程序分别设1=n ,2=n 进行一阶和二阶的拟合,结果如图1所示。 % 曲线拟合(Curve fitting ) x=[0,1,2,3,4,5,6,7,8,9] y=[0.0,1.2,3.8,8.5,17.1,20.2,34.8,45.0,67.6,85.0] %绘实验节点数据 plot(x,y,'*r') hold on grid %绘一阶拟合曲线 p1=polyfit(x,y,1) py1=polyval(p1,x) plot(x,py1,'g') hold on grid %绘二阶拟合曲线 p2=polyfit(x,y,2)

py2=polyval(p2,x) plot(x,py2,'b') grid hold on 图1 曲线拟合 根据所编制的程序,在MATLAB 的工作空间可得: 1=n 时,]4545.23188 .3[1-=p ,线性拟合得一条直线,即直线方程式为: 4545.23188.31-=x y 2=n 时,]4773.08358 .11648 .0[2-=p ,拟合得一条二次曲线,即曲线方程式为: 4773.08358.11648.022-+=x x y

最小二乘法拟合原理

最小二乘拟合 在物理实验中经常要观测两个有函数关系的物理量。根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题。这类问题通常有两种情况:一种是两个观测量x 与y 之间的函数形式已知,但一些参数未知,需要确定未知参数的最佳估计值;另一种是x 与y 之间的函数形式还不知道,需要找出它们之间的经验公式。后一种情况常假设x 与y 之间的关系是一个待定的多项式,多项式系数就是待定的未知参数,从而可采用类似于前一种情况的处理方法。 一、最小二乘法原理 在两个观测量中,往往总有一个量精度比另一个高得多,为简单起见把精度较高的观测量看作没有误差,并把这个观测量选作x ,而把所有的误差只认为是y 的误差。设x 和y 的函数关系由理论公式 y =f (x ;c 1,c 2,……c m ) (0-0-1) 给出,其中c 1,c 2,……c m 是m 个要通过实验确定的参数。对于每组观测数据(x i ,y i )i =1,2,……,N 。都对应于xy 平面上一个点。若不存在测量误差,则这些数据点都准确 落在理论曲线上。只要选取m 组测量值代入式(0-0-1),便得到方程组 y i =f (x ;c 1,c 2,……c m ) (0-0-2) 式中i =1,2,……,m.求m 个方程的联立解即得m 个参数的数值。显然Nm 的情况下,式(0-0-2)成为矛盾方程组,不能直接用解方程的方法求得m 个参数值,只能用曲线拟合的方法来处理。设测量中不存在着系统误差,或者说已经修正,则y 的观测值y i 围绕着期望值 摆动,其分布为正态分布,则y i 的概率密度为 ()()[] ??? ???? ???--= 2 2 212,......,,;exp 21i m i i i i c c c x f y y p σσπ, 式中i σ 是分布的标准误差。为简便起见,下面用C 代表(c 1,c 2,……c m )。考虑各次测量是相互独立的,故观测值(y 1,y 2,……c N )的似然函数 ( ) ()[]?? ? ???????-- = ∑ =N i i i N N C x f y L 1 2 2 21;2 1exp (21) σσ σσπ . 取似然函数L 最大来估计参数C ,应使 ()[]min ;1 1 2 2 =-∑=N i i i i C x f y σ (0-0-3) 取最小值:对于y 的分布不限于正态分布来说,式(0-0-3)称为最小二乘法准则。若为正态分布的情况,则最大似然法与最小二乘法是一致的。因权重因子 2 /1i i σω=,故式 (0-0-3)表明,用最小二乘法来估计参数,要求各测量值y i 的偏差的加权平方和为最小。 根据式(0-0-3)的要求,应有

最小二乘法的多项式拟合(matlab实现)

用最小二乘法进行多项式拟合(matlab 实现) 西安交通大学 徐彬华 算法分析: 对给定数据 (i=0 ,1,2,3,..,m),一共m+1个数据点,取多项式P(x),使 函数P(x)称为拟合函数或最小二乘解,令似的 使得 其中,a0,a1,a2,…,an 为待求未知数,n 为多项式的最高次幂,由此,该问题化为求 的极值问题。由多元函数求极值的必要条件: j=0,1,…,n 得到: j=0,1,…,n 这是一个关于a0,a1,a2,…,an 的线性方程组,用矩阵表示如下:

因此,只要给出数据点 及其个数m ,再给出所要拟合的参数n ,则即可求出未知数矩阵(a0,a1,a2,…,an ) 试验题1 编制以函数 为基的多项式最小二乘拟合程序,并用于对下列数据作三次多项式最小二乘拟合(取权函数wi ≡1) x i -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 y i -4.447 -0.452 0.551 0.048 -0.447 0.549 4.552 总共有7个数据点,令m=6 第一步:画出已知数据的的散点图,确定拟合参数n; x=-1.0:0.5:2.0;y=[-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552]; plot(x,y,'*') xlabel 'x 轴' ylabel 'y 轴' title '散点图' hold on {} n k k x 0=

因此将拟合参数n设为3. 第二步:计算矩阵 A= 注意到该矩阵为(n+1)*(n+1)矩阵, 多项式的幂跟行、列坐标(i,j)的关系为i+j-2,由此可建立循环来求矩阵的各个元素,程序如下: m=6;n=3; A=zeros(n+1); for j=1:n+1 for i=1:n+1 for k=1:m+1 A(j,i)=A(j,i)+x(k)^(j+i-2) end end end; 再来求矩阵 B= for j=1:n+1 for i=1:m+1 B(j)=B(j)+y(i)*x(i)^(j-1) end end 第三步:写出正规方程,求出a0,,a1…,an.

最小二乘法线性拟合y

%最小二乘法线性拟合y=ax+b x=[0:0.2:4.0]; y=[0.02 0.375 0.73 1.06 1.335 1.595 1.84 2.045 2.23 2.38 2.485 2.565 2.625 2.67 2.705 2.73 2.76 2.78 2.79 2.81 2.82]; p=polyfit(x,y,1); z=polyval(p,x); plot(x,y,'+'); title(‘V-X曲线’) grid on xlabel(‘X/mm’) ylabel(‘V/v’) hold on x=[0:0.2:-4.0]; y=[0.01 -0.385 -0.8 -1.22 -1.64 -2.055 -2.455 -2.825 -3.165 -3.64 -3.74 -3.915 -4.06 -4.155 -4.235 -4.295 -4.345 -4.385 -4.415 -4.445 -4.47]; p=polyfit(x,y,1); z=polyval(p,x); plot(x,y,'+'); x=[0:0.2:4.0]; y=[0.02 0.375 0.73 1.06 1.335 1.595 1.84 2.045 2.23 2.38 2.485 2.565 2.625 2.67 2.705 2.73 2.76 2.78 2.79 2.81 2.82]; p=polyfit(x,y,1); x=[0:-0.2:-4.0]; y=[0.01 -0.385 -0.8 -1.22 -1.64 -2.055 -2.455 -2.825 -3.165 -3.64 -3.74 -3.915 -4.06 -4.155 -4.235 -4.295 -4.345 -4.385 -4.415 -4.445 -4.47]; p=polyfit(x,y,1); x=[0:0.2:4.0]; y=[0.02 0.375 0.73 1.06 1.335 1.595 1.84 2.045 2.23 2.38 2.485 2.565 2.625 2.67 2.705 2.73 2.76 2.78 2.79 2.81 2.82]; xmean=mean(x);ymean=mean(y); sumx2=(x-xmean)*(x-xmean)'; sumxy=(y-ymean)*(x-xmean)'; a=sumxy/sumx2;%解出直线斜率a(即传感器灵敏度) b=ymean-a*xmean;%解出直线截距b z=((a*(x(1,11))+b-(y(1,11)))/(y(1,11))); a b z figure plot(x,y,'+'); hold on

最小二乘法的多项式拟合(matlab实现)

用最小二乘法进行多项式拟合(matlab实现) 西安交通大学 徐彬华 算法分析: 对给定数据(i=0,1,2,3,..,m),一共m+1个数据点,取多项式P(x),使 函数P(x)称为拟合函数或最小二乘解,令似的使得 其中,a0,a1,a2,…,an为待求未知数,n为多项式的最高次幂,由此,该问题化为求 的极值问题。由多元函数求极值的必要条件: j=0,1,…,n 得到: j=0,1,…,n 这是一个关于a0,a1,a2,…,an的线性方程组,用矩阵表示如下:

因此,只要给出数据点及其个数m ,再给出所要拟合的参数n ,则即可求出未知数矩阵(a0,a1,a2,…,an ) 试验题1 编制以函数为基的多项式最小二乘拟合程序,并用于对 下列数据作三次多项式最小二乘拟合(取权函数wi ≡1) x i -1.0-0.50.00.5 1.0 1.5 2.0y i -4.447-0.4520.5510.048-0.4470.549 4.552总共有7个数据点,令m=6 第一步:画出已知数据的的散点图,确定拟合参数n; x=-1.0:0.5:2.0;y=[-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552];plot(x,y,'*')xlabel 'x 轴'ylabel 'y 轴'title '散点图'hold on {}n k k x 0=

因此将拟合参数n设为3. 第二步:计算矩阵 A=注意到该矩阵为(n+1)*(n+1)矩阵, 多项式的幂跟行、列坐标(i,j)的关系为i+j-2,由此可建立循环来求矩阵的各个元素,程序如下: m=6;n=3; A=zeros(n+1); for j=1:n+1 for i=1:n+1 for k=1:m+1 A(j,i)=A(j,i)+x(k)^(j+i-2) end end end; 再来求矩阵 B= B=[0000]; for j=1:n+1 for i=1:m+1 B(j)=B(j)+y(i)*x(i)^(j-1) end end 第三步:写出正规方程,求出a0,,a1…,an.

拟合多项式的最小二乘法

数值计算理论报告 题目: 有一只对温度敏感的电阻,已经测得了一组温度T 和电阻R 的数据如下,问当温度为60o C 时,电阻有多大? 多项式拟合: 已知变量x ,y 之间的函数关系为: n n-112n n+1y=a x +a x ++a x+a 通过实验获得一组{i x ,i y | i =1,2,3,···,m}测量数据,确定出系数12n+1a a a (,,,)。 当n=1时,函数为线性关系若函数为线性关系,其形式为: y=ax+b (1) 式中a, b 为要用实验数据确定的常数。由实验测得的数据是总是存在着误差,所以,把各组数据代入(1)式中,两边并不相等。相应的作图时,数据点也并不能准确地落在公式对应的直线上,误差的的平方和为: 为了使拟合出的近似曲线能尽量反映所给数据的变化趋势,要求在所有数据点上的残差 |)(|||i i i y x f -=δ 都较小。为达到上述目标,可以令上述偏差的平方和最小,即 min ])([)(212 1=-=∑∑==i i N i i N i y x f δ 称这种方法为最小二乘原则,利用这一原则确定拟合多项式)(x f 的方法即为最小二乘法多项式拟合。按最小二乘法,当a, b 选择适当,能使为最小时y=ax+b 才是最佳曲线。用偏导数的方法求出此式的最小值。 以上是线性拟合的基本原理。 程序: x0=[20.5, 32.7, 51.0, 73.0, 95.7]; %t 的行向量 y0=[765, 826, 873, 942, 1032]; %r 的列向量 %plot(x0,y0,'r'); %画连续的图形,颜色设置为红 () 2 112∑∑=--==?n i bx a y n i v i i i

相关文档
相关文档 最新文档