当前位置:文档之家› 什么叫拟合?什么叫插值?二者的区别是什么?

什么叫拟合?什么叫插值?二者的区别是什么?

什么叫拟合?什么叫插值?二者的区别是什么?

插值和拟合都是函数逼近或者数值逼近的重要组成部分

他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义

在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的

目的,即通过"窥几斑"来达到"知全豹"。

简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通

过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的

差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者

线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表

达式也可以是分段函数,这种情况下叫作样条拟合。

而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通

过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给

定离散点上满足约束。插值函数又叫作基函数,如果该基函数定义在

整个定义域上,叫作全域基,否则叫作分域基。如果约束条件中只有

函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。

从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式

未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(

或几个分片光滑的)连续曲面来穿过这些点。

具体插值拟合的计算参考下面回复:

1)Matlab中如何作线性拟合/线性回归/多元线性回归?

:#FangQ(Qianqian.Fang@https://www.doczj.com/doc/1d11937122.html,),2002/6/21, BigGreen/MathTools #

即用y=a*x+b来拟合一组数据{{x1,y1},{x2,y2}…{xn,yn}}

matlab中使用polyfit

x=data(:,1);

y=data(:,2);

p=polyfit(x,y,1);

p(1)为斜率a,p(2)为截距b

多元线性回归即用y=a1*x1+a2*x2+..+am*xm来拟合数据点{x1i,x2i,…xmi,yi} (i=1~n)

|x11,x21,…xm1|

A=|x12,x22,…xm2|

|…………… |

|x1n,x2n,…xmn|

Y={y1,y2,y3,…,yn}'

则系数{a1,a2,…,am}'=pinv(A)*Y

在matlab中使用

coeff=A\Y

则可以得到最小二乘意义上的拟合系数

2)Matlab中如何作圆回归?

:#Peter Boettcher (boettcher@https://www.doczj.com/doc/1d11937122.html,),2002/5/16, comp.soft-sys.matlab#

Q5.5: How can I fit a circle to a set of XY data?

=================================================

An elegant chunk of code to perform least-squares circle fitting was written by Bucher Izhak and has been floating around the newgroup for some time. The first reference to it that I can find is in:

function [xc,yc,R,a] = circfit(x,y)

%CIRCFIT Fits a circle in x,y plane

%

% [XC, YC, R, A] = CIRCFIT(X,Y)

% Result is center point (yc,xc) and radius R.A is an optional

% output describing the circle's equation:

%

% x^2+y^2+a(1)*x+a(2)*y+a(3)=0

% by Bucher izhak 25/oct/1991

n=length(x); xx=x.*x; yy=y.*y; xy=x.*y;

A=[sum(x) sum(y) n;sum(xy) sum(yy) sum(y);sum(xx) sum(xy) sum(x)];

B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];

a=A\B;

xc = -.5*a(1);

yc = -.5*a(2);

R = sqrt((a(1)^2+a(2)^2)/4-a(3));

Tom Davis provided a more sophisticated approach that works for more cases in and Code included.

3)Matlab中如何作二维数据的插值?

:#FangQ(Qianqian.Fang@https://www.doczj.com/doc/1d11937122.html,),2002/6/21, BigGreen/MathTools #

对于一维、二维、三维规则数据点阵使用interp1/interp2/interp3,

二维、三维非规则数据用griddata/griddata3

4).Matlab中如何作非线性回归?

:#FangQ(Qianqian.Fang@https://www.doczj.com/doc/1d11937122.html,), 2002/6/22. BigGreen/en_Matlab#

请参考

https://www.doczj.com/doc/1d11937122.html,/support/solutions/data/10652.shtml

matlab默认只提供了多项式拟合的函数polyfit,对于其他稍微简单

一点的拟合,如标准的指数、对数、高阶多项式拟合,都有解析公式,参见:https://www.doczj.com/doc/1d11937122.html,/LeastSquaresFitting.html

对于更加复杂的非线性函数,建议使用Mathematica或者DataFit

Mathematica中提供了Fit[],以及

<< Statistics`NonlinearFit`

NonlinearFit[],NonlinearRegress[]

可以拟合任意复杂的表达式。

DataFit可以自定义拟合模型,适用于复杂系统的拟合。

相关主题
文本预览
相关文档 最新文档