分段线性插值法

上传人:m**** 文档编号:166111134 上传时间:2022-10-31 格式:DOCX 页数:17 大小:44.05KB
收藏 版权申诉 举报 下载
分段线性插值法_第1页
第1页 / 共17页
分段线性插值法_第2页
第2页 / 共17页
分段线性插值法_第3页
第3页 / 共17页
资源描述:

《分段线性插值法》由会员分享,可在线阅读,更多相关《分段线性插值法(17页珍藏版)》请在装配图网上搜索。

1、数值分析实验报告实验序号:实验五实验名称:1、实验目的:随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易 带来剧烈的震荡,带来数值的不稳定(Runge现象)。为了既要增加插值的节点,减小插值 的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段 线性插值。2、实验内容:求一个函数9 (x)用来近似函数fx),用分段线性插值的方法来求解近似函数9 (x) 并画出近似函数图像及原函数图像。设在区间a,b上,给定n+1个插值节点a二x x x . x二b和相应的函数0 1 2 n值y ,y,,y,求一个插值函数9(x),满足以下条件:0 1 n

2、(1) 9 (x ) = y (j = 0,1,2,., n);jj(2) 9(x)在每一个小区间x ,x 上是线性函数。j j+1对于给定函数f (x) -1,-1 x 1。在区间L1,1上画出fx)和分段线性插1 + 25x2值函数9 (x)的函数图像。1. 分段线性插值的算法思想:分段线性插值需要在每个插值节点上构造分段线性插值基函数l (x),然后再 j作它们的线性组合。分段线性插值基函数的特点是在对应的插值节点上函数值取1,其它节点上函数值取0。插值基函数如下:l0( x)=x - x, x x x x - x 01010, 其它x-xH, x x xx - xj -1jjj -1x

3、-xjL, x x xx - x jj+1jj+10,其它x - x1 (x)=nn 1 , xLoadIcon(IDR_MAINFRAME);void CLDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CLDlg)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CLDlg, CDialog)/AFX_MSG_MAP(CLDlg)ON_WM_SYSCOMMAN

4、D()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_LARGRI, OnLargri)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_HERMITE, OnHermite)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CLDlg message handlersBOOL CLDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX

5、must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a

6、dialogSetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CLDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoMod

7、al();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CLDlg:OnPaint()if (IsIconic()CPaintDC dc(this); / de

8、vice context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyI

9、con + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags / the minimized window.HCURSOR CLDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CLDlg:OnOK()int x00=300,y00=350,i,j;double x;CDC *pDC=GetDC();

10、pDC-SetMapMode(MM_LOMETRIC);pDC-SetViewportOrg(x00,y00);/画坐标轴与原函数for(i=-700; iSetPixel(i,0,RGB(0,0,0);pDC-SetPixel(0,i,RGB(0,0,0);for(x=-1; xSetPixel(x*500,j,RGB(255,0,0);pDC-TextOut(-30,-10,0);pDC-TextOut(-30,430,1);pDC-TextOut(490,-10,1);pDC-TextOut(-490,-10,-1);pDC-MoveTo(T0,680);/x 箭头pDC-LineTo(

11、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);void CLDlg:OnLargri()int x00=300,y00=350,i,j;double x;CDC *pDC=GetDC();pDC-SetMapMode(MM_LOMETRIC);pDC-SetViewportOrg(x00,y00);/画坐

12、标轴for(i=-700; iSetPixel(i,0,RGB(0,0,0);pDC-SetPixel(0,i,RGB(0,0,0);double yx=-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1; pDC-TextOut(-30,-10,0);pDC-TextOut(-30,430,1);pDC-TextOut(490,-10,1);pDC-TextOut(-490,-10,-1);pDC-MoveTo(T0,680);/x 箭头pDC-LineTo(0,700);pDC-MoveTo(0,700);pDC-LineTo(10,680);pDC-Mo

13、veTo(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);/ 拉格朗日差值的函数double yy12,lx12,ly12;double l_fenzi12,l_fenmu12;double l_x,l_y;for(i=0; i=10; i+)yyi=1.0/(1+25*yxi*yxi);for(i=0; i=10; i+)l_fenmui=1.0;for(j=0; j=10; j+)if(i!=j)l_fenmu

14、i=l_fenmui*(yxi-yxj);double qq,pp;for(qq=-1; qq=1; qq+=0.0003)for(i=0; i=10; i+)l_fenzii=1.0;for(j=0; j=10; j+)if(i!=j)l_fenzii=l_fenzii*(qq-yxj);pp=0;for(i=0; iSetPixel(qq*500,pp*390+5,RGB(132,112,225);void CLDlg:OnButton2()int x00=300,y00=350,i,j;double x;CDC *pDC=GetDC();pDC-SetMapMode(MM_LOMETRI

15、C);pDC-SetViewportOrg(x00,y00);/画坐标轴与原函数for(i=-700; iSetPixel(i,0,RGB(0,0,0); pDC-SetPixel(0,i,RGB(0,0,0);double yx=-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1;double yy14;for(i=0; iTextOut(-30,-10,0);pDC-TextOut(-30,430,1);pDC-TextOut(490,-10,1);pDC-TextOut(-490,-10,-1);pDC-MoveTo(T0,680);/x 箭头pDC-L

16、ineTo(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);/ 线性分段差值的图像CPen pen;CPen*oldpen;pen.CreatePen(PS_SOLID,5,RGB(0,0,0);oldpen=pDC-SelectObject(&pen);for(i=0; iSetMapMode(MM_LO

17、METRIC);pDC-SetViewportOrg(x00,y00);/画坐标轴与原函数for(i=-700; iSetPixel(i,0,RGB(0,0,0);pDC-SetPixel(0,i,RGB(0,0,0);double yx=-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1;double yy12;for(i=0; iTextOut(-30,-10,0);pDC-TextOut(-30,430,1);pDC-TextOut(490,-10,1);pDC-TextOut(-490,-10,-1);pDC-MoveTo(T0,680);/x 箭头p

18、DC-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差值的函数double x0,x1,yd1,yd0,y1,y0;for(i=0; i10; i+)x0=yxi,x1=yxi+1;y0=1.0/(1+25*x0*x0);y1=1.0/(1+25*x1*x1);yd0

19、=-(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(double qq=x0; qqx1; qq+=0.005)double pp= 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

20、-x1) * (qq-x0)/(x1-x0) * (qq-x0)/(x1-x0); pDC-SetPixel(qq*500,pp*400,RGB(225,185,15);4. 实验截图5. 实验结果分析:分析:分段线性插值的方法克服了 Lagrange插值法当节点不断加密时,构造的插值多项式的 次数不断升高,高次多项式虽然是连续的,但是不一定都收敛到相应的被插函数而产生 Runge现象。分段线性插值因为在每一段小区间上都是线性插值而极大地降低了插值多项式 的次数,从几何图形上可以看出,当节点取得较多时插值函数的逼近效果还是很好的,但是 所求函数是一条以型值点为顶点的折线,这也表现出了它的缺点就是所求得的插值函数的光 滑性较差,这就要求一种更好的方法来克服这一缺点了。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!