用MATLAB实现拉格朗日插值
拉格朗日插值龙格现象的matlab实现

拉格朗日插值法在实践中的应 用
在数值分析中的应用
单击此处添加标题
插值法:拉格朗日插值法是数值分析中常用的插值方法之一,具有简单易 行、计算量小等优点。
单击此处添加标题
数据拟合:拉格朗日插值法可以用于数据拟合,通过对已知数据进行插值, 得到未知数据的近似值。
单击此处添加标题
数值微积分:拉格朗日插值法在数值微积分中也有广泛应用,例如在求解 函数的导数、积分等运算时,可以利用拉格朗日插值法进行近似计算。
龙格现象
龙格现象的定义
定义:当插值多项式的阶数过高时, 插值结果可能变得不可预测或出现 剧烈振荡
解决方法:在实际应用中,应避免 使用过高的插值多项式阶数,而应 选择合适的阶数以保证插值结果的 稳定性和准确性
添加标题
添加标题
添加标题
添加标题
原因:由于高阶插值多项式对数据 点的敏感性增强,导致插值结果不 稳定
拉格朗日插值龙格现象的 Matlab实现
汇报人:XX
单击输入目录标题 拉格朗日插值法 龙格现象 拉格朗日插值法在Matlab中的实现 拉格朗日插值法的龙格现象分析 拉格朗日插值法在实践中的应用
添加章节标题
拉格朗日插值法
插值法的定义
插值法是一种数学方法,通过已知的离散数据点,构造一个多项式函数,使得该函数在 数据点处的取值等于已知的数据点值。
算法收敛性:在某些情况下,龙格现象可能导致算法收敛速度减慢,增加计算时间和计算成本。
实际应用限制:由于龙格现象的存在,某些数值方法在实际应用中可能受到限制,无法处理某些 复杂问题。
算法改进需求:为了克服龙格现象的影响,需要研究和发展新的数值方法和算法,提高数值计算 的稳定性和精度。
拉格朗日插值法在Matlab中的 实现
matlab拉格朗日插值多项式例题

文章主题:探索MATLAB中的拉格朗日插值多项式在现代科学与工程领域中,数值分析和插值方法是相当重要的研究方向之一。
它们在数据处理、图像处理、信号处理等领域都有着广泛的应用。
而MATLAB作为一个功能强大的数值计算软件,自然也包括了丰富的插值方法。
本文将重点探讨MATLAB中的拉格朗日插值多项式,通过具体例题来展示其应用与解决问题的能力。
一、拉格朗日插值多项式概述拉格朗日插值多项式是一种基本的插值方法,它的基本思想是在给定数据点的情况下,通过构造一个满足通过所有数据点的多项式来逼近实际函数。
具体而言,对于给定的n+1个不同的数据点(x0, y0), (x1,y1), …, (xn, yn),拉格朗日插值多项式可以表示为\[L(x) = \sum_{i=0}^{n} y_i l_i(x)\]其中,li(x)为拉格朗日基函数,它的表达式为\[l_i(x) = \prod_{j=0, j\neq i}^{n} \frac{x-x_j}{x_i-x_j}\]根据拉格朗日插值多项式的构造方式,我们可以看到它通过n+1个数据点构建了一个n次多项式来逼近实际函数,从而实现了插值的目的。
二、MATLAB中的拉格朗日插值多项式函数在MATLAB中,可以利用“lagrange”函数来实现拉格朗日插值多项式的计算。
对于给定的数据点和函数值,我们可以使用下面的MATLAB代码来实现拉格朗日插值多项式的计算:```matlabx = [1, 2, 3, 4, 5];y = [1, 4, 9, 16, 25];xi = 2.5;yi = lagrange(x, y, xi);disp(yi);```在上面的例子中,我们给定了数据点(1, 1), (2, 4), (3, 9), (4, 16), (5, 25),然后利用“lagrange”函数计算了在xi=2.5处的插值结果yi。
通过这样简单的几行代码,就可以实现拉格朗日插值多项式的计算与应用。
2、拉格朗日插值的matlab实现

2、拉格朗日插值实例:根据下面的数据点求出其拉格朗日插值格式,并计算当x=1.6时y的值。
x 0 0.5 1.0 1.5 2.0 2.5 3.0y 0 0.4794 0.8145 0.9975 0.9093 0.5985 0.1411function[f,f0]=Language(x,y,x0)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%求得的拉格朗日插值多项式:f%x0处的插值:f0symst;if(length(x)==length(y))n=length(x);elsedisp('x和y的维数不相等!');return;end%检错f=0.0;for(i=1:n)l=y(i);for(j=1:i-1)l=l*(t-x(j))/(x(i)-x(j));end;for(j=i+1:n)l=l*(t-x(j))/(x(i)-x(j));%计算拉格朗日基函数end;f=f+l;%计算拉格朗日插值函数simplify(f);%化简endf0=subs(f,'t',x0);%计算插值点的函数值运行程序;x=0:0.5:3;y=[00.47940.84150.99750.90930.59850.1411];[f,f0]=Language(x,y,1.6)%计算输出的拉格朗日插值多项式%计算x=1.6时的插值输出值f0运行结果f=-799/3125*t*(t-1)*(t-3/2)*(t-2)*(t-5/2)*(t-3)+561/500*t*(t-1/2)*(t-3/2)*(t-2)*(t-5/2) *(t-3)-133/75*t*(t-1/2)*(t-1)*(t-2)*(t-5/2)*(t-3)+3031/2500*t*(t-1/2)*(t-1)*(t-3/2)*( t-5/2)*(t-3)-399/1250*t*(t-1/2)*(t-1)*(t-3/2)*(t-2)*(t-3)+1411/112500*t*(t-1/2)*(t-1) *(t-3/2)*(t-2)*(t-5/2)f0=仅供个人学习参考0.9996仅供个人学习参考。
例题matlab拉格朗日插值

例题matlab拉格朗日插值拉格朗日插值是一种常用的数值插值方法,它可以通过已知的数据点来估计未知点的函数值。
在MATLAB中,我们可以使用拉格朗日插值函数polyfit和polyval来实现。
假设我们有一组已知的数据点(x1, y1), (x2, y2), ..., (xn, yn),我们想要通过这些数据点来估计一个未知点的函数值。
首先,我们需要使用polyfit函数来计算拉格朗日插值多项式的系数。
```matlabx = [x1, x2, ..., xn];y = [y1, y2, ..., yn];n = length(x) - 1; % 多项式的次数coefficients = polyfit(x, y, n);```polyfit函数返回的coefficients是一个包含多项式系数的向量,从高次到低次排列。
接下来,我们可以使用polyval函数来计算未知点的函数值。
```matlabunknown_x = ...; % 未知点的x坐标unknown_y = polyval(coefficients, unknown_x);```polyval函数接受一个多项式系数向量和一个x值作为输入,返回对应的函数值。
通过这种方式,我们可以使用拉格朗日插值来估计未知点的函数值。
下面我们来看一个具体的例子。
假设我们有一组已知的数据点(0, 1), (1, 2), (2, 3),我们想要通过这些数据点来估计未知点(1.5, ?)的函数值。
```matlabx = [0, 1, 2];y = [1, 2, 3];n = length(x) - 1;coefficients = polyfit(x, y, n);unknown_x = 1.5;unknown_y = polyval(coefficients, unknown_x);```在这个例子中,我们得到的未知点的函数值为2.5。
这意味着在x坐标为1.5的位置,我们估计的函数值为2.5。
用MATLAB实现拉格朗日插值

用MATLAB实现拉格朗日插值1、作业内容:用MATLAB实现拉格朗日插值2、作业目的:1)学会使用MATLAB软件;2)会使用MATLAB软件进行拉格朗日插值算法3、作业原理:利用拉格朗日插值方法进行多项式插值,并将图形显式出来。
4、实验步骤及运行结果(1)实现lagrange插值1)定义函数: f = 1./(25*x^2+1)将其保存在f.m 文件中,具体程序如下:function y = f1(x)y = 1./(25x.^2+1);2) 定义拉格朗日插值函数:将其保存在lagrange.m 文件中,具体实现程序编程如下:function y = lagrange(x0,y0,x)m = length(x); /区间长度/n = length(x0);for i = 1:nl(i) = 1;endfor i = 1:mfor j = 1:nfor k = 1:nif j == kcontinue;endl(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j);endendendy = 0;for i = 1:ny = y0(i) * l(i) + y;End3)建立测试程序,保存在text.m文件中,实现画图:x=-1:0.001:1;y=(1+25.*x.^2).^-1;p=polyfit(x,y,n);py=vpa(poly2sym(p),10)plot_x=-1:0.001:1;f1=polyval(p,plot_x);figureplot(x,y,‘r',plot_x,f1)输入n=6,出现下面的图形:通过上图可以看到当n=6是没有很好的模拟。
于是重新运行text.M并选择n=15,运行,显示图形如下:由此可见n=15时的图像是可以很好的实现模拟5、总结:通过本次课程作业,我初步掌握了MATLAB运用,加深了对于各种线性插值的理解;培养了独立工作能力和创造力;综合运用专业及基础知识,解决实际数学问题的能力;同时对数学的研究有了更深入的认识。
用MATLAB实现拉格朗日插值和分段线性插值欧阳文创编

用MATLAB实现拉格朗日插值和分段线性插值1、实验内容:用MATLAB实现拉格朗日插值和分段线性插值。
2、实验目的:1)学会使用MATLAB软件;2)会使用MATLAB软件进行拉格朗日插值算法和分段线性差值算法;3、实验原理:利用拉格朗日插值方法进行多项式插值,并将图形显式出来。
4、实验步骤及运行结果(1)实现lagrange插值1)定义函数: f = 1/(x^2+1) 将其保存在f.m 文件中,具体程序如下:function y = f1(x)y = 1./(x.^2+1);2)定义拉格朗日插值函数:将其保存在lagrange.m 文件中,具体实现程序编程如下:function y = lagrange(x0,y0,x)m = length(x); /区间长度/n = length(x0);for i = 1:nl(i) = 1;endfor i = 1:mfor j = 1:nfor k = 1:nif j == kcontinue;endl(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j);endendendy = 0;for i = 1:ny = y0(i) * l(i) + y;end3)建立测试程序,保存在text.m文件中,实现画图:x=-5:0.001:5;y=(1+x.^2).^-1;p=polyfit(x,y,n);py=vpa(poly2sym(p),10)plot_x=-5:0.001:5;f1=polyval(p,plot_x);figureplot(x,y,‘r',plot_x,f1)输入n=6,出现下面的图形:通过上图可以看到当n=6是没有很好的模拟。
于是重新运行text.M并选择n=11由此可见n=11时的图像是可以很好的实现模拟(2)分段线性插值:建立div_linear.m文件。
具体编程如下/*分段线性插值函数:div_linear.m 文件*/function y = div_linear(x0,y0,x,n)%for j = 1:length(x)for i = 1:n-1if (x >= x0(i)) && (x <= x0(i+1))y = (x - x0(i+1))/(x0(i) -x0(i+1))*y0(i) + ( x - x0(i))/(x0(i+1) - x0(i))*y0(i+1);elsecontinue;endend%end测试程序(text2.m):n = input(‘输入n =:’);x0 = linspace( -5,5,n);for x = -5:0.01:5y = div_linear(x0,f(x0),x,n);hold on;plot(x,y,'r');plot(x,f(x),'b');end2)运行测试程序,这是会出现:输入n=:2)输入n=6,并按Enter键,出现:4)关掉图形界面后,重新运行程序,输入n=11,并按enter键后出现:5)再次关掉图形界面,输入n=100,并按enter键,出现:此时。
拉格朗日插值法matlab程序代码

拉格朗日插值法matlab程序代码文章开始:拉格朗日插值法是一种常用的数值计算方法,用于在已知的数据点上构造一个多项式,以逼近未知的函数值。
其主要思想是通过构造一个经过已知数据点的多项式,从而在未知点上近似函数的值。
在本文中,我将通过MATLAB编程来实现拉格朗日插值法,并给出相应的程序代码和解释。
在开始编写程序之前,让我们首先了解一下拉格朗日插值法的基本原理。
给定一组已知数据点(x0, y0), (x1, y1), ..., (xn, yn),其中xi为自变量,yi为因变量。
我们的目标是构造一个多项式P(x),使得对于任意的x,P(x)可以近似地表示未知函数f(x)的值。
首先,我们需要定义Lagrange基函数Li(x)。
每个基函数都满足以下两个性质:Li(xi) = 1Li(xj) = 0,其中i ≠ j基于这些性质,Li(x)可以通过以下公式计算:Li(x) = Π(j=0 to n, j ≠ i) ((x - xj) / (xi - xj))接下来,我们将利用这些基函数和已知数据点的因变量yi来构造拉格朗日插值多项式P(x):P(x) = Σ(i=0 to n) (yi * Li(x))有了这个多项式,我们可以使用它来近似未知函数f(x)在任意点x的值。
现在,让我们来实现这个算法,并给出MATLAB代码。
``` MATLABfunction P = lagrange_interpolation(x, y, x_val)% x: 已知数据点的自变量% y: 已知数据点的因变量% x_val: 需要插值的自变量n = length(x) - 1; % 数据点的数量P = zeros(size(x_val)); % 初始化插值多项式的值for i = 1:n+1% 计算基函数L = ones(size(x_val));for j = 1:n+1if j ~= iL = L .* (x_val - x(j)) / (x(i) - x(j));endend% 更新插值多项式的值P = P + y(i) * L;endend```上面的代码实现了拉格朗日插值法的核心算法。
拉格朗日插值matlab程序例题

拉格朗日插值是一种常用的数据拟合方法,它可以通过已知数据点来估计出未知数据点的值。
在数学和工程领域中,拉格朗日插值经常被用来进行数据的近似和预测。
在本文中,我们将深入探讨拉格朗日插值的原理和应用,并以Matlab程序例题来展示其实际运用。
1. 拉格朗日插值的原理拉格朗日插值是利用已知数据点来构造一个多项式,通过这个多项式来拟合数据并进行预测。
它的原理基于拉格朗日多项式的概念,即通过已知的n个点来构造一个n-1次的拉格朗日多项式,利用这个多项式来估计其他点的数值。
2. 拉格朗日插值的公式假设有n个已知的数据点(x1, y1), (x2, y2), …, (xn, yn),则拉格朗日插值多项式可以表示为:L(x) = Σ(yi * li(x)), i=1 to n其中li(x)是拉格朗日基函数,定义为:li(x) = Π((x - xj) / (xi - xj)), j=1 to n, j≠i利用这个公式,我们可以得到拉格朗日插值多项式,进而进行数据的拟合和预测。
3. 拉格朗日插值的Matlab程序实现下面我们将以一个具体的例题来展示如何使用Matlab来实现拉格朗日插值。
假设有如下数据点:y = [10, 5, 8, 3, 6];我们希望利用这些数据点来构造拉格朗日插值多项式,并使用这个多项式来估计x=3.5处的数值。
我们可以编写Matlab程序来实现拉格朗日插值。
代码如下:```matlabfunction result = lagrange_interpolation(x, y, xx)n = length(x);result = 0;for i = 1:ntemp = y(i);for j = 1:nif i ~= jtemp = temp * (xx - x(j)) / (x(i) - x(j));endendresult = result + temp;endend```我们可以调用这个函数来进行插值计算:```matlaby = [10, 5, 8, 3, 6];xx = 3.5;result = lagrange_interpolation(x, y, xx)disp(result);```通过这段程序,我们可以得到x=3.5处的插值结果为6.75。
matlab 最优插值法

matlab 最优插值法
在MATLAB中,常用的最优插值方法包括线性插值、拉格朗日插值和样条插值。
1. 线性插值:
MATLAB中可以使用interp1函数进行线性插值。
该函数的语法如下:
```matlab
yi = interp1(x, y, xi);
```
其中,x和y是已知的数据点,xi是要插值的位置,yi是对应xi位置的插值结果。
2. 拉格朗日插值:
MATLAB中可以使用polyfit和polyval函数进行拉格朗日插值。
首先使用polyfit函数拟合出拉格朗日多项式的系数,然后使用polyval函数计算插值结果。
```matlab
p = polyfit(x, y, n); % n是拉格朗日多项式的阶数
yi = polyval(p, xi);
```
3. 样条插值:
MATLAB中可以使用interp1函数的'spline'方法进行样条插值。
该方法基于自然边界条件(二阶导数在边界处为0)或其他形式的边界条件,计算出样条函数,并对插值点进行插值。
```matlab
yi = interp1(x, y, xi, 'spline');
```
需要注意的是,在进行最优插值时,选择适当的插值方法和参数非常重要,以得到准确的插值结果。
matlab拉格朗日插值函数

matlab拉格朗日插值函数Matlab拉格朗日插值函数Matlab是一种流行的数学软件,用于数据分析、数值计算和可视化。
其中插值函数是一项常见的数学任务,可以用来发现数据点之间的趋势和模式,同时也可以预测未知数据点的值。
拉格朗日插值函数是一种常用的插值函数,本文将对其进行介绍。
一、拉格朗日插值函数的基本原理拉格朗日插值函数可以将给定的数据点(x1,y1),(x2,y2),......(xn,yn)拟合成一个多项式函数P(x),使得P(xi)=yi。
拟合出的多项式函数可以用来推断在数据点之间的任何x值所对应的y值。
这种方法称为插值,因为拟合出的多项式函数是数据点之间的拉格朗日插值多项式。
二、Matlab中的拉格朗日插值函数Matlab中有一个内置的插值函数interp1,可以用来插值实验数据。
但是,interp1是一种线性插值方法,当数据散布很广或存在噪声时,线性插值可能会产生不准确的结果。
因此,更好的选择是使用拉格朗日插值函数。
Matlab中的拉格朗日插值多项式可以利用polyfit和polyval函数实现。
给定数据点xi和yi,可以使用polyfit函数计算N-1阶多项式系数p,其中N是数据点的数量。
然后可以使用polyval函数将新的x值带入多项式中,以计算y值。
三、实例演示下面我们通过一个简单的示例来说明如何使用Matlab中的拉格朗日插值函数。
假设有这样一组数据:x = [1, 3, 5, 7];y = [2, 3, 1, 3];现在我们想要在x=2和x=6处进行插值,以求得y值。
首先,我们可以使用polyfit函数计算多项式系数:p = polyfit(x,y,3);其中,第一个参数是x值,第二个参数是y值,第三个参数是多项式的阶数。
接下来,我们使用polyval函数将新的x值代入多项式:y_interp = polyval(p,[2,6]);这将得到插值结果:y_interp = [2.2222, 1.2222]。
matlab 拉格朗日插值多项式

matlab 拉格朗日插值多项式
拉格朗日插值多项式是一种基于差商的插值方法,它可以用于生
成通过给定数据点的曲线。
该方法的实现依赖于 MATLAB 的插值函数。
以下是一个简单的分步骤的过程来解释如何使用 MATLAB 来使用拉格
朗日插值多项式进行插值。
第一步是定义数据点。
要使用拉格朗日插值多项式,需要有一组
完整的数据点。
可以使用 MATLAB 预定义的数据或手动定义自己的数据。
第二步是创建插值函数。
可以使用 MATLAB 的 interp1 函数来
定义插值函数。
该函数需要数据点和插值点作为输入,以及插值函数
类型(在此处选择拉格朗日插值多项式)。
第三步是绘制数据和插值曲线。
可以使用 plot 函数来对数据和
插值曲线进行绘图。
这使得您可以可视化数据点和插值过程,并检查
结果的准确性。
第四步是调整插值精度。
可以使用 MATLAB 的 interp1 函数来
调整插值的精度。
通常,较高的精度会导致更准确的结果,但也会增
加计算时间。
最后一步是验证和测试。
最后一步是验证和测试已生成的拉格朗
日插值多项式。
可以使用 MATLAB 的测试函数和可视化工具来检查曲
线的准确性和精度。
总之,使用 MATLAB 进行拉格朗日插值多项式插值是一种灵活、
快速、易用的方法。
使用该方法,可以快速生成插值曲线,使您能够
更好地理解数据,做出更明智的决策。
拉格朗日插值函数matlab例题

拉格朗日插值函数是一种常用的数学工具,它可以用于拟合数据、逼近函数和插值等多种数学问题。
在本文中,我将通过介绍拉格朗日插值函数的原理和应用,以及使用Matlab进行实例演示,帮助你更好地理解这一主题。
1. 拉格朗日插值函数的原理拉格朗日插值函数是通过拉格朗日插值多项式来实现插值的过程。
拉格朗日插值多项式是由一组互不相同的节点和函数值得到的,并且满足通过这些节点的所有函数值。
它的数学表达式如下所示:\[P(x) = \sum_{i=0}^{n} y_i l_i(x)\]其中 \(P(x)\) 是拉格朗日插值多项式,\(n\) 是节点数,\(y_i\) 是函数在节点 \(x_i\) 处的函数值,\(l_i(x)\) 是拉格朗日基函数。
2. 拉格朗日插值函数的应用拉格朗日插值函数广泛应用于各种领域,包括数值分析、数值计算和工程应用等。
它可以用于曲线拟合、图像处理、信号处理等多种领域,并且在实际问题中具有重要的作用。
3. 使用Matlab进行拉格朗日插值函数的实例演示接下来,我将使用Matlab进行一个简单的拉格朗日插值函数的实例演示,以便更直观地理解这一主题。
```matlab% 拉格朗日插值函数的实例演示x = [1, 2, 3, 4]; % 设定节点y = [1, 4, 9, 16]; % 对应的函数值xx = 1:0.1:4; % 生成插值点yy = zeros(size(xx)); % 初始化插值结果for i = 1:length(x)L = ones(size(xx));for j = 1:length(x)if j ~= iL = L.*(xx-x(j))/(x(i)-x(j));endendyy = yy + y(i)*L; % 计算插值结果endplot(x,y,'o',xx,yy,'-'); % 绘制插值结果xlabel('x'); ylabel('y');legend('节点','插值结果');```在这个实例中,我们首先定义了一组节点\(x\) 和对应的函数值\(y\),然后生成了插值点 \(xx\),利用拉格朗日插值多项式计算了插值结果\(yy\),最后使用Matlab进行了绘图展示。
用MATLAB实现拉格朗日插值和分段线性插值之欧阳体创编

用MATLAB实现拉格朗日插值和分段线性插值1、实验内容:用MATLAB实现拉格朗日插值和分段线性插值。
2、实验目的:1)学会使用MATLAB软件;2)会使用MATLAB软件进行拉格朗日插值算法和分段线性差值算法;3、实验原理:利用拉格朗日插值方法进行多项式插值,并将图形显式出来。
4、实验步骤及运行结果(1)实现lagrange插值1)定义函数:f = 1/(x^2+1) 将其保存在f.m 文件中,具体程序如下:function y = f1(x)y = 1./(x.^2+1);2)定义拉格朗日插值函数:将其保存在lagrange.m 文件中,具体实现程序编程如下:function y = lagrange(x0,y0,x)m = length(x); /区间长度/n = length(x0);for i = 1:nl(i) = 1;endfor i = 1:mfor j = 1:nfor k = 1:nif j == kcontinue;endl(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j);endendendy = 0;for i = 1:ny = y0(i) * l(i) + y;end3)建立测试程序,保存在text.m文件中,实现画图:x=-5:0.001:5;y=(1+x.^2).^-1;p=polyfit(x,y,n);py=vpa(poly2sym(p),10)plot_x=-5:0.001:5;f1=polyval(p,plot_x);figureplot(x,y,‘r',plot_x,f1)输入n=6,出现下面的图形:通过上图可以看到当n=6是没有很好的模拟。
于是重新运行text.M并选择n=11由此可见n=11时的图像是可以很好的实现模拟(2)分段线性插值:建立div_linear.m文件。
具体编程如下/*分段线性插值函数:div_linear.m 文件*/function y = div_linear(x0,y0,x,n)%for j = 1:length(x)for i = 1:n-1if (x >= x0(i)) && (x <= x0(i+1))y = (x - x0(i+1))/(x0(i) - x0(i+1))*y0(i) + ( x - x0(i))/(x0(i+1)- x0(i))*y0(i+1);elsecontinue;endend%end测试程序(text2.m):n = input(‘输入n =:’);x0 = linspace( -5,5,n);for x = -5:0.01:5y = div_linear(x0,f(x0),x,n);hold on;plot(x,y,'r');plot(x,f(x),'b');end2)运行测试程序,这是会出现:输入n=:2)输入n=6,并按Enter键,出现:4)关掉图形界面后,重新运行程序,输入n=11,并按enter键后出现:5)再次关掉图形界面,输入n=100,并按enter键,出现:此时。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用MATLAB实现拉格朗日插值
1、作业内容:
用MATLAB实现拉格朗日插值
2、作业目的:
1)学会使用MATLAB软件;
2)会使用MATLAB软件进行拉格朗日插值算法
3、作业原理:
利用拉格朗日插值方法进行多项式插值,并将图形显式出来。
4、实验步骤及运行结果
(1)实现lagrange插值
1)定义函数: f = 1./(25*x^2+1)将其保存在f.m 文件中,具体程序如下:
function y = f1(x)
y = 1./(25x.^2+1);
2) 定义拉格朗日插值函数:将其保存在lagrange.m 文件中,具体实现程序编程如下:
function y = lagrange(x0,y0,x)
m = length(x); /区间长度/
n = length(x0);
for i = 1:n
l(i) = 1;
end
for i = 1:m
for j = 1:n
for k = 1:n
if j == k
continue;
end
l(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j);
end
end
end
y = 0;
for i = 1:n
y = y0(i) * l(i) + y;
End
3)建立测试程序,保存在text.m文件中,实现画图:
x=-1:0.001:1;
y=(1+25.*x.^2).^-1;
p=polyfit(x,y,n);
py=vpa(poly2sym(p),10)
plot_x=-1:0.001:1;
f1=polyval(p,plot_x);
figure
plot(x,y,‘r',plot_x,f1)输入n=6,出现下面的图形:
通过上图可以看到当n=6是没有很好的模拟。
于是重新运行text.M并选择n=15,运行,显示图形如下:
由此可见n=15时的图像是可以很好的实现模拟
5、总结:
通过本次课程作业,我初步掌握了MATLAB运用,加深了对于各种线性插值的理解;培养了独立工作能力和创造力;综合运用专业及基础知识,解决实际数学问题的能力;同时对数学的研究有了更深入的认识。