实验一拉格朗日插值Matlab实验报告
拉格朗日实验报告
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),即一般情况下,内插优于外推。
matlab插值与曲线拟合实验报告
湖南大学电气与信息工程学院 《数值计算》课程 上机实验报告姓名: 班级: 学号: 日期:指导老师:本次实验题号:第 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 -=+--在所构成的区间进行线性插值。
MATLAB数值实验一(数据的插值运算及其应用完整版)
佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 插值法与数据拟合 专业班级 机械工程 姓 名 余红杰 学 号 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方程文件,后面有一题也有用到。
数值分析实践报告-matlab
数值计算实践数值实验报告院(系、部):数理系姓名:夏赞勋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. 插值运算的精度也会受到数据点分布和插值方法的影响。
实验总结:通过本次实验,我对插值运算的原理和方法有了更深入的了解。
插值运算是一种常用的数值计算方法,可以在一定程度上解决离散数据的处理问题。
插值运算不仅可以用于求解未知数据点的函数值,还可以用于曲线拟合和逼近。
不同的插值方法适用于不同类型的数据,需要根据实际情况进行选择。
插值运算的精度也会受到数据点分布和插值方法的影响,需要注意选择合适的插值方法以及优化离散数据的分布。
lagrange插值法上机实践报告
五、计算结果的分析
三次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个节点,则拉格朗日插值的表达式表示为:
插值数值实验报告(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实验报告
实验一拉格朗日插值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)综合以上计算结果,可以对给定范围内的未知数据点进行插值计算,从而得到相应的函数值。
五、实验分析与结论在实际实验中,我们可以利用拉格朗日插值法对任意给定的函数进行逼近计算,从而得到函数在离散数据点之间的近似值。
拉格朗日插值法实验报告
拉格朗日插值法实验报告一、实验目的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。
实验一 拉格朗日插值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的逼近值。
数值分析matlab实验报告
数值分析matlab实验报告数值分析 Matlab 实验报告一、实验目的数值分析是研究各种数学问题数值解法的学科,Matlab 则是一款功能强大的科学计算软件。
本次实验旨在通过使用 Matlab 解决一系列数值分析问题,加深对数值分析方法的理解和应用能力,掌握数值计算中的误差分析、数值逼近、数值积分与数值微分等基本概念和方法,并培养运用计算机解决实际数学问题的能力。
二、实验内容(一)误差分析在数值计算中,误差是不可避免的。
通过对给定函数进行计算,分析截断误差和舍入误差的影响。
例如,计算函数$f(x) =\sin(x)$在$x = 05$ 附近的值,比较不同精度下的结果差异。
(二)数值逼近1、多项式插值使用拉格朗日插值法和牛顿插值法对给定的数据点进行插值,得到拟合多项式,并分析其误差。
2、曲线拟合采用最小二乘法对给定的数据进行线性和非线性曲线拟合,如多项式曲线拟合和指数曲线拟合。
(三)数值积分1、牛顿柯特斯公式实现梯形公式、辛普森公式和柯特斯公式,计算给定函数在特定区间上的积分值,并分析误差。
2、高斯求积公式使用高斯勒让德求积公式计算积分,比较其精度与牛顿柯特斯公式的差异。
(四)数值微分利用差商公式计算函数的数值导数,分析步长对结果的影响,探讨如何选择合适的步长以提高精度。
三、实验步骤(一)误差分析1、定义函数`compute_sin_error` 来计算不同精度下的正弦函数值和误差。
```matlabfunction value, error = compute_sin_error(x, precision)true_value = sin(x);computed_value = vpa(sin(x), precision);error = abs(true_value computed_value);end```2、在主程序中调用该函数,分别设置不同的精度进行计算和分析。
(二)数值逼近1、拉格朗日插值法```matlabfunction L = lagrange_interpolation(x, y, xi)n = length(x);L = 0;for i = 1:nli = 1;for j = 1:nif j ~= ili = li (xi x(j))/(x(i) x(j));endendL = L + y(i) li;endend```2、牛顿插值法```matlabfunction N = newton_interpolation(x, y, xi)n = length(x);%计算差商表D = zeros(n, n);D(:, 1) = y';for j = 2:nfor i = j:nD(i, j) =(D(i, j 1) D(i 1, j 1))/(x(i) x(i j + 1));endend%计算插值结果N = D(1, 1);term = 1;for i = 2:nterm = term (xi x(i 1));N = N + D(i, i) term;endend```3、曲线拟合```matlab%线性最小二乘拟合p = polyfit(x, y, 1);y_fit_linear = polyval(p, x);%多项式曲线拟合p = polyfit(x, y, n);% n 为多项式的次数y_fit_poly = polyval(p, x);%指数曲线拟合p = fit(x, y, 'exp1');y_fit_exp = p(x);```(三)数值积分1、梯形公式```matlabfunction T = trapezoidal_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);T = h ((y(1) + y(end))/ 2 + sum(y(2:end 1)));end```2、辛普森公式```matlabfunction S = simpson_rule(f, a, b, n)if mod(n, 2) ~= 0error('n 必须为偶数');endh =(b a) / n;x = a:h:b;y = f(x);S = h / 3 (y(1) + 4 sum(y(2:2:end 1))+ 2 sum(y(3:2:end 2))+ y(end));end```3、柯特斯公式```matlabfunction C = cotes_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);w = 7, 32, 12, 32, 7 / 90;C = h sum(w y);end```4、高斯勒让德求积公式```matlabfunction G = gauss_legendre_integration(f, a, b)x, w = gauss_legendre(5);%选择适当的节点数t =(b a) / 2 x +(a + b) / 2;G =(b a) / 2 sum(w f(t));end```(四)数值微分```matlabfunction dydx = numerical_derivative(f, x, h)dydx =(f(x + h) f(x h))/(2 h);end```四、实验结果与分析(一)误差分析通过不同精度的计算,发现随着精度的提高,误差逐渐减小,但计算时间也相应增加。
建模实验 拉格朗日插值
建模实验插值方法【实验目的】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')从图中可以看出,三次样条插值函数(青色)与原函数(黑色*)符合地最好,分段线性插值得到的函数(蓝色)符合的较差,而拉格朗日插值函数(红色)在小范围内符合的较好,但大范围内波动较大。
拉格朗日实验报告
实验报告课程:数值计算方法与计算班级:实验名称:拉格朗日插值实验姓名实验日期: 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)进行实验得到拉格朗日插值公式结果如下:六、实验心得体会虽然考了二级,但太久没碰程序,今天开始时还真无从下手,有点混乱,在写程序过程中,因为粗心打错符号,重复符号,导致程序出错,经过细心观察,检查出错误,成功完成程序,好开心呀。
Matlab数学实验报告三
数学软件课程设计题目插值方法与数据拟合班级数学081姓名曹曼伦实验目的:用Matlab语言实现Lagrange插值、Newton基本插值算法,会用Matlab中关于数值微分的函数。
用Matlab语言实现最佳平方逼近及最小二乘算法,会用Matlab中的polyfit、isqnonlin函数进行数据拟和。
实验内容:(1)Lagrange插值:function f = Language(x,y,x0)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量: x%已知数据点的y坐标向量: y%插值点的x坐标: x0%求得的拉格朗日插值多项式或在x0处的插值: fx=[0.0 0.4 0.8 1.2 1.6];%input x data(可替换为自己的数据)y=[0 0.428392 0.742101 0.910314 0.970348];%input y data(可替换为自己的数据)x0=[0.3 0.5];%input x0 data(可替换为自己的数据)syms t l;if(length(x) == length(y))n = length(x);elsedisp('x和y的维数不相等!');return; %检错endp=sym(0);for (i=1:n)l=sym(y(i));for(k=1:i-1)l=l*(t-x(k))/(x(i)-x(k));end;for(k=i+1:n)l=l*(t-x(k))/(x(i)-x(k));end;p=p+l;endsimplify(p);%简化多项式f = subs (p,'t',x0); %计算插值点的函数值f = vpa(f,6); %将插值多项式的值化成6位精度的小数end(2)Newton基本插值算法function varargout=newtonliu(varargin)clear,clcx=[0.40 0.55 0.65 0.80 0.90 1.05];fx=[0.41075 0.57815 0.69675 0.88811 1.02652 1.25382];newtonchzh(x,fx);function newtonchzh(x,fx)%由此函数可得差分表n=length(x);fprintf('*****************差分表*****************************\n'); FF=ones(n,n);FF(:,1)=fx';for i=2:nfor j=i:nFF(j,i)=(FF(j,i-1)-FF(j-1,i-1))/(x(j)-x(j-i+1));endendfor i=1:nfprintf('%4.2f',x(i));for j=1:ifprintf('%10.5f',FF(i,j));endfprintf('\n');end结果*****************差分表*****************************0.40 0.410750.55 0.57815 1.116000.65 0.69675 1.18600 0.280000.80 0.88811 1.27573 0.35893 0.197330.90 1.02652 1.38410 0.43347 0.21295 0.031241.05 1.25382 1.51533 0.52493 0.22867 0.03143 0.00029(3)数值微分函数二.数据拟合(1)最佳平方逼近及最小二乘算法function varargout=Gaussnewton(varargin)clear;clct=[0.2 1 2 3 5 7 11 16];y=[5.05 8.88 11.63 12.93 14.15 14.73 15.30 15.60];x0=[11,-1,4]';v0=40;KN=100;Lep=1e-5;KL=0;fprintf('x(%2d)=[%9.7f,%8.7f,%8.7f]\n',KL,x0(1),x0(2),x0(3)); while(norm(fj(t,x0)'*fr(t,y,x0))>Lep)d=(fj(t,x0)'*fj(t,x0)+v0*eye(3))\(-fj(t,x0)'*fr(t,y,x0));xk=x0;x0=x0+d;sL=(fj(t,xk)'*fr(t,y,xk))'*d+0.5*d'*fj(t,x0)'*fj(t,xk)*d;rk=(ff(t,y,x0)-ff(t,y,xk))/sL;if rk<0.25v0=4*v0;elseif rk>0.75v0=v0/2;endKL=KL+1;fprintf('x(%2d)=[%9.7f,%8.7f,%8.7f]\n',KL,x0(1),x0(2),x0(3));if KL>KNbreakendendfunction R=fr(t,y,x)R=x(1)*exp(x(2)./t)+x(3)-y;R=R';function G=fj(t,x)n=length(t);G=zeros(n,3);for i=1:nG(i,1)=exp(x(2)/t(i));G(i,2)=x(1)*exp(x(2)/t(i))/t(i);G(i,3)=1;endfunction F=ff(t,y,x)R=fr(t,y,x);F=0.5*R'*R;x( 0)=[11.0000000,-1.0000000,4.0000000]x( 1)=[11.0866956,-0.8433719,4.1220152]x( 2)=[11.1813520,-0.7960477,4.2442432]x( 3)=[11.2904746,-0.8391795,4.3875974]x( 4)=[11.4015888,-0.9175589,4.5547072]x( 5)=[11.4743906,-0.9922929,4.7122732]x( 6)=[11.4794657,-1.0397861,4.8309296]x( 7)=[11.4339382,-1.0609857,4.9121252]x( 8)=[11.3832407,-1.0690935,4.9640406]x( 9)=[11.3554605,-1.0720668,4.9889167]x(10)=[11.3471610,-1.0728680,4.9961421]x(11)=[11.3458361,-1.0729926,4.9972891]x(12)=[11.3457261,-1.0730029,4.9973842](2)运用polyfit、 isqnonlin函数进行数据拟合运用polyfit函数进行数据拟合x=[1,2,3,4,5,6,7,8,9,10,11,12]y=[ 96.31, 135.44, 79.5, 56.54, 256.21, 350.68, 105.62, 185.03, 493.08, 1031.17, 860.06, 746.78] z=polyfit(x,y,4)运用isqnonlin函数进行数据拟合function f2=f01(x,Data);Data=[4358 2.42207;4861 2.40374;5461 2.40126;5893 2.39352;6563 2.37776;6678 2.37684];r=Data(:,1);n=Data(:,2);z2=x(1)+x(2)./[r.^2-x(3)]-x(4)./[x(5)-r.^2];f2=z2-n.^2;>> Data=[4358 2.42207;4861 2.40374;5461 2.40126;5893 2.39352;6563 2.37776;6678 2.37684]; >> r=Data(:,1);>> n=Data(:,2);x0=[1 0 1 1 1]';x=lsqnonlin('f01',x0)Optimization terminated successfully:First-order optimality less than OPTIONS.TolFun, and no negative/zero curvature detectedx =5.74046.22611.00007.22611.0000实验结果:>>(1)Lagrange插值:ans =[ .329345, .519939](2)Newton基本插值算法*****************差分表***************************** 0.40 0.410750.55 0.57815 1.116000.65 0.69675 1.18600 0.280000.80 0.88811 1.27573 0.35893 0.197330.90 1.02652 1.38410 0.43347 0.21295 0.031241.05 1.25382 1.51533 0.52493 0.22867 0.03143 0.00029(3)数值微分函数二.数据拟合(1)最佳平方逼近及最小二乘算法x( 0)=[11.0000000,-1.0000000,4.0000000]x( 1)=[11.0866956,-0.8433719,4.1220152]x( 2)=[11.1813520,-0.7960477,4.2442432]x( 3)=[11.2904746,-0.8391795,4.3875974]x( 4)=[11.4015888,-0.9175589,4.5547072]x( 5)=[11.4743906,-0.9922929,4.7122732]x( 6)=[11.4794657,-1.0397861,4.8309296]x( 7)=[11.4339382,-1.0609857,4.9121252]x( 8)=[11.3832407,-1.0690935,4.9640406]x( 9)=[11.3554605,-1.0720668,4.9889167]x(10)=[11.3471610,-1.0728680,4.9961421]x(11)=[11.3458361,-1.0729926,4.9972891]x(12)=[11.3457261,-1.0730029,4.9973842](2)运用polyfit、isqnonlin函数进行数据拟合运用polyfit函数进行数据拟合运用isqnonlin函数进行数据拟合x =5.74046.22611.00007.22611.0000。
数值分析MATLAB实验报告
实验 2.1 多项式插值的震荡现象问题提出:考虑在一个固定的区间上用插值逼近一个函数。
显然Lagrange 插值中使用的节点越多,插值多项式的次数越高,我们自然关心插值多项式的次数增加时,)(x L n 是否也更加靠近被逼近的函数。
Runge 给出的一个例子是极著名并富有启发性的。
设区间[-1,1]上函数.2511)(2xx f +=实验内容:考虑空间[-1,1]的一个等距划分,分点为 nix i 21+-=, =i 0,1,2 ...,n , 则拉格朗日插值多项式为)(2511)(02x l xx L ini n ∑=+=. 其中,n i x l i ,...,2,1,0),(=是n 次Lagrange 插值基函数。
实验要求:(1)选择不断增大的分点数目,...,3,2=n 画出原函数)(x f 及插值多项式函数)(x L n 在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数 ,1)(4xxx h +=)arctan()(x x g =, 重复上述的实验看其结果如何。
首先编写拉格朗日插值函数的Matlab 实现: Matlab 程序为:function y=lagrange(x0,y0,x) %Lagrange 插值 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 ends=s+p*y0(k); endy(i)=s; end(1)当函数为.2511)(2xx f +=时, Matlab 程序为:x=linspace(-1,1,100); y=1./(1+25*x.^2); plot(x,y) hold on; for i=2:2:10x0=linspace(-1,1,i+1); y0=1./(1+25*x0.^2); y=laglanri(x0,y0,x); plot(x,y,'r--') hold on end运行结果:结果分析:从图上看到在区间[-1,1]的两端点附近,随着插值点数的增加,插值函数)(x L n 与)(x f 偏离的越远,而且出现了振荡现象。
拉格朗日插值实验报告
实验名称: 实验一 拉格朗日插值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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京理工大学珠海学院实验报告
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软件编辑口令进行计算,实验结果是正确的,我相信在以后的实验中,我可以做好每一步,练习好每一次的上机。
实验难度不是很大,主要要注意标点符号的正确性。
………。