分段线性插值法.docx
- 文档编号:2327647
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:13
- 大小:32.30KB
分段线性插值法.docx
《分段线性插值法.docx》由会员分享,可在线阅读,更多相关《分段线性插值法.docx(13页珍藏版)》请在冰豆网上搜索。
分段线性插值法
《数值分析》实验报告
实验序号:
实验五实验名称:
分段线性插值法
1、实验目的:
随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Runge现象)。
为了既要增加插值的节点,减小插值
的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段
线性插值。
2、实验内容:
求一个函数(X)用来近似函数f(x),用分段线性插值的方法来求解近似函数(X)
并画出近似函数图像及原函数图像。
设在区间[a,b]上,给定n+1个插值节点ax0Xjx2...xnb和相应的函
数值y。
,yi,…,yn,求一个插值函数(x),满足以下条件:
(1)(Xj)yj(j0,1,2,…,n);
(2)(x)在每一个小区间[Xj,Xji]上是线性函数。
1
对于给定函数f(x)2,-1X1。
在区间-1,1上画出f(x)和分段线性插
125x
值函数(x)的函数图像。
1.分段线性插值的算法思想:
分段线性插值需要在每个插值节点上构造分段线性插值基函数丨j(X),然后再
作它们的线性组合。
分段线性插值基函数的特点是在对应的插值节点上函数值取
1,其它节点上函数值取0。
插值基函数如下:
XXn1
——,Xn1XXn
In(X)XnXn1
0,其它
设在节点awx0 (1)L(x)€C[a,b] (2)L(x[i]=y[i]) (3)L(x)在每个小区间(x[i],x[i+1])上是线性 插值函数C(x)叫做区间[a,b]上对数据(x[j],y[j])(j=0,1,2,…,n)的分段区间函数。 利用一介拉格朗日函数,直接得到线性插值函数为: L(x0)=(x-x[1])/x[0]-x[1];(x[0]wxwx[1]) L(x0)=0(x[1]wxwx[n]) 分段线性方程的表达式: 0(x)=E(j=0,..,n)y[j]*L[j](x); 3、实验代码: //LDIg.cpp: implementationfile // #include"stdafx.h" #include"L.h" #include"LDlg.h" #ifdef_DEBUG #definenewDEBUG_NEW #undefTHIS_FILE staticcharTHIS_FILE[]=__FILE. #endif ///////////////////////////////////////////////////////////////////////////// //CAboutDlgdialogusedforAppAbout classCAboutDlg: publicCDialog { public: CAboutDlg(); //DialogData //{{AFX_DATA(CAboutDlg) enum{IDD=IDD_ABOUTBOX}; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CAboutDlg) protected: //DDX/DDVsupport virtualvoidDoDataExchange(CDataExchange*pDX); //}}AFX_VIRTUAL //Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg: : CAboutDlg(): CDialog(CAboutDlg: : IDD) //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT voidCAboutDlg: : DoDataExchange(CDataExchange*pDX) { CDialog: : DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg,CDialog) //{{AFX_MSG_MAP(CAboutDlg) //Nomessagehandlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// //CLDlgdialog CLDlg: : CLDlg(CWnd*pParent/*=NULL*/) : CDialog(CLDlg: : IDD,pParent) { //{{AFX_DATA_INIT(CLDlg) //NOTE: theClassWizardwilladdmemberinitializationhere //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); voidCLDlg: : DoDataExchange(CDataExchange*pDX) CDialog: : DoDataExchange(pDX); //{{AFX_DATA_MAP(CLDlg) //NOTE: theClassWizardwilladdDDXandDDVcallshere//}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLDlg,CDialog) //{{AFX_MSG_MAP(CLDlg) ON_WM_SYSCOMMAND() 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_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// //CLDlgmessagehandlers BOOLCLDlg: : OnInitDialog() { CDialog: : OnInitDialog(); //Add"About..."menuitemtosystemmenu. //IDM_ABOUTBOXmustbeinthesystemcommandrange. ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX<0xF000); CMenu*pSysMenu=GetSystemMenu(FALSE); if(pSysMenu! =NULL) { CStringstrAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if(! strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); } } //Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//Setbigicon SetIcon(m_hIcon,FALSE);//Setsmallicon //TODO: Addextrainitializationhere returnTRUE;//returnTRUEunlessyousetthefocustoacontrol } voidCLDlg: : OnSysCommand(UINTnID,LPARAMlParam) { if((nID&0xFFF0)==IDM_ABOUTBOX) { CAboutDlgdlgAbout;dlgAbout.DoModal(); else { CDialog: : OnSysCommand(nID,lParam); } } //Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow //todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel, //thisisautomaticallydoneforyoubytheframework. voidCLDlg: : OnPaint() { if(IsIconic()) { CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0); //Centericoninclientrectangle intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; //Drawtheicon dc.DrawIcon(x,y,m_hIcon); else CDialog: : OnPaint(); } } //Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow. HCURSORCLDlg: : OnQueryDragIcon() { return(HCURSOR)m_hIcon; } voidCLDlg: : OnOK() { intx00=300,y00=350,i,j; doublex; CDC*pDC=GetDC();pDC->SetMapMode(MM_LOM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分段 线性插值