分段低次插值及三次样条函数插值MATLAB实验报告

分段低次插值及三次样条函数插值MATLAB实验报告

一、实验目的

本实验旨在通过使用MATLAB软件,在给定一组离散数据点的情况下,使用分段低次插值和三次样条函数插值方法来拟合数据,并比较两种方法

的优缺点。

二、实验原理

1.分段低次插值方法:

2.三次样条函数插值方法:

三次样条函数插值是一种相对复杂的插值方法,通过使用一些特定的

函数来拟合数据,函数在每个区间内都是三次多项式。三次样条函数包括

一些额外的条件,如函数在离散数据点处的一阶和二阶导数相等。

三、实验过程

1.分段低次插值:

(1)导入数据:首先将带有噪声的离散数据点导入MATLAB软件中,

使用plot函数绘制散点图以观察数据分布情况。

(2)计算插值多项式:使用polyfit函数对每个数据点的邻近区间

进行插值计算,得到一组低次多项式。

(3)绘制插值曲线:通过在每个区间内使用polyval函数计算多项

式的值,得到分段低次插值曲线。使用plot函数绘制插值曲线,并与原

始数据点进行比较。

2.三次样条函数插值:

(1)导入数据:同样地,将带有噪声的离散数据点导入MATLAB软件中,使用plot函数绘制散点图以观察数据分布情况。

(2)计算插值:使用spline函数进行三次样条函数拟合,得到一组三次样条函数。

(3)绘制插值曲线:通过在每个区间内使用ppval函数计算样条函数的值,得到三次样条函数插值曲线。使用plot函数绘制插值曲线,并与原始数据点进行比较。

四、实验结果及分析

通过分段低次插值方法和三次样条函数插值方法得到的拟合曲线,可以看出三次样条函数插值方法更加平滑,更好地拟合了原始数据点。而分段低次插值方法在每个区间内使用的是一个低次多项式,可能会导致曲线在区间之间出现明显的偏差,不能很好地拟合数据。

此外,三次样条函数插值方法在计算过程中需要解线性方程组,计算和存储量相对较大,运行速度较慢。而分段低次插值方法计算简单、效率高。

五、实验总结

本实验通过使用MATLAB软件,实现了分段低次插值和三次样条函数插值两种方法的拟合效果,并对比分析了两种方法的优缺点。分段低次插值方法计算简单、效率高,但拟合效果较差;而三次样条函数插值方法拟合效果更好,但计算和存储量较大,运行速度较慢。因此,在具体应用中需要根据实际情况选择合适的插值方法。

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 =用两组等距节点对龙格函数 2 1 (),(11)125f x x x = -≤≤+作多项式插值,对不同n 值,分别画出插值函数及()f x 的图形。 6、下列数据点的插值

可以得到平方根函数的近似,在区间[0,64]上作图。 (1)用这9个点作8次多项式插值8()L x 。 (2)用三次样条(第一边界条件)程序求()S x 。 7、对于给函数2 1 ()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 ~= j mu = mu * (xa - x(j) ) / ( x(i) - x(j) ); else continue end end ya = ya + y(i) * mu ; mu = 1; end 2、Newton 源代码: function ya = newton(x,y,xa) %x 所有已知插值点 %y 插值点对应函数值 %xa 所求点,自变量 %ya 所求点插值估计量 %建立系数零矩阵D 及初始化:

三次样条插值的MATLAB实现

三次样条插值的MATLAB实现 首先,我们需要导入数据点的横坐标和纵坐标数据。假设我们有一个 长度为n的向量x,表示横坐标的数据点;另一个长度为n的向量y,表 示纵坐标的数据点。 接下来,我们可以使用MATLAB中的interp1函数进行三次样条插值。interp1函数的基本语法是: yq = interp1(x, y, xq, 'spline') 其中x和y是已知的数据点,xq是要计算函数值的位置,'spline' 表示要进行三次样条插值。该函数将返回xq处的函数值向量yq。 然而,直接使用interp1函数可能存在以下两个问题:一是x必须是 单调递增的,二是xq必须在x的取值范围内。因此,在进行插值之前, 我们需要对数据点进行预处理。 首先,我们需要确保数据点按照横坐标的大小进行排序。可以使用 sort函数对x和y进行排序,并且保持它们之间的对应关系:[x, sortIndex] = sort(x); y = y(sortIndex); 接下来,我们需要确定插值区间。插值区间是指每个xq对应的x的 区间。我们可以使用diff函数计算x的差分向量,并将其与xq进行比较 来确定插值区间的索引: diffVector = diff(x); intervalIndex = sum(xq > x(1:end-1), 2) + 1;

最后,我们可以使用interp1函数进行三次样条插值。将插值区间的索引和xq传递给interp1函数,就可以得到插值点的函数值向量yq:yq = interp1(x, y, xq, 'spline'); 至此,我们已经完成了三次样条插值的MATLAB实现。 下面是一个完整的MATLAB函数实现示例: ```MATLAB function yq = cubicSplineInterpolation(x, y, xq) % Sort data points by x [x, sortIndex] = sort(x); y = y(sortIndex); % Calculate interpolation interval index diffVector = diff(x); intervalIndex = sum(xq > x(1:end-1), 2) + 1; % Perform cubic spline interpolation yq = interp1(x, y, xq, 'spline'); end ``` 在使用此函数时,只需将预处理后的数据点向量x和y,以及要计算函数值的位置向量xq传递给cubicSplineInterpolation函数,即可获得插值点的函数值向量yq。

实验

数学实验报告 实验序号: 日期: 年 月 日 班级 姓名 学号 实验名称 插值与拟合 问题背景与实验目的: 1、掌握用MATLAB 计算拉格朗日、分段线性、三次样条三种 插值的方法,改变节点的数目,对三种插值结果进行初步分析。 2、掌握用MA TLAB 作线性最小二乘拟合的方法。 3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。 实验内容:1..选择一些函数,在n 个节点上(n )不要太大,如5~11)用拉格朗日,分段线 性,三次样条三种插值方法,,计算m 各插值点的函数值(m 要适中,如50~100).通过数值和图形的输出,将三种插值结果与精确值进行比较.适当增加n ,再作比较,由此作初步分析.下列函数供选择参考: a. y=sin x ,0≦x ≦2π; b. 122 (1),11y x x =--≤≤; c. 10 cos ,22;y x x =-≤≤ d. 2exp(),22;y x x =--≤≤ 2.用12 y x =在x=0,1,4,9,16产生5个节点15,...,P P .用不同的节点构造插值公式来计算x=5处的插值(如用15,...,P P ;14,...,P P ;24,...,P P 等)与精确值比较进行分析。 5.对于实验1中的录像机计数器,自己实测一组数据(或利用给出的数据),确定模型2 t an bn =+中的系数a,b. 6.用电压V=10伏的电池给电容器充电,电容器上t 时刻的电压为0()()t v t V V V e - τ =--,其中0V 是电容器的初始电压,τ是充电常数。试由下面一组t ,V 数据确定0V 和τ . t/s 0.5 1 2 3 4 5 7 9 V/V 6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63 7.核物理手册上给出氢核(质子)和重氢核的初始能量与它们在空气中射程的关系如下表所示: E/MeV 1.0 2.0 3.0 4.0 5.0 P/cm 2.30 7.20 14.10 23.10 33.90 D/cm 1.72 4.61 8.78 14.40 28.80 其中E 为初始能量(6 10电子伏特),P 和D 分别为氢核和重氢核的射程。 1) 问E=1.4,2.5,5.7(MeV )时P=?,D=?.更详细的表给出,E=1.4时P=3.91; E=2.5时P=10.4,D=6.51.试与计算结果比较。 2) 问P=8.21时,E=?(精确值为2.1698);D=10.42时,E=?(精确值为3.3140);P=?12.45时,E=?(精确值为7.7740)。

数值分析实验报告-插值、三次样条

实验报告:牛顿差值多项式&三次样条 问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数2 1 ()25f x x 作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。 实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。应用所编程序解决实际算例。 实验要求: 1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。 实验原理: 详见《数值分析 第5版》第二章相关内容。 实验内容: (1)牛顿插值多项式 1.1 当n=10时: 在Matlab 下编写代码完成计算和画图。结果如下:

代码: clear all clc x1=-1:0.2:1; y1=1./(1+25.*x1.^2); n=length(x1); f=y1(:); for j=2:n for i=n:-1:j f(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1)); end end syms F x p; F(1)=1;p(1)=y1(1); for i=2:n F(i)=F(i-1)*(x-x1(i-1)); p(i)=f(i)*F(i); end syms P P=sum(p); P10=vpa(expand(P),5); x0=-1:0.001:1;

y0=subs(P,x,x0); y2=subs(1/(1+25*x^2),x,x0); plot(x0,y0,x0,y2) grid on xlabel('x') ylabel('y') P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36* x^4+2.0202e-14*x^3-16.855*x^2-6.6594e-16*x+1.0 并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。 Fig.1 牛顿插值多项式(n=10)函数和原函数图形 从图形中我们可以明显的观察出插值函数在两端点处发生了剧烈的波动,产生了极大的误差,即龙格现象,当n=20时,这一现象将更加明显。 1.2 当n=20时:

三次样条插值实验报告

三次样条插值实验报告 以下是一份关于三次样条插值实验的报告。 一、实验目的 本实验的目的是通过使用三次样条插值方法,在给定的离散点上拟合出一个平滑的曲线,并通过对比与实际曲线的偏差来评估插值结果的准确性。 二、实验原理 三次样条插值是一种在小区间上使用多项式拟合的方法。它通过使用三次多项式拟合每个小区间,并满足一定的条件,使得整个插值曲线在给定的离散点上平滑连续。具体来说,三次样条插值要求插值曲线在每个小区间上满足三个条件:函数值相等、一阶导数相等和二阶导数相等。 三、实验步骤 2.计算插值曲线的系数:使用三次样条插值的公式,根据离散点的数据计算出每个小区间上的拟合多项式的系数。 3.构建插值曲线:将每个小区间上的拟合多项式组合在一起,形成整个插值曲线。根据小区间上的系数和数值进行插值计算,得到插值曲线上的点坐标。 4.绘制插值曲线:根据计算得到的插值点坐标,使用绘图工具将插值曲线绘制在坐标轴上。 5.评估插值结果:通过对比插值曲线与实际曲线的偏差,评估插值结果的准确性。

四、实验结果 在本次实验中,我们使用三次样条插值方法来拟合给定的离散点。通 过计算得到的插值曲线,我们可以看到其与实际曲线之间的偏差相对较小,插值曲线在给定的离散点上表现出了较好的平滑性和连续性。 五、实验讨论 在实验过程中,我们注意到在一些情况下,三次样条插值可能会出现 插值曲线的振荡问题,即在一些小区间上插值结果可能会出现较大的误差。这可能是由于离散点的取样不均匀或数据噪声的存在所导致的。为了减少 这种问题的影响,可以采用其他插值方法或对数据进行平滑处理。 六、实验总结 通过本次实验,我们学习了使用三次样条插值方法来进行曲线拟合的 基本原理和步骤。实验结果表明,三次样条插值能够在给定的离散点上得 到一个平滑的曲线,并且与实际曲线的偏差较小。然而,在实际应用中需 要注意插值方法的选择,并根据具体情况对数据进行预处理,以确保插值 结果的准确性和可靠性。

分段低次插值及三次样条函数插值MATLAB实验报告

分段低次插值及三次样条函数插值MATLAB实验报告 一、实验目的 本实验旨在通过使用MATLAB软件,在给定一组离散数据点的情况下,使用分段低次插值和三次样条函数插值方法来拟合数据,并比较两种方法 的优缺点。 二、实验原理 1.分段低次插值方法: 2.三次样条函数插值方法: 三次样条函数插值是一种相对复杂的插值方法,通过使用一些特定的 函数来拟合数据,函数在每个区间内都是三次多项式。三次样条函数包括 一些额外的条件,如函数在离散数据点处的一阶和二阶导数相等。 三、实验过程 1.分段低次插值: (1)导入数据:首先将带有噪声的离散数据点导入MATLAB软件中, 使用plot函数绘制散点图以观察数据分布情况。 (2)计算插值多项式:使用polyfit函数对每个数据点的邻近区间 进行插值计算,得到一组低次多项式。 (3)绘制插值曲线:通过在每个区间内使用polyval函数计算多项 式的值,得到分段低次插值曲线。使用plot函数绘制插值曲线,并与原 始数据点进行比较。 2.三次样条函数插值:

(1)导入数据:同样地,将带有噪声的离散数据点导入MATLAB软件中,使用plot函数绘制散点图以观察数据分布情况。 (2)计算插值:使用spline函数进行三次样条函数拟合,得到一组三次样条函数。 (3)绘制插值曲线:通过在每个区间内使用ppval函数计算样条函数的值,得到三次样条函数插值曲线。使用plot函数绘制插值曲线,并与原始数据点进行比较。 四、实验结果及分析 通过分段低次插值方法和三次样条函数插值方法得到的拟合曲线,可以看出三次样条函数插值方法更加平滑,更好地拟合了原始数据点。而分段低次插值方法在每个区间内使用的是一个低次多项式,可能会导致曲线在区间之间出现明显的偏差,不能很好地拟合数据。 此外,三次样条函数插值方法在计算过程中需要解线性方程组,计算和存储量相对较大,运行速度较慢。而分段低次插值方法计算简单、效率高。 五、实验总结 本实验通过使用MATLAB软件,实现了分段低次插值和三次样条函数插值两种方法的拟合效果,并对比分析了两种方法的优缺点。分段低次插值方法计算简单、效率高,但拟合效果较差;而三次样条函数插值方法拟合效果更好,但计算和存储量较大,运行速度较慢。因此,在具体应用中需要根据实际情况选择合适的插值方法。

关于三次样条插值函数的学习报告

关于三次样条插值函数的学习报告 三次样条插值函数是一种常用的插值方法,它利用多项式函数的特性 来逼近一组数据点,并且具有较高的精度和平滑性。本学习报告将对三次 样条插值函数进行详细介绍,并探讨其在实际应用中的优缺点。 首先,三次样条插值函数的数学表达式可以表示为: S(x) = \sum_{i=0}^n {a_i(x-x_i)^3 + b_i(x-x_i)^2 + c_i(x-x_i) + d_i} 其中,n是数据点的数量,a_i、b_i、c_i、d_i是通过求解一系列方 程得到的系数。这些方程的目标是使得插值函数在每个数据点之间的一阶 和二阶导数连续。 对于每个区间[x_i,x_{i+1}],我们可以得到一个关于未知系数a_i、b_i、c_i、d_i的线性方程组。通过求解这些方程组,我们可以确定插值 函数在每个区间的系数。最终,我们得到一个全局的三次插值函数,它在 整个插值区域内都具有较高的拟合精度。 三次样条插值函数的优点之一是它可以通过调整插值区间的数量来灵 活控制插值的精度。当插值区间数量增加时,插值函数与原始数据点之间 的误差会减小,从而获得更精确的插值结果。另外,三次样条插值函数还 具有较好的平滑性,能够克服其他插值方法中可能出现的震荡现象,使得 插值函数更加平滑。 然而,三次样条插值函数也存在一些缺点。首先,它对于数据点分布 较为密集的情况下,有时会出现振荡现象,导致插值函数不够平滑。其次,三次样条插值函数在插值区间的两个端点附近可能无法很好地逼近原始数据。这是因为在每个区间的端点处,插值函数需要满足特定的边界条件,

通常是一阶或二阶导数为零。这种约束可能导致插值函数在端点处的拟合程度较低。 为了解决上述问题,可以使用更高阶的样条插值函数,如五次样条插值函数。五次样条插值函数通过增加插值函数的阶数,以获取更高的拟合精度和平滑性。此外,还可以尝试使用其他插值方法,如非均匀插值、基函数插值等,以应对不同的插值需求。 总结来说,三次样条插值函数是一种精度较高且平滑的插值方法,具有较好的数学属性。然而,它也存在一些问题,如在数据点分布较密集和端点处的拟合效果较差。在实际应用中,我们应根据具体需求选择合适的插值方法,并结合数据分析和实验结果进行评估和优化。

LAB03_三次样条插值实验

Lab03.三次样条插值实验 【实验目的和要求】 1.使学生深入理解三次样条插值法,深入进行程序设计能力训练; 2.对第一与第二种边界条件,按三弯矩法,通过用Matlab 语言设计计算三次样条插值的程序,以提高学生程序设计的能力。 【实验内容】 1.根据Matlab 语言特点,描述三次样条插值法。 2.对第一与第二种边界条件,按三弯矩法,用Matlab 语言设计计算三次样条插值的程序。 3 对(1) 自然边界条件0)0.1()2.0(=''=''S S ; (2) 第一种边界条件55741.1)0.1( ,20271 .0)2.0(='='S S . 输出用追赶法解出的弯矩向量),,(521M M M 和)1.02.0(i S + (i =0,1,…, 8)的值,并画出)(x S y =的图形。 4.完成教材P45例8的计算,并将计算结果与Langrage 插值法计算的结果 进行比较,由此说明三次样条插值的优越性。 【实验仪器与软件】 1.CPU 主频在1GHz 以上,内存在128Mb 以上的PC ; 2.Matlab 6.0及以上版本。 实验讲评: 实验成绩: 评阅教师: 2011 年 月 日

Lab03.三次样条插值实验 一、算法描述 1.根据Matlab语言特点,描述三次样条插值法. 答: S(x) 在[x j, x j+1](j=1,2,⋯,n-1)上是三 次多项式,于是S"(x)在[x j, x j+1] 上是一次多项式, 如果S"(x) 在[x j,x j+1](j=1,2,⋯,n-1)两端点上的值 已知,设S"(x j)=M j,S"(x j+1)=M j+1,则S"(x) 的表达 式为: = ,其中h j = x j+1-x j,对S"(x) 进行两次积分,则得到1 个具有2 二、程序设计 2.对第一与第二种边界条件,按三弯矩法,用Matlab语言设计计算三次样条插值的程序。 答: function s=selfspline(x0,y0,x) %x为待求值,按第二种边界条件求解 %x0,y0为插值节点,df为一介或二介导数 if (length(x0)==length(y0)) n=length(x0); else disp('x0.y0维数不相等!'); return; end %对x0进行由小到大排序

三次样条插值的MATLAB实现

MATLAB 程序设计期中考查 在许多问题中,通常根据实验、观测或经验得到的函数表或离散点上的信息,去研究分析函数的有关特性。其中插值法是一种最基本的方法,以下给出最基本的插值问题——三次样条插值的基本提法: 对插值区间[]b a ,进行划分:b x x x a n ≤<⋯⋯<<≤10,函数()x f y =在节点 i x 上的值()()n i x f y i i ⋯⋯==,2,1,0,并且如果函数()x S 在每个小区间[]1,+i i x x 上 是三次多项式,于[]b a ,上有二阶连续导数,则称()x S 是[]b a ,上的三次样条函数,如果()x S 在节点i x 上还满足条件 ()()n i y x S i i ⋯⋯==,1,0 则称()x S 为三次样条插值函数。 三次样条插值问题提法:对[]b a ,上给定的数表如下. 求一个分段三次多项式函数()x S 满足插值条件()()n i y x S i i ⋯⋯==,1,0 式,并在 插值区间[]b a ,上有二阶连续导数。这就需要推导三次样条插值公式: 记()x f '在节点i x 处的值为()i i m x f ='(n i ⋯⋯=,1,0)(这不是给定插值问题数表中的已知值)。在每个小区间[]1,+i i x x 利用三次Hermite 插值公式,得三次插值公式: ()()()()1111+++++++=i i i i i i i i i m m x y x y x x S ββαα,[]1,+∈i i x x x 。为了得到这个公式需要n 4个条件: (1).非端点处的界点有n 2个;(2).一阶导数连续有1-n 个条件;(3).二阶导 数连续有1-n 个条件,其中边界条件:○1()()n n m x S m x S ='=' 00 ○2()()αα=''=''n x S x S 00

三次样条插值函数matlab

三次样条插值函数matlab 一、 MATLAB 三次样条插值函数 MATLAB 提供了一系列的函数可以进行数据的插值,样条插值函数提供了基于曲线和曲面的插值,MATLAB 主要提供了两类样条插值函数:一类是 spline 函数,另一类是 csapi 函数。 1. spline 函数 spline 函数是基于经典的三次样条插值理论,它接受三维点集并用一条三次样条曲线连接。使用 spline 函数时,您可以向函数提供三维点集,例如: x=[1,2,3,4,5]; y=[2,8,16,30,50]; z=[3,6,12,24,42]; spline_curve=spline(x,y,z); 2. csapi 函数 csapi 函数是 MATLAB 的一种“三次样条插值”,允许你使用固定的方程,更有效地解决插值问题。它可以把一组三维点集拟合成一条三次样条曲线。使用 csapi 时,您可以向函数提供三维点集,例如: x=[1,2,3,4,5]; y=[2,8,16,30,50]; z=[3,6,12,24,42]; csapi_curve=csapi(x,y,z);

二、MATLAB 三次样条插值函数使用 1. spline 函数 spline 函数可以实现三次样条曲线的插值,该函数的基本格式如下: y2=spline(x,y,x2) 其中,x 为一个由 N 个不重复的坐标值组成的向量,y 为长度为 N 的向量,x2 为要求的坐标值向量;而 y2 为长度为 length(x2) 的向量,其中的每个元素表示一个拟合结果。 例如,有以下数据:x=[2.1;3.3;4.2;5.1], y=[7.2;11.7;15.3;20.5],现在要求 x=2.8 时,插值结果 y2: x=[2.1;3.3;4.2;5.1]; y=[7.2;11.7;15.3;20.5]; x2=2.8; y2=spline(x,y,x2) 2. csapi 函数 csapi 函数可以实现三次样条曲线的插值,该函数的基本格式如下: pp=csapi(x,y) 其中,x 为一个由 N 个不重复的坐标值组成的向量,y 为长度为 N 的向量;而 pp 为三次样条插值函数的拟合结果。

三次样条插值

三次样条插值的数值实验 姓名: 王维滨 学号:0842011157 姓名: 李佳乐 学号:0842011034 姓名: 谢朝 学号:0842011062 姓名: 杨其荣 学号:0842011072 1.实验项目的性质和任务 对三次样条插值进一步理解,并编写matlab 程序,实现这些功能 2.算法设计和matlab 编程。 总前提: x i 第i 点的横坐标 i y 第i 点的纵坐标 i M ,,s 的记号 ,,,,,,23()()()()()()()2!3! i i i i i i i s x s x s x y s x x x x x x x =+-+-+- 有数值逼近书上的推导,我们令: 111i i i i i x x u x x -+--=-,111 i i i i i x x x x λ++--=-,11111111f (,,)i i i i i i i i i i i i i y y y y x x x x x x x x x +-+--++------=- 由于未知数的数目多于方程的个数,我们需要增加两个条件才能唯一确定一个分段三次函数 1)D1的三次样条插值 a .实验方案与原理: 我们加上条件:,,,,11()(),()()n n s x f x s x f x == 我们建立三弯矩方程组: 1211211111 126(,,)26(,,),2,3.....126(,,)i i i i i i i i n n n n n M M f x x x u M M M f x x x i n M M f x x x λ-+-+--+=⎧⎪++==-⎨⎪+=⎩ 然后采用追赶法迭代求方程组,但是我们在程序中采用简单的方法(矩阵计算)直接求解降低编程难度, 2)D2三次样条插值 223123211i 11112 111126(,,)26(,,),3,4.....226(,,)i i i i i i i n n n n n n n n M M f x x x u M u M M M f x x x i n u M M f x x x M λλλ-+-+----+-+=-⎧⎪++==-⎨⎪++=-⎩ 3)D3三次样条插值 22321231i 11121 1126(,,)26(,,),3,4.....126(,,)n i i i i i i i n n n n n n n M M u M f x x x u M M M f x x x i n M u M M f x x x λλλ-+-+--+++=⎧⎪++==-⎨⎪++=⎩

matlab牛顿插值法三次样条插值法

(){}2 1 ()(11),5,10,20: 1252 1()1,(0,1,2,,)()2,(0,1,2,,)()()2 35,20:1100 (i i i i n n k k k Newton f x x n x f x x i i n f x n x y i n Newton N x S x n x k y f x =-≤≤=+=-+====-+ =L L 题目:插值多项式和三次样条插值多项式。 已知对作、计算函数在点处的值; 、求插值数据点的插值多项式和三次样条插值多项式;、对计算和相应的函数值),()() (1,2,,99)4:()max ()()max ()n k n k n k n k n k n k k k N x S x k E N y N x E S y S x ==-=-L 和; 、计算,; 解释你所得到的结果。 算法组织: 本题在算法上需要解决的问题主要是:求出第二问中的Newton 插值多项式 )(x N n 和三次样条插值多项式()n S x 。如此,则第三、四问则迎刃而解。计算两 种插值多项式的算法如下: 一、求Newton 插值多项式)(x N n ,算法组织如下: Newton 插值多项式的表达式如下: )())(()()(110010--⋅⋅⋅--+⋅⋅⋅+-+=n n n x x x x x x c x x c c x N 其中每一项的系数c i 的表达式如下: 1102110) ,,,(),,,(),,,(x x x x x f x x x f x x x f c i i i i i -⋅⋅⋅-⋅⋅⋅= ⋅⋅⋅=- 根据i c 以上公式,计算的步骤如下: ⎪⎪ ⎪⎩⎪ ⎪⎪ ⎨⎧⋅⋅⋅+⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅----) ,,,,(1) ,,,(),,,,(),(,),,(2)(,),(),(11101111011010n n n n n n n n x x x x f n x x x f x x x f n x x f x x f x f x f x f 、计算、计算、计算、计算

matlab插值实验报告

matlab插值实验报告 Matlab插值实验报告 引言: 在数学和工程领域中,插值是一种常见的数据处理方法。它通过已知数据点之间的推断来填补数据的空缺部分,从而获得连续的函数或曲线。Matlab是一种功能强大的数值计算软件,具备丰富的插值函数和工具包。本实验旨在通过使用Matlab进行插值实验,探索插值方法的原理和应用。 实验步骤: 1. 数据准备 首先,我们需要准备一组实验数据。以一个简单的二维函数为例,我们选择f(x) = sin(x),并在区间[0, 2π]上取若干个等间隔的点作为已知数据点。 2. 线性插值 线性插值是插值方法中最简单的一种。它假设函数在两个已知数据点之间是线性变化的。在Matlab中,可以使用interp1函数进行线性插值。我们将已知数据点和插值结果绘制在同一张图上,以比较它们之间的差异。 3. 多项式插值 多项式插值是一种常用的插值方法,它通过已知数据点构造一个多项式函数来逼近原始函数。在Matlab中,polyfit函数可以用来拟合多项式。我们可以选择不同的多项式次数进行插值,并观察插值结果与原始函数之间的差异。 4. 样条插值 样条插值是一种更为精确的插值方法,它通过在每个小区间内构造局部多项式函数来逼近原始函数。在Matlab中,可以使用spline函数进行样条插值。我们

可以选择不同的插值节点数目,并比较插值结果的平滑程度和逼近效果。 5. 拉格朗日插值 拉格朗日插值是一种基于多项式的插值方法,它通过构造插值多项式来逼近原始函数。在Matlab中,可以使用polyval函数进行拉格朗日插值。我们可以选择不同的插值节点数目,并观察插值结果与原始函数之间的差异。 实验结果: 通过实验,我们得到了不同插值方法的结果,并将其与原始函数进行了比较。在线性插值中,我们观察到插值结果与原始函数之间存在一定的误差,特别是在函数变化较快的区域。而多项式插值和样条插值在逼近原始函数方面表现更好,特别是在插值节点数目较多的情况下。拉格朗日插值在插值节点数目较少时,可能会出现振荡现象。 讨论与总结: 插值方法在实际应用中具有广泛的意义。通过对实验结果的分析,我们可以得出以下结论: 1. 不同的插值方法适用于不同的数据类型和函数特点。在选择插值方法时,需要考虑数据的分布和函数的变化特点。 2. 插值节点的数目对插值结果的精度和平滑程度有一定影响。节点数目越多,插值结果越精确,但计算复杂度也会增加。 3. 在实际应用中,插值方法常常与其他数据处理方法相结合,以获得更好的结果。 综上所述,本实验通过使用Matlab进行插值实验,探索了不同插值方法的原理和应用。插值方法是一种常用的数据处理技术,在科学研究和工程实践中具有

插值法与MATLAB应用

插值法与MATLAB应用 2007-11-02 10:35 实验2 插值法与MATLAB应用 一、实验名称:插值法与MATLAB应用。 二、实验目的:理解插值的基本原理,掌握常用算法的设计,掌握用MATLAB实现插值。 三、实验题目:已知数据如下: 0.2 0.4 0.6 0.8 1.0 0.9798652 0.9177710 0.8080348 0.6386093 0.3843735 四、实验要求: 1、设计全区间上拉格朗日插值程序或者Newton插值程序。利用MATLAB在第一个图中画出离散数据及插值函数曲线。 2、利用MATLAB画出分段线性插值函数,并与(1)作对比说明。 3、对于自然边界条件,利用MATLAB在第二个图中画出离散数据,再画出通过表中型值点并满足边界条件的三次样条插值函数。 4、对于第一种边界条件,利用MATLAB在第三个图中画出离散数据,再画出通过表中型值点并满足边界条件的三次样条插值函数。 5、例举一个闭区间上的连续函数,用画图或列表的方式观察与体会Runge现象,分别用下面方法对比说明:1)10次Lagrange;2)分段低次插值;3)分段三次样条插值。 6、通过这个实验,谈谈你对插值方法有何理解、三次样条插值有何特点? 五、实验内容: 1、设计全区间上拉格朗日插值程序或者Newton插值程序。利用MATLAB在第一个图中画出离散数据及插值函数曲线。编写拉格朗日插值多项式函数内容为: function f=lagfun(x) a=[0.2,0.4,0.6,0.8,1.0];b=[0.9798652,0.9177770,0.8080348,0.6386093,0.3843735]; for i=1:5 L(i)=1; for j=1:5 if j~=i L(i)=L(i)*(x-a(j))/(a(i)-a(j)); end end end f=0; for i=1:5 f=f+L(i)*b(i); end 画图程序内容为: fplot('lagfun',[0,1]);hold on a=[0.2,0.4,0.6,0.8,1.0];b=[0.9798652,0.9177770,0.8080348,0.6386093,0.3843735];plot(a, b,'o') 图形为:

数学实验MATLAB报告

数学实验报告

一、实验目的 1.掌握四种经典的插值方法:拉格朗日插值法,牛顿插值法,分段插值法,三次样条插值法。 2.学会用MATLAB软件进行数据插值计算。 3.学会用数据插值,数据拟合方法建立数学模型并求解。 二实验内容 习题1 海水温度随着深度的变化而变化,海面温度较高,随着深度的增加,海水温度越来越低。通过实验测得一组海水深度h与温度t的数据如下: 要求: 1.分别用多种数据插值方法找出温度t与深度h之间的一个近似函数关系; 2.找出温度变化最快的深度位置。通过查询相关资料,了解这个特殊位置的实际应用价值。 三、实验思路 1、先分别用拉格朗日插值、线性插值、三次样条插值进行插值计算,并求出变化最快的深度。 2、由于在全数据插值中有两个龙格库塔现象,故考虑把数据分为两段,其中前三个数据为第一段,分别用拉格朗日插值、线性插值、

三次样条插值计算,并分段求出变化最快的深度。但缺陷也很明显,体现在仍有一个龙格库塔现象没有消除,且第三个数据点附近函数不光滑。 四、程序展示 (一)、插值计算的综合程序如下: 注:p1,p2,p31,p32,p41,p42表示各数据用多项式拟合所得函数关系式re1为全段三次样条插值代表的最快变化温度 re2为全段线性插值代表的最快变化温度 re3为第一段三次样条插值代表的最快变化温度 re4为第二段三次样条插值代表的最快变化温度 re5为第一段拉格朗日插值代表的最快变化温度 re6为第二段拉格朗日插值代表的最快变化温度 t=[23.5,22.9,20.1,19.1,15.4,11.5,9.5,8.2]; t1=[23.5,22.9,20.1]; t2=[20.1,19.1,15.4,11.5,9.5,8.2]; h=[0,1.5,2.5,4.6,8.2,12.5,16.5,26.5]; h1=[0,1.5,2.5]; h2=[2.5,4.6,8.2,12.5,16.5,26.5]; h0=0:0.01:26.5; h01=0:0.01:2.5; h02=2.5:0.01:26.5; lglr=lglrcz(h,t,h0); xxcz=interp1(h,t,h0); sccz=interp1(h,t,h0,'spline'); subplot(1,2,1) plot(h,t,'*',h0,lglr,'r-',h0,xxcz,'b-',h0,sccz ,'k-');grid; title('分段之前') axis([0 30 0 30]) hold on; lglr1=lglrcz(h1,t1,h01); xxcz1=interp1(h1,t1,h01); sccz1=interp1(h1,t1,h01,'spline'); lglr2=lglrcz(h2,t2,h02); xxcz2=interp1(h2,t2,h02); sccz2=interp1(h2,t2,h02,'spline'); subplot(1,2,2) plot(h,t,'*',h01,lglr1,'r-',h01,xxcz1,'b-',h 01,sccz1,'k-',h02,lglr2,'r-',h02,xxcz2,'b-',h02,scc z2,'k-');grid; title('分段之后') axis([0 30 0 30]) %%%%%%%%%%%%%%%%%% %% p1=polyfit(h0,sccz,3) p2=polyfit(h0,sccz,4) p31=polyfit(h01,lglr1,3) p32=polyfit(h02,lglr2,3) p41=polyfit(h01,sccz1,3) p42=polyfit(h02,sccz2,3) %%%%%%%%%%%%%%%%%% z1=diff(sccz);

数学实验“等距节点插值,Hermite插值,分段插值(线性,二次,三次)”实验报告(内含matlab程序)

西京学院数学软件实验任务书

- 1 - 实验十六实验报告 一、实验名称:等距节点插值,Hermite 插值,分段插值(线性,二次,三次)。 二、实验目的:进一步熟悉等距节点插值,Hermite 插值,分段插值(线性,二次,三次)。 三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。 四、实验原理: 1.等距节点插值: 差分分为前向差分、后向差分和中心差分三种,它们的记法及定义如下所示: n 阶前向差分公式111()()()n n n i i i f x f x f x --+∆=∆-∆ n 阶后向差分公式111()()()n n n i i i f x f x f x ---∇=∇-∇ n 阶中心差分公式11 112 2 ()()()n n n i i i f x f x f x δδδ--+ -=- 其中:∆ -前向差分;∇ -后向差分;δ -中心差分。 假设000()()()()i i i i f x f x f x f x δ∆=∇==,为了方便计算,构造差分表(()i i f f x =)。 这里只说明前向牛顿插值,其多项式可表示为如下形式: 0()()N x N x th =+

20000()()()()12n t t t f x f x f x f x n ⎛⎫⎛⎫⎛⎫ =+∆+∆++∆ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭ 其中h 为步长,10h x x =-,且的取值范围为0t n ≤≤。 2.埃尔米特插值: 埃尔米特插值法满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值,对于有高阶导数的情况,埃尔米特插值多项式比较复杂,在实际应用中,常常遇到的是函数值与一阶导数值给定的情况,在这种情况下,n 个节点12,,n x x x 的埃尔米特插值多项式()H x 的表达形式如下所示: 1()[()(2)]n i i i i i i i H x h x x a y y y ==--+∑ 其中(),''()i i i i y y x y y x == 2 111 ( ),n n j i i j j i j i j j i j i x x h a x x x x ==≠≠-==--∑ ∏ 3.分段插值: 给定插值节点i x 、节点函数值i y 及对应的导数值 '(0,1,2, ,)i y i N =,则满足下面条件 (),'()'i i i i p x y p x y == 的分段埃尔米特插值函数()p x 的表达式如下所示:

相关主题
相关文档
最新文档