数值分析实验四Hermite插值法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数值分析实验报告专业:计算机科学与技术班级:14汉(2)学号:20141501069姓名:于童指导教师:马季骕老师实验项目Hermite插值法算法介绍学会Hermite插值法,并应用该算法于实际问题.求一个函数(x)用来近似函数f(x),用分段三次Hermit插值的方法来求解近似函数(x)并画出近似函数图像及原函数图像。设在区间[a,b]上,给定n+1个插值节点bxxxxan...210和相应的函数值nyyy,...,,10以及一阶导数值''1'0,...,,nyyy,求一个插值函数)(xH,满足以下条件:(1)),...,2,1,0()(,)(''niyxHyxHiiii(2))(xH在每一个小区间[1,jjxx]上是三次多项式。(3)对于给定函数11-,2511)(2xxxf。在区间11-,上画出f(x)和分段三次Hermit插值函数)(xH的函数图像。算法分析1.分段三次Hermit插值的算法思想:分段三次Hermit插值的做法是在每一个小区间上作三次Hermit插值,因此在每一个插值节点上都需要构造两个插值基函数)(),(xHxhii,然后再作它们的线性组合。分段三次Hermit插值基函数如下:其它0))(21()(1021010100xxxxxxxxxxxxh其它0))(()(10210100xxxxxxxxxxH1,...,2,10))(21())(21()(1211112111nixxxxxxxxxxxxxxxxxxxxxxxhiiiiiiiiii-iiiiiii其它1,...,2,10))(())(()(12111211nixxxxxxxxxxxxxxxxxxxHiiiiiiii-iiiii其它其它0))(21()(1-n2111nnnnnnnnxxxxxxxxxxxxh其它0))(()(1-n211nnnnnnxxxxxxxxxxH2.分段三次Hermit插值函数是:niiiiixHyxhyxH0'))()(()(实验源代码voidCMy20141501069View::Onher(){//TODO:Addyourcommandhandlercodehereintx00=300,y00=350,i,j;doublex;CDC*pDC=GetDC();pDC-SetMapMode(MM_LOMETRIC);pDC-SetViewportOrg(x00,y00);//画坐标轴与原函数for(i=-700;i=700;i++){pDC-SetPixel(i,0,RGB(0,0,0));pDC-SetPixel(0,i,RGB(0,0,0));}doubleyx[]={-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1};doubleyy[12];for(i=0;i=10;i++){yy[i]=1.0/(1+25*yx[i]*yx[i]);}pDC-TextOut(-30,-10,0);pDC-TextOut(-30,430,1);pDC-TextOut(490,-10,1);pDC-TextOut(-490,-10,-1);pDC-MoveTo(-10,680);//x箭头pDC-LineTo(0,700);pDC-MoveTo(0,700);pDC-LineTo(10,680);pDC-MoveTo(680,10);//y箭头pDC-LineTo(700,0);pDC-MoveTo(700,0);pDC-LineTo(680,-10);pDC-TextOut(-30,700,y);pDC-TextOut(700,-10,x);//分段三次Hermite差值的函数doublex0,x1,yd1,yd0,y1,y0;for(i=0;i10;i++){x0=yx[i],x1=yx[i+1];y0=1.0/(1+25*x0*x0);y1=1.0/(1+25*x1*x1);yd0=-(50*x0)*1.0/((1+25*x0*x0)*(1+25*x0*x0));yd1=-(50*x1)*1.0/((1+25*x1*x1)*(1+25*x1*x1));for(doubleqq=x0;qqx1;qq+=0.005){doublepp=y0*(1+2*(qq-x0)/(x1-x0))*(qq-x1)/(x0-x1)*(qq-x1)/(x0-x1)+y1*(1+2*(qq-x1)/(x0-x1))*(qq-x0)/(x1-x0)*(qq-x0)/(x1-x0)+yd0*(qq-x0)*(qq-x1)/(x0-x1)*(qq-x1)/(x0-x1)+yd1*(qq-x1)*(qq-x0)/(x1-x0)*(qq-x0)/(x1-x0);pDC-SetPixel(qq*500,pp*400,RGB(225,185,15));}}}实验结果结果分析通过本次实验我对分段三次Hermit插值有了更深刻更全面的掌握,它在给定了节点处的函数值和导数值以后,构造了一个整体上具有一阶连续微商的插值函数。分段三次Hermit插值降低了插值多项式的次数,而且保证了插值函数在节点处一阶导数连续,从而使插值函数的光滑性更好。但是在实际问题中给出节点处的函数值比较方便,给出导数值就很困难了。分段三次Hermit插值函数属于插值曲线,适合于已知曲线上的某些点而生成曲线的情形,在许多实际问题中缺少灵活性和直观性。况且它只具有一阶光滑性,但很多实际问题中需要更好的光滑性,这就要求有更好的方法来解决问题,比如Bezier曲线,B样条曲线等。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功