三次样条插值实验报告

合集下载

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

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

实验报告:牛顿差值多项式&三次样条问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。

实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。

应用所编程序解决实际算例。

实验要求:1. 认真分析问题,深刻理解相关理论知识并能熟练应用;2. 编写相关程序并进行实验;3. 调试程序,得到最终结果;4. 分析解释实验结果;5. 按照要求完成实验报告。

实验原理:详见《数值分析 第5版》第二章相关内容。

实验内容:(1)牛顿插值多项式1.1 当n=10时:在Matlab 下编写代码完成计算和画图。

结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.^2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p ;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=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 onxlabel('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-1 4*x^3-16.855*x^2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。

关于用追赶法求解系数矩阵的三次样条插值实验报告。

关于用追赶法求解系数矩阵的三次样条插值实验报告。

x(n)=y(n); for i=(n-1):-1:1 x(i)=y(i)-u(i)*x(i+1); end 用 matlab 编程如下: function[s,y0]=spline3 (x,y,x0) %x,y 为数表 x0 为插值点 s 表示插值函数 y0 为 x0 对应的插值函数值 syms t n=length(x); %得出 n for i=1:n-1; h(i)=x(i+1)-x(i); end for i=2:n-1; lamda(i)=h(i)/(h(i-1)+h(i)); miu(i)=1-lamda(i); g(i)=3*(lamda(i)*((y(i)-y(i-1))/h(i-1))+miu(i)*((y(i+1)-y( i))/h(i))); end g(1)=3*((y(2)-y(1))/h(1)); g(n)=3*((y(n)-y(n-1))/h(n-1)); %前边求出 lamda miu 和 g 从而可以确定系数矩阵 miu(1)=1; miu(4)=0;
实验 for i=2:(n-1) 内容
L(i)=b(i)-a(i)*u(i-1); y(i)=(d(i)-y(i-1)*a(i))/L(i); u(i)=c(i)/L(i); end L(n)=b(n)-a(n)*u(n-1); y(n)=(d(n)-y(n-1)*a(n))/L(n); %“赶”的过程
数值分析实验报告
实验 名称
关于用追赶法求解系数矩阵的三次样条插值实验报告。
实验 结合求解线性方程组的解。 目的 算法如下:
会 使 用 matlab 语 言 编 程 使 用 追 赶 法 llowup(a,b,c,d) n=length(d); a(1)=0; %“追”的过程 L(1)=b(1); y(1)=d(1)/L(1); u(1)=c(1)/L(1);

学会运用三次样条函数插值

学会运用三次样条函数插值

实验目的:学会运用三次样条函数进行函数插值实验内容:给定插值条件如下:i 0 1 2 3 4 5 6 7X i8.125 8.4 9.0 9.485 9.6 9.959 10.166 10.2 Y i0.0774 0.099 0.280 0.60 0.708 1.200 1.800 2.177 作三次样条函数插值,取第一类边界条件Y0’=0.01087 Y7’=1001.画出插值曲线的图像。

程序如下:%将插值点的坐标值输入matlabx=[8.125 8.4 9.0 9.485 9.6 9.959 10.166 10.2];y=[0.0774 0.099 0.280 0.60 0.708 1.200 1.800 2.177];%调用三次样条函数,并给出第一类边界条件即 Y0’=0.01087 Y7’=100 cs = spline(x,[0.01087 y 100]);%给定x(0)到x(7)之间的作图点数,即1000xx=linspace(8.125,10.2,1000);%绘制图像plot(x,y,'o',xx,ppval(cs,xx),'-')grid on插值曲线:2.逆时针旋转座标轴45o保持(1.)中结点和边界条件的几何关系不变,再次作三次样条函数插值,画出插值曲线的图像。

程序如下:x=[8.125 8.4 9.0 9.485 9.6 9.959 10.166 10.2];y=[0.0774 0.099 0.280 0.60 0.708 1.200 1.800 2.177];%用坐标转换求出坐标轴旋转45度后插值点新的坐标值x1=x*cos(pi/4)+y*sin(pi/4);y1=-x*cos(pi/4)+y*sin(pi/4);%求出坐标轴转换后新的边界值Y0=(0.01087-1)/(0.01087+1);Y7=(100-1)/(100+1);cs = spline(x1,[Y0 y1 Y7]);xx=linspace(x1(1),x1(8),1000);plot(x1,y1,'o',xx,ppval(cs,xx),'-')grid on其中在求解边界条件用转换关系tan(45)θ-,θ为在原图像中边界点的切线与原x坐标轴的夹角差值曲线:。

Matlab实验报告六(三次样条与分段线性插值)范文

Matlab实验报告六(三次样条与分段线性插值)范文
1.分析问题
本题是给出粗略等分点让你插入更多点用双线性插值法来作出更清晰的山区地貌图。
2.问题求解
x=0:400:2800;
y=0:400:2400;
z=[1430 1450 1470 1320 1280 1200 1080 940;
1450 1480 1500 1550 1510 1430 1300 1200;
2.分段线性插值与计算量与n无关;n越大,误差越小.
3.三次样条插值比分段线性插值更光滑。
4.‘linear’:分段线性插值;‘spline’:三次样条值。
【实验环境】
MatlabR2010b
二、实验内容
问题1对函数 ,x[-5,5],分别用分段线性插值和三次样条插值作插值(其中插值节点不少于20),并分别作出每种插值方法的误差曲线.
本次实验因为是我们课本没有的内容,心理上给了我很大的压力,幸好我们还能根据老师的课件以及例题去掌握这次实验所需要的各种插值法,但结果还好,两道题都做出来了。
plot(x,y,'*',x1,yl,'r',x1,y2,'b')
y0=1./(1+x1.^2);
y3=yl-y0;
y4=ys-y0;
holdon
plot(x1,y3,'y',x1,y4,'g')
3.结果
4误。
问题2山区地貌图在某山区(平面区域(0,2800)(0,2400)内,单位:米)测得一些地点的高程(单位:米)如表1,试作出该山区的地貌图.
1.分析问题
本题先取出少量的插值节点并作出图形,再用分段线性插值法和三次样条插值法做出更精确的图形,最后在作出误差曲线。

样条插值实验报告

样条插值实验报告

四、三次样条插值1. 样条函数插值的原理给定区间[a,b]上划分A:a=x<x<<x<x=b,若分段函数S(x)满足:01n-1n1.S(x)在各个子区间[x,x],i=0,1,,n-1上均为x的三次多项式;ii+12.S(x)在整个区间[a,b]上有直至二阶的连续导数。

则称S(x)为[a,b]上依次划分的三次样条函数,简称样条函数。

具体地有分段表达式:ax3+bx2+cx+d,x G[x,x]000001ax3+bx2+cx+d,x G[x,x]111112S(x)=\ax3+bx2+cx+d,x G[x,x](1)222223ax3+bx2+cx+d,x G[x,x]、°*n-1n—T•••n-1n-1n-1n共有4n个参数a,b,c,d,i=0,1,,n,它们在内节点处满足iiii'S(x)=S(x),…i-0i+0<S'(x)=S'(x),i=1,2,,n-1.(2)i-0i-0S''(x)=S''(x),Ji-0i+0满足样条函数定义的函数集合称为分划A上的三次样条函数空间,记为S(3,A),可以证明S(3,A)为线性空间。

若S(x)G S(3,A),且进一步满足插值条件S(x)=y=f(x),i=0,1,,n(3)iii其中y为节点x处的给定函数值(若被插函数了(x)已知;••则用了(x)代替之),iii则称S(x)为以x,x,,x,x为节点的三次样条函数。

01n-1n其中式(3)插值节点提供了n+1个约束条件;加上式(2)的3n-3个,合起来共有4n-2个;欲求4n个待定参数的唯一解;尚缺两个条件。

这两个条件一般由样条函数的边界条件提供。

常用三类边界条件;他们分别与三次样条函数;构成不同边界条件的样条函数插值问题。

2. 三类样条函数插值问题2.1第二类边界条件给定边界条件两端的一阶导数值:S'(x)=y'=m,S'(x)=y'=m000nnn这相当于样条两短处的方向给定(压铁在两端点的压力方向确定),对应的插值问题如下:对于分划A:a=x<x<<x<x=b,给定节点对应的函数值01n—1ny,y,y,,y,以及两端点处的一阶导数值y'=m,y'=m,求三次样条函数012n00nnS(x),使…f S(x)=y,i=0,1,,n2iiI S'(x)=m,S'(x)=mJ00n…n2.2第一类边界条件给定边界两端的二阶导数值:S''(x)=y''=M,S''(x)=y''=M000nnn这相当于在样条两端处外加一个力矩,使梁两端点处有相应的曲率。

三次样条插值方法的应用

三次样条插值方法的应用

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在矩阵运算上的优势。

LAB03_三次样条插值实验

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语言设计计算三次样条插值的程序。

Matlab实验报告六(三次样条与分段线性插值)

Matlab实验报告六(三次样条与分段线性插值)
数学与信息科学系实验报告
实验名称插值与拟合
所属课程数学软件与实验
实验类型综合型实验
专业信息与计算科学
班级
学号
姓名
指导教师
一、实验概述
【实验目的】
学会在matlab环境下使用几种不同的插值法和拟合两种方法构造函数依据已经知道的某些特殊点来推测实际问题中需要知道但又不便于测量出来的量。
【实验原理】
1.z=interp2(x0,y0,z0,x,y,’method’): 要求x0,y0单调;x, y可取为矩阵, 或x取行向量, y取为列向量, x,y的值分别不能超出x0,y0的范围。
2.分段线性插值与计算量与n无关;n越大, 误差越小.
3.三次样条插值比分段线性插值更光滑。
4.‘linear’ : 分段线性插值;‘spline’ : 三次样条
二、实验内容
问题1 对函数, x([-5,5], 分别用分段线性插值和三次样条插值作插值(其中插值节点不少于20), 并分别作出每种插值方法的误差曲线.
1180 1320 1450 1420 1400 1300 700 900];
mesh(x,y,z)
xi=0:20:2800;
yi=0:20:2400;
zi=interp2(x,y,z,xi',yi,'cubic');
mesh(xi,yi,zi)
3.结果
4.结论及分析
通过实验,结果正确,分析无误。
三、实验小结
1270 1500 1200 1100 1350 1450 1200 1150
1230 1390 1500 1500 1400 900 1100 1060
1180 1320 1450 1420 1400 1300 700 900
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
画图:
x1=0:.01:1;y1=polyval(S1(1,:),x1-X(1)); x2=1:.01:2;y2=polyval(S1(2,:),x2-X(2)); x3=2:.01:3;y3=polyval(S1(3,:),x3-X(3)); x4=3:.01:4;y4=polyval(S1(4,:),x4-X(4)); x5=4:.01:5;y5=polyval(S1(5,:),x5-X(5)); x6=5:.01:6;y6=polyval(S1(6,:),x6-X(6)); >> plot(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,X,Y,'.') >> hold on >> x1=0:.01:1;y1=polyval(S2(1,:),x1-X(1)); x2=1:.01:2;y2=polyval(S2(2,:),x2-X(2)); x3=2:.01:3;y3=polyval(S2(3,:),x3-X(3)); x4=3:.01:4;y4=polyval(S2(4,:),x4-X(4)); x5=4:.01:5;y5=polyval(S2(5,:),x5-X(5)); x6=5:.01:6;y6=polyval(S2(6,:),x6-X(6)); >> plot(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,X,Y,'.') >> hold on >> x1=0:.01:1;y1=polyval(S3(1,:),x1-X(1)); x2=1:.01:2;y2=polyval(S3(2,:),x2-X(2)); x3=2:.01:3;y3=polyval(S3(3,:),x3-X(3)); x4=3:.01:4;y4=polyval(S3(4,:),x4-X(4)); x5=4:.01:5;y5=polyval(S3(5,:),x5-X(5)); x6=5:.01:6;y6=polyval(S3(6,:),x6-X(6)); >> plot(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,X,Y,'.')
csfit2:第二类边界条件
function S=csfit2(X,Y,dx0,dxn) N=length(X)-1; H=diff(X); D=diff(Y)./H; A=H(2:N-1); B=2*(H(1:N-1)+H(2:N)); C=H(2:N); C=H(2:N); U=6*diff(D); U(1)=U(1)-dx0; U(N-1)=U(N-1)-dxn;
三次样条插值 实验报告
专业 班级 学号 姓名
1、 实验内容和要求
1、阅读上面的文字和程序,试运行,检验程序和上面叙述的 正确性。
2、阅读上面的 MATLAB 程序;查资料,了解各 MATLAB 语句 及命令。
3、画程序流程图,理解并描述算法。 4、修改上面的程序,能根据给定数据点,求 (1)自然样条插值,边界 ,= = (2)第二类边界条件,是确定的。 5、使用上面的程序,根据数据点(0,1),(1,0),(2, 0),(3,1),(4,2), (5,2),和(6,1),求三种不同的三次样条插值,其中, =-1.8,在同一坐标系中,画出这 3 个三次样条插值和这些数据 点。
for k=2:N-1 temp=A(k-1)/B(k-1); B(k)=B(k)-temp*C(k-1); U(k)=U(k)-temp*U(k-1); End
M(N)=U(N-1)/B(N-1); for k=N-2:-1:1 M(k+1)=(U(k)-C(k)*M(k+2))/B(k); End
(3)

代入上(3),并使用
,可分别得到包含
的方程:
(4)
求解这两个方程,求出
,而且将这些
值代入方程(3)中,可得到三次多项式方程:
(5)
表达式5可以简化成只包含未知系数

形式。
为求这些值,必须使用(5)式的导数,即
(6)
在 处计算(6),并简化结果可得到
,其中
(7)
同理,在式(6)中用

计算在 处的解,可得
B(1)=B(1)-H(1)/2; U(1)=U(1)-3*(D(1)-dx0); B(N-1)=B(N-1)-H(N)/2; U(N-1)=U(N-1)-3*(dxn-D(N)); for k=2:N-1
temp=A(k-1)/B(k-1); B(k)=B(k)-temp*C(k-1); U(k)=U(k)-temp*U(k-1); End
6、写实验报告(实验内容+算法描述+程序+写成分段函数的结 果描述+截图)。
2、 算法说明
定义:设有N+1个点
,其中
。如果存在
N个三次多项式 ,系数为
,满足如下性质: (1) (2) (3)
则称函数 为三次样条函数。 因为 是分段三次多项式,所以
区间 上是分段线性的。
用 上式,可得

(1) 代入
(2) 将(2)式积分两次,会引入两个积分常数,并 得到
4、 实验结果
第一类边界条件:
第二类边界条件:
自然边界条件:
图像:
5、 说明与分析
实验结果显示,对同一组数据,不同边界条件,会导致形成曲线有 一定差距,但总体趋势不变
M(N)=U(N-1)/B(N-1); for k=N-2:-1:1 M(k+1)=(U(k)-C(k)*M(k+2))/B(k); End M(1)=3*(D(1)-dx0)/H(1)-M(2)/2;
M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2; for k=0:N-1 S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1)); S(k+1,2)=M(k+1)/2; S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6; S(k+1,4)=Y(k+1); end
(8)
ቤተ መጻሕፍቲ ባይዱ
利用节点处一阶导函数连续及方程(6)、
(7),可得到包含
的重要关系式
(9)
其中
方程组(9)中的未知数是要求的值
,其
他的项可通过数据点集
进行简单的计算
得到的常量。因此方程(9)是包含N+1个未知数,
具有N-1个线性方程的不定方程组。所以需要另外
两个方程组才能求解,即边界条件。
如果已知
,则
(10)
M(1)=dx0; M(N+1)=dxn; for k=0:N-1
S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1)); S(k+1,2)=M(k+1)/2; S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6; S(k+1,4)=Y(k+1); end
(11)
根据(9)(10)求出 公式计算 的样条系数
,,,,,
后,可利用下面的 。
3、 源程序
csfit1:第一类边界条件
function S=csfit1(X,Y,dx0,dxn) N=length(X)-1; H=diff(X); D=diff(Y)./H; A=H(2:N-1); B=2*(H(1:N-1)+H(2:N)); C=H(2:N); C=H(2:N); U=6*diff(D);
相关文档
最新文档