计算方法实验四拉格朗日插值实验报告

合集下载

《计算方法》实验四插值法

《计算方法》实验四插值法

《计算方法》实验四插值法
一、实验目的:
掌握拉格朗日插以及多项式插值的震荡问题
二、实验任务:
考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时,是否也更加靠近被逼近的函数。

龙格(Runge)给出一个例子是极著名并富有启发性的。

设区间[-1,1]上函数
三、实验内容:
考虑区间[-1,1]的一个等距划分,分点为
则拉格朗日插值多项式为
其中的是n次拉格朗日插值基函数。

四、上机习题:
(1)选择不断增大的分点数目n=2,3….,画出原函数f(x)及插值多项式函数在[-1,1]上的图像,比较并分析实验结果。

(2)选择其他的函数,例如定义在区间[-5,5]上的函数
重复上述的实验看其结果如何。

(3)区间[a,b]上切比雪夫点的定义为
以为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。

lagrange插值法上机实践报告

lagrange插值法上机实践报告
3.625000000000000
五、计算结果的分析
三次Lagrange插值多项式为:

2.125000000000000; 0.375000000000000; 3.625000000000000.
六、计算中出现的问题,解决方法及体会
从上面的试验结果中我们可以看出拉格朗日插值法在实际中的巨大作用,它能使因试验得到的复杂数据处理更简单化,对于一些没有明确函数关系的数据处理,通过插值法构造的近似函数能有效的反映原数据的特性,又在插值法中,拉格朗日插值是一种多节点选取的插值法,其构造结果更加渐进真实结果,则在实际中用的更多,所以在今后的操作中,如何得到更加近似于原试验数据的构造函数,即如何减小拉格朗日插值多项式误差计算问题是我们以后做研究时要重点关注和去解决的难点。
四、数值结果五、计算结果的分析 六、计算中出现的问题,解决方法及体会
一、实验目的、内容
实验目的:
1.了解lagrange插值法的基本原理和方法;
2.掌握拉格郎日插值多项式的用法,适用范围及精确度;
3.学习掌握MATLAB软件有关的命令。
内容:
已知数据点 ,求三次Lagrange插值多项式 , 并求
二、相关背景知识介绍

其中 为以 为节点的n次插值基函数,则 是一次数不超过n的多项式,且满足
, j=0,1,…,n
再由插值多项式的唯一性,得
上式表示的插值多项式称为拉格朗日(Lagrange)插值多项式。
三、代码(Matlab)
functiony = lagrange(x0,y0,x)
n = length(x0);
m = length(x);
(3)拉格朗日插值法的概述
拉格朗日插值用来求n个节点的(n-1)次插值多项式,它就是线性插值和抛物线插值的推广和延伸。我们设有n个节点,则拉格朗日插值的表达式表示为:

实验四用MATLAB实现拉格朗日插值、分段线性插值

实验四用MATLAB实现拉格朗日插值、分段线性插值

实验四用MATLAB实现拉格朗日插值、分段线性插值一、实验目的:1)学会使用MATLAB软件;2)会使用MATLAB软件进行拉格朗日插值算法和分段线性差值算法;二、实验内容:1用MATLAB实现y = 1./(x.^2+1);(-1<=x<=1)的拉格朗日插值、分段线性2.选择以下函数,在n个节点上分别用分段线性和三次样条插值的方法,计算m个插值点的函数值,通过数值和图形的输出,将插值结果与精确值进行比较,适当增加n,再作比较,由此作初步分析:(1).y=sinx;( 0≤x≤2π)(2).y=(1-x^2)(-1≤x≤1)三、实验方法与步骤:问题一用拉格朗日插值法1)定义函数:y = 1./(x.^2+1);将其保存在f.m 文件中,程序如下:function y = f1(x)y = 1./(x.^2+1);2)定义拉格朗日插值函数:将其保存在lagrange.m 文件中,具体实现程序编程如下:function y = lagrange(x0,y0,x)m = length(x); /区间长度/n = length(x0);for i = 1:nl(i) = 1;endfor i = 1:mfor j = 1:nfor k = 1:nif j == kcontinue;endl(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j); endendendy = 0;for i = 1:ny = y0(i) * l(i) + y;end3)建立测试程序,保存在text.m文件中,实现画图:x=-1:0.001:1;y = 1./(x.^2+1);p=polyfit(x,y,n);py=vpa(poly2sym(p),10)plot_x=-5:0.001:5;f1=polyval(p,plot_x);figureplot(x,y,‘r',plot_x,f1)二分段线性插值:建立div_linear.m文件。

插值数值实验报告(3篇)

插值数值实验报告(3篇)

第1篇一、实验目的1. 理解并掌握插值法的基本原理和常用方法。

2. 学习使用拉格朗日插值法、牛顿插值法等数值插值方法进行函数逼近。

3. 分析不同插值方法的优缺点,并比较其精度和效率。

4. 通过实验加深对数值分析理论的理解和应用。

二、实验原理插值法是一种通过已知数据点来构造近似函数的方法。

它广泛应用于科学计算、工程设计和数据分析等领域。

常用的插值方法包括拉格朗日插值法、牛顿插值法、样条插值法等。

1. 拉格朗日插值法拉格朗日插值法是一种基于多项式的插值方法。

其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等。

2. 牛顿插值法牛顿插值法是一种基于插值多项式的差商的插值方法。

其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等,并且满足一定的差商条件。

三、实验内容1. 拉格朗日插值法(1)给定一组数据点,如:$$\begin{align}x_0 &= 0, & y_0 &= 1, \\x_1 &= 1, & y_1 &= 4, \\x_2 &= 2, & y_2 &= 9, \\x_3 &= 3, & y_3 &= 16.\end{align}$$(2)根据拉格朗日插值公式,构造插值多项式:$$P(x) = \frac{(x-x_1)(x-x_2)(x-x_3)}{(x_0-x_1)(x_0-x_2)(x_0-x_3)}y_0 + \frac{(x-x_0)(x-x_2)(x-x_3)}{(x_1-x_0)(x_1-x_2)(x_1-x_3)}y_1 + \frac{(x-x_0)(x-x_1)(x-x_3)}{(x_2-x_0)(x_2-x_1)(x_2-x_3)}y_2 + \frac{(x-x_0)(x-x_1)(x-x_2)}{(x_3-x_0)(x_3-x_1)(x_3-x_2)}y_3.$$(3)计算插值多项式在不同点的函数值,并与实际值进行比较。

拉格朗日插值实验报告

拉格朗日插值实验报告

引言概述:
拉格朗日插值是一种常用的数值分析方法,旨在通过已知的离散数据点来近似拟合出一个多项式函数,从而实现对未知数据点的预测和估计。

该方法在信号处理、图像处理、金融模型和机器学习等领域具有广泛的应用。

本实验报告将详细介绍拉格朗日插值的原理、算法和实验结果。

正文内容:
1.拉格朗日插值的原理
1.1多项式插值的概念
1.2拉格朗日插值多项式的形式
1.3拉格朗日插值多项式的唯一性证明
2.拉格朗日插值的算法
2.1插值多项式的计算方法
2.2插值多项式的复杂度分析
2.3多点插值方法的优缺点
3.拉格朗日插值的实验设计
3.1实验目的和步骤
3.2数据采集和预处理
3.3插值多项式的建模
3.4实验环境和工具选择
3.5实验结果分析和评估
4.拉格朗日插值的应用案例
4.1信号处理领域中的插值应用
4.2图像处理中的插值算法
4.3金融模型中的拉格朗日插值
4.4机器学习中的插值方法
5.拉格朗日插值的改进和发展
5.1经典拉格朗日插值的局限性
5.2最小二乘拉格朗日插值的改进
5.3多项式插值的其他方法
5.4拉格朗日插值在新领域的应用前景
总结:
拉格朗日插值作为一种经典的数值分析方法,在实际应用中具有广泛的用途。

本文通过介绍拉格朗日插值的原理和算法,以及实验设计和应用案例,全面展示了该方法的特点和优势。

同时,本文还指出了经典拉格朗日插值的局限性,并介绍了一些改进和发展的方向。

可以预见,拉格朗日插值在信号处理、图像处理、金融模型和机器学习等领域将继续发挥重要作用。

计算方法上机实验报告——拉格朗日插值问题

计算方法上机实验报告——拉格朗日插值问题

计算方法上机实验报告——拉格朗日插值问题一、方法原理n次拉格朗日插值多项式为:Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+ynln(x) n=1时,称为线性插值,L1(x)=y0(x-x1)/(x0-x1)+y1(x-x0)/(x1-x0)=y0+(y1-x0)(x-x0)/(x1-x0) n=2时,称为二次插值或抛物线插值,精度相对高些L2(x)=y0(x-x1)(x-x2)/(x0-x1)/(x0-x2)+y1(x-x0)(x-x2)/(x1-x0)/(x1-x2)+y2(x-x0)(x-x1)/(x2-x0)/(x2-x1)二、主要思路使用线性方程组求系数构造插值公式相对复杂,可改用构造方法来插值。

对节点xi(i=0,1,…,n)中任一点xk(0<=k<=n)作一n次多项式lk(xk),使它在该点上取值为1,而在其余点xi(i=0,1,…,k-1,k+1,…,n)上为0,则插值多项式为Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+ynln(x)上式表明:n个点xi(i=0,1,…,k-1,k+1,…,n)都是lk(x)的零点。

可求得lk三.计算方法及过程:1.输入节点的个数n2.输入各个节点的横纵坐标3.输入插值点4.调用函数,返回z函数语句与形参说明程序源代码如下:形参与函数类型参数意义intn节点的个数doublex[n](double*x)存放n个节点的值doubley[n](double*y)存放n个节点相对应的函数值doublep指定插值点的值doublefun()函数返回一个双精度实型函数值,即插值点p处的近似函数值#include<iostream>#include<math.h>usingnamespacestd;#defineN100doublefun(double*x,double*y,intn,doublep);voidmain(){inti,n;cout<<"输入节点的个数n:";cin>>n;doublex[N],y[N],p;cout<<"pleaseinputxiangliangx="<<endl;for(i=0;i<n;i++)cin>>x[i];cout<<"pleaseinputxiangliangy="<<endl;for(i=0;i<n;i++)cin>>y[i];cout<<"pleaseinputLagelangrichazhiJieDianp="<<endl;cin>>p;cout<<"TheAnswer="<<fun(x,y,n,p)<<endl;system("pause");}doublefun(doublex[],doubley[],intn,doublep){doublez=0,s=1.0;intk=0,i=0;doubleL[N];while(k<n){if(k==0){for(i=1;i<n;i++)s=s*(p-x[i])/(x[0]-x[i]);L[0]=s*y[0];k=k+1;}else{s=1.0;for(i=0;i<=k-1;i++)s=s*((p-x[i])/(x[k]-x[i]));for(i=k+1;i<n;i++)s=s*((p-x[i])/(x[k]-x[i]));L[k]=s*y[k];k++;}}for(i=0;i<n;i++)z=z+L[i];returnz;}四.运行结果测试:五.实验分析n=2时,为一次插值,即线性插值n=3时,为二次插值,即抛物线插值n=1,此时只有一个节点,插值点的值就是该节点的函数值n<1时,结果都是返回0的;这里做了n=0和n=-7两种情况3<n<100时,也都有相应的答案常用的是线性插值和抛物线插值,显然,抛物线精度相对高些n次插值多项式Ln(x)通常是次数为n的多项式,特殊情况可能次数小于n.例如:通过三点的二次插值多项式L2(x),如果三点共线,则y=L2(x)就是一条直线,而不是抛物线,这时L2(x)是一次式。

拉格朗日插值实验报告

拉格朗日插值实验报告

拉格朗日插值实验报告一、实验目的本实验旨在通过实际实验,深入理解拉格朗日插值法的原理和应用,掌握其计算过程和相关技巧。

二、实验原理Pn(x) = ∑ [yi * li(x)]其中,li(x)称为拉格朗日基函数,具体的计算公式如下:li(x) = ∏ [(x-xj)/(xi-xj)] (i≠j)利用拉格朗日插值法可以对数据进行插值计算,从而得到原函数未知的点的函数值。

三、实验步骤1.根据实验要求,选择一组离散的数据点,确保它们在横坐标轴上不共线。

2. 使用拉格朗日插值法计算插值多项式的各个基函数li(x)。

3.对插值多项式进行求和,得到最终的插值多项式Pn(x)。

4.在给定的范围内选择一些未知数据点,利用插值多项式Pn(x)计算其函数值。

5.将实际计算的函数值与原函数值进行对比,评估插值方法的准确性和精确度。

四、实验结果以实验要求给定的数据点为例,具体数据如下:x:1,2,3,4,5,6y:5,19,43,79,127,187根据拉格朗日插值法的计算公式,可以得到以下结果:l0(x)=(x-2)(x-3)(x-4)(x-5)(x-6)/(-120)l1(x)=(x-1)(x-3)(x-4)(x-5)(x-6)/120l2(x)=(x-1)(x-2)(x-4)(x-5)(x-6)/(-48)l3(x)=(x-1)(x-2)(x-3)(x-5)(x-6)/48l4(x)=(x-1)(x-2)(x-3)(x-4)(x-6)/(-20)l5(x)=(x-1)(x-2)(x-3)(x-4)(x-5)/20插值多项式Pn(x)=5*l0(x)+19*l1(x)+43*l2(x)+79*l3(x)+127*l4(x)+187*l5(x)综合以上计算结果,可以对给定范围内的未知数据点进行插值计算,从而得到相应的函数值。

五、实验分析与结论在实际实验中,我们可以利用拉格朗日插值法对任意给定的函数进行逼近计算,从而得到函数在离散数据点之间的近似值。

拉格朗日插值法实验报告

拉格朗日插值法实验报告

拉格朗日插值法实验报告一、实验目的本实验旨在通过使用拉格朗日插值法,以给定的一些数据点为基础,来预测其他未给定数据点的函数值。

通过实验,掌握拉格朗日插值法的具体计算步骤和应用范围。

二、实验原理给定 n+1 个互异的点 (x0, y0), (x1, y1), ..., (xn, yn),其中n 为自然数,我们希望通过这些点来构建一个多项式函数 P(x),满足P(xi) = yi,其中 i = 0, 1, ..., n。

构建多项式的具体步骤如下:1. 对于每个 xi,令Li(x) = ∏ (x - xj) / (xi - xj),其中 j ≠ i。

2. 最终的多项式P(x) = ∑ yi * Li(x)。

三、实验步骤1. 给定一组数据点 (x0, y0), (x1, y1), ..., (xn, yn)。

2. 对于每个 xi,计算Li(x) = ∏ (x - xj) / (xi - xj),其中 j ≠ i。

3. 构建多项式P(x) = ∑ yi * Li(x)。

4.给定一个新的x值,使用多项式P(x)预测对应的函数值。

四、实验结果和分析在本实验中,我们给定了如下的一组数据点:(0,1),(1,5),(2,17),(3,41),(4,83)。

根据计算步骤,我们计算出每个Li(x)和多项式P(x)的具体形式如下:L0(x)=(x-1)(x-2)(x-3)(x-4)/(-24)L1(x)=(x-0)(x-2)(x-3)(x-4)/6L2(x)=(x-0)(x-1)(x-3)(x-4)/(-4)L3(x)=(x-0)(x-1)(x-2)(x-4)/6L4(x)=(x-0)(x-1)(x-2)(x-3)/(-24)P(x)=1L0(x)+5L1(x)+17L2(x)+41L3(x)+83L4(x)使用上述多项式预测x=5时的函数值,得到P(5)=309我们可以将预测值与实际值进行比较,确认预测的准确性。

如果有多组数据点,我们可以使用更多的数据点来构建多项式,提高预测的精度。

拉格朗日插值法实验报告

拉格朗日插值法实验报告

拉格朗日插值法实验报告一、实验目的1、学习和掌握拉格朗日插值多项式。

2、运用拉格朗日插值多项式进行计算。

二、算法步骤函数定义double lgrr(int n,double X)输入所求节点x和已知的节点数n输出插值结果s步骤:1、输入n对数(x[i],y[i])(i=0--n)2、令s=03、对于 i=0-n T=y[i]对j=0- n但j!=i T=T*(X-x[j])/(x[i]-x[j]) 令s=s+T4、输出结果三流程图四、原程序#include<stdio.h>main(){double X;int n;double lgrr(int n,double X);printf("input the aim number'X' ");printf("input the number of pairs of numbers 'n':");scanf("%lf%d",&X,&n);lgrr(n,X);return 0;}double lgrr(int n,double X){double s=0,t;double x[81],y[81];int i,j;printf("input n pairs of numbers:\n"); for(i=0;i<n;i++)scanf("%lf%lf",&x[i],&y[i]);for(i=0;i<n;i++){t=y[i];for(j=0;j<n;j++){if(j!=i)t=t*(X-x[j])/(x[i]-x[j]);}s=s+t;}printf("s=%f\n",s);return 0;}作业用程序#include<stdio.h>main(){double X;int n;double lgrr(int n,double X);printf("input the aim number'X' ");printf("input the number of pairs of numbers 'n':");scanf("%lf%d",&X,&n);lgrr(n,X);return 0;}double lgrr(int n,double X){FILE *fp;double s=0,t,z;double x[81],y[81];int i,j,k;if((fp=fopen("lgrr.txt","r+"))==NULL) printf("can not open the file.");printf("input n pairs of numbers:\n"); for(i=0;i<n;i++)scanf("%lf%lf",&x[i],&y[i]);for(k=0;k<=20;k++){for(i=0;i<n;i++){z=X+.01*k;t=y[i];for(j=0;j<n;j++){if(j!=i)t=t*(z-x[j])/(x[i]-x[j]);}s=s+t;}printf("s=%f\n",s);fprintf(fp,"s=%f\n",s);}return 0;}五、作业:3-27s=0.198670 s=0.407105 s=0.625307 s=0.853266 s=1.090966 s=1.338384 s=1.595493 s=1.862263 s=2.138663 s=2.424661 s=2.720224 s=3.025321 s=3.339921 s=3.663993 s=3.997507 s=4.340430 s=4.692730 s=5.054371s=5.425314 s=5.805512 s=6.194912。

拉格朗日插值 实验报告

拉格朗日插值 实验报告

拉格朗日插值实验报告拉格朗日插值实验报告引言:拉格朗日插值是一种常用的数值分析方法,用于在给定一组已知数据点的情况下,通过构造一个多项式函数来逼近这些数据点。

该方法在科学计算、数据处理和图像处理等领域中被广泛应用。

本实验旨在通过实际操作和计算,深入了解拉格朗日插值的原理和应用。

实验目的:1. 理解拉格朗日插值的原理和基本思想;2. 学会使用拉格朗日插值方法进行数据逼近;3. 掌握拉格朗日插值的优缺点及适用范围。

实验步骤:1. 收集一组已知数据点,包括自变量和因变量;2. 根据数据点,构造拉格朗日插值多项式;3. 利用插值多项式,计算给定自变量对应的因变量;4. 分析插值结果的准确性和逼近程度。

实验结果与分析:在实验中,我们选取了一组简单的数据点进行拉格朗日插值的计算和分析。

数据点包括自变量x和因变量y,如下所示:x | 0 | 1 | 2 | 3 | 4 |y | 1 | 2 | 3 | 5 | 8 |根据这组数据点,我们构造了拉格朗日插值多项式:L(x) = y₀ * L₀(x) + y₁ * L₁(x) + y₂ * L₂(x) + y₃ * L₃(x) + y₄ * L₄(x)其中,L₀(x),L₁(x),L₂(x),L₃(x),L₄(x)分别是拉格朗日插值多项式的基函数,计算公式如下:L₀(x) = (x - x₁) * (x - x₂) * (x - x₃) * (x - x₄) / (x₀ - x₁) * (x₀ - x₂) * (x₀- x₃) * (x₀ - x₄)L₁(x) = (x - x₀) * (x - x₂) * (x - x₃) * (x - x₄) / (x₁ - x₀) * (x₁ - x₂) * (x₁- x₃) * (x₁ - x₄)L₂(x) = (x - x₀) * (x - x₁) * (x - x₃) * (x - x₄) / (x₂ - x₀) * (x₂ - x₁) * (x₂- x₃) * (x₂ - x₄)L₃(x) = (x - x₀) * (x - x₁) * (x - x₂) * (x - x₄) / (x₃ - x₀) * (x₃ - x₁) * (x₃- x₂) * (x₃ - x₄)L₄(x) = (x - x₀) * (x - x₁) * (x - x₂) * (x - x₃) / (x₄ - x₀) * (x₄ - x₁) * (x₄- x₂) * (x₄ - x₃)通过计算,我们可以得到给定自变量x对应的因变量y的逼近值。

拉格朗日插值算法及应用实验报告

拉格朗日插值算法及应用实验报告

拉格朗日插值算法及应用实验报告一、引言拉格朗日插值法是一种常用的数值插值方法,可用于在已知数据点之间估计函数值。

该方法的基本思想是通过构造一个多项式来逼近给定的数据点集合,从而实现对函数的插值。

本实验旨在通过实际计算的方式探讨拉格朗日插值法的基本原理与应用。

二、拉格朗日插值法原理拉格朗日插值法利用多项式的性质来对给定的数据进行插值。

给定n+1个不同的数据点(x_0,y_0),(x_1,y_1),...,(x_n,y_n),其中x_i表示自变量,y_i表示因变量。

拉格朗日插值多项式的表达式为:P_n(x)=y_0*L_0(x)+y_1*L_1(x)+...+y_n*L_n(x)其中L_i(x)为拉格朗日基函数,定义如下:L_i(x)=(x-x_0)(x-x_1)...(x-x_i-1)(x-x_i+1)...(x-x_n)/[(x_i-x_0)(x_i-x_1)...(x_i-x_i-1)(x_i-x_i+1)...(x_i-x_n)]三、应用实验本实验选取了不同的数据点集合,并利用拉格朗日插值法计算相应的拟合多项式,从而对函数进行插值。

数据点集合1:(x_0,y_0)=(0,1)(x_1,y_1)=(1,2)(x_2,y_2)=(2,3)(x_3,y_3)=(3,5)利用拉格朗日插值法得到的多项式为:P_3(x)=1*L_0(x)+2*L_1(x)+3*L_2(x)+5*L_3(x)将基函数带入,得到多项式表达式为:P_3(x)=1/6*x^3-3/2*x^2+11/6*x+1数据点集合2:(x_0,y_0)=(0,1)(x_1,y_1)=(1,4)(x_2,y_2)=(2,9)(x_3,y_3)=(3,16)利用拉格朗日插值法得到的多项式为:P_3(x)=1*L_0(x)+4*L_1(x)+9*L_2(x)+16*L_3(x)将基函数带入,得到多项式表达式为:P_3(x)=1/6*x^3+1/2*x^2+1/3*x+1四、实验结果与讨论通过利用拉格朗日插值法,我们得到了不同数据点集合的拟合多项式。

计算方法 实验报告 拉格朗日 龙贝格 龙格库塔

计算方法 实验报告 拉格朗日 龙贝格  龙格库塔
agrange.c,romberg.c和runge.c三个子文件包含(#include)在了main.c中,所以,要查看运行结果,老师只需直接用win-tc打开main.c,运行即可。感谢使用!
主界面:
/*lagrange.c*/
float real_value(float x) /*由被插值函数计算真实值*/
c=getchar();
if(c=='N'||c=='n') break;
}
}
/*romberg.c*/
double function(double x) /*被积函数*/
{
return 4.0/(1+(x)*(x));
}
double t(double a,double b,int m) /*计算T1*/
实验二(龙贝格公式)
§公式
§算法描述
§流程图
§运行结果
§结果分析:Romberg积分法是在积分步长逐步折半的过程中,用低精度求积公式的组合得到更高精度求积公式的一种方法,它算法简单,且收敛加速效果极其显著。
实验三(四阶龙格库塔)
§公式
k1=h*f(xn,yn);
k2=h*f(xn+h/2,yn+k1/2);
T1=t(a,b,0);
T2=T1/2.0+t(a,b,1);
S1=(4*T2-T1)/3.0;
T1=T2;
T2=T1/2.0+t(a,b,2);
S2=(4*T2-T1)/3.0;
C1=(16*S2-S1)/15.0;
T1=T2;
T2=T1/2.0+t(a,b,3);
S1=S2;
S2=(4*T2-T1)/3.0;

拉格朗日插值法 实验

拉格朗日插值法  实验

实验九 Lagrange 插值法求近似函数实验一、实验内容:设2.12)(2+-=x x x f ,数据点取值如下表分别构造)(),(),(432x L x L x L 来近似)(x f .二、算法原理:插值法是函数逼近的一种重要方法,解决对于只提供离散数据点 ))(,(i i i y x f x =, i=0,1,...,n,而希望在函数空间{}n s p a n ϕϕϕ,...,,2=Φ中选择,)(1i ni i c x S ϕ∑==来近似于真实函数)(x f 的问题,其中i c 是可选择参数,可通过要求曲线)(x S 经过数据点,即满足插值条件n i x f x S i i ,...,1,0),()(==来确定.所谓的代数插值指以代数多项式)(x P n 作为插值函数,即函数空间取为 {}n x x s p a n ,...,,1=Φ,代数插值多项式)(x P n 的表达式,在理论上可通过求解参数i c 满足的1+n 个方程⎪⎪⎩⎪⎪⎨⎧=++++=++++=++++n n n n n n n n n n y x c x c x c c y x c x c x c c y x c x c x c c ...... (22101121211000202010)唯一确定,但实际上不可取。

Lagrange 插值法巧妙利用了基函数法,直接构造出该插值多项式 ),()(x P x L n n =它适用于非等距节点.其基本思想是通过满足在节点i x 处值取1,其余处取0的插值基函数),(x l i 将)(x L n 表达为一个线性结合,)()(1i ni i n y x l x L ∑==其中 n i x x x x x l n i j j j i j i ≤≤--=∏≠=0,)(0 具体算法如下Step1输入数据点总数1+n (即输入n 值),节点i x ,相应的函数值i y ,i =0,1,…,n,令;0)(=x L nStep2 for 0=i to n{计算∏≠=--=n i j j j i j i x x x x x l 0)(s=1,for 0=j to n {如果i j =,s s =, 否则, j i j x x x x s s --=})(x l s i →)())()((x L y x l x L n i i n →+ }Step3输出插值多项式)(x L n .三、实验要求:(1)编制Lagrange 插值法程序,得出实验结果,并进行比较;(2)观察高次代数插值的Runge 现象:1901年,德国数学家runge 考察函数22511)(x x f += 在[]1,1- 上n 等分做等距节点插值时,观察到插值节点∞→n ,插值多项式)(x P n 仅在726.0≤x 内收敛于)(x f ,而此区间以外都发散. 请用10=n ,计算Lagrange 插值多项式10P ,通过图示(在一个坐标上画出10P 和)(x f 的对比图) ,观察这一现象, 并写出你所得到的启示.四、源代码:#include<stdio.h>#include<math.h>void main(){int i,j,n=4;float y=0.7,Ln=0;float s;float x[5]={-1,-0.5,0,0.5,1},f[5]={4.2,2.45,1.2,0.45,0.2},l[5];for(i=0;i<=n;i++){s=1;for(j=0;j<=n;j++){if(j==i)s=s;elses*=(y-x[j])/(x[i]-x[j]);}l[i]=s;Ln+=l[i]*f[i];}printf("%f",Ln);}五、实验结果截图:六、上机体会:。

拉格朗日插值

拉格朗日插值

《拉格朗日插值》实验报告实验名称:拉格朗日插值 成绩:___________专业班级:数学与应用数学1202班 姓名:张晓彤 学号:2012254010227 实验日期 :2014年10月 27日实验报告日期: 2014 年10 月27日一、实验目的(1)掌握线性方法,最近点方法,三次样条和三次插值的调用格式,并以此来计算一维数据插值,通过相关的实例来验证这些插值方法的实用性.(2)掌握拉格朗日多项式的构造思想和构造过程(3)能够应用matlab 软件编写拉格朗日插值方法的程序并能熟悉应用,以此来解决相关例题(4)学会拉格朗日插值方法求函数的近似值,以解决其它科学实验的计算问题二、实验内容2.1验证一维数据插值函数的调用格式例1:给出概率积分dx e x f x x ⎰-=022)(π的数据表如表1所示,用不同的插值方法计算f(0.472). 表1 概率积分数值表例2:某检验参数f 随时间t 的采样结果如表2,用数据插值法计算57,52,47,42,37,32,27,22,17,12,7,2=t 时的f 值.表2 检测参数f 随时间t 的采样结果2.2编写拉格朗日插值的程序并验证任意给出一个函数,并给出函数在一些点的函数值,并用拉格朗日差值方法计算函数在某些点处的函数值,通过图像来比较,拉格朗日插值多项式拟合的精确程度。

三、实验环境该实验应用matlab2014来进行实验的验证和设计.四、实验步骤和实验结果4.1验证一维数据插值函数的调用格式例1:(概率积分)dx e x f xx ⎰-=022)(π 这是一个一维插值问题,命令如下:x=0.46:0.01:0.49;f=[0.4846555,0.4937542,0.5027498,0.5116683];format longinterp1(x,f,0.472) %用默认方法即线性插值方法%ans =0.495553320000000interp1(x,f,0.472,'nearest') %用最近点插值的方法计算%ans =0.493754200000000interp1(x,f,0.472,'cubic') %用三次样条插值方法计算%ans =0.495561119712056interp1(x,f,0.472,'spline') %用三次多项式的方法计算%ans =0.495560736000000例2:(数据插值)某检验参数f 随时间t 的采样结果如表2,用数据插值法计算57,52,47,42,37,32,27,22,17,12,7,2 t 时的f 值. 表2 检测参数f 随时间t 的采样结果这是一个一维插值问题,命令如下:T=0:5:65;x=2:5:57;F=[3.1025 2.256 879.5 1835.9 2968.8 4136.2 5237.9 6152.7 6725.3 6848.3 6403.5 6824.7 7328.5 7857.6];F1=interp1(T,F,x) % 用默认方法即线性插值方法%F1 =1.0e+03 *0.0028 0.3532 1.2621 2.2891 3.4358 4.57695.60386.3817 6.7745 6.6704 6.57207.0262F1=interp1(T,F,x,'nearest') %用最近点插值的方法计算%F1 =1.0e+03 *0.0031 0.0023 0.8795 1.8359 2.9688 4.13625.23796.1527 6.7253 6.8483 6.4035 6.8247F1=interp1(T,F,x,'spline') %用三次样条插值方法计算%F1 =1.0e+03 *-0.1703 0.3070 1.2560 2.2698 3.4396 4.58965.63706.4229 6.8593 6.6535 6.48177.0441F1=interp1(T,F,x,'cubic') %用三次多项式的方法计算%F1 =1.0e+03 *0.0024 0.2232 1.2484 2.2736 3.4365 4.59135.63626.4362 6.7978 6.6917 6.50777.01864.2编写拉格朗日插值程序并验证任意给出一个函数,并给出函数在一些点的函数值,并用拉格朗日插值方法计算函数在某些点处的函数值.并通过图像来说明拉格朗日插值多项式拟合的精确程度。

拉格朗日插值实验报告

拉格朗日插值实验报告

拉格朗日插值实验报告实验报告:拉格朗日插值一、实验目的二、实验仪器与材料1.计算机2. Python 编程环境三、实验原理拉格朗日插值是一种通过给定数据点,构造一个多项式函数来拟合和逼近这些数据点的方法。

它的基本思想是假设给定的数据点 (x1, y1), (x2, y2), ..., (xn, yn) 都符合一个 n-1 次多项式函数 y = P(x),其中 P(x) 为拉格朗日多项式。

拉格朗日多项式可以通过下述公式表示:P(x) = Σ(Li(x) * yi),i=1到n其中,Li(x) = Π((x - xj) / (xi - xj)),j=1到n且j ≠ i四、实验步骤1.收集实验数据,记录各个数据点的横坐标和纵坐标。

2. 使用 Python 编程环境,导入所需的数学计算库和数据处理库。

3.编写代码,定义拉格朗日插值函数。

4.输入横坐标x的值,计算对应的纵坐标y。

5.绘制原始数据点和拉格朗日插值拟合曲线,并进行可视化展示。

6.分析拟合效果,判断拉格朗日插值的适用性。

五、实验结果与分析为了测试拉格朗日插值的效果,本实验使用了一个拟合曲线的实际数据集,该数据集包含了一辆汽车在不同速度下的油耗量。

通过对该数据集进行拉格朗日插值拟合,得到了一条平滑的曲线,该曲线可以很好地反映汽车速度与油耗量之间的关系。

在插值过程中,选择的数据点数量较多时,拉格朗日插值的效果较好。

然而,如果数据点数量较少,则可能出现过拟合的情况,从而导致插值结果不准确。

因此,在使用拉格朗日插值进行数据拟合时,需要根据具体的数据集情况进行调整。

六、实验总结通过本次实验,我们了解到拉格朗日插值的原理和应用。

拉格朗日插值是一种常用的数据插值方法,可以通过给定数据点来构造插值多项式。

通过实际数据的拟合和插值,我们得到了一条平滑的曲线,该曲线能够较好地反映出数据之间的关系。

拉格朗日插值的优点是可以有效地拟合数据,并且不需要对数据点进行排序。

《数值分析》实验报告4

《数值分析》实验报告4

《数值分析》实验报告
【实验名称】
运用MATLAB编程实现多项式插值的拉格朗日方法。

【实验目的】
①熟悉了解lagrange插值多项式的算法。

②学习MATLAB软件的功能。

【实验环境】
操作环境:Windows 10
实验平台:Matlab7.1软件
【实验操作】
1、打开MATLAB程序软件。

2、所用实例为课本p116页例1。

3、lagrange插值多项式的MATLAB函数文件lagrange.m如下:
3.1 function yi=lagrange(x,y,xi)
n=length(x); m=length(y);
if n~=m
error('The lengths of X and Y must be equal');
return;
end
p=zeros(1,n);
for k=1:n
t=ones(1,n);
for j=1:n
if j~=k
if abs(x(k)-x(j))<eps
error('the DATA is error');
return;
end
t(j)=(xi-x(j))/(x(k)-x(j));
end
end
p(k)=prod(t);
end
yi=sum(y.*p);
4、结果说明:通过构造运用lagrange插值多项式使得求解某些函数值得较为简便。

【实验感想】
通过本次的实验了解了lagrange插值多项式的计算方法,大大提高了对课本知识的运用能力,熟悉了MATLAB的一些功能,增强了对数值分析学习的兴趣。

实验四拉格朗日法插值

实验四拉格朗日法插值

实验四用VC显示一定范围的确定函数及拉格朗日法插值得到的逼近函数的图像学院:计算机与信息工程学院班级: 计算机科学与技术师范汉班学号: 20081121107姓名: 黄志强指导老师: 马季驌算法分析:本程序运用计算机图形学的基本绘图函数进行画点绘图。

SetPixel(int(x+0.5),int (f(x)+0.5),colorref);我们剩下的工作就是求出f(x) 的各种插值逼近函数(原函数已经给出)的。

任务要求做三个近似函数:拉格朗日插值近似,分段线性插值近似,和Hermite分段三点二次插值。

本程序的算法核心是用程序实现形式较为繁杂的插值函数的表示。

拉格朗日插值函数的形式为在插值点处的函数值于二次插值基函数的线性组合;程序实现细则如下。

源代码:插值基函数double CMyView::L(int i, double x){double m=1;int j;for(j=0;j<N;j++){if(j==i)continue;m=m*(x-cx[j])/(cx[i]-cx[j]);}return m;}拉格朗日逼近函数(插值基函数与原函数在形值点处的线性组合)double CMyView::fai(double x){int i;double y=0;for(i=0;i<N;i++){y+=f(cx[i])*L(i,x);//L(i,x)有累积效应出错}return y;}结果截图:原函数图像拉格朗日插值函数图像拉格朗日插值函数图像与原函数图像的对照结果分析:拉格朗日插值逼近函数由于使用了10 个形值点,插值函数的次数高达9,函数的稳定性差产生了非常严重的荣格现象。

计算方法第四章插值上机报告

计算方法第四章插值上机报告

实验报告名称班级:学号:姓名:成绩:1实验目的1)熟悉拉格朗日插值多项式和牛顿插值多项式,注意其不同特点;2)会用三次样条插值解决一些实际问题;2 实验内容做二次插值,并求x1=-2,x2=0,x3=2.75时的函数近似值。

采用拉格朗日分段插值算法。

2)按下列数据做五次插值,并求x1=0.46,x2=0.55,x3=0.60时的函数近似值。

采用拉格朗日五次插值多项式3)编写一个用牛顿前插公式计算函数值的程序,要求先输出差分表,再计算x点的函数值,采用牛顿前插公式的算法。

3实验步骤1)根据插值公式的算法编写相应的函数程序;2)将题目中所给参数带入到插值函数中得出结果;3 程序设计1)2)拉格朗日插值算法function yi=Lagran(x,y,xi)m=length(xi);n=length(x);for i=1:mz=xi(i);s=0;for k=1:np=1;for j=1:nif j~=kp=p*(z-x(j))/(x(k)-x(j));endends=p*y(k)+s;endyi(i)=s;endend分段插值clcclearx=[-3.0 -1.0 1.0 2.0 3.0];y=[1.0 1.5 2.0 2.0 1.0];yi1=Lagran(x(1,1:3),y(1,1:3),-2);yi2=Lagran(x(1,2:4),y(1,2:4),0);3)function N=forwardchafennewton(x,y,xi)%Newton»ù±¾²åÖµ·½·¨format longn=length(x);m=length(y);t=ff(x,xi);if m~=nerror('x or y ÊäÈëÓÐÎó£¬ÔÙÀ´~');endA=zeros(n);Z=1.0;A(:,1)=y; %AµÚÒ»ÁÐÊÇyN=A(1,1);for k=2:n % k ΪÁбêfor i=k:n % i ΪÐбêA(i,k)=A(i,k-1)-A(i-1,k-1); %±ØÐëÊǺó-Ç°endZ=Z*(t-(k-2))/(k-1);N=N+Z*A(k,k);enddisp('²îÉ̱í');disp(A);fprintf('t=%d',t);fprintf('Newton²åÖµµÄ½á¹û±£Áô6λСÊýÊÇ %10.6f\n',N); %function ni=ni(k)%ni=1;%if k==0% ni=1;%else if k<0% disp('error');% else% for i=1:k% ni=ni*i;% end% end%endfunction t=ff(x,xi)h=x(2)-x(1);t=(xi-x(1))/h;4实验结果及分析1)2)Lagran(x,y,[0.46 0.55 0.60])ans =1.1007 1.1413 1.16623)5总结通过本实验我掌握了拉格朗日和牛顿插值多项式的算法,拉格朗日插值多用于理论推导,而牛顿插值算法计算比较方便,特别对于等距节点。

拉格朗日插值实验报告

拉格朗日插值实验报告

实验名称: 实验一 拉格朗日插值1 引言我们在生产生活中常常会遇到这样的问题:某个实际问题中;函数f x 在区间a;b 上存在且连续;但却很难找到其表达式;只能通过实验和观测得到有限点上的函数表..显然;根据这些点的函数值来求其它点的函数值是非常困难的..有些情况虽然可以写出表达式;但结构复杂;使用不方便..所以我们总是希望根据已有的数据点或函数表来构造某个简单函数P x 作为f x 的近似值..插值法是解决此类问题的一种比较古老的、但却很常用的方法..它不仅直接广泛地应用于生产实际和科学研究中;而且也是进一步学习数值计算方法的基础..2 实验目的和要求运用Matlab 编写三个.m 文件;定义三种插值函数;要求一次性输入整张函数表;并利用计算机选择在插值计算中所需的节点..分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算f 0.15;f 0.31;f 0.47的近似值..已知函数表如下:3 算法原理与流程图1原理设函数y=在插值区间a;b 上连续;且在n+1个不同的插值节点a≤x 0;x 1;…;x n ≤b 上分别取值y 0;y 1;…;y n ..目的是要在一个性质优良、便于计算的插值函数类Φ中;求一简单函数P x;满足插值条件P x i =y i i=0;1;…;n;而在其他点x≠x i 上;作为f x 近似值..求插值函数P x 的方法称为插值法..在本实验中;采用拉格朗日插值法.. ①分段低次插值当给定了n+1个点x 0<x 1<…<x n 上的函数值y 0;y 1;…;y n 后;若要计算x≠x i 处函数值f x 的近似值;可先选取两个节点x i-1与x i 使x∈x i-1;x i ;然后在小区间x i-1;x i 上作线性插值;即得这种分段低次插值叫分段线性插值;又称折线插值..类似地;我们可以选取距离x 最近的三个节点x i-1;x i 与x i+1;然后进行二次插值;即得这种分段低次插值叫分段二次插值;又称分段抛物线插值.. ②全区间上拉格朗日插值对节点x i i=0;1;…;n 中任一点x k 0≤k≤n;作一n 次多项式l k x;使它在该点上的取值为1;在其余点x i i=0;1;…;k -1;k+1;…;n 上取值为零..对应于每一节点x k k=0;1;…;n;都能写出一个满足此条件的多项式;这样写出了n+1个多项式l 0x;l 1x;…;l n x;其中0111()()()()()()k k k k n l x A x x x x x x x x x x -+=----•-;由条件()1k k l x =可得于是我们可以得出如下的拉格朗日n 次插值多项式对于全区间上的插值;n 取函数表的长度(2)流程图分段线性插值 分段二次插值 全区间拉格朗日插值4 程序代码及注释1、分段线性插值2、分段二次插值3、拉格朗日全区间插值5算例分析1、测试示例2、首先输入函数变及待求点3、分段线性插值6讨论与结论1、使用tic;toc函数计算下列四种方法计算上述问题所运行的时间从三次实验结果可知;三个程序的运行时间都很短..2、程序优化由分段线性插值和分段二次插值的原理;x取值在函数表范围内时;插值结果有意义;而当x取值在函数表范围以外;利用分段线性插值公式仍可以进行运算并得到一个值;但其结果不准确;分段二次插值则无法找到三个合适的点以求插值;不予以输出结果;若输入的函数表x与y的长度不相等;则无法插值..所以加入以下判断以提高插值的准确性3、作图比较上图为三种方法的插值曲线;其中x取0到0.5;步长为0.001;由图可得;三种曲线非常接近;这说明我们用拉格朗日插值计算所给点函数值的近似值时;引起的误差还是比较小的..参考文献1 易大义;沈云宝;李有法. 计算方法第2版;浙江大学出版社. p.29-53.2 张琨高思超毕靖编着 MATLAB2010从入门到精通电子工业出版社。

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

实验报告
学院:电子信息工程
实验课程:计算方法
学生姓名:
学号:
专业班级:通信工程17-3班级
实验四 Lagrange 插值
1 目的与要求
(1)进一步理解和掌握Lagrange 插值的数值算法。

(2)能够根据给定的函数值表求出插值多项式和函数在某一点的近似值以解决实际问题
2 实验内容
已知函数表如下,通过编制程序,试用拉格朗日插值多项式求0.5,0.7,0.85三点处的近似函数值。

3 实验原理
拉格朗日插值多项式:
4 程序设计 (1)流程图
拉格朗日插值程序流程图
∑===
n
i 0
i i
i )
x (l y y )
x x ()x x )(x x ()x x ()
x x ()x x )(x x ()x x ()x (l n i 1i i 1i i 0i n 1i 1i 0i --------=
+-+-
(2)程序代码
#include<stdio.h>
#include<math.h>
#define n 5
double lagrange(long double a[n],long double b[n],double x)
{
int k,l;
long double y1,m;
y1=0.0;
for(k=0;k<n;k++)
{
m=1.0;
for(l=0;l<n;l++)
{
if(l!=k)
{
m=m*(x-a[l])/(a[k]-a[l]);
}
}
y1=y1+m*b[k];
}
return y1;
}
void main()
{
double x,y;
long double a[n]={0.4,0.55,0.8,0.9,1};
long double b[n]={0.41075,0.57815,0.88811,1.02652,1.17520
};
printf("\n输入要求的自变量的值\n");
scanf("%lf",&x);
y=lagrange(a,b,x);
printf ("拉格朗日插值后的近似值%lf",y); }
5 实验结果与分析
0.5处的近似函数值为:
0.7处的近似函数值为:
0.85处的近似函数值为:
分析:
(1)通过完成拉格朗日插值法的编程实验,在对程序的修改中,我认为我最大的收获是我对C语言中数据类型具有了更为深刻的认识,进一步掌握了拉格朗日插值法。

(3)此次实验较好的完成了任务,巩固了课堂学习知识。

相关文档
最新文档