文档库 最新最全的文档下载
当前位置:文档库 › 代数插值实验-三次样条曲线

代数插值实验-三次样条曲线

代数插值实验-三次样条曲线
代数插值实验-三次样条曲线

实验7 代数插值实验-(2)

实验类型:●验证性实验 ○综合性实验 ○设计性实验

实验目的:进一步熟练掌握spline(样条)插值算法,提高编程能力和解决插值问题的实践技能。

实验内容:编写程序用计算机求解三次压紧样条曲线,经过点(0,0.0),(1,0.5),(2,2.0)和(3,1.5),而且一阶导数边界条件S ’(0)=0.2和S ’(3)=-1

实验原理 若已知N+1个点的{}N k k k y x 0),(=及其一阶导数的边界条件S ’(a)=0d 和S ’(b)=N d ,则存在唯一的三次样条曲线。

构造并求解下列线性方程组

01112100111122211113(2)3('())22()(2,3,,2)3(2)3('())

2k k k k k k k k N N N N N N N N h h m h m u d S x h m h h m h m u k N h m h h m u S x d ---+-------?++=--??+++==-???++=--? 构造分段函数S(x):

23

,0,1,2,31()()()()()[,]k k k k k k k k k k S x S x s s x x s x x s x x x x x +==+-+-+-∈ k k y s =0, ; 6)2(11,++-

=k k k k k m m h d s ; 22,k k m s = ; k

k k k h m m s 613,-=+ 实验说明 需要建立两个数组X ,Y 分别存放(1x ,…,)n x ,(1y ,…,)n y ,建立两个变量dxo 、 dxn 分别存放左右端点的一阶导数 dxo = S'(x0) , dxn = S'(xn),上述方程组中10,1,,1k k k h x x k N +=-=- 其中;1()/0,1,,1k k k k d y y h k N +=-=- 16(),1,2,,1k k k u d d k N -=-=- 实验步骤

1 要求上机实验前先编写出程序代码

2 编辑录入程序

3 调试程序并记录调试过程中出现的问题及修改程序的过程

4 经反复调试后,运行程序并验证程序运行是否正确。

5 记录运行时的输入和输出。

实验总结:1、三次样条曲线涉及到的关系式比较多,要清晰的记清s 、d 、h 、u 等之间的关系;2、编写程序时一定要注意“0”和“o ”是让容易把他们两

个搞混检查时也不容易发现。

实验报告: 根据实验情况和结果撰写并递交实验报告。

参考程序(MATLAB程序)

function s=csfit(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);

u=6*diff(d);

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

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

输入以下程序:

>> x=[0 1 2 3];

y=[0 0.5 2.0 1.5];

dx0=0.2;

dxn=-1;

s=csfit(x,y,dx0,dxn)

ans =

2

s =

0.4800 -0.1800 0.2000 0

-1.0400 1.2600 1.2800 0.5000

0.6800 -1.8600 0.6800 2.0000

>> t1=0:0.01:1;w1=polyval(s(1,:),t1-x(1)); t2=1:0.01:2;w2=polyval(s(2,:),t2-x(2));

t3=2:0.01:3;w3=polyval(s(3,:),t3-x(3)); >> plot(t1,w1,t2,w2,t3,w3,x,y,'.')

三次样条插值代码

2 三次样条插值程序 三次样条插值利用方案二(求解固支样条或压紧样条) 按照要求要起点和终点的一阶导数值已知, 可得关于01,,.....,n M M M 的严格对角占优势的三对角方程组 然后利用三对角法(追赶法)解此线性方程组。 (1)编写M 文件,并保存文件名scfit.m % x,y 分别为n 个节点的横坐标和纵坐标值组成的向量 % dx0和dxn 分别为S 的导数在x0和xn 处的值,即m 0和m n 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); u=6*diff(d); 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 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 %求S K1,S K2,S K3,S K4 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 00 ()S x m '=()n n S x m '=0011111111212212n n n n n n M d M d M d M d μλμλ----??????????????????????=??????????????????????????

曲线拟合与插值1一维插值

一维插值 正如在前一节对曲线拟合所描述的那样,插值定义为对数据点之间函数的估值方法,这些数据点是由某些集合给定。当人们不能很快地求出所需中间点的函数值时,插值是一个有价值的工具。例如,当数据点是某些实验测量的结果或是过长的计算过程时,就有这种情况。 或许最简单插值的例子是MATLAB的作图。按缺省,MATLAB用直线连接所用的数据点以作图。这个线性插值猜测中间值落在数据点之间的直线上。当然,当数据点个数的增加和它们之间距离的减小时,线性插值就更精确。例如, ? x1=linspace(0, 2*pi, 60); ? x2=linspace(0, 2*pi, 6); ? plot(x1, sin(x1), x2, sin(x2), ' - ') ? xlabel(' x '),ylabel(' sin(x) '),title(' Linear Interpolation ') 图11.3线性插值 图11.3是sine函数的两个图,一个在数据点之间用60个点,它比另一个只用6个点更光滑和更精确。 如曲线拟合一样,插值要作决策。根据所作的假设,有多种插值。而且,可以在一维以上空间中进行插值。即如果有反映两个变量函数的插值,z=f(x, y),那么就可在x之间和在y之间,找出z的中间值进行插值。MATLAB在一维函数interp1和在二维函数interp2中,提供了许多的插值选择。其中的每个函数将在下面阐述。 为了说明一维插值,考虑下列问题,12小时内,一小时测量一次室外温度。数据存储在两个MATLAB变量中。 ? hou rs=1:12;%index for hour data was recorded ? temps=[5 89152529313022252724]; %recorded temperatures ? plot(hours, temps, hours, temps,' + ')%view temperatures

样条插值函数与应用

样条插值函数及应用

摘要 样条函数具有广泛的应用,是现代函数论的一个十分活跃的分支,是计算方法的主要基础和工具之一,由于生产和科学技术向前发展的推动以及电子计算机广泛应用的需要,人们便更多地应用这个工具,也更深刻的认识了它的本质。 在实际问题中所遇到许多函数往往很复杂,有些甚至是很难找到解析表达式的。根据函数已有的数据来计算函数在一些新的点处的函数值,就是插值法所需要解决的问题。 插值法是数值逼近的重要方法之一,它是根据给定的自变量值和函数值,求取未知函数的近似值。早在一千多年前,我国科学家就在研究历法时就用到了线性插值和二次插值。而在实际问题中,有许多插值函数的曲线要求具有较高的光滑性,在整个曲线中,曲线不但不能有拐点,而且曲率也不能有突变。因此,对于插值函数必须二次连续可微且不变号 ,这就需要用到三次样条插值。 关键词三次样条函数;插值法

目录 引言 0 第一章三次样条插值 (1) 1.1 样条插值函数简介 (1) 1.2 三次样条函数应用 (2) 第二章AMCM91A 估计水塔水流量 (4) 2.1 理论分析及计算 (5) 2.2运用MATLAB软件计算 (8) 参考文献 (13)

引言 样条函数具有广泛的应用,是现代函数论的一个十分活跃的分支,是计算方法的主要基础和工具之一,由于生产和科学技术向前发展的推动以及电子计算机广泛应用的需要,人们便更多地应用这个工具,也更深刻的认识了它的本质。上世纪四十年代,在研究数据处理的问题中引出了样条函数,例如,在1946年Schoenberg将样条引入数学,即所谓的样条函数,直到五十年代,还多应用于统计数据的处理方面,从六十年代起,在航空、造船、汽车等行业中,开始大量采用样条函数。 在我国,从六十年代末开始,从船体数学放样到飞机外形设计,逐渐出现了一个使用样,逐渐出现了一个使用样条函数的热潮,并推广到数据处理的许多问题中。 在实际生活中有许多计算问题对插值函数的光滑性有较高的要求,例如飞机机翼外形、发动机进、排气口都要求有连续的二阶导数,用三次样条绘制的曲线不仅有很好的光滑度,而且当节点逐渐加密时其函数值整体上能很好地逼近被插函数,相应的导数值也收敛于被插函数的导数值,不会发生“龙格现象”。 现在国内外学者对这方面的研究也越来越重视,根据我们的需要来解决不同的问题,而且函数的形式也在不断地改进,长期以来很多学者致力于样条插值的研究,对三次样条的研究已相当成熟。

大学数学实验 插值与拟合

一、实验目的 (1)掌握用MATLAB计算拉格朗日,分段线性,三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。(2)掌握用MTLABLE作线性最小二乘拟合的方法。 (3)通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。 二、实验内容 2.用y=x^1/2在向,4,9,16产生5个节点P1,……P5.用不同的节点构造插值公式来计算x=5处的插值,与精确值比较并进行分析。 3.用给定的多项式,如y=x^3-6*x^2+5*x-3,产生一组数据(Xi,Yi,i=1,2,……,n),再在Yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用randn产生N(0,1)分布随机数),然后用Xi和添加了随机干扰项的Yi作3次多项式拟合,与原系数比较,如果作2或4次多项式拟合,结果如何? 8弹簧在力F的作用下伸长x,F数据,一定范围内服从胡克定律:F与x成正比,即F=kx,k为弹簧系数。现在得到下面一组数据,并在(x,F)坐标下作图。可以看出,当F大到一定数值(如x=9以后)后,就不服从这个定律了。试由数据拟合直线F=kx,并给出不服从胡克定律时的近似公式(曲线)。 1)要求直线与曲线在x=9处相连接。 2)要求直线与曲线在x=9处光滑连接。 三.实验过程与结果 2. 程序: syms x y x0=[ 0 1 4 9 16]; y0=[ 0 1 2 3 4]; x=5; y=x^0.5; y1=interp1(x0,y0,x); y2=spline(x0,y0,x); [x y y1 y2]'; 结果: ans: 5.0000 2.2361 2.2000 2.1633 lagr在matlab中没有定义 用不同节点构造插值方法与上述程序一样

三次样条插值函数

沈阳航空航天大学 数学软件课程设计 (设计程序) 题目三次样条插值函数 班级 / 学号 学生姓名 指导教师

沈阳航空航天大学 课程设计任务书 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学 班级学号姓名 课程设计题目三次样条插值函数 课程设计时间: 2010 年12月20日至2010 年12月31日 课程设计的内容及要求: 1.三次样条插值函数 给出函数在互异点处的值分别为。 (1)掌握求三次样条插值函数的基本原理; (2)编写程序求在第一边界条件下函数的三次样条插值函数; (3)在区间上取n=10,20,分别用等距节点对函数 作三次样条插值函数,利用(1)的结果画出插值函数的图形,并在该图形界面中同时画出的图形。 [要求] 1.学习态度要认真,要积极参与课程设计,锻炼独立思考能力; 2.严格遵守上机时间安排; 3.按照MATLAB编程训练的任务要求来编写程序; 4.根据任务书来完成课程设计论文; 5.报告书写格式要求按照沈阳航空航天大学“课程设计报告撰写规范”; 6.报告上交时间:课程设计结束时上交报告;

7.严谨抄袭行为。 指导教师年月日负责教师年月日学生签字年月日

沈阳航空航天大学 课程设计成绩评定单 课程名称数学软件课程设计 院(系)理学院专业信息与计算科学课程设计题目三次样条插值函数 学号姓名 指导教师评语: 课程设计成绩 指导教师签字 年月日

目录 一正文 (1) 1问题分析 (1) 1.1 题目 (1) 1.2 分析 (1) 2 研究方法原理 (1) 2.1 求三次样条插值多项式,算法组织 (1) 3 算例结果 (3) 二总结 (7) 参考文献 (8) 附录 (9) 源程序: (9) 程序1 (9) 程序2 (10) 程序3 (12) 程序 4 (12)

三次样条插值、拉格朗日插值、herminte插值

三次样条插值: function s=spline(x0,y0,y2l,y2n,x) n=length(x0); km=length(x); a(1)=-0.5; b(1)=3*(y0(2)-y0(1))/(2*(x0(2)-x0(1))); for j=1:n-1 h(j)=x0(j+1)-x0(j); end for j=2:n-1 alpha(j)=h(j-1)/(h(j-1)+h(j)); beta(j)=3*((1-alpha(j))*y0(j)-y(j-1)/h(j-1)+alpha(j)*(y0(j+1)-y0(j))/h(j)); a(j)=-alpha(j)/(2+(1-alpha(j))*a(j-1)); b(j)=(beta(j)-(1-alpha(j))*b(j-1))/(2+(1-alpha(j))*a(j-1)); end m(n)=(3*(y0(n)-y0(n-1))/h(n-1)+y2n*h(n-1)/2-b(n-1))/(2+a(n-1)); for j=(n-1):-1:1 m(j)=a(j)*m(j+1)+b(j); end for k=1:km for j=1:(n-1) if ((x(k)>x0(j))&(x(k)

曲线拟合与插值理论与实例

第11章曲线拟合与插值 在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。对这个问题有两种方法。在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。这种方法在下一节讨论。这里讨论的方法是曲线拟合或回归。人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。图11.1说明了这两种方法。标有'o'的是数据点;连接数据点的实线描绘了线性内插,虚线是数据的最佳拟合。 11.1 曲线拟合 曲线拟合涉及回答两个基本问题:最佳拟合意味着什么?应该用什么样的曲线?可用许多不同的方法定义最佳拟合,并存在无穷数目的曲线。所以,从这里开始,我们走向何方?正如它证实的那样,当最佳拟合被解释为在数据点的最小误差平方和,且所用的曲线限定为多项式时,那么曲线拟合是相当简捷的。数学上,称为多项式的最小二乘曲线拟合。如果这种描述使你混淆,再研究图11.1。虚线和标志的数据点之间的垂直距离是在该点的误差。对各数据点距离求平方,并把平方距离全加起来,就是误差平方和。这条虚线是使误差平方和尽可能小的曲线,即是最佳拟合。最小二乘这个术语仅仅是使误差平方和最小的省略说法。

图11.1 2阶曲线拟合 在MATLAB中,函数polyfit求解最小二乘曲线拟合问题。为了阐述这个函数的用法,让我们以上面图11.1中的数据开始。 ? x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]; ? y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; 为了用polyfit,我们必须给函数赋予上面的数据和我们希望最佳拟合数据的多项式的阶次或度。如果我们选择n=1作为阶次,得到最简单的线性近似。通常称为线性回归。相反,如果我们选择n=2作为阶次,得到一个2阶多项式。现在,我们选择一个2阶多项式。 ? n=2; % polynomial order ? p=polyfit(x, y, n) p = -9.8108 20.1293 -0.0317 polyfit的输出是一个多项式系数的行向量。其解是y = -9.8108x2+20.1293x-0.0317。为了将曲线拟合解与数据点比较,让我们把二者都绘成图。

样条插值和曲线拟合

第三章 样条插值和曲线拟合 1.x y = 有如下的函数表 8。 解 先作差商表 4 167 1210 13 9 3 42015 11008 16012 4 60 13 1611 1 10 0-?- -- 故:8.2)48(5 1 2)8(1=-+=p 819047619.2) 98)(48(210 1 )48(512)8(2=----+=p 844444.2)98)(48)(18(3 4201) 48)(18(601 )18(311)8(3=---?+----+=p 6222.2)1(4781008 1478601) 18(86 1 )08(10)8(4=-???-??+---?+=p 已知 828427.28=,因此选定 )8(,16,9,42321p x x x ===最接近8。 利用Neville 方法得: xi 8-xi f(xi) 2.8284271 8 0 8 1 7 1 -1.33333333 3.3333333 2.4 4 4 2 2.866666667 2.6222222 2.8 2.8444444 9 -1 3 2.819047619 2.8571429 16 -8 4 f(8)= 2.828427125 xi 8-xi f(xi) 8 0 8 1 7 1 -1 1/3 3 1/3 2 2/5 4 4 2 2 13/15 2 28/45 2 4/5 2 38/45 9 -1 3 2 86/105 2 6/7 16 -8 4 已知 828427.28=,故选定)8(,16,9,42321 p x x x ====2.819047619最接近8.

插值法实验报告

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

曲线拟合与插值3二维插值

二维插值 二维插值是基于与一维插值同样的基本思想。然而,正如名字所隐含的,二维插值是对两变量的函数 z=f(x, y)进行插值。为了说明这个附加的维数,考虑一个问题。设人们对平板上的温度分布估计感兴趣,给定的温度值取自平板表面均匀分布的格栅。 采集了下列的数据: ? width=1:5;%index for width of plate (i.e.,the x-dimension) ? depth=1:3;%index for depth of plate (i,e,,the y-dimension) ? t emps=[8281808284; 7963616581; 8484828586]%temperature data temps = 8281808284 7963616581 8484828586 如同在标引点上测量一样,矩阵temps表示整个平板的温度分布。temps的列与下标depth或y-维相联系,行与下标width或x-维相联系(见图11.6)。为了估计在中间点的温度,我们必须对它们进行辨识。 ? wi=1:0.2:5;%estimate across width of plat e ? d=2;%at a depth of 2 ? zlinear=interp2(width, depth, temps, wi, d) ;%linear interpolation ? zcubic=interp2(width, depth, temps, wi,d, ' cubic ') ;%cubic interpolation ? plot(wi, zlinear, ' - ' , wi, zcubic)%plot results ? xlabel(' Width of Plate '),y label(' Degrees Celsius ') ? title( [' Temperature at Depth ='num2str(d) ] ) 另一种方法,我们可以在两个方向插值。先在三维坐标画出原始数据,看一下该数据的粗糙程度(见图11.7)。? mesh(width, depth, temps)%use mesh plot ? xlabel(' Width of Plate '),ylabel(' Depth of Plate ') ? zlabel(' Degrees Celsius '),axis(' ij '),grid

三次样条插值方法的应用

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 在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m 。 Matlab 代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x) %x0,y0 are existed points,x are insert points,y21,y2n are the second

数学实验

1、设A=??? ? ??5241,则det(A)= -3 , rank(A)= 2 . 2、设A=??? ? ??4321,则A 3= [37, 54;81, 118] , A.^3= [1, 8;27 ,64] . 3、在matlab 中输入等差数组x (首项为7,尾项为1,公差为2)的命令是 a=7:-2:1 linspace(7,1,4) . 4、在matlab 中,查询函数log 的详细说明,可输入命令 help log . 5、在matlab 中,用于画空间曲面的命令是 mesh 或 surf . 6、设A=??? ? ??5421,则size(A)= 2 2 , inv(A)= -1.6667 0.6667 1.3333 -0.3333 . 7、设A=??? ? ??5421,则A 2= 9 12 24 33 , A.^2= 1 4 16 25 . 8、在matlab 中输入等差数组x (首项为1,尾项为7,公差为2)的命令是 a=1:2:7 . 9、在matlab 中,查询函数sqrt 的详细说明,可输入命令 help sqrt . 10、在matlab 中,用于画平面曲线的命令是 plot . 二、简答 11. 设1010)(?=j i a A 和1010)(?=j i b B 是两个10行10列的矩阵(数组),试说明命 令A*B, A\B, A .*(B.^A), A ./B, A .\B 的涵义 A*B A 矩阵和B 矩阵作乘法运算 A\B A 左除B A .*(B.^A) A 点乘 B 的A 次幂 A ./ B A 点右除B ,也就是A 乘以B 的逆矩阵,即 A B -1 A .\ B A 点左除B ,也就是A 的逆矩阵乘以矩阵B ,即A -1B 12. (1) 写出关系运算符中的等号、不等号、小于号、大于号、小于等于号和大 于等于号; 等号==、不等号~=、小于号<、大于号>、小于等于号<=、大于等于号>=

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

数值计算方法作业 实验4.3 三次样条差值函数 实验目的: 掌握三次样条插值函数的三弯矩方法。 实验函数: dt e x f x t ? ∞ -- = 2 221)(π 实验内容: (1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值; (3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线 比较插值结果。 实验4.5 三次样条差值函数的收敛性 实验目的: 多项式插值不一定是收敛的,即插值的节点多,效果不一定好。对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。 实验内容: 按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。 实验要求: (1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情 况,分析所得结果并与拉格朗日插值多项式比较; (2) 三次样条插值函数的思想最早产生于工业部门。作为工业应用的例子,考

虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一 算法描述: 拉格朗日插值: 错误!未找到引用源。 其中错误!未找到引用源。是拉格朗日基函数,其表达式为:() ∏ ≠=--=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 其中????? ?? ?? ?????? --=--= --= -)/(]),...,[],...,[(]...,[..],[],[],,[)()(],[01102110x x x x x f x x x f x x x f x x x x f x x f x x x f x x x f x f x x f n n n n i k j i k j k j i j i j i j i 三样条插值: 所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a

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

实验报告:牛顿差值多项式&三次样条 问题:在区间[-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 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.0 202e-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时: 对n=10的代码进行修改就可以得到n=20时的代码。将“x1=-1:0.2:1;”改为“x1=-1:0.1:1;”即可。运行程序,我们得到n=20时的牛顿插值多项式,结果为:P20(x)= 260188.0*x^20 - 1.0121e6*x^18 + 2.6193e-12*x^17 + 1.6392e6*x^16 + 2.248e-11*x^15 - 1.4429e6*x^14 - 4.6331e-11*x^13 + 757299.0*x^12 + 1.7687e-11*x^11 - 245255.0*x^10 + 2.1019e-11*x^9 + 49318.0*x^8 + 3.5903e-12*x^7 - 6119.2*x^6 - 1.5935e-12*x^5 + 470.85*x^4 + 1.3597e-14*x^3 - 24.143*x^2 - 1.738e-14*x + 1.0 同样的,这里得到了该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.2)。

数值分析法 曲线拟合法插值建模法

数值分析法 相关知识 在生产和科学实验中,自变量x 与因变量y 间的函数关系()y f x =有时不能写出解析表达式,而只能得到函数在若干点的函数值或导数值,或者表达式过于复杂而需要较大的计算量。当要求知道其它点的函数值时,需要估计函数值在该点的值。 为了完成这样的任务,需要构造一个比较简单的函数()y x ?=,使函数在观测点的值等于已知的值,或使函数在该点的导数值等于已知的值,寻找这样的函数()y x ?=有很多方法。根据测量数据的类型有以下两类处理观测数据的方法。 (1)测量值是准确的,没有误差,一般用插值。 (2)测量值与真实值有误差,一般用曲线拟合。 曲线拟合法 已知离散点上的数据集1122{(,),(,),,(,)}n n x y x y x y ,即已知在点集12{,,,}n x x x 上的函数值12{,,,}n y y y ,构造一个解析函数(其图形为一曲线)使()f x 在原离散点 i x 上尽可能接近给定的i y 值,这一过程称为曲线拟合。 曲线拟合的一般步骤是先根据实验数据,结合相关定律,将要寻求的最恰当的拟合曲线方程形式预测出来,再用其他的数学方法确定经验公式中的参数。 对于事先给定的一组数据,确定经验公式一般可分为三步进行: (1)、确定经验公式的形式:根据系统和测定的数据的特点,并参照已知图形的特点确定经验公式的形式。 (2)、确定经验公式中的待定系数:计算待定系数的方法有许多常用的法有图示法、均值法、差分法、最小二乘法、插值法等。 (3)、检验:求出经验公式后,还要将测定的数据与用经验公式求出的理论

数据作比较,验证经验公式的正确性,必要时还要修正经验公式。 关于确定经验公式的形式,可从以下几个方面入手: (1)、利用已知的结论确定经验公式形式,如由已知的胡克定律可以确定在一定条件下,弹性体的应变与应力呈线性关系等。 (2)、从分析实验数据的特点入手,将之与已知形式的函数图形相对照,确定经验公式的形式。 (3)、描点作图法:将已知的点用光滑的曲线连接起来,寻找曲线的形式。 (4)、多项式近似、线性插值或样条插值等。多项式近似是工程中十分常见的方法,它首先需要确定多项式的次数,一般可以用差分法、差商法来估计。 <一>、差分方程法 <1>、差分方程:差分方程反映的是关于离散变量的取值与变化规律。通过建立一个或几个离散变量取值所满足的平衡关系,从而建立差分方程。 (1)、说明:差分方程就是针对要解决的目标,引入系统或过程中的离散变量,根据实际背景的规律、性质、平衡关系,建立离散变量所满足的平衡关系等式,从而建立差分方程。通过求出和分析方程的解,或者分析得到方程解的特别性质(平衡性、稳定性、渐近性、振动性、周期性等),从而把握这个离散变量的变化过程的规律,进一步再结合其他分析,得到原问题的解。 (2)、应用:差分方程模型有着广泛的应用。实际上,连续变量可以用离散变量来近似和逼近,从而微分方程模型就可以近似于某个差分方程模型。差分方程模型有着非常广泛的实际背景。在经济金融保险领域、生物种群的数量结构规律分析、疾病和病虫害的控制与防治、遗传规律的研究等许许多多的方面都有着非常重要的作用。可以这样讲,只要牵涉到关于变量的规律、性质,就可以适当地用差分方程模型来表现与分析求解。

三次样条插值的MATLAB实现

MATLAB 程序设计期中考查 在许多问题中,通常根据实验、观测或经验得到的函数表或离散点上的信息,去研究分析函数的有关特性。其中插值法是一种最基本的方法,以下给出最基本的插值问题——三次样条插值的基本提法: 对插值区间[]b a ,进行划分:b x x x a n ≤

数学实验-实验2 插值与拟合

广州大学学生实验报告 开课学院及实验室: 2014年 月 日 学院 数学与信息科学学院 年级、专业、班 姓名 学号 实验课程名称 数学实验 成绩 实验项目名称 实验2 插值与拟合 指导老师 一、实验目的 1、掌握用MATLAB 计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。 2、掌握用MATLAB 作线性最小二乘拟合的方法。 3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。 二、实验设备 电脑、MATLAB 三、实验要求 1..选择一些函数,在n 个节点上(n )不要太大,如5~11)用拉格朗日,分段线性,三次样条三种插值方法,,计算m 各插值点的函数值(m 要适中,如50~100).通过数值和图形的输出,将三种插值结果与精确值进行比较.适当增加n ,再作比较,由此作初步分析.下列函数供选择参考: a. y=sin x ,0≦x ≦2π; 2.用 1 2 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 8. 弹簧在力F 的作用下伸长x ,一定范围内服从胡克定律:F 与x 成正比,即F=kx,k 为弹性系数.现在得到下面一组x ,F 数据,并在(x,F )坐标下作图(图13).可以看出,当F大到一定数值(如x=9以后)后,就不服从这个定律了。试由数据拟合直线F=kx,并给出不服从胡克定律时的近似公式(曲线)。 1)要求直线与曲线在x=9处相连接。 2)要求直线与曲线在x=9处光滑连接. 四、实验程序 预备: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=s+p*y0(k); end y(i)=s; end 五、实验操作过程 当n=5时 clear; n=5; %在n 个节点上进行插值 m=75; %产生m 个插值点,计算函数在插值点处的精确值,将来进行对比 x=0:4/(m-1):2*pi; y=sin(x); z=0*x; x0=0:4/(n-1):2*pi; y0=sin(x0); y1=lagr1(x0,y0,x); % y1为拉格朗日插值 y2=interp1(x0,y0,x); % y2为分段线性插值 y3=spline(x0,y0,x); % y3为三次样条插值 [x' y' y1' y2' y3'] plot(x,z,'k',x,y,'r:',x,y1,'g-.',x,y2,'b',x,y3,'y--') gtext('Lagr.'), gtext('Pieces. linear'), gtext('Spline'), gtext('y=sin(x)') hold off; %比较插值所得结果与函数在插值点处的精确值 s = ' x y y1 y2 y3' [x' y' y1' y2' y3'] 结果 ans = 0 0 0 0 0 0.0541 0.0540 0.0495 0.0455 0.0611 0.1081 0.1079 0.0999 0.0910 0.1207 0.1622 0.1615 0.1510 0.1365 0.1787 0.2162 0.2145 0.2025 0.1819 0.2350 0.2703 0.2670 0.2541 0.2274 0.2896 0.3243 0.3187 0.3054 0.2729 0.3425 0.3784 0.3694 0.3563 0.3184 0.3936 0.4324 0.4191 0.4066 0.3639 0.4429 0.4865 0.4675 0.4559 0.4094 0.4904 0.5405 0.5146 0.5040 0.4548 0.5359 0.5946 0.5602 0.5508 0.5003 0.5796 0.6486 0.6041 0.5961 0.5458 0.6212 0.7027 0.6463 0.6396 0.5913 0.6609 0.7568 0.6866 0.6812 0.6368 0.6985 0.8108 0.7248 0.7208 0.6823 0.7341 0.8649 0.7610 0.7583 0.7278 0.7675

相关文档
相关文档 最新文档