实验二 插值与拟合

实验二 插值与拟合
实验二 插值与拟合

计算方法课程实验报告

实验名称 插值与拟合

班级 动创新13 姓名 封敏丽 学号 201302400104

序号 教师

赵美玲 地点

数学实验中心

评分

一、 实验目的

① 掌握多项式插值法的基本思路和步骤;

② 了解整体插值的局限性及分段插值的基本思想。 ③ 掌握最小二乘法拟合的基本原理和方法; ④ 培养运用计算机模拟解决问题的能力。

二、用文字或图表记录实验过程和结果

3.4.1 多项式插值

1. 给定sin110.190809,sin120.207912,sin130.224951,o o o ===构造插值多项式计算'

sin1130o

(1) 编程实现拉格朗日插值,并计算结果。 function f=Language(x,y,x0)

%求已知数据点的拉格朗日插值多项式 %已知数据点的x 坐标向量: x %已知数据点的y 坐标向量: y %插值点的x 坐标: x0

%求得的拉格朗日插值多项式或在x0处的插值: f x=[11 12 13];

y=[0.190809 0.207912 0.224951]; x0=11.5; syms t l ;

if (length(x) == length(y)) n = length(x); else

disp('x 和y 的维数不相等!'); return ; %检错 end

h=sym(0); for (i=1:n) l=sym(y(i)); for (j=1:i-1)

l=l*(t-x(j))/(x(i)-x(j)); end ;

for (j=i+1:n)

l=l*(t-x(j))/(x(i)-x(j));

end ; h=h+l; end

simplify(h);

f = subs (h,'t',x0);%计算插值点的函数值

f = vpa(f,6); %将插值多项式的系数化成6位精度的小数 end

运行结果如下:

所以'

sin1130o

=0.199368

通过对以上的程序修改可以得到插值函数:

(2) 将计算结果和查表结果进行比较。

查表的结果是sin11.5=0.19936793441719718108604

由此可见,计算结果与查表的结果已经是什么相近了。

拉格朗日插值法的流程图如下:

Y

N

N

Y

开始

输入插值点(Xi ,Yi ),以

及所求值t ,i :0到n-1

i=j ? temp=temp*(t-Xi ) temp=temp*(Xi-Xj ) j=j+1

result=result+temp

初始化result=0

i=0 临时变量temp=Yi i=n 输出结果result 结束 i=i+1

2.区间[]5,5-作等距划分:10

1(0,1,,),k x kh k n h n

=-+==

 ,以k x (0,1,,k n =)

为节点对函数2

1

()1f x x =

+进行插值逼近。(分别取5,10,20n =) (1) 用多项式插值对()f x 进行逼近,并在同一坐标系下作出函数的图形,进行比较。

写出插值函数对()f x 的逼近程度与节点个数的关系,并分析

本题重点在于画图,所以使用相对而言绘图很方便的Mathmatic 软件进行绘图: 先利用原函数取点,然后分别以步长为2,1,0.5,得到拟合函数,计算结果如下:

原函数图形:

N=5时:

N=10时:

N=20时:

通过Show语句进行图形组合得到:

结果分析:高次插值稳定性差,而低次插值对于较大区间逼近精度又不够,而且,随着节点的加密,采用高次插值,插值函数两端会发生激烈震荡。解决这一矛盾的有效方法就是采用分段低次代数插值。

f x进行逼近,在同一坐标下画出图形,观察分(2)试用分段插值(任意选取)对()

f x的逼近程度与节点个数的关系。

段插值函数对()

用Mathmatic进行分段插值表示不会,故而用Matlab对分段插值进行了运行结果如下:

结果分析:通过采用分段线性插值,发现随着节点数的增多,插值计算结果的误差越来越小,而且分段线性插值的计算简单,曲线连续和一致收敛,但是不具有光滑性。

3.4.2 数据拟合

1.已知一组数据如下,求它的线性拟合曲线。

x 1 2 3 4 5

i

y 4 4.5 6 8 8.5

i

(1)编程实现最小二乘算法,并画出其拟合曲线

(2)求出其平方误差。

本题第一小题和第二小题同时用Matlab运行时,我们可以先建立一个M文件,代码如下:N=input('please put in how many times the power will you overfit:');

M=input('how many couples of statistics are there in the table:');

%读入数据文件

S=[1 2 3 4 5;4 4.5 6 8 8.5],

%显示数据文件,确保正确输入

disp('S(x,y)=');

disp(S);

C=zeros(N+1,M);

for i=1:N+1

for j=1:M

if S(1,j)==0

C(i,j)=0;

else

C(i,j)=S(1,j).^(i-1);

end

end

end

%建立法方程组

A=C*C';

Y=zeros(M,1);

for i=1:M

Y(i,1)=S(2,i);

end

b=C*Y;

%用列主元高斯消元法解法方程组

A=[A,b];

for i=1:N+1

max=abs(A(i,i));

for j=j+1:N+1

if abs(A(j,i))>max

flag=j;

max=A(j,i);

end

end

for kh=i+1:N+1

m=-A(kh,i)/A(i,i);

A(kh,i)=0;

for kl=i+1:N+2

A(kh,kl)=A(kh,kl)+m*A(i,kl);

end

end

end

X=zeros(N+1,1);

for i=N+1:-1:1

for j=i-1:-1:1

m=-A(j,i)/A(i,i);

A(j,N+2)=A(j,N+2)+m*A(i,N+2);

end

X(i,1)=A(i,N+2)/A(i,i);

end

disp(X);

%根据系数求的待定曲线

syms x;

expr=0;

for i=1:N+1

expr=expr+X(i,1)*x.^(i-1);

end

%输出得到的曲线表达式

disp(expr);

%计算偏差

bias=zeros(M,1);

for j=1:M

for i=1:N+1

bias(j,1)=bias(j,1)+X(i,1)*S(1,j)^(i-1);

end

bias(j,1)=bias(j,1)-S(2,j);

end

%计算平方差

rms=0;

for i=1:M

rms=rms+bias(i,1)^2;

end

disp('the bias is:');disp(rms);

%制图

a=S(1,1):0.01:S(1,M);

y=subs(expr,x,a);

plot(a,y);

hold on;

grid on;

for i=1:M

x=S(1,i);

y=S(2,i);

plot(x,y,'*');

hold on;

end

调用M函数

这个时候运行结果如下:

同时得到曲线图形如下:

其中得到最小二乘解,a=1.25 b=2.45 所以拟合曲线是y=1.25x+2.45 同时所得的平方误差是0.6750

求最小二乘解的流程图:

False

False

开始 输入拟合的次数N ,数据点的个数M 0

C

T

==

(Y 为数据点中yi 组成的列向量)

输出表达式

∑=+=N

i i

x i a r 0)1(exp

对数据点S(1,1)到S (1,M )区间按0.01步长作图

计算

∑=

M rms

i

1

2

δδ

δδ

i

i max 1max

<=<==。

结束

i+=1 j+=1

2.已知一组数据如下,求其拟合曲线。

i

0 1 2 3 4 5 6 7 8 9 10 i

x

2 3 4 7 8

10

11

14

16

18

19

i

y 106.42 108.2 109.5 110 109.93 110.49 110.59 110.6 110.76 111 111.2

(1) 求以上数据形如2012()y x c c x c x =++的拟合曲线,及其平方误差。

分析:本题和上面一题是类似的,都是用多项式来拟合所给的数据点,所以将不再继续呈现

求最小二乘解的原理。在此直接用Matlab 自带函数来拟合图形并求得平方误差,减少工作量。 代码及运行结果如下:

所得到拟合曲线图形如下:

它的拟合函数是:x x x y 2

020454.062635.02927.106)(-+=

它的平方误差是:2.7796

(2) 求以上数据形如()b

x y x ae =的拟合曲线,及其平方误差。

运用Matlab 进行求解,代码如下: >> x=[2,3,4,7,8,10,11,14,16,18,19];

>> y=[106.42,108.2,109.5,110,109.93,110.49,110.59,110.6,110.76,111,111.2]; >> b0=[111.849816,-0.099527]; %初始参数值 >> fun=inline('b(1)*exp(b(2)./x)','b','x'); >> [b,r,j]=nlinfit(x,y,fun,b0); >> b %最佳参数 >> R=sum(r.^2)%求平方误差

>> x1=[2,3,4,7,8,10,11,14,16,18,19]; >> y1=111.4922*exp((-0.0902)./x);

>> plot(x,y,'*',x1,y1,'-b')%做出原数据离散的点和新拟合的曲线图形

其中要求得b0的初始参数值是任取图中的两组数据,带入到拟合函数中求得。可用Matlab 中的Solve 语句求得,如下所示:

如果得到的结果是复数则只取实数部分作为b0的初始参数。

最终运行结果如下图所示:

所画图形如下:

它的拟合函数是:

e

x

x y 0902.04922.111)(-

=

它的平方误差是:0.4719

(3)通过画出(1)(2)的图形,观察结果并结合其平方误差,写出你对数据拟合的认识。

答:从(1)(2)的图形可以看出,(2)的拟合函数比(1)更加的贴近数据点,其拟合度更高,同时从平方误差中也可以看出,(2)的平方误差更小,这也说明了(2)的拟合度更高。对于数据拟合不仅仅是可以用多项式来对其进行拟合,有时候选择指数函数,对数函数,幂函数或者三角函数进行非线性拟合,可达到更加高度的图形吻合,从而减小拟合所带来的误差。所以在对数据点进行拟合前,我们可以先画出它的离散图形,对图形进行定性的分析选择贴切的函数,然后再进行拟合,可以提高拟合精度。

三、练习与思考题分析解答

1、整体插值有何局限性?如何避免?

答:整体插值的过程中,若有无效数字则整体插值后插值后曲线的平方误差会比较大,即在该数据附近插值曲线的震动幅度较大。在插值处理前,应对原始数据进行一定的筛选,剔除无效数据。

2、简述数据拟合与插值的异同。 答:(1)不同点:拟合是指已知某函数的若干离散函数值)2,1(fn f f ???,通过调整该函数中若干待定系数),(

2

1

λλλn

f ???,使得该函数与已知点集的差别最小。而插值是指已知某函

数在若干离散点上的函数值或者导数信息,通过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给定离散点上满足约束。

(2)相同点:通过已知一些离散点集M 上的约束,求取一个定义在连续集合S (M 包含于S )的未知连续函数,从而达到获取整体规律的目的。

四、本次实验的重点难点分析

本次上机中,学习了多项式插值法的基本思路和步骤,同时了解整体插值的局限性及分段插值的基本思想,熟悉了最小二乘法拟合的基本原理和方法。

在本次上机中,我觉得对于插值逼近的理解比较吃力,在用matlab进行插值逼近时,最终失败了,没有用matlab画出图形,所以不得不用对于画图更方便的mathmatic软件。其中,对于分段插值不是非常的理解,这也是导致不能成功画出图形的原因。

对于最小二乘法的拟合,尤其是最后一题的非线性拟合,在此提出,可以对拟合的函数两边先取对数,从而转化成线性拟合函数。由于matlab有自带的非线性拟合函数,所以就直接用自带的函数拟合了,而没有先转化成线性函数,在此进行说明。

插值与拟合实验报告

学生实验报告

了解插值与拟合的基本原理和方法;掌握用MATLAB计算插值与作最小二乘多项式拟合和曲线拟合的方法;通过范例展现求解实际问题的初步建模过程; 通过动手作实验学习如何用插值与拟合方法解决实际问题,提高探索和解决问题的能力。这对于学生深入理解数学概念,掌握数学的思维方法,熟悉处理大量的工程计算问题的方法具有十分重要的意义。 二、实验仪器、设备或软件:电脑,MATLAB软件 三、实验内容 1.编写插值方法的函数M文件; 2.用MATLAB中的函数作函数的拟合图形; 3.针对实际问题,试建立数学模型,并求解。 四、实验步骤 1.开启软件平台——MATLAB,开启MATLAB编辑窗口; 2.根据各种数值解法步骤编写M文件; 3.保存文件并运行; 4.观察运行结果(数值或图形); 5.写出实验报告,并浅谈学习心得体会。 五、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会)。 1.天文学家在1914年8月的7次观测中,测得地球与金星之间距离(单位:米),并取得常用对数值,与日期的一组历史数据如下表: 由此推断何时金星与地球的距离(米)的对数值为9.93518? 解:输入命令

days=[18 20 22 24 26 28 30]; distancelogs=[9.96177 9.95436 9.94681 9.93910 9.93122 9.92319 9.91499]; t1=interp1(distancelogs,days,9.93518) %线性插值 t2=interp1(distancelogs,days,9.93518,'nearest') %最近邻点插值 t3=interp1(distancelogs,days,9.93518,'spline') %三次样条插值 t4=interp1(distancelogs,days,9.93518,'cubic') %三次插值 计算结果: t1 = 24.9949 t2 = 24 t3 = 25.0000 t4 =

插值和拟合

插值和拟合的定义 1.定义:若x为自变量,y为因变量,则x与y之间有一个确定的函数表达式f(x),现实中,这个函数关系式很难确定,运用逼近的方法处理:取得一组数据点(xi,yi,i=1,2,3...n),构造一个简单函数p(x)作为f(x)的近似表达式,且p(x)满足: p(xi)=f(xi)=yi i=1,2,3,4...n 这就是插值问题。 若不要求p(x)通过所有数据点,而是要求曲线在某种准则下整体与数据点接近,例如运用最小二乘法得到p(x),这种问题称为拟合。 2插值类型:一维插值是指对一维函数y=f(x)进行插值,二维插值就是对二维函数y=f(x,y)进行插值. 3.插值的matlab函数及其应用 (1).一维插值:yi=interp1(x,Y,xi,’method’),对一组节点(x,Y)进行插值,计算插值点xi 的函数值。method包括了一下几种类型: Nearest:线性最邻近插值(速度最快,平滑性最差) Linear:线性插值(默认项)(生成效果连续,但是顶点处有坡度变化) Spline:三次样条插值(运行时间较长,插值数据和导数均连续) Pchip:分段三次艾米尔特(hermite)插值 Cubic:双三次插值(较高版本的matlab不能运用,v5cubic能够运行) 运行的代码及插值效果: clear; clc; x=0:0.2:2; y=(x.^2-3*x+5).*exp(-3*x).*sin(x); xi=0:0.03:2; yi_nearest=interp1(x,y,xi,'nearest'); yi_linear=interp1(x,y,xi,'linear'); yi_spline=interp1(x,y,xi,'spline'); yi_pchip=interp1(x,y,xi,'pchip'); yi_cubic=interp1(x,y,xi,'v5cubic'); figure; hold on; subplot(2 ,3, 1); plot(x,y,'r*'); title('已知数据值'); subplot(2, 3 ,2); plot(x,y,'r*',xi,yi_nearest,'b-'); title('最邻近插值');

插值法和拟合实验报告(数值计算)

插值法和拟合实验报告 一、 实验目的 1.通过进行不同类型的插值,比较各种插值的效果,明确各种插值的优越性; 2.通过比较不同次数的多项式拟合效果,了解多项式拟合的原理; 3.利用matlab 编程,学会matlab 命令; 4.掌握拉格朗日插值法; 5.掌握多项式拟合的特点和方法。 二、 实验题目 1.、插值法实验 将区间[-5,5]10等分,对下列函数分别计算插值节点 k x 的值,进行不同类型 的插值,作出插值函数的图形并与)(x f y =的图形进行比较: ;11)(2x x f += ;a r c t a n )(x x f = .1)(42 x x x f += (1) 做拉格朗日插值; (2) 做分段线性插值; (3) 做三次样条插值. 2、拟合实验 给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数 ),(i i y x 和拟合函数的图形。 三、 实验原理 1.、插值法实验

∏∑∏∏∏∑∑≠==≠=≠=≠=+-==--= =-= ==-=-=----==++==j i j j i i i i i n i i n n j i j j n j i j j i i n j i j j n i i i n i i n n n o i n i i n x x x x x y x l x L x x c n i x x c x x x c x x x x x x x x c y x l x L y x l y x l y x l x L ,00 ,0,0,01100 00 )(l )()() (1 ,1,0, 1)()(l ) ()())(()()()()()()()(, 故, 得 再由,设 2、拟合实验

数值分析实验插值与拟合

《数值分析》课程实验一:插值与拟合 一、实验目的 1. 理解插值的基本原理,掌握多项式插值的概念、存在唯一性; 2. 编写MA TLAB 程序实现Lagrange 插值和Newton 插值,验证Runge 现象; 3. 通过比较不同次数的多项式拟合效果,理解多项式拟合的基本原理; 4. 编写MA TLAB 程序实现最小二乘多项式曲线拟合。 二、实验内容 1. 用Lagrange 插值和Newton 插值找经过点(-3, -1), (0, 2), (3, -2), (6, 10)的三次插值公式,并编写MATLAB 程序绘制出三次插值公式的图形。 2. 设 ]5,5[,11 )(2 -∈+= x x x f 如果用等距节点x i = -5 + 10i /n (i = 0, 1, 2, …, n )上的Lagrange 插值多项式L n (x )去逼近它。不妨取n = 5和n = 10,编写MATLAB 程序绘制出L 5(x )和L 10(x )的图像。 (2) 编写MA TLAB 程序绘制出曲线拟合图。 三、实验步骤 1. (1) Lagrange 插值法:在线性空间P n 中找到满足条件: ?? ?≠===j i j i x l ij j i , 0,, 1)(δ 的一组基函数{}n i i x l 0)(=,l i (x )的表达式为 ∏ ≠==--= n i j j j i j i n i x x x x x l ,0),,1,0()( 有了基函数{}n i i x l 0)(=,n 次插值多项式就可表示为 ∑==n i i i n x l y x L 0 )()( (2) Newton 插值法:设x 0, x 1, …, x n 是一组互异的节点,y i = f (x i ) (i = 0, 1, 2, …, n ),f (x )在处的n 阶差商定义为

插值与拟合实验报告

一、给定函数y=sinx的函数表如下表,用拉格朗日插值求sin0.57891的近似 值 M文件: function yh=lagrange2(x0,y0,xh) n = length(x0); m = length(xh); yh=zeros(1,m); for k = 1:m for i = 1:n xp = x0([1:i-1 i+1:n]); yp = prod((xh(k)-xp)./(x0(i)-xp)); yh(k) = yh(k) + yp*y0(i); end end 执行:>> x0=[0.4,0.5,0.6,0.7] x0 = 0.4000 0.5000 0.6000 0.7000 >> y0=[0.38942,0.47943,0.56464,0.64422] y0 = 0.3894 0.4794 0.5646 0.6442 >> lagrange2(x0,y0,0.57891) 执行结果: ans = 0.5471

二、 1. 给定sin110.190809,sin120.207912,sin130.224951,o o o ===构造牛顿 插值函数计算'sin1130o 。 M 文件: function fp = newpoly(x,y,p) n = length(x); a(1) = y(1); for k = 1 : n - 1 d(k, 1) = (y(k+1) - y(k))/(x(k+1) - x(k)); end for j = 2 : n - 1 for k = 1 : n - j d(k, j) = (d(k+1, j - 1) - d(k, j - 1))/(x(k+j) - x(k)); end end d for j = 2 : n a(j) = d(1, j-1); end Df(1) = 1; c(1) = a(1); for j = 2 : n Df(j)=(p - x(j-1)) .* Df(j-1); c(j) = a(j) .* Df(j);

计算方法--插值法与拟合实验

实验三 插值法与拟合实验 一、实验目的 1. 通过本实验学会利用程序画出插值函数,并和原图形相比较 2. 通过本实验学会拟合函数图形的画法,并会求平方误差 二、实验题目 1. 插值效果的比较 实验题目:区间[]5,5-10等分,对下列函数分别计算插值节点k x 的值,进行不同类型的插值,作出插值函数的图形并与)(x f y =的图形进行比较: 2 11)(x x f +=; x x f arctan )(=; 4 41)(x x x f += (1) 做拉格朗日插值; (2) 做三次样条插值. 2. 拟合多项式实验 实验题目:给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数),(i i y x 和拟合函数的图形. 三、实验原理 本实验应用了拉格朗日插值程序、三次样条插值程序、多项式拟合程序等实验原理. 四、实验内容 1(1) figure x=-5:0.2:5; y=1./(1+x.^2); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=1./(1+x1.^2); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25);

m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(2) x=-5:0.2:5; y=atan(x); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=atan(x1); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(3) x=-5:0.2:5; y=x.^2./(1+x.^4); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=x1.^2./(1+x1.^4); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 2. x=[-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5]'; y=[-4.45 -0.45 0.55 0.05 -0.44 0.54 4.55]'; plot(x,y,'or'); hold on %三次多项式拟合 p1=mafit(x,y,3);

插值与拟合(使用插值还是拟合)

利用matlab实现插值与拟合实验 张体强1026222 张影 晁亚敏 [摘要]:在测绘学中,无论是图形处理,还是地形图处理等,大多离不开插值与拟合的应用,根据插值与拟合原理,构造出插值和拟合函数,理解其原理,并在matlab平台下,实现一维插值,二维插值运算,实现多项式拟合,非线性拟合等,并在此基础上,联系自己所学专业,分析其生活中特殊例子,提出问题,建立模型,编写程序,以至于深刻理解插值与拟合的作用。 [关键字]: 测绘学插值多项式拟合非线性拟合 [ Abstract]: in surveying and mapping, whether the graphics processing, or topographic map processing and so on, are inseparable from the interpolation and fitting application, according to the interpolation and fitting theory, construct the fitting and interpolation function, understanding its principle, and MATLAB platform, achieve one-dimensional interpolation, two-dimensional interpolation, polynomial fitting, non-linear fitting, and on this basis, to contact their studies, analysis of their living in a special example, put forward the question, modeling, programming, so that a deep understanding of interpolation and fitting function. [ Key words]: Surveying and mapping interpolation polynomial fitting nonlinear

实验四 插值法与曲线拟合

计算方法实验报告 专业班级:医学信息工程一班姓名:陈小芳学号:201612203501002 实验成绩: 1.【实验题目】 插值法与曲线拟合 2.【实验目的】 3.【实验内容】 4. 【实验要求】

5. 【源程序(带注释)】 (1)拉格朗日插值 #include #include #include #include #include #define n 4 //插值节点的最大下标 main() { double x1[n+1]={0.4,0.55,0.65,0.8,0.9}; double y1[n+1]={0.4175,0.57815,0.69657,0.88811,1.02652}; double Lagrange(double x1[n+1],double y1[n+1],float t); int m,k;float x,y;float X;double z; printf("\n The number of the interpolation points is m ="); //输入插值点的个数 while(!scanf("%d",&m)) { fflush(stdin); printf("\n输入错误,请重新输入:\n"); printf("\n The number of the interpolation points is m ="); } for(k=1;k<=m;k++) { printf("\ninput X%d=",k); while(!scanf("%f",&X)) { fflush(stdin); printf("\n输入错误,请重新输入:\n"); printf("\ninput X%d=",k); } z=Lagrange(x1,y1,X); printf("P(%f)=%f\n",X,z); } getch(); return (0); } double Lagrange(double x[n+1],double y[n+1],float X) { int i,j;

数学实验-实验2 插值与拟合

广州大学学生实验报告 开课学院及实验室: 2014年 月 日 学院 数学与信息科学学院 年级、专业、班 姓名 学号 实验课程名称 数学实验 成绩 实验项目名称 实验2 插值与拟合 指导老师 一、实验目的 1、掌握用MATLAB 计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。 2、掌握用MATLAB 作线性最小二乘拟合的方法。 3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。 二、实验设备 电脑、MATLAB 三、实验要求 1..选择一些函数,在n 个节点上(n )不要太大,如5~11)用拉格朗日,分段线性,三次样条三种插值方法,,计算m 各插值点的函数值(m 要适中,如50~100).通过数值和图形的输出,将三种插值结果与精确值进行比较.适当增加n ,再作比较,由此作初步分析.下列函数供选择参考: a. y=sin x ,0≦x ≦2π; 2.用 1 2 y x =在x=0,1,4,9,16产生5个节点15,...,P P .用不同的节点构造插值公式来计算x=5处的插值(如用 15,...,P P ;14,...,P P ;24,...,P P 等)与精确值比较进行分析。 5.对于实验1中的录像机计数器,自己实测一组数据(或利用给出的数据),确定模型2 t an bn =+中的系数a,b. 6.用电压V=10伏的电池给电容器充电,电容器上t 时刻的电压为 0()()t v t V V V e -τ =--,其中 0V 是电容器的初始 电压,τ是充电常数。试由下面一组t ,V 数据确定0V 和τ. t/s 0.5 1 2 3 4 5 7 9 V/V 6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63 8. 弹簧在力F 的作用下伸长x ,一定范围内服从胡克定律:F 与x 成正比,即F=kx,k 为弹性系数.现在得到下面一组x ,F 数据,并在(x,F )坐标下作图(图13).可以看出,当F大到一定数值(如x=9以后)后,就不服从这个定律了。试由数据拟合直线F=kx,并给出不服从胡克定律时的近似公式(曲线)。 1)要求直线与曲线在x=9处相连接。 2)要求直线与曲线在x=9处光滑连接. 四、实验程序 预备: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=s+p*y0(k); end y(i)=s; end 五、实验操作过程 当n=5时 clear; n=5; %在n 个节点上进行插值 m=75; %产生m 个插值点,计算函数在插值点处的精确值,将来进行对比 x=0:4/(m-1):2*pi; y=sin(x); z=0*x; x0=0:4/(n-1):2*pi; y0=sin(x0); y1=lagr1(x0,y0,x); % y1为拉格朗日插值 y2=interp1(x0,y0,x); % y2为分段线性插值 y3=spline(x0,y0,x); % y3为三次样条插值 [x' y' y1' y2' y3'] plot(x,z,'k',x,y,'r:',x,y1,'g-.',x,y2,'b',x,y3,'y--') gtext('Lagr.'), gtext('Pieces. linear'), gtext('Spline'), gtext('y=sin(x)') hold off; %比较插值所得结果与函数在插值点处的精确值 s = ' x y y1 y2 y3' [x' y' y1' y2' y3'] 结果 ans = 0 0 0 0 0 0.0541 0.0540 0.0495 0.0455 0.0611 0.1081 0.1079 0.0999 0.0910 0.1207 0.1622 0.1615 0.1510 0.1365 0.1787 0.2162 0.2145 0.2025 0.1819 0.2350 0.2703 0.2670 0.2541 0.2274 0.2896 0.3243 0.3187 0.3054 0.2729 0.3425 0.3784 0.3694 0.3563 0.3184 0.3936 0.4324 0.4191 0.4066 0.3639 0.4429 0.4865 0.4675 0.4559 0.4094 0.4904 0.5405 0.5146 0.5040 0.4548 0.5359 0.5946 0.5602 0.5508 0.5003 0.5796 0.6486 0.6041 0.5961 0.5458 0.6212 0.7027 0.6463 0.6396 0.5913 0.6609 0.7568 0.6866 0.6812 0.6368 0.6985 0.8108 0.7248 0.7208 0.6823 0.7341 0.8649 0.7610 0.7583 0.7278 0.7675

插值和拟合区别

插值和拟合区别 运输1203黎文皓通过这个学期的《科学计算与数学建模》课程的学习,使我掌握了不少数学模型解决实际问题的方法,其中我对于插值与拟合算法这一章,谈一谈自己的看法可能不是很到位,讲得不好的地方也请老师见谅。 首先,举一个简单的例子说明一下这个问题。 如果有100个平面点,要求一条曲线近似经过这些点,可有两种方法:插值和拟合。 我们可能倾向于用一条(或者分段的多条)2次、3次或者说“低次”的多项式曲线而不是99次的曲线去做插值。也就是说这条插值曲线只经过其中的3个、4个(或者一组稀疏的数据点)点,这就涉及到“滤波”或者其他数学方法,也就是把不需要90多个点筛选掉。如果用拟合,以最小二乘拟合为例,可以求出一条(或者分段的多条)低次的曲线(次数自己规定),逼近这些数据点。具体方法参见《数值分析》中的“线性方程组的解法”中的“超定方程的求解法”。经过上面例子的分析,我们可以大致的得到这样一个结论。插值就是精确经过,拟合就是逼近。 插值和拟合都是函数逼近或者数值逼近的重要组成部分。他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律目的,即通过"窥几斑"来达到"知全豹"。 所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通过调

整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。 而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给定离散点上满足约束。 从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点。 不过是插值还是拟合都是建立在一定的数学模型的基础上进行的。多项式插值虽然在一定程度上解决了由函数表求函数的近似表达式的问题,但是在逼近曲线上有明显的缺陷,很可能不能很好的表示函数的走向,存在偏差,在实际问题中我们往往通过函数近似表达式的拟合法来得到一个较为准却的表达式。

用多项式模型进行数据拟合实验报告(附代码)

实验题目: 用多项式模型进行数据拟合实验 1 实验目的 本实验使用多项式模型对数据进行拟合,目的在于: (1)掌握数据拟合的基本原理,学会使用数学的方法来判定数据拟合的情况; (2)掌握最小二乘法的基本原理及计算方法; (3)熟悉使用matlab 进行算法的实现。 2 实验步骤 2.1 算法原理 所谓拟合是指寻找一条平滑的曲线,最不失真地去表现测量数据。反过来说,对测量 的实验数据,要对其进行公式化处理,用计算方法构造函数来近似表达数据的函数关系。由于函数构造方法的不同,有许多的逼近方法,工程中常用最小平方逼近(最小二乘法理论)来实现曲线的拟合。 最小二乘拟合利用已知的数据得出一条直线或曲线,使之在坐标系上与已知数据之间的距离的平方和最小。模型主要有:1.直线型2.多项式型3.分数函数型4.指数函数型5.对数线性型6.高斯函数型等,根据应用情况,选用不同的拟合模型。其中多项式型拟合模型应用比较广泛。 给定一组测量数据()i i y x ,,其中m i ,,3,2,1,0Λ=,共m+1个数据点,取多项式P (x ),使得 min )]([020 2=-=∑∑==m i i i m i i y x p r ,则称函数P (x )为拟合函数或最小二乘解,此时,令 ∑==n k k k n x a x p 0 )(,使得min ])([02 002=??? ? ??-=-=∑∑∑===m i n k i k i k m i i i n y x a y x p I ,其中 n a a a a ,,,,210Λ为待求的未知数,n 为多项式的最高次幂,由此该问题化为求),,,(210n a a a a I I Λ=的极值问题。 由多元函数求极值的必要条件:0)(200 =-=??∑∑==m i j i n k i k i k i x y x a a I ,其中n j ,,2,1,0Λ= 得到: ∑∑∑===+=n k m i i j i k m i k j i y x a x )(,其中n j ,,2,1,0Λ=,这是一个关于n a a a a ,,,,210Λ的线 性方程组,用矩阵表示如下所示:

(完整版)Matlab学习系列13.数据插值与拟合

13. 数据插值与拟合 实际中,通常需要处理实验或测量得到的离散数据(点)。插值与拟合方法就是要通过离散数据去确定一个近似函数(曲线或曲面),使其与已知数据有较高的拟合精度。 1.如果要求近似函数经过所已知的所有数据点,此时称为插值问 题(不需要函数表达式)。 2.如果不要求近似函数经过所有数据点,而是要求它能较好地反 映数据变化规律,称为数据拟合(必须有函数表达式)。 插值与拟合都是根据实际中一组已知数据来构造一个能够反映数据变化规律的近似函数。区别是:【插值】不一定得到近似函数的表达形式,仅通过插值方法找到未知点对应的值。【拟合】要求得到一个具体的近似函数的表达式。 因此,当数据量不够,但已知已有数据可信,需要补充数据,此时用【插值】。当数据基本够用,需要寻找因果变量之间的数量关系(推断出表达式),进而对未知的情形作预测,此时用【拟合】。

一、数据插值 根据选用不同类型的插值函数,逼近的效果就不同,一般有:(1)拉格朗日插值(lagrange插值) (2)分段线性插值 (3)Hermite (4)三次样条插值 Matlab 插值函数实现: (1)interp1( ) 一维插值 (2)intep2( ) 二维插值 (3)interp3( ) 三维插值 (4)intern( ) n维插值 1.一维插值(自变量是1维数据) 语法:yi = interp1(x0, y0, xi, ‘method’) 其中,x0, y0为原离散数据(x0为自变量,y0为因变量);xi为需要插值的节点,method为插值方法。 注:(1)要求x0是单调的,xi不超过x0的范围; (2)插值方法有‘nearest’——最邻近插值;‘linear’——线性插值;‘spline’——三次样条插值;‘cubic’——三次插值;

matlab 软件拟合与插值运算实验报告

实验6 数据拟合&插值 一.实验目的 学会MATLAB软件中软件拟合与插值运算的方法。 二.实验内容与要求 在生产和科学实验中,自变量x与因变量y=f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。 要根据观测点的值,构造一个比较简单的函数y=t (x),使函数在观测点的值等于已知的数值或导数值,寻找这样的函数t(x),办法是很多的。 根据测量数据的类型有如下两种处理观测数据的方法。 (1)测量值是准确的,没有误差,一般用插值。 (2)测量值与真实值有误差,一般用曲线拟合。 MATLAB中提供了众多的数据处理命令,有插值命令,拟合命令。 1.曲线拟合 >> 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')

2.一维插值 >> year=[1900,1910,1920,1930,1940,1990,2000,2010]; >> product = [75.995,91.972,105.711,123.203,131.669,249.633,256.344,267.893 ]; >> p2005=interp1(year,product,2005) p2005 = 262.1185 >> y= interp1(year,product,x, 'cubic'); >> plot(year,product,'o',x,y)

MATLAB插值与拟合实验报告材料

实用标准文档 CENTRAL SOUTH UN I VERS ITY MATLAB实验报告 题目:第二次实验报告 学生姓名: 学院:_____________________________ 专业班级:

学号: 年月 MATLAB第二次实验报告 ------- 插值与拟合插值即在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn}

通过调整该函数中若干待定系数f(入1,疋,…,血),使得该函数与已知点集的差别(最小二乘意义)最小 一、插值 <1>拉格朗日插值(课上例子) m=101; x=-5:10/(m-1):5; y=1./(1+x92);z=0*x; plot(x,z,'r',x,y,'Li neWidth',1.5), gtext('y=1/(1+x A2)'),pause n=3; x0=-5:10/( n-1):5; y0=1./(1+x0.A2); y1=fLagra nge(xO,yO,x); hold on ,plot(x,y1,'b'),gtext(' n=2'),pause, hold off n=5; x0=-5:10/( n-1):5;

y0=1./(1+x0.A2); y2=fLagra nge(xO,yO,x); hold on ,plot(x,y2,'b:'),gtext(' n=4'),pause, hold off n=7; x0=-5:10/( n-1):5; y0=1./(1+x0.A2); y3=fLagra nge(xO,yO,x);hold on, plot(x,y3,'r'),gtext(' n=6'),pause, hold off n=9; x0=-5:10/( n-1):5; y0=1./(1+x0.A2); y4=fLagra nge(xO,yO,x);hold on, plot(x,y4,'r:'),gtext(' n=8'),pause, hold off n=11; x0=-5:10/( n-1):5; y0=1./(1+x0.A2); y5=fLagra nge(xO,yO,x);hold on,

数值计算插值法与拟合实验

实验报告三 一、实验目的 通过本实验的学习,各种插值法的效果,如多项式插值法,牛顿插值法,样条插值法,最小二乘法拟合(即拟合插值),了解它们各自的优缺点及插值。 二、实验题目 1、 插值效果比较 实验题目:将区间[]5,5-10等份,对下列函数分别计算插值节点k x 的值,进行不同类型的插值,作出插值函数的图形并与)(x f y =的图形进行比较: 211)(x x f +=;x x f arctan )(=;4 2 1)(x x x f +=。 (1) 做拉格朗日插值; (2) 做三次样条插值。 2、 拟合多项式实验 实验题目:给定数据点如下表所示: i x -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 i y -4.45 -0.45 0.55 0.05 -0.44 0.54 4.55 分别对上述数据做三次多项式和五次多项式拟合,并求平方误差,作出离散函数()i i y x ,和拟合函数的图形。 三、实验原理 n 阶拉格朗日插值 设已知n x x x ,,,10 及()()()x L n i x f y n i i ,,,1,0 ==为不超过n 次的多项式,且满足 插值条件()().,,1,0n i y x L i i n ==由对()x L 2的构造经验,可设 ()()()()(),11000 n n n i i i n y x l y x l y x l y x l x L +++==∑= 其中,()()n i x L i ,,1,0 =均为n 次多项式且满足() .,,1,0,, ,0, ,1n j i j i j i x l j i =?? ?≠==不难验 证,这样构造出的()x L n 满足插值条件。因此问题归结为求()()n i x l i ,,1,0 =的表达式。因 ()i j x i ≠是n 次多项式()x l i 的n 个根,故可设

最小二乘拟合实验报告

南昌工程学院 《计算方法》实验报告 课 程 名 称 计算方法 系 院 理 学 院 专 业 信息与计算科学 班 级 12级一班 学 生 姓 名 魏志辉 学 号 16 《最小二乘求解》 1 引言 在科学实验和生产实践中,经常要从一组实验数据(,)(1,2,,)i i x y i m L 出发,寻求函数y=f (x )的一个近似表达式y=φ(x),称为经验公式,从几何上来看,这就是一个曲线拟合的问题。 多项式的插值虽然在一定程度上解决了由函数表求函数近似表达式的问题,但用它来解决这里的问题,是有明显的缺陷的。首先,由实验提供的数据往往有测试误差。如果要求近似曲线y=φ(x)严格地通过所给的每个数据点(,)i i x y ,就会使曲线保留原来的测试误差,因

此当个别数据的误差较大的时候,插值的效果是不理想的。其次,当实验数据较多时,用插值法得到的近似表达式,明显缺乏实用价值。在实验中,我们常常用最小二乘法来解决这类问题。 定义()i i i x y δ?=-为拟合函数在i x 处的残差。为了是近似曲线能尽量反映所给数据点的变化趋势,我们要求||i δ尽可能小。在最小二乘法中,我们选取()x ?,使得偏差平方和最小,即 2 2 1 1 [()]min m m i i i i i x y δ?=== -=∑∑,这就是最小二乘法的原理。 2 实验目的和要求 运用matlab 编写.m 文件,要求用最小二乘法确定参数。 以下一组数据中x 与y 之间存在着bx y ae =的关系,利用最小二乘法确定式中的参数a 和b ,并计算相应的军方误差与最大偏差。数据如下: 3 算法原理与流程图 (1) 原理 最小二乘是要求对于给定数据列(,)(1,2,,)i i x y i m =L ,要求存在某个函数类 01{(),(),()}()n x x x n m ???Φ=

MATLAB插值与拟合实验报告

实验报告MATLAB 第二次实验报告题目:学生姓名:学院:专业班级:学号:

年月 MATLAB第二次实验报告 ————插值与拟合 插值即在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn}通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别(最小二乘意义)最小。 一、插值 <1>拉格朗日插值(课上例子) m=101; x=-5:10/(m-1):5; y=1./(1+x.^2);z=0*x; plot(x,z,'r',x,y,'LineWidth',1.5), gtext('y=1/(1+x^2)'),pause n=3; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y1=fLagrange(x0,y0,x); hold on,plot(x,y1,'b'),gtext('n=2'),pause, hold off n=5; x0=-5:10/(n-1):5; y0=1./(1+x0.^2);

y2=fLagrange(x0,y0,x); hold on,plot(x,y2,'b:'),gtext('n=4'),pause, hold off n=7; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y3=fLagrange(x0,y0,x);hold on, plot(x,y3,'r'),gtext('n=6'),pause, hold off n=9; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y4=fLagrange(x0,y0,x);hold on, plot(x,y4,'r:'),gtext('n=8'),pause, hold off n=11; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y5=fLagrange(x0,y0,x);hold on, plot(x,y5,'m'),gtext('n=10') 运行后得. <2>拉格朗日插值(课下修改) yh=lagrange (x,y,xh)function n = length(x);m = length(xh);yh = zeros(1,m); c1 = ones(n-1,1);c2 = ones(1,m); i=1:n for xp = x([1:i-1 i+1:n]); yh = yh + y(i)*prod((c1*xh-xp'*c2)./(x(i)-xp'*c2));end输入x=[1 2 3 4 5 6] y=[13 21 34 6 108 217] xh=3.2 lagrange(x,y,xh) 运行后得 x = 1 2 3 4 5 6

插值与拟合例题

1 山区地貌:在某山区测得一些地点的高程如下表:(平面区域1200<=x<=4000,1200<=y<=3600),试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。

2 用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi 和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。如果作2或4次多项式拟合,结果如何? 3 用电压V=10伏的电池给电容器充电,电容器上t时刻的电压为,其中V0是电容器的初始电压,是充电常数。试由下面一组t,V数据确定V0,。 2用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。 分别作1、2、4、6次多项式拟合,比较结果,体会欠拟合、过拟合现象。 解:程序如下: x=1:0.5:10; y=x.^3-6*x.^2+5*x-3; y0=y+rand; f1=polyfit(x,y0,1)%输出多项式系数 y1=polyval(f1,x);%计算各x点的拟合值 plot(x,y,'+',x,y1) grid on title('一次拟合曲线'); figure(2); f2=polyfit(x,y0,2)%2次多项式拟合 y2=polyval(f2,x); plot(x,y,'+',x,y2);

MATLAB插值与拟合实验报告材料

实用标准文档 MATLAB实验报告 题目:第二次实验报告 学生姓名: 学院: 专业班级: 学号: 年月

MATLAB第二次实验报告 ————插值与拟合插值即在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn}通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别(最小二乘意义)最小。 一、插值 <1>拉格朗日插值(课上例子) m=101; x=-5:10/(m-1):5; y=1./(1+x.^2);z=0*x; plot(x,z,'r',x,y,'LineWidth',1.5), gtext('y=1/(1+x^2)'),pause n=3; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y1=fLagrange(x0,y0,x); hold on,plot(x,y1,'b'),gtext('n=2'),pause, hold off n=5;

x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y2=fLagrange(x0,y0,x); hold on,plot(x,y2,'b:'),gtext('n=4'),pause, hold off n=7; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y3=fLagrange(x0,y0,x);hold on, plot(x,y3,'r'),gtext('n=6'),pause, hold off n=9; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y4=fLagrange(x0,y0,x);hold on, plot(x,y4,'r:'),gtext('n=8'),pause, hold off n=11; x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y5=fLagrange(x0,y0,x);hold on, plot(x,y5,'m'),gtext('n=10') 运行后得

相关文档
最新文档