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

matlab多项式拟合

matlab多项式拟合
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,11.

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');

2.拟合为指数曲线

注:在对已测数据不太明确满足什么关系时,需要假设为多种曲

线拟合然后比较各自的residal(均方误差)越小者为优,

多项式拟合不是拟合次数越高越好,而是残差越小越好。

2.非线性曲线拟合:lsqcurvefit

X=lsqcurvefit(fun,X0,xdata,ydata)

[X,resnorm]=lsqcurvefit(fun,X0,xdata,ydata)

注:其中xdata ydata为给定数据横纵坐标,按照函数文件fun

给定的函数以X0为初值做最小乘二拟合,返回函数fun中的

系数向量X和残差的平方和resnorm。

2.1例如

已知观测数

据:

求三个参数a b c的值是的曲线f(x)=a*e^x+b*X^2+c*X^已知数据点在最小二乘意义上充分接近

首先编写拟合函数文件fun

function f=fun(X,xdata)

f=X(1)*exp(xdata)+X(2)*xdata.^2+X(3)*xdata.^3保存文件fun.m

编写函数调用拟合函数文件

xdata=0:0.1:1;

ydata=[3.1 3.27 3.81 4.5 5.18 6 ....13.17];

X0=[0 0 0];

[X,resnorm]=lsqcurvefit(fun,X0,xdata,ydata)运行显示:

X=

3.0022

4.0304 0.9404

resnorm=

0.0912

综上:最小乘二意义上的最佳拟合函数为

f(x)=3.0022x+4.0304x^2+0.9404x^3

残差平方和:0.0912

注:在针对只有一些已测数据而不太清楚最小乘二拟合函数时,

采取先打印出已知数据的散点图,然后观察散点图大概分布

趋向,再确定拟合函数,也可以确定多个,最后比较残差选

择最优最小乘二拟合函数,再者初始值的给定也很重要。

lsqnonlin(fun,X0):最小二乘拟合函数

最小二乘法曲线拟合 原理及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)

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');

最小二乘拟合平面和直线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实现

最小二乘法的多项式拟 合m a t l a b实现 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

用最小二乘法进行多项式拟合(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 y i 总共有7个数据点,令m=6 第一步:画出已知数据的的散点图,确定拟合参数n; x=::;y=[,,,,,,]; 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

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

Matlab多项式拟合曲线

?MATLAB软件提供了基本的曲线拟合函数的命令. 1 多项式函数拟合:a=polyfit(xdata,ydata,n) 其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a 为拟合多项式的系数 多项式在x处的值y可用下面程序计算. y=polyval(a,x) 2 一般的曲线拟合:p=curvefit(‘Fun’,p0,xdata,ydata) 其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值.curvefit()命令的求解问题形式是若要求解点x处的函数值可用程序f=Fun(p,x)计算. 例如已知函数形式,并且已知数据点要确定四个未知参数a,b,c,d. 使用curvefit命令,数据输入;初值输;并且建立函数的M文件(Fun.m).若定义,则输出 又如引例的求解,MATLAB程序: t=[l:16];%数据输人 y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 10.55 1 0.58 10.6] ; plot(t,y,’o’) %画散点图 p=polyfit(t,y,2) (二次多项式拟合) 计算结果: p=-0.0445 1.0711 4.3252 %二次多项式的系数 由此得到某化合物的浓度y与时间t的拟合函数。 ?zjxdede | 2008-10-17 12:10:06 ?MATLAB软件提供了基本的曲线拟合函数的命令. 1 多项式函数拟合:a=polyfit(xdata,ydata,n) 其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式的系数 多项式在x处的值y可用下面程序计算. y=polyval(a,x) 2 一般的曲线拟合:p=curvefit(‘Fun’,p0,xdata,y data) 其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值.curvefit()命令的求解问题形式是 若要求解点x处的函数值可用程序f=Fun(p,x)计算. 例如已知函数形式,并且已知数据点要确定四个未知参数a,b,c,d. 使用curvefit命令,数据输入;初值输;并且建立函数的M文件(Fun.m).若定义,则输出 又如引例的求解,MATLAB程序: t=[l:16];%数据输人 y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 1 0.55 10.58 10.6] ;

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

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实现

最小二乘法的基本原理和多项式拟合 一、最小二乘法的基本原理 从整体上考虑近似函数)(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 2 的算术平方根,即误差向量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 [] ∑==-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 称为拟合函数或最小二乘解,求拟合 函数p(x)的方法称为曲线拟合的最小二乘法。 合中,函数类Φ可有不同的选取方法 . 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 时,称为线性拟合或直线拟合。 显然 ∑∑==-=m i n k i k i k y x a I 0 2 0)( 为n a a a ,,10的多元函数,因此上述问题即为求),,(10n a a a I I =的极值 问题。由多元函数求极值的必要条件,得 n j x y x a a I m i j i n k i k i k j ,,1,0,0)(200 ==-=??∑∑== (2) 即 n j y x a x n k m i i j i k m i k j i ,,1,0, )(0 ==∑∑∑===+ (3) (3)是关于n a a a ,,10的线性方程组,用矩阵表示为 ???? ?? ???? ??????????=???? ????????????????? ??????????? +∑∑∑∑∑∑∑∑∑∑∑=====+==+====m i i n i m i i i m i i n m i n i m i n i m i n i m i n i m i i m i i m i n i m i i y x y x y a a a x x x x x x x x m 0001002010 102000 1 (4) 式(3)或式(4 )称为正规方程组或法方程组。 可以证明,方程组(4)的系数矩阵是一个对称正定矩阵,故存在唯一解。从式(4)中解出k a (k=0,1,…,n) ,从而可得多项式

matlab拟合工具箱的使用

matlab拟合工具箱使用 2011-06-17 12:53 1.打开CFTOOL工具箱。在Matlab 6.5以上的环境下,在左下方有一个"Start"按钮,如同Windows的开始菜单,点开它,在目录"Toolboxes"下有一个"Curve Fitting",点开"Curve Fitting Tool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。也可以在命令窗口中直接输入”cftool”,打开工具箱。 2.输入两组向量x,y。 首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。 例如在命令行里输入下列数据: x = [196,186, 137, 136, 122, 122, 71, 71, 70, 33]; y = [0.012605; 0.013115; 0.016866; 0.014741; 0.022353; 0.019278; 0.041803; 0.038026; 0.038128; 0.088196]; 3.数据的选取。打开曲线拟合共工具界面,点击最左边的"Data..."按钮,出现一个Data对话框,在Data Sets页面里,在X Data选项中选取x向量,Y Data 选项中选取y向量,如果两个向量的元素数相同,那么Create data set按钮就激活了,此时点击它,生成一个数据组,显示在下方Data Sets列表框中。关闭Data对话框。此时Curve Fitting Tool窗口中显示出这一数据组的散点分布图。

多项式拟合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

最小二乘法的多项式拟合(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.

最小二乘法的多项式拟合(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.

最小二乘法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举例

曲线拟合的最小二乘法 学院:光电信息学院 姓名:赵海峰 学号:200820501001 一、曲线拟合的最小二乘法原理: 由已知的离散数据点选择与实验点误差最小的曲线 )(...)()()(1100x a x a x a x S n n ???+++= 称为曲线拟合的最小二乘法。 若记 ),()()(),(0 i k i j m i i k j x x x ??ω??∑== k i k i m i i k d x x f x f ≡=∑=)()()(),(0 ?ω? 上式可改写为),...,1,0(;),(n k d a k j n o j j k -=∑=??这个方程成为法方程,可写成距阵 形式 d Ga = 其中,),...,,(,),...,,(1010T n T n d d d d a a a a == ? ? ??? ? ? ?????=),(),(),()(),(),(),(),(),(1011 10 101000n n n n n n G ??????????????????Λ M M M Λ Λ。 它的平方误差为:.)]()([)(||||20 22i i m i i x f x S x -= ∑=ωδ 二、数值实例: 下面给定的是乌鲁木齐最近1个月早晨7:00左右(新疆时间)的天气预报所得到的温度数据表,按照数据找出任意次曲线拟合方程和它的图像。

下面应用Matlab编程对上述数据进行最小二乘拟合 三、Matlab程序代码: x=[1:1:30]; y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1]; a1=polyfit(x,y,3) %三次多项式拟合% a2= polyfit(x,y,9) %九次多项式拟合% a3= polyfit(x,y,15) %十五次多项式拟合% b1=polyval(a1,x) b2=polyval(a2,x) b3=polyval(a3,x) r1= sum((y-b1).^2) %三次多项式误差平方和% r2= sum((y-b2).^2) %九次次多项式误差平方和% r3= sum((y-b3).^2) %十五次多项式误差平方和% plot(x,y,'*') %用*画出x,y图像% hold on plot(x,b1, 'r') %用红色线画出x,b1图像% hold on plot(x,b2, 'g') %用绿色线画出x,b2图像% hold on plot(x,b3, 'b:o') %用蓝色o线画出x,b3图像% 四、数值结果: 不同次数多项式拟和误差平方和为: r1 = 67.6659 r2 = 20.1060 r3 = 3.7952 r1、r2、r3分别表示三次、九次、十五次多项式误差平方和。 拟和曲线如下图:

matlab曲线拟合 - 非常好非常全面的介绍M拟合的参考资料

Mathworks Tech-Note 1508 曲线拟合向导 1.介绍 2. Mathworks 产品的曲线拟合特色 a.曲线拟合工具箱(Curve Fitting Toolbox) b.Matlab 内建函数与其他的带有曲线拟合能力的附加产品(工具箱) c.线性曲线拟合 d.非线性曲线拟合 3.加权曲线拟合方法 a.曲线拟合工具箱 b.统计工具箱 c.优化工具箱 4.利用曲线拟合工具箱提高曲线拟合结果 5.其他的相关资料 第1节:简介 MA TLAB即有内建的解决很多通常遇到的曲线拟合问题的能力,又具有附加这方面的产品。本技术手册描述了几种拟合给定数据集的曲线的方法,另外,本手册还解释了加权曲线拟合、针对复数集的曲线拟合以及其他一些相关问题的拟合技巧。在介绍各种曲线拟合方法中,采用了典型例子的结合介绍。 第2节:MathWorks产品的曲线拟合特色 MATLAB有可以用于曲线拟合的内建函数。MathWorks公式也提供了很多工具箱可以用于曲线拟合。这些方法可以用来做线性或者非线性曲线拟合。MATLAB也有一个开放的工具箱――曲线拟合工具箱(Curve Fitting Toolbox),她可以用于参数拟合,也可以用于非参数拟合。本节将介绍曲线拟合工具箱与其他工具箱、以及各种MA TLAB可以用于曲线拟合的内建函数的详细特征。 a.曲线拟合工具箱 曲线拟合工具箱是专门为数据集合进行曲线拟合而设计的。这个工具箱集成了用MA TLAB建立的图形用户界面(GUIs)和M文件函数。

?利用工具箱的库方程(例如线性,二次,高阶多项式等)或者是用户自定义方程(局限于用户的想象力)可以进行参数拟合。当你想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合。 ?通过采用平滑样条或者其他各种插值方法,你就可以进行非参数拟合。当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法。 曲线拟合工具箱提供了如下功能: ?数据回归,譬如截面(?sectioning)与平滑; ?标准线性最小二乘拟合,非线性最小二乘拟合,加权最小二乘拟合,约束二乘(constrained least squares)拟合以及稳健(robust)拟合; ?根据诸如R2以及误差平方和(SSE)确定的拟合性能的统计特征。 请查阅曲线拟合工具箱提供的demos。 b. MATLAB内建函数与具有曲线拟合能力的其他工具箱 除了曲线拟合工具箱,MATALB与其他工具箱也提供了些可以用于解决线性和非线性曲线拟合的功能。本节列举并解释了其中几个。 c.利用MATLAB内建函数进行线性曲线拟合 函数描述 polyfit 用多项式进行数据拟合。polyfit(X,Y,N)对数据X,Y拟合N阶多项式系数,P(X(I))~=Y(I),在最小二乘意义上。 \ 反斜线或者矩阵阵左除。如果A是一个方阵,A\B 基本上与 inv(A)*B一致的,是采用的不同计算方式而已。 polyval 在给定点计算多项式的值 corrcoef 计算两个向量的相关系数。它可以与polyfit和polyval函数一起用来在实际数据和拟合输出之间计算R2相关系数 下面给出一个利用corref计算R2值的例子: load census [p,s]=polyfit(cdate,pop,2); Output=polyval(p,cdate); Corrolation=corroef(cate,Output); cdate 与它自身很好的相关,同样的Output也与它自身很好相关。反对角线上元素是

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 用三次多项式曲线拟合这些数据点:

怎样用matlab指数函数拟合

matlab指数函数拟合 2011-04-26 17:04碎碎j|分类:文档/报告共享|浏览17560次 刚学matlab,完全不知道如何写程序,特来求助! x=[10 12.5 15 17.5 20 22.5 25 27.5 30 32.5 35 37.5 40 42.5 45 47.5 5 0]; y=[62.1 77.3 92.5 104 112.9 121.9 125 129.4 134 138.2 142.3 143.2 14 4.6 147.2 147.8 149.1 150.9]; y=A(1)*exp(x/A(2))+A(3) 请高手编程拟合指数函数! 分享到: 2011-05-01 19:32提问者采纳 clear all; close all; x=[10 12.5 15 17.5 20 22.5 25 27.5 30 32.5 35 37.5 40 42.5 45 47.5 50]; y=[62.1 77.3 92.5 104 112.9 121.9 125 129.4 134 138.2 142.3 143.2 144.6 147.2 147.8 1 49.1 150.9]; myfunc=inline('beta(1)+beta(2)*exp(beta(4)*x)+beta(3)*exp(-beta(4)*x)','beta','x'); beta=nlinfit(x,y,myfunc,[0.5 0.5 0.5 0.5]); a=beta(1),k1=beta(2),k2=beta(3),m=beta(4) xx=min(x):max(x); yy=a+k1*exp(m*xx)+k2*exp(-m*xx); plot(x,y,'o',xx,yy,'r')

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