matlab实现插值法和曲线拟合电子教案

合集下载

MATLAB多项式插值与曲线拟合(有源代码)

MATLAB多项式插值与曲线拟合(有源代码)

Matlab多项式插值与曲线拟合
一、基本统计处理
1、查取最大值
MAX函数的命令格式有:
[Y,I]= max (X):将max(X)返回矩阵X的各列中的最大元素值及其该元素的位置赋予行向量Y与I;当X为向量时,则Y与I为单变量。

[Y,I]=max(X,[],DIM):当DIM=1时按数组X的各列查取其最大的元素值及其该元素的位置赋予向量Y与I;当DIM=2时按数组X的各行查取其最大的元素值及其该元素的位置赋予向量Y 与I.
max(A,B):返回一个与A,B同维的数组,其每一个元素是由A,B同位置上的元素的最大值组成。

【例1】查找下面数列x的最大值。

x=[3 5 9 6 1 8] % 产生数列x
x = 3 5 9 6 1 8
y=max(x) % 查出数列x中的最大值赋予y
y = 9
[y,l]=max(x) % 查出数列x中的最大值及其该元素的位置赋予y,l
y = 9
l = 3
【例2】分别查找下面3×4的二维数组x中各列和各行元素中的最大值。

x=[1 8 4 2;9 6 2 5;3 6 7 1] % 产生二维数组x
x = 1 8 4 2。

MATLAB软件中软件拟合与插值运算的方法

MATLAB软件中软件拟合与插值运算的方法

MATLAB软件中软件拟合与插值运算的方法内容目录
1MATLAB中软件拟合与插值运算的方法1
1.1拟合函数的选择1
1.1.1线性拟合1
1.1.2非线性拟合2
1.2拟合函数的求解2
1.2.1直接法2
1.2.2迭代法3
1.3MATLAB插值函数4
1.3.1样条插值函数4
1.3.2拉格朗日插值函数5
1.3.3指数插值函数5
结论6
近来,随着科学技术的进步,数据采集技术的发展,大量的实验数据和实验结果越来越多,如何合理地分析处理数据,描绘实际趋势,就变得十分重要,MATLAB中的软件拟合与插值是目前应用最多的数据处理技术之一、本文介绍了MATLAB中软件拟合与插值运算的方法及其具体实现。

1.1拟合函数的选择
1.1.1线性拟合
线性拟合是指拟合函数可以用一元线性方程描述,MATLAB中的拟合
函数有polyfit、polyval和 polyconf等。

其中,polyfit函数用来根据
输入的拟合数据拟出一元多项式,polyval函数用来求出拟合后的拟合值,polyconf函数用来计算拟合的参数的置信范围。

例如,用polyfit函数
拟合下面的数据,输入x = [1 2 3 4 5]和y = [4.3 7.3 11.1 14.1
18.4],拟出的拟合函数为y = 4.1 + 2.3x,即拟合函数为y = 4.1 +
2.3x。

1.1.2非线性拟合。

(完整)matlab实现插值法和曲线拟合

(完整)matlab实现插值法和曲线拟合

插值法和曲线拟合电子科技大学摘要:理解拉格朗日多项式插值、分段线性插值、牛顿前插,曲线拟合,用matlab 编程求解函数,用插值法和分段线性插值求解同一函数,比较插值余项;用牛顿前插公式计算函数,计算函数值;对于曲线拟合,用不同曲线拟合数据。

关键字:拉格朗日插值多项式;分段线性插值;牛顿前插;曲线拟合引言:在数学物理方程中,当给定数据是不同散点时,无法确定函数表达式,求解函数就需要很大的计算量,我们有多种方法对给定的表格函数进行求解,我们这里,利用插值法和曲线拟合对函数进行求解,进一步了解函数性质,两种方法各有利弊,适合我们进行不同的散点函数求解。

正文:一、插值法和分段线性插值 1拉格朗日多项式原理对某个多项式函数,已知有给定的k + 1个取值点:其中对应着自变量的位置,而对应着函数在这个位置的取值。

假设任意两个不同的x j 都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:[3]拉格朗日基本多项式的特点是在 上取值为1,在其它的点 上取值为0.2分段线性插值原理给定区间[a ,b ], 将其分割成a=x 0 <x 1 〈…〈x n =b, 已知函数y= f(x ) 在这些插值结点的函数值为 y k =f(x k )(k=0,1,…,n)求一个分段函数I h (x), 使其满足:(1) I h (x k )=y k ,(k=0,1,…,n) ;(2) 在每个区间[x k ,x k+1 ] 上,I h (x )是个一次函数。

易知,I h (x)是个折线函数, 在每个区间[x k ,x k+1 ]上,(k=0,1,…,n)k 1k k1k 1k k 1k k k ,1)()()(x x x x x f x x x x x f x L --+--=++++,于是, I h (x )在[a,b ]上是连续的,但其一阶导数是不连续的.3拉格朗日插值多项式算法 ○1输入,(0,1,2,,)i i x y i n =,令0)(=x L n .错误!对0,1,2,,i n =,计算0,()()/()ni j i j j j il x x x x x -≠=--∏()()()n n i i L x L x l x y ←−−+4分段线性插值算法错误!输入(x k ,y k ),k=0,1,…,n;○2计算k 1k k1k 1k k 1k k k ,1)()()(x x x x x f x x x x x f x L --+--=++++5插值法和分段线性插值程序按下列数据分别作五次插值和分段线性插值,画出两条插值曲线以及给定数据点。

Matlab曲线拟合与插值运算

Matlab曲线拟合与插值运算

第五次课Matlab曲线拟合与插值运算一、本次课学习要点1、Matlab曲线拟合与插值运算2、符号表达式二、本次课教学重点利用M文件的Matlab曲线拟合与插值运算三、教学基本内容1、曲线拟合在许多应用领域中,人们经常需要从一系列已知离散点上的数据集[(x1,y1),(x2,y2)],…(x n,y n)]得到一个解析函数y=f (x)。

得到的解析函数f(x)应当在原离散点x i上尽可能接近给定的y i的值。

这一过程称为曲线拟合。

最常用的曲线拟合是最小二乘法曲线拟合。

似合结果可使误差的平方和最小,MATLAB提供的函数polyfit,根据给定的自变量数组x和函数数组y,按照拟合的阶数要求自动求解满足最小二乘意义的一阶或高阶解析函数f(x),使用很方便。

为了说明这个问题,我们取以下函数为例:2-=y⨯25.0xx=0:0.1:1;for i=1:length(x);y(i)=0.5-2*x(i)^2;end显示为:将y值进行一定的修改,输入如下的程序y=[0.52 0.45 0.4 0.35 0.18 0.02 -0.25 -0.4 -0.81 -1.1 -1.5]m=1;fxy1=polyfit(x,y,m)m=2;fxy2=polyfit(x,y,m)y1=polyval(fxy1,x) %多项式求值,x为输入值,fx1为一次拟合出来的多项式y2=polyval(fxy2,x)plot(x,y,'o',x,y1,'k:',x,y2,'k')显示为:2、插值运算与曲线拟合不同,插值运算不是试图找出适合于所有自变量数组x的全局最优拟合函数Y=f(x〕,而是要找到一个解析函数连接自变量相邻的两个点(xi,xi十1),由此还可以找到两点间的数值。

根据自变量的维数不同,插值方法可以分为一维插值y=f(x)和二维插值z=f(x,y)等。

在许多工程问题上,我们只能获得无规律的离散点上的数值,插值可以帮助我们得到近似的连续过程,便于用数学的解析方法对已有数据进行处理和运算,因此是一个很有用的工具。

数据插值、拟合方法的MATLAB实现

数据插值、拟合方法的MATLAB实现
2.2用6阶多项式拟合的命令
hours=0:1:23;
temps=[12 12 12 11 10 10 10 10 11 13 15 18 19 20 22 21 20 19 18 16 15 15 15 15]
n=6;
p=polyfit(hours,temps,n)
t=linspace(0,23,100);
z=polyval(p,t); %多项式求值
plot(hours,temps,'o',t,z,'k:',hours,temps,'b',’r’,'linewidth',1.5)
legend('原始数据','6阶曲线')
2.3用8阶多项式拟合的命令
hours=0:1:23;
temps=[12 12 12 11 10 10 10 10 11 13 15 18 19 20 22 21 20 19 18 16 15 15 15 15]
实验结果:
1.一元插值图像
图1.1一元插值图
经分析三次样条插值法效果最好,以三次样条插值法得出每个0.5小时的温度值:
时间
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
温度
12
11.9
12
12.0
12
11.6
11
10.4
10
9.9
10
10.0
时间
6
6.5
7
7.5
8
8.5
9
9.5
10
10.5
11
11.5

MATLAB数据拟合与插值PPT课件

MATLAB数据拟合与插值PPT课件
% at a depth of 2 » zlinear=interp2(width, depth, temps, wi, d) ;
% linear interpolation » zcubic=interp2(width, depth, temps, wi,d, ' cubic ') ;
% cubic interpolation »plot(wi, zlinear, ' - ' , wi, zcubic)
spline ') • t =9.6734,30.0427,31.1755,25.3820
一个最常用的样条插值是对数据平滑。也就是,给定一组 数据,使用样条插值在更细的间隔求值。例如, » h=1:0.1:12;
% estimate temperature every 1/10 hour » t=interp1(hours, temps, h, ' spline ') ; »plot(hours, temps, ' - ' , hours, temps, ' + ' , h, t)
p =-9.8108 20.1293 -0.0317 polyfit 的输出是一个多项式系数的行向量。其解是
y = -9.8108x^2 +20.1293x-0.0317 为了将曲线拟合解与数据点比较,让我们把二者都绘成图。
» xi=linspace(0, 1, 100); % x-axis data for plotting » z=polyval(p, xi); » plot(x, y, ' o ' , x, y, xi, z, ' : ' ) » xlabel(' x '), ylabel(' y=f(x) '), title(' Second Order Curve Fitting ')

用MATLAB解插值和曲线拟合问题

用MATLAB解插值和曲线拟合问题
functionf=curvefun4(x,t)
f=10-(10-x(1))*exp(-t/x(2));
t=[0.5 1 2 3 4 5 7 9];
v=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63];
x0=[0,0.05];
x=lsqcurvefit('curvefun4',x0,t,v)
Interp1(x,y,cx,’method’)
在MATLAB的线性最小二乘拟合中,用得较多的是多项式拟合,其命令为:
A=polyfit(x,y,m)
二.上机内容
1、在飞机的机翼加工时,由于机翼尺寸很大,通常在图纸上只能标出部分关键点的数据.某型号飞机的机翼上缘轮廓线的部分数据如下。用插值法求x每改变0.1时的y值,画出图形表示。
x 0 4.74 9.05 19 38 57 76 95 114 133152 171 190
y 0 5.23 8.1 11.97 16.15 17.1 16.34 14.63 12.16 6.697.03 3.99 0
2、已知观测数据点如表所示:
用3次多项式函数拟合这些数据点,画出图形。
3、教材习题1,用griddata插值函数,三次插值。
注:上机作业文件夹以自己的班级姓名学号命名,文件夹包括如下上机报告和Matlab程序。
上机报告模板如下:
佛山科学技术学院
上 机报 告
课程名称数学应用软件
上机项目用MATLAB解插值和曲线拟合问题
专业班级
一.上机目的
熟练掌握多种插值方法:线性插值,三次样条插值,三次插值和最近邻点插值(linear、spline、cubic、nearest)
f=curvefun4(x,t)

matlab插值与拟合(命令与示例)

matlab插值与拟合(命令与示例)

目录【一维插值】interp1 (1)yi = interp1(x,y,xi,method) (1)例1 (1)例2 (2)【二维插值】interp2 (4)ZI = interp2(X,Y,Z,XI,YI,method) (4)插值方式比较示例 (4)例3 (8)例4 (9)【三角测量和分散数据插值】 (13)【数据拟合】 (17)例5 (17)例6 (18)【一维插值】interp1yi = interp1(x,y,xi,method)例1在1-12 的11 小时内,每隔1 小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。

试估计每隔1/10 小时的温度值。

建立M文件temp.mhours=1:12;temps=[5 8 9 15 25 29 31 30 22 25 27 24];h=1:0.1:12;t=interp1(hours,temps,h,'spline');plot(hours,temps,'kp',h,t,'b');35302520151050 2 4 6 8 10 12例2已知飞机下轮廓线上数据如下,求x每改变0.1时的y值。

X0357911 12131415 Y0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6建立M文件plane.mx0=[0 3 5 7 9 11 12 13 14 15 ];y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ];x=0:0.1:15;y1=interp1(x0,y0,x,'nearest');y2=interp1(x0,y0,x);y3=interp1(x0,y0,x,'spline');plot(x0,y0,'kp',x,y1,'r')2.521.510.50 5 10 15 plot(x0,y0,'kp',x,y2,'r')2.521.510.50 5 10 15 plot(x0,y0,'kp',x,y3,'r')2.521.510.50 5 10 15 【二维插值】interp2ZI = interp2(X,Y,Z,XI,YI,method)插值方式比较示例用较大间隔产生peaks 函数数据点[x,y] = meshgrid(-3:1:3);z = peaks(x,y);surf(x,y,z)642-2-4-642 40 2-2 -2-4 -4●产生一个较好的网格[xi,yi] = meshgrid(-3:0.25:3);●利用最近邻方式插值zi1 = interp2(x,y,z,xi,yi,'nearest');surf(xi,yi,zi1)●双线性插值方式zi2 = interp2(x,y,z,xi,yi,'bilinear');surf(xi,yi,zi2)●双立方插值方式zi3 = interp2(x,y,z,xi,yi,'bicubic');surf(xi,yi,zi3)●不同插值方式构造的等高线图对比contour(xi,yi,zi1)321-1-2-3-3 -2 -1 0 1 2 3 contour(xi,yi,zi2)321-1-2-3-3 -2 -1 0 1 2 3 contour(xi,yi,zi3)321-1-2-3-3 -2 -1 0 1 2 3例3测得平板表面3*5 网格点处的温度分别为:82 81 80 82 8479 63 61 65 8184 84 82 85 86试作出平板表面的温度分布曲面z=f(x,y)的图形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

m a t l a b实现插值法和曲线拟合插值法和曲线拟合电子科技大学摘要:理解拉格朗日多项式插值、分段线性插值、牛顿前插,曲线拟合,用matlab编程求解函数,用插值法和分段线性插值求解同一函数,比较插值余项;用牛顿前插公式计算函数,计算函数值;对于曲线拟合,用不同曲线拟合数据。

关键字:拉格朗日插值多项式;分段线性插值;牛顿前插;曲线拟合引言:在数学物理方程中,当给定数据是不同散点时,无法确定函数表达式,求解函数就需要很大的计算量,我们有多种方法对给定的表格函数进行求解,我们这里,利用插值法和曲线拟合对函数进行求解,进一步了解函数性质,两种方法各有利弊,适合我们进行不同的散点函数求解。

正文:一、插值法和分段线性插值1拉格朗日多项式原理对某个多项式函数,已知有给定的k + 1个取值点:其中对应着自变量的位置,而对应着函数在这个位置的取值。

假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:[3]拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。

2分段线性插值原理给定区间[a,b], 将其分割成a=x0 <x1<…<xn=b, 已知函数y= f(x) 在这些插值结点的函数值为y k =f(xk)(k=0,1,…,n)求一个分段函数Ih(x), 使其满足:(1) Ih (xk)=yk,(k=0,1,…,n) ;(2) 在每个区间[xk ,xk+1] 上,Ih(x)是个一次函数。

易知,I h (x)是个折线函数, 在每个区间[x k ,x k+1 ]上,(k=0,1,…,n)k 1k k1k 1k k 1k k k ,1)()()(x x x x x f x x x x x f x L --+--=++++,于是, I h (x)在[a,b]上是连续的,但其一阶导数是不连续的。

3拉格朗日插值多项式算法○1输入,(0,1,2,,)i i x y i n =L ,令0)(=x L n 。

○2对0,1,2,,i n =L ,计算 0,()()/()ni j i j j j il x x x x x -≠=--∏()()()n n i iL x L x l x y ←−−+4分段线性插值算法○1输入(x k ,y k ),k=0,1,…,n;○2计算k 1k k1k 1k k 1k k k ,1)()()(x x x x x f x x x x x f x L --+--=++++5插值法和分段线性插值程序按下列数据分别作五次插值和分段线性插值,画出两条插值曲线以及给定数据点。

求x 1=0.32, x 2=0.55, x 3=0.68 时的函数近似值,并比较两种方法的插值余function lagrintxi=[0.32,0.55,0.68]; %xi=[0.2:0.001:0.8];x=[0.3,0.42,0.50,0.58,0.66,0.72];y=[1.04403,1.08462,1.11803,1.15603,1.19817,1.23223]; L=zeros(size(y)); m=length(xi); for i=1:mdxi=xi(i)-x;L(1)=prod(dxi(2:6))/prod(x(1)-x(2:6)); L(6)=prod(dxi(1:6-1))/prod(x(6)-x(1:6-1)); for j=2:6-1num=prod(dxi(1:j-1))*prod(dxi(j+1:6));den=prod(x(j)-x(1:j-1))*prod(x(j)-x(j+1:6));L(j)=num/den;endyi(i)=sum(y.*L);fprintf('x=%f,y=%f\n',xi(i),yi(i));endplot(xi,yi,'r');axis([0.2 0.8 1.03 1.24]);hold onplot(x,y,'b.','markersize',20)grid on分段线性插值算法程序:function [y]=div%xi=[0.3:0.001:0.72];x0=[0.3,0.42,0.50,0.58,0.66,0.72];y0=[1.04403,1.08462,1.11803,1.15603,1.19817,1.23223]; k=1;xi=[0.32,0.55,0.68];for j=1:3for i=1:5if xi(j)>=x0(i) && xi(j)<=x0(i+1) && k<=3lx(1)=(xi(j)-x0(i+1))/(x0(i)-x0(i+1));lx(2)=(xi(j)-x0(i))/(x0(i+1)-x0(i));y(k)=lx(1)*y0(i)+lx(2)*y0(i+1);k=k+1;endendendplot(xi,y,'r');axis([0.2 0.8 1.03 1.24]);hold onplot(x0,y0,'b.','markersize',20)grid on6运算结果拉格朗日插值结果x=0.320000,y=1.049958 x=0.550000,y=1.141271 x=0.680000,y=1.209300 拉格朗日插值余项:)72.0)(66.0)(58.0)(5.0)(42.0)(3.0(!6)()()()(655------=-=x x x x x x f x L x f x R ξ分段插值结果ans =1.0508 1.1418 1.2095 分段线性插值余项:)(max 8))((2)(max)()(max 11121,1x f h x x x x f x L x f R i i i i i i x x x i i i i x x x i x x x ''≤--''≤-=+++≤≤+≤≤≤≤ξ由于拉格朗日插值的余项比分段线性插值的余项要求更为严格,点少、区间小的时候,拉格朗日插值要更好。

但在区间较大、节点较多的时候,分段线性插值要更好。

二、牛顿前插 1牛顿前插原理n 次牛顿前插公式:)1()1(!)1(!2!1)(!)(0020010000+--∆++-∆+∆+=-∏∆=+-==∑n t t t n f t t f t f f j t k f th x N n k j nk k n ΛΛ插值余项:)()!1()()1()()1(10ξ+++--=+n n n f h n n t t t th x R Λ,),(0n x x ∈ξm 阶差分记作i m i m i m f f f 111-+-∆-∆=∆。

[]i f x k 阶差商是[]∑∏=≠=-=km kmi i i mm k x xx f x x x f 0010)()(,,,Λ差分和差商之间的关系是[]k ik k i i i h k f x x x f !,,,1∆=++Λ2牛顿前插算法○1输入),2,1,0(,,n i y x n ii Λ=。

○2对n k ,,3,2,1Λ=,k i ,,2,1Λ=计算各阶差分i m i m i m f f f 111-+-∆-∆=∆ ○3计算函数值)1()1(!)1(!2!1)(!)(0020010000+--∆++-∆+∆+=-∏∆=+-==∑n t t t n f t t f t f f j t k f th x N n k j nk k n ΛΛ3牛顿前插程序:编写一个用牛顿前插公式计算函数值的程序,要求先输出差分表,再计算x 点的函数值分别求x =0.158和x =0.636的三次插值的值,并比较二者的插值余项。

这里以x=0.636为例 function [P]=newtoncha x0=0.636;X=[0.125 0.250 0.375 0.500 0.625 0.750]; Y=[0.796 0.773 0.744 0.704 0.656 0.602]; h=abs(X(2)-X(1)); n=find(abs(x0-X)<3*h);X=X(n(1):n(end));Y=Y(n(1):n(end));w=length(X);R=zeros(w,w);R(:,1)=Y(:);for k=2:wfor j=k:wR(j,k)=R(j,k-1)-R(j-1,k-1); endendt=(x0-X(1))/h;T=1;for m=1:w-1T=T*(t-m+1);N(m)=R(m+1,m+1)*T/factorial(m); endP=R(1,1)+sum(N);4运行结果:差分表X=0.636时ans =0.651459661824000 x=0,158时ans =0.790229818880000 三、曲线拟合 1曲线拟合原理: 给定数据(,),1,2,,j j x y j n=L 。

记拟合函数的形式为0011()()()()m m p x a x a x a x ϕϕϕ=+++L (1.1),其中{}0()mk k x ϕ=为已知的线性无关函数。

求系数***01,,,ma a a L 使得2201110(,,,)[()][()]nnmm j j k k j j j j k a a a p x y a x y ϕϕ====-=-∑∑∑L (1.2)取最小值。

称**0()()mk k k p x a x ϕ==∑(1.3)为拟合函数或经验公式。

如果),,1,0()(m k x x k k Λ==ϕ,则(1.3)为m 次最小二乘拟合多项式2曲线拟合算法:已知数据对),,2,1)(,(n j y x i i Λ=,求多项式)()(0n m x a x P mi i i <=∑=,使得∑∑==-=Φnj j mi i j i m y x a a a a 1210)(),,,(Λ为最小。

注意到此时kk x x =)(ϕ,多项式系数ma a a ,,,10Λ满足下面的线性方程组:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡++m m m m m m m T T T a a a S S S S S SS S S M M ΛM M M ΛΛ10102112110其中)2,,2,1,0(1m k xS nj k jk Λ==∑=,),,2,1,0(1m k x y T nj k jj k Λ==∑=然后只要调用线性方程组的函数程序即可 3曲线拟合程序:试分别用抛物线y =a +bx 2和指数曲线y =ae bx 拟合下列数据画出数据点和两条拟合曲线,并通过计算2个拟合函数残差向量的2范数来比较拟合优劣。

相关文档
最新文档