实验一拉格朗日插值Matlab实验报告
- 格式:docx
- 大小:39.05 KB
- 文档页数:2
09信息郭凯 39号拉格朗日插值实验报告#include<stdio.h>int main(){int i,n,j;float a[50],b[50],x,l,y;printf("enter n:");scanf("%d",&n);for(i=0;i<=n;i++){printf("x[%d] y[%d]:",i,i);scanf("%f%f",&a[i],&b[i]);}printf("enter x:");scanf("%f",&x);y=0;for(i=0;i<=n;i++){l=1;for(j=0;j<=n;j++){if(j!=i)l=l*(x-a[j])/(a[i]-a[j]);}y=y+l*b[i];}printf("y=%f\n",y);return 0;}例:给出函数f(x)=sinx的3组对应的函数值如下表:利用线性插值及抛物插值计算sin0.3367的值并估计截断误差。
解:(1.1)利用以上程序,由于是利用线性插值,则首先输入n的值为1,由于0.3367介于0.32与0.34之间,故依次输入2对x与相对应的f(x)的值,再输入x的值即0.3367,即可得如下测试结果:即计算所得的sin0.3367的值为0.330365误差分析:余项R1(x)=f(x)-L1(x)=f(2)(q)(x-x0)(x-x1) /2!|R2(x)|≦M2|(0.3367-0.32)(0.3367-0.34) |/2,其中 M2=max0.32≦x≦0.34| f(2)(x)|=sin0.34<0.3335于是|R2(0.3367)|=|sin0.3367- L1(0.3367)|≦0.3335*0.0167*0.033/2<0.92*10-5(1.2)由于题目中给出了3个x的值,故可选用比0.3367大的两个x的值来计算,测试结果如下:误差分析同上类似,计算得|R2(0.3367)|<0.1266*10-4(2)利用以上程序,由于是利用抛物插值,则首先输入n的值为2,然后依次输入3对x 与相对应的f(x)的值,再输入x的值即0.3367,即可得如下测试结果:即计算所得的sin0.3367的值为0.330374误差分析:余项R2(x)=f(x)-L2(x)=f(3)(q)(x-x0)(x-x1)(x-x2)/3!| R2(x)|≦M3|(0.3367-0.32)(0.3367-0.34)(0.3367-0.36)|/6,其中M3=max0.32≦x≦0.36| f(3)(x)|=cos0.32<0.9493,于是| R2(0.3367)|=|sin0.3367- L2(0.3367)|≦0.9493*0.0167*0.033*0.0233/6<2.0132*10-6实验心得:由上述例子可以看出,(1.1)与(1.2)比较时,(1.1)的结果优于(1.2),即一般情况下,内插优于外推。
湖南大学电气与信息工程学院 《数值计算》课程 上机实验报告姓名: 班级: 学号: 日期:指导老师:本次实验题号:第 3 次实验1) 实验目的:1) 用MATLAB 实现拉格朗日插值和分段线性插值。
2) 了解matlab 实现曲线拟合方法的实际应用。
二. 实验内容:1) 插值算法的应用:题目:用拉格朗日插值程序,分段线形插值函数分别研究f (X )的数据表,计算f(0.472) X 0.46 0.47 0.48 0.49 Y0.48465550.49375420.50274980.51166832) 曲线拟合方法的实际应用用电压V=10V 的电池给电容器充电,电容器上t 时刻的电压v(t)=V-(V-V0)e^(-t/T),其中V0是电容器的初始电压,T 是充电常数。
实验测量了一组数据如下,请根据数据表确定V0和T 的大小。
t 0.5 1 2 3 4 5 7 9 V(t) 6.366.487.268.228.668.999.439.63三. 算法介绍或方法基础1.1 拉格朗日插值法对于已给定的点 00(,),...,(,)k k x y x y 和待估计的点的横坐标x ,如上述理论,将其值代入1100,011()()()()():......()()()()kj j i k j i i j j i j j j j j j kx x x x x x x x x x l x x x x x x x x x x x -+=≠-+-----==-----∏计算出插值基函数的值,然后根据公式:():()ki i j L x y l x ==∑计算出纵坐标的估计值,由此完成对该点的插值过程,其中k 为该点插值的阶数。
1.2 线性分段插值利用已给定的点 00(,),...,(,)k k x y x y 对插值区间分为1k -段,将每段的端点(,)i i x y 与 11(,)i i x y ++作为数据点利用公式100010()()()()()f x f x p x f x x x x x -=+--在所构成的区间进行线性插值。
佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 插值法与数据拟合 专业班级 机械工程 姓 名 余红杰 学 号 10 指导教师 陈剑 成 绩 日 期 月 日一、实验目的1、学会Lagrange 插值、牛顿插值和三次样条插值等基本插值方法;2、讨论插值的Runge 现象3、学会Matlab 提供的插值函数的使用方法,会用这些函数解决实际问题。
二、实验原理1、拉格朗日插值多项式2、牛顿插值多项式3、三次样条插值 三、实验步骤1、用MATLAB 编写独立的拉格朗日插值多项式函数2、用MATLAB 编写独立的牛顿插值多项式函数3、用MATLAB 编写独立的三次样条函数(边界条件为第一、二种情形)4、已知函数在下列各点的值为:根据步骤1,2,3编好的程序,试分别用4次拉格朗日多项式4()L x 、牛顿插值多项式4()P x 以及三次样条函数()S x (自然边界条件)对数据进行插值,并用图给出 {(,),0.20.08,0,1,2,,10i i i x y x i i =+=},4()L x 、4()P x 和()S x 。
5、在区间[-1,1]上分别取10,20n =用两组等距节点对龙格函数21(),(11)125f x x x=-≤≤+作多项式插值,对不同n 值,分别画出插值函数及()f x 的图形。
6、下列数据点的插值可以得到平方根函数的近似,在区间[0,64]上作图。
(1)用这9个点作8次多项式插值8()L x 。
(2)用三次样条(第一边界条件)程序求()S x 。
7、对于给函数21()125f x x =+在区间[-1,1]上取10.2(0,1,,10)i x i i =-+=,试求3次曲线拟合,试画出拟合曲线并打印出方程,与第5题的结果比较。
四、实验过程与结果:1、Lagrange 插值多项式源代码:function ya=lag(x,y,xa) %x 所有已知插值点 %y 插值点对应函数值 %xa 所求点,自变量 %ya 所求点插值估计量 ya=0; mu=1; %初始化%循环方式求L 系数,并求和: for i = 1:length(y) for j = 1:length(x) if i ~= jmu = mu * (xa - x(j) ) / ( x(i) - x(j) ); else continue end endya = ya + y(i) * mu ; mu = 1; end2、Newton 源代码:function ya = newton(x,y,xa) %x 所有已知插值点 %y 插值点对应函数值 %xa 所求点,自变量 %ya 所求点插值估计量 %建立系数零矩阵D 及初始化:D = zeros(length(x)-1);ya = y(1);xi = 1;%求出矩阵D,该矩阵第一行为牛顿插值多项式系数:for i=1:(length(x)-1)D(i,1) = (y(i+1) -y(i))/(x(i+1) -x(i));endfor j=2:(length(x)-1)for i=1:(length(x)-j)D(i,j) = (D(i+1,j-1) - D(i,j-1)) / (x(i+j) - x(i)); endend%xi为单个多项式(x-x(1))(x-x(2))...的值for i=1:(length(x)-1)for j=1:ixi = xi*(xa - x(j));endya = ya + D(1,i)*xi;xi = 1;end3、三次样条插值多项式(1)(第一边界条件)源代码:function y=yt1(x0,y0,f_0,f_n,x) _____________(1)%第一类边界条件下三次样条插值;%xi 所求点;%yi 所求点函数值;%x 已知插值点;%y 已知插值点函数值;%f_0左端点一次导数值;%f_n右端点一次导数值;n = length(x0);z = length(y0);h = zeros(n-1,1);k=zeros(n-2,1);l=zeros(n-2,1);S=2*eye(n);for i=1:n-1h(i)= x0(i+1)-x0(i);endfor i=1:n-2k(i)= h(i+1)/(h(i+1)+h(i));l(i)= 1-k(i);end%对于第一种边界条件:k = [1;k]; _______________________(2)l = [l;1]; _______________________(3)%构建系数矩阵S:for i = 1:n-1S(i,i+1) = k(i);S(i+1,i) = l(i);end%建立均差表:F=zeros(n-1,2);for i = 1:n-1F(i,1) = (y0(i+1)-y0(i))/(x0(i+1)-x0(i));endD = zeros(n-2,1);for i = 1:n-2F(i,2) = (F(i+1,1)-F(i,1))/(x0(i+2)-x0(i));D(i,1) = 6 * F(i,2);end%构建函数D:d0 = 6*(F(1,2)-f_0)/h(1); ___________(4)dn = 6*(f_n-F(n-1,2))/h(n-1); ___________(5)D = [d0;D;dn]; ______________(6)m= S\D;%寻找x所在位置,并求出对应插值:for i = 1:length(x)for j = 1:n-1if (x(i)<=x0(j+1))&(x(i)>=x0(j))y(i) =( m(j)*(x0(j+1)-x(i))^3)/(6*h(j))+...(m(j+1)*(x(i)-x0(j))^3)/(6*h(j))+...(y0(j)-(m(j)*h(j)^2)/6)*(x0(j+1)-x(i))/h(j)+... (y0(j+1)-(m(j+1)*h(j)^2)/6)*(x(i)-x0(j))/h(j) ; break;else continue;endendend(2)(自然边界条件)源代码:仅仅需要对上面部分标注的位置做如下修改:__(1):function y=yt2(x0,y0,x)__(2):k=[0;k]__(3):l=[l;0]__(4)+(5):删除—(6):D=[0:D:0]4、——————————————PS:另建了一个f方程文件,后面有一题也有用到。
数值计算实践数值实验报告院(系、部):数理系姓名:夏赞勋081628学号:班级:科082指导教师: 徐红敏2011年01月14日北京科082 夏赞勋(081628) 北京石油化工学院数理系拉格朗日插值法拉格朗日插值法基本原理:通过平面上不同两点可以确定一条直线,这就是拉格朗日线性插值问题,对于不在同一条直线的三个点得到的插值多项式则为抛物线。
拉格朗日插值的基多项式(即基函数)为:n i x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=有了基函数以后就可以直接构造如下多项式:∑==ni i i n x l x f p 0)()(该多项式就是拉格朗日插值法所求得的插值多项式.拉格朗日插值法算法:1、根据所给点),(i i y x 的坐标依次写出其差值基函数(用for 循环可以轻易解决)n i x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=2、将差值基函数与其对应的点的函数值相乘得:n i x l x f i i ,,2,1,0),()( =3、将2中各项累加即得差值多项式:∑==ni i i n x l x f p 0)()(拉格朗日插值法程序:fu nct ion lag range (A)%A为一个只有两行的矩阵,第一行为插值点,第二行为插值点对应的函数值[m,n]=siz e(A); f=1;p=0;%两个用到的变量syms xfor i=1:nf=(x—A(1,i))*f;endfor j=1:ng(j)=f/(x-A(1,j));%求插值基函数的分母h(j)=subs(g(j),x,A(1,j));%求插值基函数的分子s(j)=g(j)/h(j)*A(2,j);%插值基函数endfor k=1:ns(j)=collect(s(j));%合并同类项endfor i=1:np=p+s(i);endfprintf(’拉格朗日插值法可得多项式:')collect(p)%可用lagrange([13 6 8;4 6 9 12])调试例:有如下表格中有四个插值点及其对应的函数值,用lagrange插值法写出其三次插值多项式:解:在matlab命令窗口输入:lagrange([1 3 6 8;4 6 9 12])可得运行结果:拉格朗日插值法可得多项式:ans =x^3/70 - x^2/7 + (97*x)/70 + 96/35ﻬ牛顿插值法牛顿插值法基本原理:拉格朗日插值多项式的理论在许多方面都有应用,是很不错的一种方法,但就插值问题而言,如果增加一个插值点,原先计算插值的多项式就没有用了,即拉格朗日插值法的继承性很差,牛顿插值法就很好地解决了这个问题,具有很好的继承性。
学生学号27 实验课成绩
学生实验报告书
实验课程名称数值分析A
开课学院理学院
指导教师姓名金升平教授
学生姓名陶玮
学生专业班级统计1401
2015-- 2016学年第 2 学期
实验课程名称:__数值分析______
实验项目名称拉格朗日插值公式实验成绩
实验者陶玮专业班级统计1401 组别
同组者实验日期年月日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)
实验目的:
1、学习和掌握拉格朗日插值多项式。
2、运用拉格朗日插值多项式进行计算。
实验基本原理:
拉格朗日插值基函数的一般形式:
也即是:
所以可以得出拉格朗日插值公式的一般形式:
其中,n=1时,称为线性插值,
n=2时,称为二次插值或抛物插值,精确度相对高些,
主要仪器设备:。
插值运算实验报告通过实验掌握插值运算的原理和方法,并利用插值运算技术对离散数据进行插值和逼近。
实验设备:计算机、Matlab软件实验原理:插值是利用已知数据点之间的关系,使用某种函数表达式来逼近未知点的值。
插值方法可以分为多种,如拉格朗日插值、牛顿插值等。
本次实验主要涉及的是拉格朗日插值和牛顿插值。
实验步骤:1. 采集实验数据,得到需要进行插值运算的离散数据。
2. 根据所给的离散数据,选择合适的插值方法,如拉格朗日插值或牛顿插值。
3. 利用Matlab软件进行编程,实现所选择的插值方法。
4. 运行程序,得到插值结果。
5. 根据插值结果,可以确定对未知数据点的函数值,也可以进行曲线拟合和逼近。
实验结果:经过对实验数据的处理和插值运算,得到了以下结果:1. 插值函数的形式,可以通过该函数计算未知数据点的函数值。
2. 插值曲线的图像,可以通过该曲线来拟合和逼近实验数据。
实验分析:通过实验结果的分析,可以得出以下结论:1. 插值方法的选择对结果有重要影响,不同的插值方法适用于不同的数据类型。
2. 插值运算可以有效地处理离散数据,得到连续函数的逼近值。
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)计算插值多项式在不同点的函数值,并与实际值进行比较。
实验一拉格朗日插值M精
编b实验报告
The following text is amended on 12 November 2020.
北京理工大学珠海学院实验报告ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY
班级2012电气2班学号xxxxxxxxx姓名陈冲指导教师张凯成绩
实验题目(实验一)拉格朗日插值实验地点及时间JD501 2013/12/26(6-7节)
一、实验目的
1.掌握用程序语言来编辑函数。
2.学会用MATLAB编写函数。
二、实验环境
Matlab软件
三、实验内容
1、以书中第55页题目13为例编辑程序来实现计算结果。
2、使用MATLAB进行编写:
第一步:编写函数,代码如下
第二步:利用这个函数来编辑命令:(可见实验结果中的截图)
x=[,,];
y=[sin,sin,sin];
x0=;
yt=Lagrange(x,y,x0)
得出抛物线插值为:
以及
x=[,];
y=[sin,sin];
x0=;
yt=Lagrange(x,y,x0)
得出线性插值为:
五、实验结果。
六、总结
通过这次实验我学会用MATLAB软件编辑口令进行计算,实验结果是正确的,我相信在以后的实验中,我可以做好每一步,练习好每一次的上机。
实验难度不是很大,主要要注意标点符号的正确性。
………。
拉格朗日插值实验报告一、实验目的本实验旨在通过实际实验,深入理解拉格朗日插值法的原理和应用,掌握其计算过程和相关技巧。
二、实验原理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)综合以上计算结果,可以对给定范围内的未知数据点进行插值计算,从而得到相应的函数值。
五、实验分析与结论在实际实验中,我们可以利用拉格朗日插值法对任意给定的函数进行逼近计算,从而得到函数在离散数据点之间的近似值。
北京理工大学珠海学院实验报告
ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY
班级2012电气2班学号xxxxxxxxx姓名陈冲指导教师张凯成绩
实验题目(实验一)拉格朗日插值实验地点及时间JD501 2013/12/26(6-7节)
一、实验目的
1.掌握用程序语言来编辑函数。
2.学会用MATLAB编写函数。
二、实验环境
Matlab软件
三、实验内容
1、以书中第55页题目13为例编辑程序来实现计算结果。
2、使用MATLAB进行编写:
第一步:编写函数,代码如下
第二步:利用这个函数来编辑命令:(可见实验结果中的截图)
x=[,,];
y=[sin,sin,sin];
x0=;
yt=Lagrange(x,y,x0)
得出抛物线插值为:
以及
x=[,];
y=[sin,sin];
x0=;
yt=Lagrange(x,y,x0)
得出线性插值为:
的近似值并估计误差。
五、实验结果。
六、总结
通过这次实验我学会用MATLAB软件编辑口令进行计算,实验结果是正确的,我相信在以后的实验中,我可以做好每一步,练习好每一次的上机。
实验难度不是很大,主要要注意标点符号的正确性。
………。