拉格朗日插值实验报告

合集下载

数值计算方法拉格朗日牛顿插值实验

数值计算方法拉格朗日牛顿插值实验
《计算方法》实验报告
实验二 插值法
实验目的
1. 掌握拉格朗日插值法、牛顿插值法、牛顿前后插值法及分段插值法的原理与算法。 2. 讨论几种方法的计算精度与误差,分析拉格朗日插值与牛顿插值法的差异。 3. 学会使用 Matlab 绘图方法,并以此方法来显示插值函数,使结果更直观更形象。
算法原理
(一)拉格朗日插值法
牛顿向前插值法 牛顿向后插值法
牛顿向前插值作业
牛顿向后插值
数据测试结果
(1)选取 n=7,拉格朗日插值结果为:
(2)选取 n=7,牛顿插值法结果为:
(3) (4)X1=1.3,x2=5.6,牛顿向前向后插值法结果为:
(一)分析讨论
1.总结 Matlab 编程的基本特点,特别是需要注意的地方。 答:能直接对矩阵进行操作,能实现简单的矩阵的乘除,方便进行数值计算。注 意的地方就是矩阵进行点乘、点除时行数列数要一样。
2.对比拉格朗日插值法和牛顿插值法的差异,特别是在计算量上的差异。 答:拉格朗日插值法与牛顿插值法都是二种常用的简便的插值法。但牛顿法
插值法则更为简便,可以节省乘、除法运算次数。拉格朗日插值法计算过程没有 继承性,每增加一个节点,整个计算过程要重新进行,牛顿插值法避免了这个问 题,减少了计算的步数。
3.对比牛顿前插和牛顿后插两种方法的差异,讨论分析同一个数值两种方法的计 算结果。
答:如果插值点 x 离 x0。比较近,则一般使用牛顿前差公式;如果插值点 x
离 x0。比较远,则一般使用牛顿后差公式。但对于同一个插值点 x 来说,不管 用牛顿前差公式还是用牛顿后差公式,得到的结果是一-样的,这两种插值公式 只是形式上的差别。 4.讨论分段插值法的意义。
答:高次插值的收敛性没有保证,实际计算稳定性也没有保证,所以当插值结 点 n 较大时,通常不采用高次多项式插值,用低次多项式插值,它能保证收敛性, 得到的结果也相对稳定。

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

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

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

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

3 实验原理拉格朗日插值多项式:4 程序设计 (1)流程图拉格朗日插值程序流程图∑===ni 0i ii )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 5double 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篇)

插值数值实验报告(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)是一次式。

拉格朗日牛顿插值法实验报告

拉格朗日牛顿插值法实验报告

拉格朗日牛顿插值法实验报告-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN标题:实验一拉格朗日插值法算法与牛顿插值算法一、实验目的:1.体会并了解拉格朗日插值法,用计算机插入x值,输出相应的y值。

2.体会并了解牛顿插值法,用计算机插入x值,输出相应的y值。

二、实验原理:1.拉格朗日插值法的插值公式:L n(x)=∑y knk=0(x−x0)(x−x1)?(x−x n)(x−x k)(x k−x0)?(x k−x k−1)(x k−x k+1)?(x k−x n)2.牛顿插值法的插值公式:P n(x)=f(x0)+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)+?+f[x0,x1,?,x n](x−x0)?(x−x n−1)f[x0,x1,?,x k]=∑f(x j)(x j−x0)?(x j−x j−1)(x j−x j+1)?(x j−x k)kj=0三、算法设计与程序流程图:1.拉格朗日插值法算法分析:a.输入节点的个数j。

b.输入节点的横纵坐标。

c.输入新插入的节点的横坐标。

d.通过两次循环求得新插入节点的纵坐标。

程序流程图:2.牛顿插值算法分析:a.输入节点的个数j。

b.输入节点的横纵坐标。

c.输入新插入的节点的横坐标。

d.通过两次循环求得新插入节点的纵坐标。

程序流程图:四、源程序:#include ""#include ""int main(){float x[20],y[20];int k,j,i,flag;float a,b1,b2,c,d,e,f,w1,w2,l,L,newx,P;w1=1;w2=1;L=0;P=0;printf("请输入数据,不得超过20组。

\n");printf("输入的数据为几组:");scanf("%d",&j);for(i=0;i<=j-1;i++){printf("第%d组为:\n",i+1);printf("x=");scanf("%f",&x[i]);printf("y=");scanf("%f",&y[i]);}printf("请选择:1,拉格朗日插值。

拉格朗日插值实验报告

拉格朗日插值实验报告

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

二、实验原理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)综合以上计算结果,可以对给定范围内的未知数据点进行插值计算,从而得到相应的函数值。

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

数值分析实验报告拉格朗日插值法和牛顿插值法

数值分析实验报告拉格朗日插值法和牛顿插值法

实验一报告拉格朗日插值法一、实验目的1、学习和掌握拉格朗日插值多项式2、运用拉格朗日插值多项式进行计算二、实验原理根据x0,x1,…xn;y0,y1,…yn构造插值多项式其表达式为:将插值点x代入上式,就可得到函数f(x)在点x处的函数值的近似值。

三、运行结果四、代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{class Program{static double lglr(double[] x, double[] y, double x1, int n) {double result = 0.0;for (int i = 0; i <n; i++){double temp = y[i];for (int j = 0; j < n; j++){if (j == i)continue;temp = temp * (x1 - x[j]);temp = temp / (x[i] - x[j]);}result = result + temp;}return result;}static void Main(string[] args){double[] x;double[] y;Console.WriteLine("请输入插值点数:");int length = Convert.ToInt32(Console.ReadLine());x = new double[length];y = new double[length];for (int i = 0; i < length; i++){Console.Write("请输入第{0}个点的x值:", i + 1);x[i] = Convert.ToDouble(Console.ReadLine());Console.Write("请输入第{0}个点的y值:", i + 1);y[i] = Convert.ToDouble(Console.ReadLine());}Console.WriteLine("请输入x1值:");double x1 = Convert.ToDouble(Console.ReadLine());double result=lglr(x,y,x1,length);Console.Write("插值计算结果为:{0}:", result);Console.ReadLine();}牛顿插值法一、实验目的体会并了解牛顿插值法,用计算机插入x值,输出相应的y值。

拉格朗日插值法实验报告

拉格朗日插值法实验报告

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

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

二、实验原理给定 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我们可以将预测值与实际值进行比较,确认预测的准确性。

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

实验一 拉格朗日插值Matlab实验报告

实验一 拉格朗日插值Matlab实验报告

北京理工大学珠海学院实验报告
ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY
班级2012电气2班学号xxxxxxxxx姓名陈冲指导教师张凯成绩
实验题目(实验一)拉格朗日插值实验地点及时间JD501 2013/12/26(6-7节)
一、实验目的
1.掌握用程序语言来编辑函数。

2.学会用MATLAB编写Lagrange.m函数。

二、实验环境
Matlab软件
三、实验内容
1、以书中第55页题目13为例编辑程序来实现计算结果。

2、使用MATLAB进行编写:
第一步:编写Lagrange.m函数,代码如下
第二步:利用这个函数来编辑命令:(可见实验结果中的截图)
x=[0.32,0.34,0.36];
y=[sin(0.32),sin(0.34),sin(0.36)];
x0=0.3367;
yt=Lagrange(x,y,x0)
得出抛物线插值为:0.3304
以及
x=[0.32,0.34];
y=[sin(0.32),sin(0.34)];
x0=0.3367;
yt=Lagrange(x,y,x0)
得出线性插值为:0.3304
的近似值并估计误差。

五、实验结果。

六、总结
通过这次实验我学会用MATLAB软件编辑口令进行计算,实验结果是正确的,我相信在以后的实验中,我可以做好每一步,练习好每一次的上机。

实验难度不是很大,主要要注意标点符号的正确性。

………。

拉格朗日插值 实验报告

拉格朗日插值 实验报告

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

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

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

实验目的: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);}五、实验结果截图:六、上机体会:。

拉格朗日实验报告

拉格朗日实验报告

实验报告课程:数值计算方法与计算班级:实验名称:拉格朗日插值实验姓名实验日期: 2011.09.23 学号实验报告日期: 2011.09.23实验一拉格朗日插值实验一、实验目的1.学习编程拉格朗日插值公式2.运用编程进行计算插值函数二、实验设备及实验环境在机房用WIN-TC程序进行编程。

三、实验原理应用拉格朗日插值公式四、程序源代码#include "stdio.h"main(int argc,char*argv[]){ int i,j,n;float x[10],y[10],lang=0.0,u;printf("input number n=:\n");scanf("%d",&n);printf("input x[i]");for(i=0;i<n;i++)scanf("%f",&x[i]);printf("input y[i]");for(i=0;i<n;i++)scanf("%f",&y[i]);printf("input u");scanf("%f",&u);for(i=0;i<n;i++){float tmp=1.0;for(j=0;j<n;j++)if(i!=j)tmp=tmp*(u-x[j])/(x[i]-x[j]);lang=lang+tmp*y[i];}printf("lagrange=%f",lang);getch();}五、实验结果对一组数据(-2.00,17)(0.00,1.0)(1.00,2.00)(2.00,17.00)进行实验得到拉格朗日插值公式结果如下:六、实验心得体会虽然考了二级,但太久没碰程序,今天开始时还真无从下手,有点混乱,在写程序过程中,因为粗心打错符号,重复符号,导致程序出错,经过细心观察,检查出错误,成功完成程序,好开心呀。

拉格朗日插值

拉格朗日插值

《拉格朗日插值》实验报告实验名称:拉格朗日插值 成绩:___________专业班级:数学与应用数学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.分析拟合效果,判断拉格朗日插值的适用性。

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

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

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

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

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

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

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

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

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

拉格朗日插值实验报告

拉格朗日插值实验报告
2012 年9月14日
课名:数值分析
题目:拉格朗日插值
班级:
姓名:
学号:
专业:
任课教师:
实验程序:
#include""
#define N 100
void main()
{
int n,j,i,I,k;
float x[N],y[N],a,Y=,t;
printf("please input n\n");
scanf("%d",&n);
实 验 一:拉格朗日插值
实验目的:
1.熟悉拉格朗日插值方法的程序设计;
2.学会拉格朗日插值方法求函数值的近似值, 以解决其它科学实验的计算问题。
实验内容:
已知函数值表
试分别建立二次插值多项式和三次插值多项式,计算 的近似值。
实验要求:屏幕显示 的近似值。
附件:拉格朗日插值算法框图
实 验 报 告 (一)
scanf("%f",&a);
for(j=0;j<=n;j++)
{
I=j;
for(k=I;k<I+n+1;k++)
{
for(j=I,t=;j<I+n+1;j++)
{
if(j!=k)
t*=(a-x[j])/(x[k]-x[j]);
}
Y+=y[k]*t;
}
if(k!=n)
{
printf("%f",Y);
printf("please input x\n");
for(i=0;i<n+1;i++)

拉格朗日插值实验报告

拉格朗日插值实验报告

实验名称: 实验一 拉格朗日插值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)。

实验名称: 实验一 拉格朗日插值
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 ]上作线性插值,即得
1
1
11
1)()(------+--=≈i i i i i i i i x x x x y x x x x y x P x f
这种分段低次插值叫分段线性插值,又称折线插值。

类似地,我们可以选取距离x 最近的三个节点x i-1,x i 与x i+1,然后进行二次插值,即得
∑∏+-=+≠-
=⎥⎥⎥⎦

⎢⎢⎢⎣

⎪⎪⎭⎫
⎝⎛
--=≈1
1
112)()(i i k i k j i j j k j k x x x x y x P x f 这种分段低次插值叫分段二次插值,又称分段抛物线插值。

②全区间上拉格朗日插值
对节点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 0(x),l 1(x),…,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 =可得
0111
()
()()
()
k k k k k k k n A x x x x x x x x -+=
----
于是我们可以得出如下的拉格朗日n 次插值多项式(对于全区间上的插值,n 取函数表的长度)
00110110
011()()()()
()()()()()()()()n n n n
k k n k
k k k k k k k n P x y l x y l x y l x x x x x x x x x y x x x x x x x x -+=-+=++
----=
----∑
(2)流程图
分段线性插值
分段二次插值 全区间拉格朗日插值
4 程序代码及注释
%分段线性插值
function y=piece_linear(x0,y0,x) % x0,y0为已知点,x 为待求点
n=length(x0);p=length(y0);m=length(x);
5算例分析1、测试示例
3、分段线性插值
4、分段二次插值
5、全区间拉格朗日插值
6讨论与结论
1
2、程序优化
由分段线性插值和分段二次插值的原理,x取值在函数表范围内时,插值结果有意义,而
当x取值在函数表范围以外,利用分段线性插值公式仍可以进行运算并得到一个值,但其结果不准确;分段二次插值则无法找到三个合适的点以求插值,不予以输出结果;若输入的函数表x与y的长度不相等,则无法插值。

所以加入以下判断以提高插值的准确性
n=length(x0);p=length(y0);m=length(x);
if n~=p
fprintf('Error! Please input again!\n');
if z<x0(1)|z>x0(n)
fprintf('Error!x(%d) is out of range!\n',i);
break;
end
3、作图比较
上图为三种方法的插值曲线,其中x取0到0.5,步长为0.001,由图可得,三种曲线非常接近,这说明我们用拉格朗日插值计算所给点函数值的近似值时,引起的误差还是比较小的。

参考文献
[1] 易大义,沈云宝,李有法. 计算方法(第2版),浙江大学出版社. p.29-53.
[2] 张琨高思超毕靖编著MA TLAB2010从入门到精通电子工业出版社。

相关文档
最新文档