欢迎来到天天文库
浏览记录
ID:50818137
大小:441.50 KB
页数:4页
时间:2020-03-14
《三次样条插值方法的应用.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、CENTRALSOUTHUNIVERSITY数值分析实验报告三次样条插值方法的应用一、问题背景分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。二、数学模型
2、样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。设区间上给定有关划分,为上满足下面条件的函数。l;l在每个子区间上是三次多项式。则称为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型:lⅠ型。lⅡ型,其特殊情况为。lⅢ型,此条件称为周期样条函数。鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。三、算法及流程按照传统的编程方法,可将公式直接转换为MATLAB可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更
3、直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m。Matlab代码如下:functions=spline2(x0,y0,y21,y2n,x)%s=spline2(x0,y0,y21,y2n,x)%x0,y0areexistedpoints,xareinsertpoints,y21,y2narethesecond%dirivitivenumbersgiven.n=length(x0);km=length(x);a(1)=-0.5;b(1)=3*(y0(2)-y0(1))/(2*(x0(2)-x0(1)));forj=1:(n-
4、1)h(j)=x0(j+1)-x0(j);endforj=2:(n-1)alpha(j)=h(j-1)/(h(j-1)+h(j));beta(j)=3*((1-alpha(j))*(y0(j)-y0(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));endm(n)=(3*(y0(n)-y0(n-1))/h(n-1)+y2n*h(n-1)/2-b(n
5、-1))/(2+a(n-1));forj=(n-1):-1:1m(j)=a(j)*m(j+1)+b(j);endfork=1:kmforj=1:(n-1)if((x(k)>=x0(j))&(x(k)6、);sum=sum+h(l(k))*((x0(l(k)+1)-x(k))^2/h(l(k))^2-(x0(l(k)+1)-x(k))^3/h(l(k))^3)*m(l(k));s(k)=sum-h(l(k))*((x(k)-x0(l(k)))^2/h(l(k))^2-(x(k)-x0(l(k)))^3/h(l(k))^3)*m(l(k)+1);end四、计算结果及分析给定如下数值表,试求三次样条插值函数满足边界条件28.72829304.14.34.13.0在MATLAB命令窗口中输入:x=[28.7282930];y=[4.14.34.13.0];x0=[28.7:0.15:7、30];y=spline2(x,y,0,0,x0);plot(x0,y)得到的图形如下图所示:
6、);sum=sum+h(l(k))*((x0(l(k)+1)-x(k))^2/h(l(k))^2-(x0(l(k)+1)-x(k))^3/h(l(k))^3)*m(l(k));s(k)=sum-h(l(k))*((x(k)-x0(l(k)))^2/h(l(k))^2-(x(k)-x0(l(k)))^3/h(l(k))^3)*m(l(k)+1);end四、计算结果及分析给定如下数值表,试求三次样条插值函数满足边界条件28.72829304.14.34.13.0在MATLAB命令窗口中输入:x=[28.7282930];y=[4.14.34.13.0];x0=[28.7:0.15:
7、30];y=spline2(x,y,0,0,x0);plot(x0,y)得到的图形如下图所示:
此文档下载收益归作者所有