拉格朗日插值实验报告
拉格朗日插值法C语言的实现(实验报告)
3.程序流程:
(1)输入已知点的个数; (2)分别输入已知点的 X 坐标; (3)分别输入已知点的 Y 坐标; (4)通过调用函数 lagrange 函数,来求某点所对应的函数值。
拉格朗日插值多项式如下:
L n ( x j ) yk lk ( x j ) y j j 0,1, ……n
1、进一步熟悉拉格朗日插值法。 2、掌握编程语言字符处理程序的设计和调试技术。
【实验内容】 (题目)作出插值点(-2.00,0.00) , (2.00,5.00) , (5.00,6.00)的二次 Lagrange 插值多项式 L2 (x) ,并计算 L2 (-1.2), L2 (1.2)。 解题思路:
k 0 n
其中 lk ( x )
( x x0 )……(x-x k-1 )(x-x k+1 )……(x-xn ) ( xk x0 )……(xk -xk-1 )(xk -xk+1 )……(xk -xn )
k 0,1, …… ,n
程序流程图:
开始
↓
输入已知点个数 n
↓
输入已知点的 X 坐标以及输 入已知点的 Y 坐标
第 9 页 共 9 页
第 5 页 共 9 页
韩山师范学院
C 语言程序设计
printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); }
拉格朗日插值法实验心得
拉格朗日插值法实验心得嘿,朋友们!今天来和你们聊聊拉格朗日插值法实验心得。
你们知道吗,拉格朗日插值法就像是一把神奇的钥匙,能打开很多数据秘密的大门。
刚开始接触它的时候,我就觉得这玩意儿可真有意思啊!就好像是在一堆杂乱无章的数字中寻找某种规律,然后把它们串起来,变成一条漂亮的曲线。
做这个实验的时候啊,我就像是一个侦探,在数字的海洋里寻找线索。
每一个数据点都像是一个小提示,等着我去发现它背后的故事。
有时候会遇到一些很棘手的情况,那些数据就像调皮的小孩子,就是不乖乖听话,让我好一番折腾呢!我记得有一次,我怎么都算不对结果,急得我抓耳挠腮的。
我就想啊,这拉格朗日插值法怎么就这么难搞呢!但我这人吧,就是不服输,我就不信我搞不定它。
于是我又重新仔细地检查每一个步骤,嘿,还真让我发现了一个小错误。
你说这像不像我们在生活中遇到困难,只要不放弃,总能找到解决办法?还有啊,拉格朗日插值法让我明白了细节的重要性。
一个小数点的位置错了,那整个结果可能就全变了呀!这就好比是盖房子,一块砖没放好,可能整座房子就不牢固了。
这可真是容不得一点马虎呀!而且啊,做这个实验可不能心急。
你得慢慢地、一步一步地来,就像煲汤一样,得小火慢炖,才能熬出好味道。
要是着急忙慌的,那肯定是做不好的。
经过一次次的实验,我对拉格朗日插值法越来越熟悉,也越来越有心得。
它真的是让我又爱又恨啊!爱的是它能带给我探索的乐趣和成功的喜悦,恨的是有时候真的好难搞呀!但不管怎么说,我从中学到了好多东西呢。
我觉得啊,拉格朗日插值法就像是一个隐藏在数学世界里的宝藏,等待着我们去挖掘。
只要我们有耐心,有毅力,就一定能找到属于我们自己的宝藏。
这可不是随便说说的哦,是我亲身经历得出的结论呢!所以啊,大家也别害怕它,勇敢地去尝试吧,说不定你会发现一个全新的世界呢!原创不易,请尊重原创,谢谢!。
数值计算方法-拉格朗日牛顿插值实验
3.对比牛顿前插和牛顿后插两种方法的差异, 讨论分析同一个数值两种方法的计 算结果。 答:如果插值点 x 离 x0。比较近,则一般使用牛顿前差公式;如果插值点 x
离 x0。比较远,则一般使用牛顿后差公式。但对于同一个插值点 x 来说,不管 用牛顿前差公式还是用牛顿后差公式,得到的结果是一-样的,这两种插值公式 只是形式上的差别。 4.讨论分段插值法的意义。 答:高次插值的收敛性没有保证,实际计算稳定性也没有保证,所以当插值结 点 n 较大时, 通常不采用高次多项式插值, 用低次多项式插值, 它能保证收敛性, 得到的结果也相对稳定。
《计算方法》实验报告
实验二 插值法 实验目的
1. 掌握拉格朗日插值法、牛顿插值法、牛顿前后插值法及分段插值法的原理与算法。 2. 讨论几种方法的计算精度与误差,分析拉格朗日插值与牛顿插值法的差异。 3. 学会使用 Matlab 绘图方法,并以此方法来显示插值函数,使结果更直观更形象。
算法原理
(一)拉格朗日插值法 设 是互异插值节点,则满足插值条件 的插值多项式
是存在且唯一的。那么可以得到 n+1 个插值方程,求解 这个方程组,可以得到 n 次拉格朗日插值公式: ‴ , (二)牛顿插值法
其中:
(三)牛顿前后插值法 牛顿前插法为: th t t t t t t t t t t t t t t t t
牛顿后插法为: th
程序代码
拉格朗日插值 +
牛顿插值法运行脚本
牛顿向前插值法
牛顿向后插值法
牛顿向前插值作业
牛顿向后插值
数据测试结果
(1)选取 n=7,拉格朗日插值结果为:
(2)选取 n=7,牛顿插值法结果为:
(3) (4)X1=1.3,x2=5.6,牛顿向前向后插值法结果为:
数值分析实验报告
一、实验目的1. 理解数值分析的基本概念和常用算法;2. 掌握数值方法在求解实际问题中的应用;3. 培养编程能力,提高对数值分析软件的使用熟练度。
二、实验内容本次实验主要涉及以下内容:1. 拉格朗日插值法;2. 牛顿插值法;3. 线性方程组的求解方法;4. 方程求根的数值方法;5. 最小二乘法曲线拟合。
三、实验步骤1. 拉格朗日插值法(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。
(2)计算拉格朗日插值多项式L(x)。
(3)利用L(x)计算待求点x0的函数值y0。
2. 牛顿插值法(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。
(2)计算牛顿插值多项式N(x)。
(3)利用N(x)计算待求点x0的函数值y0。
3. 线性方程组的求解方法(1)输入数据:给定线性方程组的系数矩阵A和常数向量b。
(2)采用高斯消元法求解线性方程组Ax=b。
4. 方程求根的数值方法(1)输入数据:给定函数f(x)和初始值x0。
(2)采用二分法求解方程f(x)=0的根。
5. 最小二乘法曲线拟合(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。
(2)建立线性最小二乘模型y=F(x)。
(3)利用最小二乘法求解模型参数。
四、实验结果与分析1. 拉格朗日插值法与牛顿插值法的比较通过实验,我们发现牛顿插值法的精度高于拉格朗日插值法。
这是因为牛顿插值法在计算过程中考虑了前一项的导数信息,从而提高了插值多项式的平滑性。
2. 线性方程组的求解方法高斯消元法在求解线性方程组时,计算过程较为繁琐,但稳定性较好。
在实际应用中,可根据具体问题选择合适的方法。
3. 方程求根的数值方法二分法在求解方程时,收敛速度较慢,但具有较好的稳定性。
对于初始值的选择,应尽量接近真实根。
4. 最小二乘法曲线拟合最小二乘法在拟合曲线时,误差较小,适用于数据点较多的情况。
数值分析实验报告--实验2--插值法
1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。
(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。
1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。
1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。
Matlab 脚本文件为Experiment2_1_1fx.m 。
可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。
计算方法实验四拉格朗日插值实验报告
实验报告学院:电子信息工程实验课程:计算方法学生姓名:学号:专业班级:通信工程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篇)
第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)计算插值多项式在不同点的函数值,并与实际值进行比较。
插值实验实验报告
一、课题名称Malab 函数插值方法二、目的和意义1、学会拉格朗日插值、牛顿插值、亨密特插值方法,求函数的近似表达式,以解决其它实际问题;2、明确插值多项式和分段插值多项式各自的优缺点;3、熟悉插值方法的程序编制;4、如果绘出插值函数的曲线,观察其光滑性。
三、计算公式拉格朗日插值的公式)())(()()()()()()()2,1,0,;,0)(;,1)(()()()(1010110n n i ni i ni n n i i i i ni i i n x x x x x x x w x f x w x x x w x L j i i j x l i j x l x f x l x L ---='-==≠====+=++=∑∑ 其中或者其中牛顿差值公式[][][])())(()()(],,[)()()()()(,))((,,)(,)()(1011,010,010*******n n n n n n n n n x x x x x x x w x w x x x f x N x f x R x x x x x x f x x x x x x x f x x x x f x f x N ---==-=--++--+-+=++- 其中亨密特插值公式∑=++=ni i x i i x i x n m b f a H 0)()()(12][五、结构程序设计拉格朗日插值的程序function[c,l]=lagan1(x,y) x=input('x=:'); y=input('y=:'); w=length(x); n=w-1;l=zeros(w,w); for k=1:n+1 v=1;for j=1:n+1 if k~=jv=conv(v,poly(x(j)))/(x(k)-x(j)); endendl(k,:)=vEndc=y*l;牛顿插值的程序function[c,l]=lagan(x,y)x=input('x=:');y=input('y=:');n=length(x);d=zeros(n,n);d(:,1)=y';for j=2:nfor k=j:nd(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1)); endendc=d(n,n);for k=(n-1):-1:1c=conv(c,poly(x(k)));m=length(c);c(m)=c(m)+d(k,k);end六、结果讨论和分析拉格朗日插值运行的结果x=:[0.4 0.55 0.65 0.80 0.95 1.05]y=:[0.41075 0.57815 0.69675 0.9 1.00 1.25382]l =1.0e+003 *-0.1865 0.7459 -1.1776 0.9167 -0.3517 0.05320 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0 l =1.0e+003 *-0.1865 0.7459 -1.1776 0.9167 -0.3517 0.05321.3333 -5.1333 7.7300 -5.67122.0177 -0.27660 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0 l =1.0e+004 *-0.0186 0.0746 -0.1178 0.0917 -0.0352 0.00530.1333 -0.5133 0.7730 -0.5671 0.2018 -0.0277-0.2222 0.8333 -1.2172 0.8626 -0.2955 0.03900 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0 l =1.0e+004 *-0.0186 0.0746 -0.1178 0.0917 -0.0352 0.00530.1333 -0.5133 0.7730 -0.5671 0.2018 -0.0277-0.2222 0.8333 -1.2172 0.8626 -0.2955 0.03900.1778 -0.6400 0.8951 -0.6069 0.1994 -0.02540 0 0 0 0 00 0 0 0 0 0 l =1.0e+004 *-0.0186 0.0746 -0.1178 0.0917 -0.0352 0.00530.1333 -0.5133 0.7730 -0.5671 0.2018 -0.0277-0.2222 0.8333 -1.2172 0.8626 -0.2955 0.03900.1778 -0.6400 0.8951 -0.6069 0.1994 -0.0254-0.1010 0.3485 -0.4684 0.3067 -0.0978 0.01210 0 0 0 0 0 l =1.0e+004 *-0.0186 0.0746 -0.1178 0.0917 -0.0352 0.00530.1333 -0.5133 0.7730 -0.5671 0.2018 -0.0277-0.2222 0.8333 -1.2172 0.8626 -0.2955 0.03900.1778 -0.6400 0.8951 -0.6069 0.1994 -0.0254-0.1010 0.3485 -0.4684 0.3067 -0.0978 0.01210.0308 -0.1031 0.1353 -0.0869 0.0273 -0.0033 ans =121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845121.6264*0.596^5+(-422.7503)*0.596^4+572.5667*0.596^3+( -377.2549)*0.596^2+121.9718 *0.596-15.0845ans =0.6257121.6264*0.99^5+(-422.7503)*0.99^4+572.5667*0.99^3+( -377.2549)*0.99^2+121.9718 *0.99-15.0845ans =1.0542牛顿插值的运行结果x=:[0.4,0.55,0.65,0.80,0.95,1.05]y=:[0.41075,0.57815,0.69675,0.90,1.00,1.25382]ans =121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845121.6264*0.596^5+(-422.7503)*0.596^4+572.5667*0.596^3+( -377.2549)*0.596^2+121.9718 *0.596-15.0845ans =0.6257121.6264*0.99^5+(-422.7503)*0.99^4+572.5667*0.99^3+( -377.2549)*0.99^2+121.9718 *0.99-15.0845ans =1.0542多项式插值的主要目的是用一个多项式拟合离散点上的函数值,使得可以用该多项式估计数据点之间的函数值。
拉格朗日插值实验报告
引言概述:
拉格朗日插值是一种常用的数值分析方法,旨在通过已知的离散数据点来近似拟合出一个多项式函数,从而实现对未知数据点的预测和估计。
该方法在信号处理、图像处理、金融模型和机器学习等领域具有广泛的应用。
本实验报告将详细介绍拉格朗日插值的原理、算法和实验结果。
正文内容:
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)综合以上计算结果,可以对给定范围内的未知数据点进行插值计算,从而得到相应的函数值。
五、实验分析与结论在实际实验中,我们可以利用拉格朗日插值法对任意给定的函数进行逼近计算,从而得到函数在离散数据点之间的近似值。
拉格朗日插值法实验报告
拉格朗日插值法实验报告一、实验目的本实验旨在通过使用拉格朗日插值法,以给定的一些数据点为基础,来预测其他未给定数据点的函数值。
通过实验,掌握拉格朗日插值法的具体计算步骤和应用范围。
二、实验原理给定 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. 学会使用拉格朗日插值方法进行数据逼近;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四、实验结果与讨论通过利用拉格朗日插值法,我们得到了不同数据点集合的拟合多项式。
计算方法 实验报告 拉格朗日 龙贝格 龙格库塔
主界面:
/*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;
实验 3 拉格朗日插值法
姓名:龙斌学号:05102344 班级:地物10-2班实验 3 拉格朗日插值法【实验目的】1.掌握拉格朗日插值法并用程序语言进行实现。
2.对所编程序以例题试之,将所得值与准确值进行比较,进行误差分析。
【实验内容】编写拉格朗日插值法的计算程序,并以课本第四章第一节的例一进行验证,例题如下:已知 100 =10, 121 =11, 144 =12,分别用线性插值和抛物插值求 125 的近似值。
并进行误差分析。
【计算机求解】以 visual basic 语言编写程序计算。
【程序如下】:Private Sub Command1_Click()Dim x() As DoubleDim y() As DoubleDim l() As Doublen = Val(Text1.Text)a = Val(Text2.Text)Picture1.ClsPicture2.ClsReDim x(0 To n) As DoubleReDim y(0 To n) As DoubleReDim l(0 To n) As DoubleFor i = 0 To ntmp = "请输入 x(" & i & ")"x(i) = InputBox(tmp, "输入插值节点")Picture1.Print x(i);Next iPicture1.PrintPicture1.PrintFor i = 0 To nrmp = "请输入 y(" & i & ")"y(i) = InputBox(rmp, "输入插值节点对应的函数值")Picture1.Print y(i);Next iFor i = 0 To nl(i) = 1For j = 0 To nIf i <> j Thenl(i) = l(i) * (a - x(j)) / (x(i) - x(j))End IfNext jNext iFor i = 0 To nT = T + y(i) * l(i)Next iPicture2.Print TEnd SubPrivate Sub Command2_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text1.SetFocusPicture1.ClsEnd Sub【运行结果如下】:线性插值结果:抛物插值结果:有结果可看出1、对于线性插值, 125 的计算值为 11.19047619…,而其精确值为 11.1803398…,由此可得线性插值的相对误差约为 9.066e-42、对于抛物插值, 125 的计算值为 11.18106531…,而其精确值为 11.1803398…,由此可得线性插值的相对误差约为 6.489e-5可以发现线性插值与抛物插值的解均较为精确,相比而言,抛物插值比线性插值的结果精确。
拉格朗日插值
《拉格朗日插值》实验报告实验名称:拉格朗日插值 成绩:___________专业班级:数学与应用数学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.掌握用MATLAB计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析;2.掌握用MATLAB及梯形公式、辛普森公式计算数值积分;3.通过实例学习用插值和数值积分解决实际问题。
【实验内容】题1(3)选择一些函数,在n个节点上(n不要太大,如5~11)用拉格朗日、分段线性、三次样条三种插值的方法,计算m个插值点的函数值(m要适中,如50~100)。
通过数值和图形输出,将三种插值结果与精确值进行比较,适当增加n,再作比较,由此作初步分析。
下列函数供选择参考:(3)y=cos10x,-2≤x≤2解:当n=8,m=50时,在matlab中编程如下:x=-2:0.5:2;y=(cos(x)).^10;a=-2:4/50:2;yy=(cos(a)).^10;y1=lagr(x,y,a);y2=interp1(x,y,a);y3=interp1(x,y,a,'spline');[a;yy;y1;y2;y3]'数值输出如下:-2 0.00015576 0.00015576 0.00015576 0.00015576-1.92 2.1987e-005 -0.99289 0.00013084 0.0019267-1.84 1.771e-006 -1.2394 0.00010592 0.0027391-1.76 5.538e-008 -1.078 8.0997e-005 0.0027867-1.68 2.3645e-010 -0.74009 5.6075e-005 0.0022632-1.6 4.5057e-016 -0.37345 3.1153e-005 0.0013621-1.52 1.1388e-013 -0.063296 6.2305e-006 0.00027724-1.44 1.4242e-009 0.1509 0.00025442 -0.00079778-1.36 1.6085e-007 0.26129 0.00059364 -0.0016693-1.28 3.7541e-006 0.28038 0.00093287 -0.0021436-1.2 3.9028e-005 0.23209 0.0012721 -0.0020271-1.12 0.00024643 0.14495 0.0016113 -0.001126-1.04 0.0011051 0.047167 0.0019505 0.0007532-0.96 0.0038502 -0.03686 0.023626 0.0039155-0.88 0.011026 -0.088593 0.066638 0.011223-0.8 0.026946 -0.096401 0.10965 0.028094-0.72 0.057684 -0.055717 0.15266 0.06006-0.64 0.11022 0.031477 0.19567 0.11265 -0.56 0.19061 0.15766 0.23869 0.19139 -0.48 0.30145 0.3111 0.30011 0.30176 -0.4 0.43942 0.4774 0.41676 0.44195 -0.32 0.59394 0.64102 0.5334 0.59603 -0.24 0.74766 0.78685 0.65005 0.74643 -0.16 0.87937 0.90159 0.7667 0.8756 -0.08 0.96847 0.97483 0.88335 0.96597 0 1 1 1 1 0.08 0.96847 0.97483 0.88335 0.96597 0.16 0.87937 0.90159 0.7667 0.8756 0.24 0.74766 0.78685 0.65005 0.74643 0.32 0.59394 0.64102 0.5334 0.59603 0.4 0.43942 0.4774 0.41676 0.44195 0.48 0.30145 0.3111 0.30011 0.30176 0.56 0.19061 0.15766 0.23869 0.19139 0.64 0.11022 0.031477 0.19567 0.11265 0.72 0.057684 -0.055717 0.15266 0.06006 0.8 0.026946 -0.096401 0.10965 0.028094 0.88 0.011026 -0.088593 0.066638 0.0112230.96 0.0038502 -0.03686 0.023626 0.00391551.04 0.0011051 0.047167 0.0019505 0.0007532 1.12 0.00024643 0.14495 0.0016113 -0.001126 1.2 3.9028e-005 0.23209 0.0012721 -0.0020271 1.28 3.7541e-006 0.28038 0.00093287 -0.0021436 1.36 1.6085e-007 0.26129 0.00059364 -0.0016693 1.44 1.4242e-009 0.1509 0.00025442 -0.00079778 1.52 1.1388e-013 -0.063296 6.2305e-006 0.00027724 1.6 4.5057e-016 -0.37345 3.1153e-005 0.0013621 1.682.3645e-010 -0.74009 5.6075e-005 0.0022632 1.76 5.538e-008 -1.078 8.0997e-005 0.0027867 1.84 1.771e-006 -1.2394 0.00010592 0.00273911.922.1987e-005 -0.99289 0.00013084 0.00192672 0.00015576 0.00015576 0.00015576 0.00015576再观察图形:plot(a,yy,'k*',a,y1,'r',a,y2,'b',a,y3,'c')从图中可以看出,三次样条插值函数(青色)与原函数(黑色*)符合地最好,分段线性插值得到的函数(蓝色)符合的较差,而拉格朗日插值函数(红色)在小范围内符合的较好,但大范围内波动较大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 o ,x 1,…,x wb 上分别取 值
y o ,y 1,…,y n 。
目的是要在一个性质优良、便于计算的插值函数类 ①中,求一简单函数P(x), 满足插值条
件P(X i )=y i (i=0,1,…”n)而在其他点x I 上,作为f(x)近似值。
求插值函数P(x)的 方法称为插值法。
在本实验中,采用拉格朗日插值法。
①分段低次插值
当给定了 n+1个点X 0VXK …<x n 上的函数值y 0,y 1,…,y 后,若要计算x 处函数值f(x)的 近似值,可先选取两个节点X/与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,…中)任一点X k (0 w k w,n 作一 n 次多项式l k (x),使它在该点上的取值为
f(x) P(x)
y i 1
x x i
X i 1 X i
x X i 1
Y i — X i X i 1
f(x)
P 2(X )
i 1
i 1
y k
k i 1 j i 1
j k
X X j
X k X j
1,
在其余点x i (i=0,1, ---Ikk+I,…,上取值为零。
对应于每一节
点x k (k=0,1,…,n)都能写出 一个满足此条件的多项式,这样写出了 n+1个多项式l o (x),l i (x),…n (x),其中
l k (x )
A k (x
x °)( X Xj 卅(x X k 1)( X X ki )卅?(x x n
);
由条件l k (X k )
1可得
于是我们可以得出如下的拉格朗日n 次插值多项式(对于全区间上的插值,n 取函数表
的长度)
4程序代码及注释
1、分段线性插值
%分段线性插值
fun cti on y=piece_li near(x0,y0,x) %x0 , y0为已知点,x 为待求点 n=le ngth(x0);p=le ngth(y0);m=le ngth(x);
(X
X °) |(x
x k 1)( x
x
k 1
)
1 l (x X
n
)
(x
k
x 0
)
|( (X k
x
k 1
)( x
k
x
k 1
)
1 I (X k
X
n
)
n
y k
k 0
y 。
1")
ygx )卅 y 」n (x )
(X k
X o ) I (X k
X k 1)( X k
X n )
P n (X )
—►
i F
P — 0.5*(ir tr 1J1|
分段二次插值 —
甘
S-S+y c fkl fc p Tf~ <t+/
全区间拉格朗日插值
(2)流程图
分段线性插值
<农
I KI
/cfi-2 乂\
S-0
p-p%、區』in I i !
c<p+7 X
2、分段二次插值
%输出插值结果与所需节点
end
end
end
3、拉格朗日全区间插值
5算例分析
1、测试示例
>> x=[1 2 3 4];
>> y=[2 3 4];
>> y2=lagra nge(x,y,xO)
Error! Please in put aga in!
>> x=[1 2 3 4];
>> y=[2 3 4 5];
>> x0=[0.5 5.5];
>> y2=lagra nge(x,y,x0)
Error!x(1) is out of ran ge!
>> x=[1 2 3 4];
>> y=[2 3 4 5];
>> x0=[1.5 5.5];
>> y2=lagra nge(x,y,x0) y(1)=2.50000
Error!x(2) is out of ran ge!
y2 =
2.500000000000000
2、首先输入函数变及待求点
注:保证在matlab工作目录中有三个.m文件
3、分段线性插值
y0=piece_li near(x,y,x0)
y(1)=0.394039
x1=0.100 y1=0.39695,x2=0.195 y2=0.39142
y(2)=0.380067
x1=0.300 y1=0.38138,x2=0.401 y2=0.36812
y(3)=0.356927
x1=0.401 y1=0.36812,x2=0.500 y2=0.35206 y0 =
0.394039473684211 0.380067128712871 0.356926666666667 4、分段二次插值
>> y仁piece_square(x,y,xO) y(1)=0.394460
x仁0.100 y仁0.39695 x2=0.195 y2=0.39142 x3=0.300 y3=0.38138
y(2)=0.380225
x仁0.195 y仁0.39142 x2=0.300 y2=0.38138 x3=0.401 y3=0.36812
y(3)=0.357247
x仁0.300 y仁0.38138 x2=0.401 y2=0.36812 x3=0.500 y3=0.35206 y1 =
0.394460319548872 0.380224691595373 0.357246844884488 5、全区间拉格朗日插值
6讨论与结论
1
2、程序优化
由分段线性插值和分段二次插值的原理,x取值在函数表围时,插值结果有意义,而当x
取值在函数表围以外,利用分段线性插值公式仍可以进行运算并得到一个值,但其结果不准确;分段二次插值则无法找到三个合适的点以求插值,不予以输出结果;若输入的函数表x 与y的长度不相等,则无法插值。
所以加入以下判断以提高插值的准确性
3、作图比较
上图为三种方法的插值曲线,其中x取0到0.5,步长为0.001,由图可得,三种曲线非常接近,这说明我们用拉格朗日插值计算所给点函数值的近似值时,引起的误差还是比较小的。
参考文献
[1] 易大义,云宝,有法•计算方法(第2版),大学.p.29-53.
[2] 琨高思超毕靖编著MATLAB2010从入门到精通电子工业。