三次样条插值实验报告

三次样条插值实验报告

以下是一份关于三次样条插值实验的报告。

一、实验目的

本实验的目的是通过使用三次样条插值方法,在给定的离散点上拟合出一个平滑的曲线,并通过对比与实际曲线的偏差来评估插值结果的准确性。

二、实验原理

三次样条插值是一种在小区间上使用多项式拟合的方法。它通过使用三次多项式拟合每个小区间,并满足一定的条件,使得整个插值曲线在给定的离散点上平滑连续。具体来说,三次样条插值要求插值曲线在每个小区间上满足三个条件:函数值相等、一阶导数相等和二阶导数相等。

三、实验步骤

2.计算插值曲线的系数:使用三次样条插值的公式,根据离散点的数据计算出每个小区间上的拟合多项式的系数。

3.构建插值曲线:将每个小区间上的拟合多项式组合在一起,形成整个插值曲线。根据小区间上的系数和数值进行插值计算,得到插值曲线上的点坐标。

4.绘制插值曲线:根据计算得到的插值点坐标,使用绘图工具将插值曲线绘制在坐标轴上。

5.评估插值结果:通过对比插值曲线与实际曲线的偏差,评估插值结果的准确性。

四、实验结果

在本次实验中,我们使用三次样条插值方法来拟合给定的离散点。通

过计算得到的插值曲线,我们可以看到其与实际曲线之间的偏差相对较小,插值曲线在给定的离散点上表现出了较好的平滑性和连续性。

五、实验讨论

在实验过程中,我们注意到在一些情况下,三次样条插值可能会出现

插值曲线的振荡问题,即在一些小区间上插值结果可能会出现较大的误差。这可能是由于离散点的取样不均匀或数据噪声的存在所导致的。为了减少

这种问题的影响,可以采用其他插值方法或对数据进行平滑处理。

六、实验总结

通过本次实验,我们学习了使用三次样条插值方法来进行曲线拟合的

基本原理和步骤。实验结果表明,三次样条插值能够在给定的离散点上得

到一个平滑的曲线,并且与实际曲线的偏差较小。然而,在实际应用中需

要注意插值方法的选择,并根据具体情况对数据进行预处理,以确保插值

结果的准确性和可靠性。

数值分析实验报告

数值分析实验报告 一、实验名称 Lagrange插值与三次样条插值 二、实验目的及要求 1.掌握Lagrange插值和三次样条插值的基本思路和步骤. 2. 培养Matlab编程与上机调试能力. 三、实验环境 计算机,MATLAB软件 四、实验内容 3.下列数据点的插值 可以得到平方根函数的近似,在区间[0,64]上作图。 (1)用这9个点作8次多项式插值L 8 (x). (2)用三次样条(第一边界条件)程序求S(x). 从得到结果看在[0,64]上,哪个插值更精确;在区间[0,1]上,两种插值哪个插值更精确? 五、算法描述及实验步骤 (1)拉格朗日插值多项式 若n次多项式l j (x)(j=0,1,...,n)在n+1个节点x

若在节点x j 上给定函数值yj=f(x j )(j=0,1,...,n),并成立S(x j )=y j , j=0,1,...,n, 则称S(x)为三次样条插值函数。 六、调试过程及实验结果 见附录 七、总结 通过本次学习Matlab,掌握了拉格朗日和样条插值的程序和算法,为以后处理数据提供一种更加简便,准确的方法。 八、附录(源程序清单) 1.拉格朗日插值 clear all x=[0,1,4,9,16,25,36,49,64]; y=[0,1,2,3,4,5,6,7,8]; f=Language(x,y); plot(x,y); hold on legend('L(x)'); 2.三次样条插值 clear all x=[0,1,4,9,16,25,36,49,64]; y=[0,1,2,3,4,5,6,7,8]; %边界条件s'(0)=0,s'(64)=1/16, pp=csape(x,y,'complete',[0,1/16]); xi=0:0.1:64; yi=ppval(pp,xi); plot(x,y,'o',xi,yi); hold on legend('S(x)'); 3.做出平方根函数,拉格朗日插值函数,三次样条插值函数在[0,64]区间上的图像。

数值分析作业-三次样条插值

数值计算方法作业 实验 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- =2 2 21)(π 求f 和f 的近似值 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲 线比较插值结果。 实验 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。

实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (2) 三次样条插值函数的思想最早产生于工业部门。作为工业应用的例子,考 虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一段数据如下: k x 0 1 2 3 4 5 6 7 8 9 10 k y k y ' 算法描述: 拉格朗日插值: 其中 是拉格朗日基函数,其表达式为:() ∏ ≠=--=n i j j j i j i x x x x x l 0 ) ()( 牛顿插值: ) )...()(](,...,,[.... ))(0](,,[)0](,[)()(1102101210100----++--+-+=n n n x x x x x x x x x x f x x x x x x x f x x x x f x f x N

实验四 三次样条插值

实验四三次样条插值的应用 一、问题描述 The upper portion of this noble beast is to be approximated using clamped cubic spline interpolants. The curve is drawn on a grid from which the table is constructed. Use Algorithm 3.5 to construct the three clamped cubic splines. 二、模型建立 三次样条插值 给定一个列表显示的函数 yi=y(xi),i=0,1,2,...,N-1。特别注意在xj和xj+1之间的一个特殊的区间。该区间的线性插值公式为:

(3.3.1)式和(3.3.2)式是拉格朗日插值公式(3.1.1)的特殊情况。 因为它是(分段)线性的,(3.3.1)式在每一区间内的二阶导数为零,在横坐标为xj处的二阶导数不定义或无限。三次样条插值的目的就是要得到一个内插公式,不论在区间内亦或其边界上,其一阶导数平滑,二阶导数连续。 做一个与事实相反的个假设,除yi的列表值之外,我们还有函数二阶导数y"的列表值,即一系列的yi"值,则在每个区间内,可以在(3.3.1)式的右边加上一个三次多项式,其二阶导数从左边的yj"值线性变化到右边的yj+1"值,这么做便得到了所需的连续二阶导数。如果还将三次多项式构造在xj和xj+1处为零,则不会破坏在终点xj和xj+1处与列表函数值yj和yj+1的一致性。 进行一些辅助计算便可知,仅有一种办法才能进行这种构造,即用 注意,(3.3.3)式和(3.3.4)式对自变量x的依赖,是完全通过A和B对x的线性依赖,以及C和D(通过A和B)对x的三次依赖而实现。可以很容易地验证,y"事实上是该插值多项式的二阶导数。使用ABCD的定义对x求(3.3.3)式的导数,计算dA/dx dB/dx dC/dx dD/dx,结果为一阶导数

数值分析报告

数值分析实验报告 学院:土木与建筑学院 姓名:马X 学号:10XXXXXXX 专业:xxxxxxxxxxxx班

第二章插值法 一实验目的 1.了解拉格朗日插值法,三次样条插值,牛顿插值法的基本原理和方法。 2.通过实例掌握用MATLAB求插值的方法。 3.编程实现拉格朗日插值,三次样条插值,牛顿插值。 二实验内容 1已知函数在下列各点的值为 试用4次牛顿插值多项式P4(x)及三次样条函数S(x)(自然边界条件)对数据进行插值。用图给出{(xi,yi),xi=0.2+0.8i,i=0,1,11,10},P4(x)及S(x). 2.在区间[-1,1]上分别取n=10,20用两组等距节点对龙格函数f(x)=1/(1+25x2)作多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。三.实验步骤 1开启软件平台---MATLAB,打开MATLAB编辑窗口。 2 .根据算法编制程序并运行 (1).编制牛顿插值程序: 程序代码: disp('牛顿插值'); x=0.2:0.2:1.0; y=[0.98 0.92 0.81 0.64 0.38]; plot(x,y,'r'); hold on; xi=[0.2 0.28 1.08 1.0]; n=length(x); m=length(y); if m~=n error('向量x和向量y的长度必须一致')

end w=ones(1,length(xi)); a(1)=y(1); yy=y(1); for k=2:n; a(k)=y(k); w=w.*(xx-x(k-1)); for i=1:k-1; a(k)=(a(i)-a(k))/(x(i)-x(k)); end yi=yi+w*a(k); end yi plot(xi,yi,'k'); (以上是牛顿插值多项式) 运行 >> x=0.2:0.2:1.0; >> y=[0.98 0.92 0.81 0.64 0.38]; hold on; xx=[0.2 0.28 1.08 1.0]; yy = spline(x,y,xx); plot(x,y,'o',xx,yy);pp=csape(x,y,'variational',[0 0]);yy=ppval(pp,xx);fnplt(pp);yy (以上是三次样条插值) (2)编制程序代码: 拉格朗日插值 function yy=nalagr(x,y,xx) m=length(x);n=length(y); if m~=n,error('x和y的向量长度必须相等'); end s=0; for i=1:n t=ones(1,length(xx)); for j=1:n if j~=i, t=t.*(xx-x(j))/(x(i)-x(j)); end end s=s+t*y(i); end yy=s; 运行

关于三次样条插值函数的学习报告(研究生)

学习报告—— 三次样条函数插值问题的讨论 班级:数学二班 学号:152111033 姓名:刘楠楠

样条函数: 由一些按照某种光滑条件分段拼接起来的多项式组成的函数;最常用的样条函数为三次样条函数,即由三次多项式组成,满足处处有二阶连续导数。 一、三次样条函数的定义: 对插值区间[,]a b 进行划分,设节点011n n a x x x x b -=<<<<= ,若函数2()[,]s x c a b ∈在每个小区间1[,]i i x x +上是三次多项式,则称其为三次样条函数。如果同时满足()()i i s x f x = (0,1,2)i n = ,则称()s x 为()f x 在 [,]a b 上的三次样条函数。 二、三次样条函数的确定: 由定义可设:101212 1(),[,] (),[,]()(),[,]n n n s x x x x s x x x x s x s x x x x -∈??∈?=???∈? 其中()k s x 为1[,]k k x x -上的三次 多项式,且满足11(),()k k k k k k s x y s x y --== (1,2,,k n = 由2()[,]s x C a b ∈可得:''''''()(),()(),k k k k s x s x s x s x -+-+== 有''1()(),k k k k s x s x -++= ''''1()(),(1 ,2,,1)k k k k s x s x k n -+ +==- , 已知每个()k s x 均为三次多项式,有四个待定系数,所以共有4n 个待定系数,需要4n 个方程才能求解。前面已经得到22(1)42n n n +-=-个方程,因此要唯一确定三次插值函数,还要附加2个条件,一般上,实际问题通常对样条函数在端点处的状态有要求,即所谓的边界条件。 1、第一类边界条件:给定函数在端点处的一阶导数,即 ''''00(),()n n s x f s x f == 2、第二类边界条件:给定函数在端点处的二阶导数,即

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

实验报告:牛顿差值多项式&三次样条 问题:在区间[-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软件,实现了分段低次插值和三次样条函数插值两种方法的拟合效果,并对比分析了两种方法的优缺点。分段低次插值方法计算简单、效率高,但拟合效果较差;而三次样条函数插值方法拟合效果更好,但计算和存储量较大,运行速度较慢。因此,在具体应用中需要根据实际情况选择合适的插值方法。

第二类边界条件三次样条插值实验报告

数值计算实验—实验报告2 一、实验项目:第二类边界条件三次样条插值 二、实验目的和要求 a.通过本实验深入地理解三次样条插值多项式的基本原理 b.通过数值算例更好的领会三次样条插值多项式具有较高的准确性 三、实验内容 1.用调试好的程序解决如下问题: 点中点处的函数值,并将计算结果与sinx在相应点的数值相比较。 n=8; p1=0.4794; pn=0.9463; u=[0.6,0.8,1.0,1.2,1.4,1.6,1.8]; p=7; x=[0.5,0.7,0.9,1.1,1.3,1.5,1.7,1.9]; y=[0.4794,0.6442,0.7833,0.8912,0.9636,0.9975,0.9917,0.9463]; for i=1:n-1 h(i)=x(i+1)-x(i); end a2(1)=1; g(1)=3*(y(2)-y(1))/h(1)-p1*h(1)/2; for k=2:n-1 a1(k-1)=h(k)/(h(k)+h(k-1)); a2(k)=h(k-1)/(h(k)+h(k-1)); g(k)=3*a2(k)*(y(k+1)-y(k))/h(k)+3*a1(k-1)*(y(k)-y(k-1))/h(k-1); end a1(n-1)=1; g(n)=3*(y(n)-y(n-1))/h(n-1)+pn * h(n-1)/2; %追赶法求三转角方程 b1(1)=2;

m(1)=g(1)/2; b2(1)=a2(1)/b1(1); for i=2:n b1(i)=2-a1(i-1)*b2(i-1); if(i~=n) b2(i)=a2(i)/b1(i); end m(i)=(g(i)-a1(i-1)*m(i-1))/b1(i); end for i=n-1:-1:1 m(i)=m(i)-b2(i)*m(i+1); end for j=1:p for i=1:n if((u(j)>=x(i))&&(u(j)

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

关于三次样条插值函数的学习报告 三次样条插值函数是一种常用的插值方法,它利用多项式函数的特性 来逼近一组数据点,并且具有较高的精度和平滑性。本学习报告将对三次 样条插值函数进行详细介绍,并探讨其在实际应用中的优缺点。 首先,三次样条插值函数的数学表达式可以表示为: 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进行由小到大排序

三次样条插值方法的应用

三次样条插值方法的应 用 本页仅作为文档封面,使用时可以删除 This document is for reference only-rar21year.March

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

三次样条插值方法的应用 一、问题背景 分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。 二、数学模型 样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。 设区间[]b ,a 上给定有关划分b x x n =<<<= 10x a ,S 为[]b ,a 上满足下面条件的函数。 )(b a C S ,2∈; S 在每个子区间[]1,+i i x x 上是三次多项式。 则称S 为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型: Ⅰ型 ()()n n n f x S f x S ''0'',==。 Ⅱ型 ()()n n n f x S f x S ''''0'''',==,其特殊情况为()()0''''==n n x S x S 。 Ⅲ型 ()() 3,2,1,0,0==j x S x S n j j ,此条件称为周期样条函数。 鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。 三、算法及流程 按照传统的编程方法,可将公式直接转换为MATLAB 可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB 在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为。 Matlab 代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x)

插值法实验报告

实验二插值法 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

自-昆明理工大学数值分析上机报告1

数值分析实验报告 (数值积分) 姓名: 学号:62 专业:材料学 学院:材料与冶金工程学院 授课教师:

昆 明 理 工 大 学 06工科硕士 《数值分析》上机实验报告 专业: 材料学 姓名: 学号:2006202 062 任课教师: 作业完成实验室: 实验内容: 1.题目/ 要求: 三次样条插值法 一、问题提出 二、要求 1、满足自然边界条件()()00.12.0=''=''S S ; 2、满足第一类边界条件'(0.2)0.20271S =,'(1.0) 1.55741S =。 3、打印输出用追赶法解出的弯矩向量014(,,...,)M M M 和 (0.20.1)(0,1,...,8)S i i +=的值。﹡并画出()y S x =的图形﹡。 2.作业环境(包括选用的程序语言、运行环境) 程序语言 Turbo.C 2.0 运行环境 W IND OW S XP 3.数学(理论背景)描述 某些实际问题,如船体放样与机翼设计,要求插值曲线不仅连续而且处处平滑。甚至要求尽可能采用流线型,使气流沿机翼的表面能形成平滑的流线,以减少空气的阻力。换句话说,所谓光滑插值就是既要分段低次又要保证接头光滑。

为适应这类需求,借助曲线板来作图,以保证曲线在接头处的光滑。在工程技术如船体放样中,作图员常用“样条”在指定节点间做光滑曲线。光滑插值就是这类作图方法的数学模拟。因此,这类插值称作样条(S pline )插值。 样条插值实际上是一种改进的分段插值,它要求插值函数在各分段的衔接处能保持一定程度的光滑性。既要保持插值函数的导数的连续性。在实际应用中,最常用的是三次样条插值,其定义如下: 若函数()[]b a C x S ,2∈,且在每个小区间[] 1,+j j x x 上是三次多项式,其中b x x x a n =<<<= 10是给定节点,则称()x S 是节点n x x x ,,,10 上的三次样条函数。若在节点j x 上给定函数值()()n j x f y j j ,,1,0 ==,并成立()()n j y x S j j ,,1,0 ==,则称()x S 为三次样条插值函数。 4.数值计算公式 三次样条函数分段插值公式 ()()()()1666612 1213 113 i i i i i i i i i i i i i i i i h x x M h y h x x M h y M h x x M h x x x S ------⎪⎪⎭ ⎫ ⎝⎛-+-⎪⎪⎭⎫ ⎝⎛-+-+ -= ()()() ()()262211112 i i i i i i i i i i i i h y y M M h M h x x M h x x x S -----+-- -+ -- =' ()()31 1i i i i i i M h x x M h x x x S ---+-= '',其中

三次样条插值

三次样条插值的数值实验 姓名: 王维滨 学号: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 λλλ-+-+--+++=⎧⎪++==-⎨⎪++=⎩

相关文档
最新文档