插值法实验报告

合集下载

插值法实验报告

插值法实验报告

插值法实验报告插值法实验报告一、引言插值法是一种常用的数值分析方法,用于通过已知数据点的函数值来估计在其他位置的函数值。

它在科学计算、图像处理、工程设计等领域有广泛的应用。

本实验旨在通过实际操作,深入理解插值法的原理和应用。

二、实验目的1. 掌握拉格朗日插值法和牛顿插值法的原理和计算方法;2. 通过实验比较不同插值方法的精度和效率;3. 分析插值法在实际问题中的应用。

三、实验步骤1. 收集实验数据:在实验室内设置几个测量点,记录它们的坐标和对应的函数值;2. 使用拉格朗日插值法计算其他位置的函数值:根据已知数据点,利用拉格朗日插值公式计算其他位置的函数值;3. 使用牛顿插值法计算其他位置的函数值:根据已知数据点,利用牛顿插值公式计算其他位置的函数值;4. 比较不同插值方法的精度和效率:通过计算误差和运行时间,比较拉格朗日插值法和牛顿插值法的性能差异;5. 分析插值法在实际问题中的应用:结合实验结果,探讨插值法在实际问题中的优势和局限性。

四、实验结果与分析1. 拉格朗日插值法的计算结果:根据已知数据点,利用拉格朗日插值公式计算其他位置的函数值;2. 牛顿插值法的计算结果:根据已知数据点,利用牛顿插值公式计算其他位置的函数值;3. 误差分析:比较插值结果与真实函数值之间的误差,分析误差的来源和影响因素;4. 运行时间分析:比较不同插值方法的运行时间,分析其效率和适用场景。

五、实验结论1. 拉格朗日插值法和牛顿插值法都是常用的插值方法,它们在不同场景下有各自的优势;2. 插值法在实际问题中的应用需要考虑数据的分布、函数的性质和计算效率等因素;3. 本实验结果表明,拉格朗日插值法和牛顿插值法在精度和效率上存在差异,具体选择哪种方法应根据实际需求进行权衡。

六、实验总结通过本次实验,我们深入了解了插值法的原理和应用。

实验结果表明,插值法在科学计算和工程设计中具有重要的作用。

在实际应用中,我们需要根据具体问题的要求和数据的特点选择合适的插值方法,以达到更好的效果。

newton插值法实验报告

newton插值法实验报告

竭诚为您提供优质文档/双击可除newton插值法实验报告篇一:牛顿插值法matlab程序《计算方法》数值实验报告篇二:数值分析实验报告(插值法)武汉理工大学学生实验报告书实验课程名称数值分析开课学院计算机科学与技术学院指导老师姓名学生姓名学生专业班级20XX—20XX学年第一学期实验课程名称:数值分析篇三:c++实现牛顿插值法实验报告数值实验用newton商差公式进行插值姓名:陈辉学号:13349006院系:数据科学与计算机学院专业:计算机科学与技术班级:计科一班日期:20XX-10-11指导老师:纪庆革目录一、二、三、四、五、六、七、八、实验目的................................................. .........................................3实验题目................................................. .........................................3实验原理与基础理论................................................. .......................3实验内容................................................. .........................................6实验结果................................................. .......................................10心得体会................................................. .......................................14参考资料................................................. .......................................14附录(源代码)............................................... (14)一、实验目的编写一个程序,用牛顿差商公式进行插值。

试验二 插值法(含实验报告格式)

试验二  插值法(含实验报告格式)

试验二 插值法一、实验目的(1) 学会Lagrange 插值和牛顿插值等基本插值方法; (2) 讨论插值的Runge 现象,掌握分段线性插值方法;(3) 学会Matlab 提供的插值函数的使用方法,会用这些函数解决实际问题。

二、实验要求(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。

(5) 写出实验报告。

三、实验步骤1、用编好的Lagrange 插值法程序计算书本P66 的例1、用牛顿插值法计算P77的例1。

2、已知函数在下列各点的值为:试用4次牛顿插值多项式4()P x 对数据进行插值,根据{(,),0.20.08,0,1,2,,10i i i x y x i i =+=},画出图形。

3、在区间[-1,1]上分别取10,2n =用两组等距节点对龙格函数21(),(11)125f x x x =-≤≤+作多项式和线性插值,对不同n 值,分别画出插值函数及()f x 的图形。

3、下列数据点的插值可以得到平方根函数的近似,在区间[0,64]上作图。

(1)用这9个点作8次多项式插值8()L x。

附:试验报告格式样本(正式报告这行可删除)佛山科学技术学院实验报告课程名称数值分析实验项目插值法专业班级姓名学号指导教师黄国顺成绩日期月日一、实验目的1、学会Lagrange 插值、牛顿插值和分段线性插值等基本插值方法;2、讨论插值的Runge现象,掌握分段线性插值方法3、学会Matlab提供的插值函数的使用方法,会用这些函数解决实际问题。

二、实验原理1、拉格朗日插值多项式2、牛顿插值多项式3、分段线性插值三、实验步骤1、用MATLAB编写独立的拉格朗日插值多项式函数2、用MATLAB编写独立的牛顿插值多项式函数3、利用编写好的函数计算本章书本P66 的例1、用牛顿插值法计算P77的例1。

插值运算实验报告

插值运算实验报告

#### 一、实验目的1. 理解插值运算的基本概念和原理。

2. 掌握几种常见的插值方法,如拉格朗日插值、牛顿插值等。

3. 通过实验,验证插值方法在数值计算中的应用效果。

4. 培养动手能力和分析问题的能力。

#### 二、实验原理插值运算是指根据已知数据点,构造一个近似函数来描述这些数据点之间的变化规律。

常见的插值方法有拉格朗日插值、牛顿插值、分段线性插值等。

#### 三、实验内容1. 数据准备准备一组数据点,例如:```x: [1, 2, 3, 4, 5]y: [2, 4, 6, 8, 10]```2. 拉格朗日插值根据给定的数据点,构造拉格朗日插值多项式。

以三次拉格朗日插值为例,其公式如下:```L(x) = y0 ((x - x1) (x - x2) (x - x3)) / ((x0 - x1) (x0 - x2) (x0 - x3))+ y1 ((x - x0) (x - x2) (x - x3)) / ((x1 - x0) (x1 - x2) (x1 - x3))+ y2 ((x - x0) (x - x1) (x - x3)) / ((x2 - x0) (x2 - x1) (x2 - x3))+ y3 ((x - x0) (x - x1) (x - x2)) / ((x3 - x0) (x3 - x1)(x3 - x2))```将数据点代入上述公式,得到拉格朗日插值多项式。

3. 牛顿插值根据给定的数据点,构造牛顿插值多项式。

以三次牛顿插值为例,其公式如下:```N(x) = y0 + (x - x0) (y1 - y0) / (x1 - x0) + (x - x0) (x - x1) (y2 - y1) / ((x1 - x0) (x2 - x1)) + (x - x0) (x - x1) (x - x2) (y3 - y2) / ((x1 - x0) (x2 - x1) (x3 - x2))```将数据点代入上述公式,得到牛顿插值多项式。

插值运算实验报告

插值运算实验报告

插值运算实验报告通过实验掌握插值运算的原理和方法,并利用插值运算技术对离散数据进行插值和逼近。

实验设备:计算机、Matlab软件实验原理:插值是利用已知数据点之间的关系,使用某种函数表达式来逼近未知点的值。

插值方法可以分为多种,如拉格朗日插值、牛顿插值等。

本次实验主要涉及的是拉格朗日插值和牛顿插值。

实验步骤:1. 采集实验数据,得到需要进行插值运算的离散数据。

2. 根据所给的离散数据,选择合适的插值方法,如拉格朗日插值或牛顿插值。

3. 利用Matlab软件进行编程,实现所选择的插值方法。

4. 运行程序,得到插值结果。

5. 根据插值结果,可以确定对未知数据点的函数值,也可以进行曲线拟合和逼近。

实验结果:经过对实验数据的处理和插值运算,得到了以下结果:1. 插值函数的形式,可以通过该函数计算未知数据点的函数值。

2. 插值曲线的图像,可以通过该曲线来拟合和逼近实验数据。

实验分析:通过实验结果的分析,可以得出以下结论:1. 插值方法的选择对结果有重要影响,不同的插值方法适用于不同的数据类型。

2. 插值运算可以有效地处理离散数据,得到连续函数的逼近值。

3. 插值运算的精度也会受到数据点分布和插值方法的影响。

实验总结:通过本次实验,我对插值运算的原理和方法有了更深入的了解。

插值运算是一种常用的数值计算方法,可以在一定程度上解决离散数据的处理问题。

插值运算不仅可以用于求解未知数据点的函数值,还可以用于曲线拟合和逼近。

不同的插值方法适用于不同类型的数据,需要根据实际情况进行选择。

插值运算的精度也会受到数据点分布和插值方法的影响,需要注意选择合适的插值方法以及优化离散数据的分布。

数值分析实验报告--实验2--插值法

数值分析实验报告--实验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),即插值效果越来越好。

插值方法_实验报告

插值方法_实验报告

肖建 计科三班 20095420开课学院、实验室: 数统学院实验时间 :2011年 5 月 8 日实验项目类型课程名称数学实验实验项目名 称插值方法验证演示综合设计其他指导教师李东成 绩实验5 插值方法一、实验目的及意义[1] 了解插值的基本原理[2] 了解拉格朗日插值、线性插值、样条插值的基本思想; [3] 了解三种网格节点数据的插值方法的基本思想;[4] 掌握用MATLAB 计算三种一维插值和两种二维插值的方法;[5] 通过范例展现求解实际问题的初步建模过程;通过自己动手作实验学习如何用插值方法解决实际问题,提高探索和解决问题的能力。

通过撰写实验报告,促使自己提炼思想,按逻辑顺序进行整理,并以他人能领会的方式表达自己思想形成的过程和理由。

提高写作、文字处理、排版等方面的能力。

二、实验内容1.编写拉格朗日插值方法的函数M 文件;2.用三种插值方法对已知函数进行插值计算,通过数值和图形输出,比较它们的效果;3.针对实际问题,试建立数学模型,并求解。

三、实验步骤1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据各种数值解法步骤编写M 文件3.保存文件并运行;4.观察运行结果(数值或图形);5.写出实验报告,并浅谈学习心得体会。

四、实验要求与任务根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会)基础实验1. 一维插值 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。

1),x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10x , x ∈[0,2π].211x+M 文件:(1)clcx=linspace(-5,5,11);y=1./(1+x.^2);x0=linspace(-5,5,101);y0=1./(1+x.^2);y1=interp1(x,y,x0,'spline')y2=interp1(x,y,x0);A=[ones(11,1) x' (x.^2)' (x.^3)' (x.^4)' (x.^5)' (x.^6)' (x.^7)' (x.^8)' (x.^9)' (x.^10)']a=A\y';y3=a(1)+a(2).*x0+a(3).*x0.^2+a(4).*x0.^3+a(5).*x0.^4+a(6).*x0.^5+a(7).*x0.^6+a(8).*x0.^7+a(9).*x0.^8+a(10).*x0.^9+a(11).*x0.^10;plot(x0,y3,'r'),gtext('Lagr.'),hold on ,plot(x0,y2,'b'),gtext('Pies.Lin.'),hold on ,plot(x0,y1,'m'),gtext('Spline')hold off(2)x=linspace(0,2*pi,11); y=cos(x);x0=linspace(0,pi,101);y0=cos(x0);剩余代码和(1)中相同(3)x=linspace(0,pi,11);y=cos(x).^10;x0=linspace(0,pi,101);y0=cos(x0).^10;剩余代码和(1)中相同注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的差异,或采用两个函数之间的某种距离。

插值数值实验报告(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.了解插值的基本概念和方法;2.掌握常见的插值方法,如拉格朗日插值、牛顿插值等;3.对比不同插值方法的精度和效果,分析其优缺点。

实验步骤1.数据采集:选取一组已知数据点,作为插值的基础。

这些数据点可以是从实际场景中测量得到的,也可以是人为设定的。

2.插值方法选择:根据实验要求和数据特点,选择适合的插值方法。

常见的插值方法包括拉格朗日插值、牛顿插值、分段线性插值等。

3.插值计算:根据选定的插值方法,利用已知数据点进行计算,并得到插值结果。

4.结果分析:比较插值结果与实际数据的差异,并评估插值方法的精度和效果。

可以使用误差分析等方法进行评估。

5.优化调整:根据实验结果和需求,对插值方法进行优化调整,以提高插值的准确性和可靠性。

实验结果与讨论通过实验,我们得到了不同插值方法的结果,并进行了对比和分析。

根据实验数据和误差分析,我们可以得出以下结论:1.拉格朗日插值方法具有较高的插值精度,在一定程度上能够准确地模拟实际数据。

2.牛顿插值方法相对于拉格朗日插值方法而言,对于大量数据点的计算速度更快,但在少量数据点的情况下,两者的精度差异较小。

3.分段线性插值方法适用于数据点较为离散的情况,能够提供较为平滑的插值结果。

4.插值方法的选择应根据具体需求和数据特点进行,没有一种插值方法适用于所有情况。

实验总结通过本次实验,我们对插值方法有了更深入的了解,并掌握了常见的插值方法的原理和应用。

实验结果表明,插值方法在数值分析中起到了重要的作用,能够准确地推测未知点的函数值。

然而,在实际应用中,我们还需要考虑数据的特点、插值方法的适用性以及计算效率等因素。

实验一-插值方法实验

实验一-插值方法实验

《计算方法》实验报告学院:信息学院专业:计算机科学与技术指导教师:班级学号:姓名:计算机科学与工程系实验一 插值方法一. 实验目的(1)熟悉数值插值方法的基本思想,解决某些实际插值问题,加深对数值插值方法的理解。

(2)熟悉Matlab 编程环境,利用Matlab 实现具体的插值算法,并进行可视化显示。

二. 实验要求用Matlab 软件实现Lagrange 插值、分段线性插值、三次Hermite 插值、Aitken 逐步插值算法,并用实例在计算机上计算和作图。

三. 实验容1. 实验题目(1)已知概率积分dx ey x x ⎰-=022π的数据表构造适合该数据表的一次、二次和三次Lagrange 插值公式,输出公式及其图形,并计算x =0.472时的积分值。

(2)将区间[-5,5]分为10等份,求作211)(xx f +=的分段线性插值函数,输出函数表达式及其图形,并计算x =3.3152时的函数值。

(3)仿照附录C 中“文件1.2 逐步插值”程序(Neville 算法,课本227页)编写相应的Aitken 逐步插值算法的程序,根据下表所给数据分别利用上述两种算法求正弦积分⎰∞-=xdt ttx f sin )(在x =0.462的值,并比较它们的结果。

(4)运行C 中“文件1.3 分段三次Hermite 插值”程序(课本228页),要求自行选择实验数据2. 设计思想(1)Lagrange 插值:Lagrange 具有累加的嵌套结构,容易编制其计算程序。

事实上,在逻辑上表现为二重循环,循环(j循环)累乘求得系数,然后再通过外循环(i循环)累加得出插值结果y。

(2)分段线性插值:分段插值是将被插值函数逐步多项式化。

分段插值的处理过程分两步,将区间分成几个子段,并在每个子段上构造插值多项式装配在一起,作为整个区间的插值函数。

在分化的每个节点给出数据,连接相邻节点得一折线,该折线函数可以视作插值问题的解。

实验报告-插值法

实验报告-插值法

计算机上机实验报告专业和班级姓名成绩学号课程名称数值计算方法实验名称插值法实验目的和要求实验目的1、掌握用MATLAB计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。

2、掌握用MAT L AB作线性最小二乘的方法。

3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。

实验内容和步骤实验的主要内容1、编制拉格朗日、牛顿插值程序,并运行一个简单的实例。

(1)拉格朗日插值程序:function v=polyinterp(x,y,u)n=length(x);v=zeros(size(u));for k=1:nw=ones(size(u));for j=[1:k-1 k+1:n]w=(u-x(j))./(x(k)-x(j)).*w;endv=v+w*y(k);end实例:当x=144,169,225时,y=12,13,15,用拉格朗日差值法求根号175。

如下:(2)牛顿插值程序:function y=newinterp(X,Y,x)% 牛顿插值函数m=length(X);for k=2:mfor j=1:k-1Y(k)= (Y(k)- Y(j))/(X(k)-X(j));endendy=Y(m);for j=m-1:-1:1y=y.*(x-X(j))+Y(j);end实例:当x=144,169,225时,y=12,13,15,用牛顿差值法求根号175。

如下:2、给定函数xxf=)(,已知:414214.1.)0.2(=f449138.1.)1.2(=f483240.1.)2.2(=f516575.1.)3.2(=f549193.1.)4.2(=f用牛顿插值法求4次Newton插值多项式在2.15处的值,以此作为函3.选择函数y=exp(-x2) (-2≤x≤2),在n个节点上(n不要太大,如5~11)用拉格朗日、分段线性、三次样条三种插值方法,计算m 个插值点的函数值(m要适中,如50~100)。

实验一 拉格朗日插值法

实验一 拉格朗日插值法
实 验 一: 拉格朗日插值
实验目的: 1. 熟悉拉格朗日插值方法的程序设计; 2. 学会拉格朗日插值方法求函数值的近似值, 以解决其它科学实验的计算问题。 实验内容: 已知函数值表
xi f (xi )
-0.6 1.6
-0.2 2.4
0.2 1.2
0.4 3.2
试分别建立二次插值多项式和三次插值多项式,计算 f (0) 的近似值。 实验要求:屏幕显示 f (0) 的近似值。
三次差值试验结果:
— 4 —
=
k 1 k
结 束
— 2 —
实 验 报 告 (一)
辽宁科技大学 研究生 学院(系) 课名:数值分析 班级:研 12 姓名: 张贺 题目:拉格朗日插值 学号:12208190**** 专业: 矿业工程 任课教师:熊 焱 2012 年 09 月 20 日
实验程序:
— 3 —
实验结果: 二次差值试验
— 1 —
附件:拉格朗日插值算法框图
开 始
输 入 ( x i , y i ) , ( i= 0 ,1 , … , n )
0 x j
t t
j 0 , , k 1, k 1, , n
y t yk y
k n?

输 出 y

实验一函数插值方法

实验一函数插值方法

实验⼀函数插值⽅法《数值分析》课程设计实验报告实验⼀函数插值⽅法⼀、问题提出对于给定的⼀元函数()y f x =的n+1个节点值(),0,1,,j j y f x j n == 。

试⽤Lagrange 公式求其插值多项式或分段⼆次Lagrange 插值多项式。

数据如下:(1)求五次Lagrange 多项式5L ()x ,和分段三次插值多项式,计算(0.596)f ,(0.99)f 的值。

(提⽰:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈)(2)试构造Lagrange 多项式6L ()x ,计算的(1.8)f ,(6.15)f 值。

(提⽰:结果为(1.8)0.164762f ≈,(6.15)0.001266f ≈)⼆、实验步骤1、利⽤Lagrange 插值公式00,()n nin k k i i k k ix x L x y x x ==≠??-= ?-??∑∏编写出插值多项式程序; function [A1,LN,L1,B1]=lagrange(X,Y) m=length(X); LN=ones(m,m); for k=1: m x1=1; for i=1:m ifk~=ix1=conv(x1,poly(X(i)))/(X(k)-X(i));endL1(k,:)=x1; B1(k,:)=poly2sym (x1)endA1=Y*L1;LN=Y*B1在主显⽰区,输⼊五次Lagrange多项式L()5x程序:>> 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];>> [A1,LN,L1,B1]=lagrange(X,Y)>> plot(X,A1);>> F=poly2sym(A1)运⾏后,输出五次Lagrange多项式L()5x的结果:A1 =121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845F =(2139673480305281*x^5)/17592186044416 - (1859275536318005*x^4)/4398046511104 + (9836621836743*x^3)/17179869184 - (414796119737013*x^2)/1099511627776 + (2145751274873259*x)/17592186044416 - 1061478972867847/70368744177664拉格朗⽇插值多项式5()L x的图如下:2、给出插值多项式或分段三次插值多项式的表达式;function [f,ff] = Hermite3(x,y,y1)f = 0.0;if(length(x) == length(y))if(length(y) == length(y1))n = length(x);elsedisp('y和y的导数的维数不相等');return;endelsedisp('x和y的维数不相等! ');return;endfor i=1:nh = 1.0;a = 0.0;for j=1:nif( j ~= i)h = h*(t-x(j))^2/((x(i)-x(j))^2);a = a + 1/(x(i)-x(j));endendf = f + h*((x(i)-t)*(2*a*y(i)-y1(i))+y(i));endff = subs(f,'t');x的程序:在主显⽰区,输⼊分段三次艾尔⽶特插值多项式L()5>> 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];>> y1=[2.3440 0.9032 1.4329 0.9903 0.9170 5.1439];>> [f,ff] = Hermite3(x,y,y1);>> ffx的输出结果:运⾏后,分段三次艾尔⽶特插值多项式L()5ff =(6400000000*(t - 4/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t -19/20)^2*(t - 21/20)^2*((2240245151070481*t)/140737488355328 - 52393133567890089/8796093022208000))/184041 -(16000000*((6348013345609171*t)/140737488355328 - 85523418631741336287/1759218604441600000)*(t - 2/5)^2*(t -4/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t - 19/20)^2)/169 + (16000000*((4105617466549689*t)/281474976710656 -5238387122042657959/703687441776640000)*(t - 2/5)^2*(t - 4/5)^2*(t - 13/20)^2*(t - 19/20)^2*(t - 21/20)^2)/9 - (256000000* ((35097*t)/10000 - 46347/12500)*(t - 2/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t - 19/20)^2*(t - 21/20)^2)/81 - (400000000* ((13147*t)/20000 - 449611/400000)*(t - 2/5)^2*(t - 4/5)^2*(t - 11/20)^2*(t - 19/20)^2*(t - 21/20)^2)/81 - (10000000000* ((84913*t)/11000 - 1833347/220000)*(t - 2/5)^2*(t - 4/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t - 21/20)^2)/9801x的图如下:分段三次艾尔⽶特插值多项式L()53、根据节点选取原则,对问题(2)⽤三点插值或⼆点插值,其结果如何;>> X=[1 2 3 4 5 6 7];>> Y=[0.368 0.135 0.050 0.018 0.007 0.002 0.001];>> [A1,LN,L1,B1]=lagrange(X,Y)>> plot(X,A1);>> F=poly2sym(A1)运⾏后,输出结果的Lagrange 多项式L ()6x 的结果:A1 =0.0001 -0.0016 0.0186 -0.1175 0.4419 -0.9683 0.9950F=(4304240283865561*x^6)/73786976294838206464- (7417128346304051*x^5)/4611686018427387904 +(223*x^4)/12000- (2821*x^3)/24000+(994976512675275*x^2)/2251799813685248-(19367*x)/20000 + 199/200Lagrange 多项式L ()6x 的图如下:4、对此插值问题⽤Newton 插值多项式其结果如何。

插值法 实验报告

插值法 实验报告

学号:06450118姓名:李鹏实验二插值法实验2.1(多项式插值的振荡现象)问题提出:考虑一个固定的区间上用插值逼近一个函数。

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

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

龙格给出了一个极著名例子。

设区间[-1,1]上函数f(x)=1/(1+25x^2)实验内容:考虑区间[-1,1]的一个等距划分,分点为:x(i)=-1+2i/n,i=0,1,2…,n则拉格朗日插值多项式为:L(x)=∑l(i)(x)/(1+25x(j)^2 ) i=0,1,…n 其中l(i)(x), i=0,1,…n,n是n次拉格朗日插值基函数。

实验要求:⑴选择不断增大的分点数目n=2,3…,画出f(x)及插值多项式函数L(x)在[-1,1]上的图象,比较分析实验结果。

(2)选择其它的函数,例如定义在区间[-5,5]上的函数h(x)=x/(1+x^4) ,g(x)=arctanx重复上述的实验看其结果如何。

(3)区间[a,b]上切比雪夫点的定义为:x k=(b+a)/2+((b-a)/2)cos((2k-1)π/(2(n+1))),k=1,2,^,n+1以x1,x2^x(n+1)为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。

实验过程:程序:Lp2.1:%lagrange insertfunction y=lagranged=input('d=');longn=input('longn=');x0=linspace(-d,d,longn);y0=1./(1.+25.*x0.^2);x=sym('x');n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;endsubplot(1,2,1)y=simple(y);ezplot('1/(1+25*x^2)')hold onsubplot(1,2,2)ezplot(y,[-d,d])hold offLp2.2:%lagrange insertfunction y=lagranged=input('d=');longn=input('longn=');x0=linspace(-d,d,longn);y0=x0./(1+x0.^4);x=sym('x');n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;endsubplot(1,2,1)y=simple(y);ezplot('x0./(1+x0.^4)')hold onsubplot(1,2,2)ezplot(y,[-d,d])hold off数值实验结果:函数 f(x) h(x)g(x)分点数n=2n=5n=8n=11n=14实验分析:如上图所示,针对第一列的f(x),随着分点数n 的增加,插值多项式L(x)的在[-1,1]的图象在边界处与函数图像的差别越来越大。

数值计算插值法实验报告

数值计算插值法实验报告

数值计算插值法实验报告
一、实验目标
本实验的目标是学习和掌握插值法的基本原理,通过实际操作,验证插值法的有效性,并利用插值法解决实际问题。

二、实验原理
插值法是一种数学方法,用于通过已知的离散数据点,构造一个连续的函数来近似地表示未知的函数值。

常用的插值法包括线性插值、多项式插值、样条插值等。

其中,多项式插值是一种常用的方法,其基本思想是选择一个多项式来逼近已知的数据点,从而得到未知点的近似值。

三、实验步骤
1.准备数据:收集一组已知的数据点,并将其整理成表格形式。

2.选择插值方法:根据实际情况选择适当的插值方法,如线性插值、多项式插值或样条插值等。

3.计算插值函数:根据选择的插值方法,利用已知的数据点计算插值函数的系数。

4.验证插值函数:利用已知的数据点对插值函数进行验证,检查其精度和误差。

5.应用插值函数:利用插值函数计算未知点的近似值,并将结果与实际值进行比较。

四、实验结果及分析
下面是本次实验的结果及分析:
1.已知数据点:。

数值分析实验报告--实验2--插值法

数值分析实验报告--实验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),即插值效果越来越好。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告一、实验目的本实验旨在通过Python语言编写数值计算方法程序,掌握常见数值计算方法的实现原理及应用。

具体包括:插值法、最小二乘法、数值微积分、数值解方程、数值解微分方程等。

二、实验环境Python编程语言、Jupyter Notebook环境三、实验内容1.插值法(1)代码实现:在Python中使用Scipy库中的Interpolate模块实现拉格朗日插值法和牛顿插值法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义拉格朗日插值法函数;- 定义牛顿插值法函数;- 测试函数并可视化结果。

(3)实验结果:2.最小二乘法(1)代码实现:在Python中使用Numpy库实现最小二乘法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义最小二乘法函数;- 测试函数并可视化结果。

(3)实验结果:3.数值微积分(1)代码实现:在Python中实现梯形法和辛普森法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义梯形法函数和辛普森法函数;- 测试函数并可视化结果。

(3)实验结果:4.数值解方程(1)代码实现:在Python中实现二分法、牛顿法和割线法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义二分法函数、牛顿法函数和割线法函数;- 测试函数并可视化结果。

(3)实验结果:5.数值解微分方程(1)代码实现:在Python中实现欧拉法和龙格-库塔法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义欧拉法函数和龙格-库塔法函数;- 测试函数并可视化结果。

(3)实验结果:四、实验总结通过本次实验,我学习了数值计算方法的常用算法和实现原理,掌握了Python 语言实现数值计算方法的方法,加深了对数值计算方法的理解和应用。

实验中遇到的问题,我通过查找资料和与同学的讨论得到了解决,也更加熟练地掌握了Python语言的使用。

插值法,函数逼近实验报告

插值法,函数逼近实验报告

1. 实验项目名称:插值法与拟合2. 实验目的:熟悉插值法与拟合的步骤,并用计算机实现3. 实验内容:a.已知函数在下列各点的值为试用4次牛顿插值多项式P(x)及三次样条函数S (x)对数据进行插值,用图给出{(,),0.20.08,0,1,11,10}i i i x y x i i =+=,P(x)及S (x )b. 在区间[-1,1]上分别取n=10,20用两组等距节点对龙格函数21()125f x x=+;做多项式插值及三次样条插值,对每个n 值,分别画出插值函数及f(x)的图形。

可以得到平方根函数的近似,在区间[0,64]上作图。

(1)用这9个点做8此多项式插值8()L x 。

(2)用三次样条(第一边界条件)程序做S(x)。

[0,64]从结果看在[0,64]上,哪个插值更精确,在区间[0,1],两种插值哪个更精确?试求3次,4次多项式的曲线拟合,再根据曲线形状,求一个另外函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。

4. 实验环境:matlab r2010b5. 实验过程与分析:a一.实验原理N 次牛顿插值多项式可表示为:P n x =f x 0 +f x 0,x 1 x −x 0 +f x 0,x 1,x 2 x −x 0 x −x 1 +⋯+f [x 0,x 1,…,x n ](x −x 0)…(x −x n−1)三次样条函数的表达式为:S x=M j (x j+1−x)36ℎj+M j+1(x−x j)36ℎj+ y i−M jℎj26x j+1−xℎj + y i+1−M j+1ℎj26x−x jℎj, j=1,2,…,n−1.自然边界条件:S′′x0=S′′x n=0.第一边界条件:S′x0=f0′,S′x n=f n′.二.源程序○1主函数:clcsyms x;p=Newton(X,Y);t1=0.2:0.01:1;y1=subs(p,x,t1);subplot(2,2,1)plot(t1,y1);title('牛顿插值');t2=[0.2 0.28 1 1.08];y2=subs(p,x,t2);subplot(2,2,2)plot(t2,y2,'+');title('题中要求的点')subplot(2,2,3)q=spline2(X,Y,0,0);title('自然边界三次样条插值')subplot(2,2,4)plot(t1,y1);hold onplot(t2,y2,'+');q=spline2(X,Y,0,0);title('在一个图中显示')hold off○2Newton插值子函数:function P=Newton(X,Y,t)if (size(X,2)~=size(Y,2))disp('d do not agree')elsek=size(X,2);endsyms x ;P=Y(1,1);C=chashang(X,Y);fori=1:(k-1);a=1;for j=1:ia=a*(x-X(j));endP=P+C(1,i)*a;endifnargin==3P=subs(P,x,t);elseP=collect(P,x);endend○3求差商的子函数:function c=chashang(X,Y)k=size(X,2);c=zeros(1,(k-1));fori=1:(k-1)a=0;for i1=1:(i+1)b=1;for i2=[1:(i1-1),(i1+1):(i+1)]b=b*(X(1,i1)-X(1,i2)); enda=a+Y(1,i1)/b;endc(1,i)=a;endend○4第二种求差商的子函数:function c=chashang(X,Y)k=size(X,2);c=zeros(1,(k-1));fori=1:(k-1)a=0;for i1=1:(i+1)b=1;for i2=[1:(i1-1),(i1+1):(i+1)]b=b*(X(1,i1)-X(1,i2));enda=a+Y(1,i1)/b;endc(1,i)=a;endend○5三次样条插值子函数(二阶导边界):function S=spline2(X,Y,d2x1,d2xk)if(length(X)~=length(Y))disp('d do not agree')elsek=length(X);A=diag(2*ones(1,k));u=zeros(k-2,1);v=zeros(k-2,1);d=zeros(k,1);h=zeros(k-1,1);fori=1:(k-1)h(i)=X(i+1)-X(i);endfori=1:k-2u(i)=h(i)/(h(i)+h(i+1));v(i)=1-u(i);d(i+1)=6*((Y(i+2)-Y(i+1))/h(i+1)-(Y(i+1)-Y(i))/h(i))/(h(i+1)+h(i)); endfori=1:k-2A(i+1,i)=u(i);endfori=2:k-1A(i,i+1)=v(i-1);endd(1)=2*d2x1;d(k)=2*d2xk;M=A\d;syms x;S=[x];fori=1:k-1s=M(i)*(X(i+1)-x)^3/(6*(X(i+1)-X(i)))+M(i+1)*(x-X(i))^3/(6*(X(i+1)-X(i)))+(Y(i)-M(i)*((X(i+1)-X(i))^2)/6)*(X(i+1)-x)/(X(i+1)-X(i))+(Y(i+1)-M(i+1)*((X(i+1)-X(i))^2)/6)*(x-X(i))/(X(i+1)-X(i));Sx=collect(s,x);S(i)=vpa(Sx,6);t=X(i):0.01:X(i+1);Sx=subs(Sx,x,t);plot(t,Sx,'red');hold on;endplot(X,Y,'*');hold off;endendb .一.实验原理:N 次拉格朗日插值多项式为:L n x = y k l k (x )n k =0= y kωn +1(x )(x −x k )ωn +1′(x k )nk =0011011()()()()()()()()() (0,1,,)k k n k k k k k k k n x x x x x x x x l x x x x x x x x x k n -+-+----=----=二.源程序:○1主函数:(以10等分为例,20等分只需将10改为20) clcsyms x;X=[-1:0.01:1]Y=1./(1+25*X.^2);subplot(221)plot(X,Y);title('原图')x1=linspace(-1,1,10);y1=1./(1+25*x1.^2);subplot(222)spline2(x1,y1,0,0);hold onplot(X,Y);title('三次样条插值和原图')hold offL=Lagrange(x1,y1);L=subs(L,x,X);subplot(223)plot(X,L);title('Lagrange插值和原图')hold onplot(X,Y);hold offsubplot(224)plot(X,Y);hold onplot(X,L);spline2(x1,y1,0,0);title('Lagrange插值,三次样条插值和原图') hold off○2Lagrange子函数:function L=Lagrange(X,Y,t)if(length(X)~=length(Y))disp('d do not agree');elsek=length(X);syms x;L=0;w=1;for j=2:kw=w*(x-X(j))/(X(1)-X(j));endL=Y(1)*w;fori=2:k-1w=1;for j=[1:(i-1),(i+1):k]w=w*(x-X(j))/(X(i)-X(j));endL=L+Y(i)*w;endw=1;for j=1:k-1w=w*(x-X(j))/(X(k)-X(j));endL=L+Y(k)*w;endifnargin==3L=subs(L,x,t);elseL=vpa(collect(L,x),6);endend○3三次样条函数:同a中的三次样条函数c源程序:○1主函数clcsyms x;L=Lagrange(X,Y);x0=0:0.5:64;y0=sqrt(x0);subplot(2,2,1)plot(x0,y0);title('y=sqrt(x)的和L8(x)在[0,64]图')hold onL1=subs(L,x,x0);plot(x0,L1);hold offsubplot(2,2,2)plot(x0,y0);title('y=sqrt(x)的和三次样条在[0,64]图')hold onS=spline1(X,Y,1,15);hold offsubplot(2,2,3)plot(x0,y0)title('三个曲线在[0,64]图')hold onplot(x0,L1);spline1(X,Y,1,15);hold offsubplot(2,2,4)x1=[0:0.01:1];y1=sqrt(x1);plot(x1,y1);title('三个曲线在[0,1]图')hold onL2=subs(L,x,x1);plot(x1,L2,'black')s=subs(S(1),x,x1);plot(x1,s,'red')hold off○2spline2子函数function S=spline1(X,Y,d1x1,d1xk)if(length(X)~=length(Y))disp('d do not agree')elsek=length(X);A=diag(2*ones(1,k));u=zeros(k-2,1);v=zeros(k-2,1);d=zeros(k,1);h=zeros(k-1,1);fori=1:(k-1)h(i)=X(i+1)-X(i);endfori=1:k-2u(i)=h(i)/(h(i)+h(i+1));v(i)=1-u(i);d(i+1)=6*((Y(i+2)-Y(i+1))/h(i+1)-(Y(i+1)-Y(i))/h(i))/(h(i+1)+h(i));endfori=1:k-2A(i+1,i)=u(i);Endfori=2:k-1A(i,i+1)=v(i-1);endd(1)=6/h(1)*((Y(2)-Y(1))/h(1)-d1x1);d(k)=6/h(k-1)*(d1xk-(Y(k)-Y(k-1))/h(k-1));M=A\d;syms x;S=[x];fori=1:k-1s=M(i)*(X(i+1)-x)^3/(6*(X(i+1)-X(i)))+M(i+1)*(x-X(i))^3/(6*(X(i+1)-X(i)))+(Y(i)-M(i)*((X(i+1)-X(i))^2)/6)*(X(i+1)-x)/(X(i+1)-X(i))+(Y(i+1)-M(i+1)*((X(i+1)-X(i))^2)/6)*(x-X(i))/(X(i+1)-X(i));Sx=collect(s,x);S(i)=vpa(Sx,6);t=X(i):0.01:X(i+1);Sx=subs(Sx,x,t);plot(t,Sx,'red');hold on;plot(X,Y,'*');endhold off;endendd实验原理:用正交函数作最小二乘拟合:00 (),,(){}()(0,1,,), 0, , (,)()((),()) (5.8) , ,n i i m j k i j i k i i k x x x x i m i k x x x A i k φφωφφωφφ==≠⎧==⎨=⎩∑ 设是关于点集带权的正交函数族即满足**2002*(,) ()()(), (5.9)|||| (,)/(,).n nk n k kk k k k k k k k f s x a x x a f φφφφφφφ=====∑∑ 其中 ()222*220 ||||||||.n k k k f A a ==-∑δ均方误差01101111111()1 ()()()()()()(), (5.10)(,)/(,),(,)/(,) k k k k k k k k k k k k k k k p x p x x p x p x x p x p x xp p p p p p p p ααβαβ++-+--=⎧⎪=-⎨⎪=--⎩==首项系数为时,有递推关系,,其中,1,2,, 1.k n =-源程序:○1主函数 clcsubplot(2,2,1)plot(X,Y,'*')title('三次最小二乘拟合')hold onsyms x;t=0:0.01:1;l= LSM(X,Y,3);L1=subs(l,x,t);plot(t,L1);hold offsubplot(2,2,2)plot(X,Y,'*')title('四次最小二乘拟合')hold onl= LSM(X,Y,4);L2=subs(l,x,t);plot(t,L2);hold offsubplot(2,2,3)plot(X,Y,'*')title('在一张图中显示')hold onplot(t,L1,'red');plot(t,L2);hold offsubplot(2,2,4)plot(X,Y,'*')hold onspline2(X,Y,0,0)title('自然边界三次样条插值函数')hold off○2三次样条函数(自然边界)子程序:同“实验一”中的spline2 6.实验结果总结:a.实验结果:实验结果总结:三次样条函数和牛顿插值对这5个点的插值效果比较接近。

插值方法_实验报告

插值方法_实验报告

肖建 计科三班 20095420开课学院、实验室: 数统学院实验时间 :2011年 5 月 8 日实验项目类型课程名称数学实验实验项目名 称插值方法验证演示综合设计其他指导教师李东成 绩实验5 插值方法一、实验目的及意义[1] 了解插值的基本原理[2] 了解拉格朗日插值、线性插值、样条插值的基本思想; [3] 了解三种网格节点数据的插值方法的基本思想;[4] 掌握用MATLAB 计算三种一维插值和两种二维插值的方法;[5] 通过范例展现求解实际问题的初步建模过程;通过自己动手作实验学习如何用插值方法解决实际问题,提高探索和解决问题的能力。

通过撰写实验报告,促使自己提炼思想,按逻辑顺序进行整理,并以他人能领会的方式表达自己思想形成的过程和理由。

提高写作、文字处理、排版等方面的能力。

二、实验内容1.编写拉格朗日插值方法的函数M 文件;2.用三种插值方法对已知函数进行插值计算,通过数值和图形输出,比较它们的效果;3.针对实际问题,试建立数学模型,并求解。

三、实验步骤1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据各种数值解法步骤编写M 文件3.保存文件并运行;4.观察运行结果(数值或图形);5.写出实验报告,并浅谈学习心得体会。

四、实验要求与任务根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会)基础实验1. 一维插值 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。

1),x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10x , x ∈[0,2π].211x+M 文件:(1)clcx=linspace(-5,5,11);y=1./(1+x.^2);x0=linspace(-5,5,101);y0=1./(1+x.^2);y1=interp1(x,y,x0,'spline')y2=interp1(x,y,x0);A=[ones(11,1) x' (x.^2)' (x.^3)' (x.^4)' (x.^5)' (x.^6)' (x.^7)' (x.^8)' (x.^9)' (x.^10)']a=A\y';y3=a(1)+a(2).*x0+a(3).*x0.^2+a(4).*x0.^3+a(5).*x0.^4+a(6).*x0.^5+a(7).*x0.^6+a(8).*x0.^7+a(9).*x0.^8+a(10).*x0.^9+a(11).*x0.^10;plot(x0,y3,'r'),gtext('Lagr.'),hold on ,plot(x0,y2,'b'),gtext('Pies.Lin.'),hold on ,plot(x0,y1,'m'),gtext('Spline')hold off(2)x=linspace(0,2*pi,11); y=cos(x);x0=linspace(0,pi,101);y0=cos(x0);剩余代码和(1)中相同(3)x=linspace(0,pi,11);y=cos(x).^10;x0=linspace(0,pi,101);y0=cos(x0).^10;剩余代码和(1)中相同注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的差异,或采用两个函数之间的某种距离。

数值分析实验报告

数值分析实验报告

数值分析实验报告实验目的:通过数值分析实验,掌握常用的插值方法,包括拉格朗日插值法和牛顿插值法,并对比它们的优缺点。

实验原理:插值法是一种在已知数据点的基础上,通过构造一个函数来逼近给定数据集以及这个函数本身。

其中,拉格朗日插值法采用一个多项式来逼近数据集,而牛顿插值法则采用一个多项式和差商来逼近。

实验步骤:1.使用拉格朗日插值法:a)根据给定的n+1个数据点,构造一个n次的插值多项式。

b)计算插值多项式在给定点x处的值。

2.使用牛顿插值法:a)根据给定的n+1个数据点,计算差商的递归表达式。

b)利用递归表达式计算插值多项式在给定点x处的值。

3.通过实验数据进行验证,并对比两种插值方法的优缺点。

实验结果与分析:以一个具体的实验数据为例,假设已知数据点为{(0,1),(1,3),(2,5)},要求在给定点x=0.5处进行插值。

1.拉格朗日插值法:a)构造插值多项式:L(x)=1*(x-1)(x-2)/(1-0)(1-2)+3*(x-0)(x-2)/(1-0)(1-2)+5*(x-0)(x-1)/(2-0)(2-1)=(x^2-3x+2)/2+(3x^2-6x)/(-1)+5x^2/2=-3x^2/2+7x/2+1b)计算L(0.5)=-3(0.5)^2/2+7(0.5)/2+1=22.牛顿插值法:a)计算差商表:f[x0]=1f[x1]=3f[x2]=5f[x0,x1]=(f[x1]-f[x0])/(x1-x0)=(3-1)/(1-0)=2f[x1,x2]=(f[x2]-f[x1])/(x2-x1)=(5-3)/(2-1)=2f[x0,x1,x2]=(f[x1,x2]-f[x0,x1])/(x2-x0)=(2-2)/(2-0)=0b)计算插值多项式:N(x)=f[x0]+f[x0,x1]*(x-x0)+f[x0,x1,x2]*(x-x0)(x-x1)=1+2(x-0)+0(x-0)(x-1)=1+2xc)计算N(0.5)=1+2(0.5)=2对比结果可得到拉格朗日插值法和牛顿插值法得到的插值点的值都为2,验证了所使用方法的正确性。

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

实验二插值法
1、实验目的:
1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。

2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。

2、实验要求:
1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法;
2)编写上机实验程序,作好上机前的准备工作;
3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果);
4)分析和解释计算结果;
5)按照要求书写实验报告;
3、实验内容:
1) 用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。

已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。

2) 求满足插值条件的插值多项式及余项
1)
4、题目:插值法
5、原理:
拉格郎日插值原理:
n次拉格朗日插值多项式为:L
n (x)=y
l
(x)+y
1
l
1
(x)+y
2
l
2
(x)+…+y
n
l
n
(x)
n=1时,称为线性插值,
L 1(x)=y
(x-x
1
)/(x
-x
1
)+y
1
(x-x
)/(x
1
-x
)=y
+(y
1
-x
)(x-x
)/(x
1
-x
)
n=2时,称为二次插值或抛物线插值,
L 2(x)=y
(x-x
1
)(x-x
2
)/(x
-x
1
)/(x
-x
2
)+y
1
(x-x
)(x-x
2
)/(x
1
-x
)/(x
1
-x
2
)+y
2
(x
-x
0)(x-x
1
)/(x
2
-x
)/(x
2
-x
1
)
n=i时,
Li= (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n)
(X-X0)……(X-X i-1)(x-x i+1) ……(x-x n)
6、设计思想:
拉格朗日插值法是根据n + 1个点x0, x1, ... x n(x0 < x1 < ... x n)的函数值f (x0), f (x1) , ... , f (x n)推出n次多項式p(x),然后n次多項式p (x)求出任意的点x对应的函数值f (x)的算法。

7、对应程序:
1 ) 三次拉格朗日插值多项式求x=0.5635时函数近似值
#include"stdio.h"
#define n 5
void main()
{
int i,j;
float x[n],y[n];
float x1;
float a=1;
float b=1;
float lx=0;
printf("\n请输入想要求解的X:\n x=");
scanf("%f",&x1);
printf("请输入所有点的横纵坐标:\n");
for(i=1;i<n;i++)
{
printf("x[%d]=",i);
scanf("%f",&x[i]);
printf("y[%d]=",i);
scanf("%f",&y[i]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j!=i)
{
b=b*(x1-x[j]);
a=a*(x[i]-x[j]);
}
}
lx=lx+b*y[i]/a;
a=b=1;
}
printf("\n求得的解是l(%f)=%f",x1,lx);
}
2 ) 满足插值条件的插值多项式及余项
#include <stdio.h>
#define m 0
#define n 1
float L0(float a,float x1,float x0)
{
return (a-x1)/(x0-x1);
}
float L1(float a,float x1,float x0)
{
return (a-x0)/(x1-x0);
}
float H(float x0,float x1,float y0,float y1,float m0,float m1,float a) {
float b;
b=y0*(1-2*(a-x0)/(x0-x1))*L0(a,x1,x0)*L0(a,x1,x0)+y1*(1-2*(a-x1)/ (x1-x0))*L1(a,x1,x0)*L1(a,x1,x0)+m0*(a-x0)*L0(a,x1,x0)*L0(a,x1,x0)+m1 *(a-x1)*L1(a,x1,x0)*L1(a,x1,x0);
return b;
}
void main()
{
float x0=1,x1=2,y0=2,y1=3,m0=0,n1=-1,a1=1.5,a2=1.7;
float k1,k2;
printf("input a1: \n");
printf(" %f\n",a1);
k1=H(x0,x1,y0,y1,m0,n1,a1);
printf("%f的函数值为:%f\n\n\n",a1,k1);
printf("input a2: \n");
printf(" %f\n",a2);
k2=H(x0,x1,y0,y1,m0,n1,a2);
printf("%f的函数值为:%f\n\n",a2,k2);
}
8、实验结果:
x=0.5635时函数近似值为0.826116
9、图形(如果可视化)
三次拉格朗日插值多项式求x=0.5635时函数近似值
满足插值条件的插值多项式及余项
10、实验体会:
经过本次实验,让我清楚了整个运算过程我对C语言的编程更加熟练,对拉格朗日插值和Hermite函数插值法的运用更加熟练,也牢牢的记住了这两个公式的使用。

相关文档
最新文档