版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 数值分析实验报告实验序号:实验六 实验名称: Hermite插值法 1. 实验目的:学会Hermite插值法,并应用该算法于实际问题.2. 实验内容:求一个函数(x)用来近似函数f(x),用分段三次Hermit插值的方法来求解近似函数(x)并画出近似函数图像及原函数图像。设在区间a,b上,给定n+1个插值节点和相应的函数值以及一阶导数值,求一个插值函数,满足以下条件:(1) (2) 在每一个小区间上是三次多项式。 对于给定函数。在区间上画出f(x)和分段三次Hermit插值函数的函数图像。 3. 实验分析: 算法分析:1. 分段三次Hermit插值的算法思想:分段三次Hermit插值的做法是
2、在每一个小区间上作三次Hermit插值,因此在每一个插值节点上都需要构造两个插值基函数,然后再作它们的线性组合。分段三次Hermit插值基函数如下: 分段三次Hermit插值函数是: 4. 实验代码:/ LDlg.cpp : implementation file/#include stdafx.h#include L.h#include LDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Abou
3、tclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprot
4、ected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_
5、MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CLDlg dialogCLDlg:CLDlg(CWnd* pParent /*=NULL*/): CDialog(CLDlg:IDD, pParent)/AFX_DATA_INIT(CLDlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon
6、in Win32m_hIcon = AfxGetApp()-LoadIcon(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_SYSCOMMAND()ON_WM_PAINT()ON
7、_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 must be in the sys
8、tem 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 dialogSetIcon(m_hI
9、con, 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.DoModal();elseCDialog:OnS
10、ysCommand(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); / device context for pa
11、intingSendMessage(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() - cyIcon + 1) / 2;/ Draw
12、 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();pDC-SetMapMode(MM_L
13、OMETRIC);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(-10,680); /x箭头pDC-LineTo(0,700);pDC-Mo
14、veTo(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);/画坐标轴for(i=-70
15、0; 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(-10,680); /x箭头pDC-LineTo(0,700);pDC-MoveTo(0,700);pDC-LineTo(10,680); pDC-MoveTo(6
16、80,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_fenmui=l_f
17、enmui*(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_LOMETRIC
18、);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(-10,680); /x箭头p
19、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);/ 线性分段差值的图像CPen pen;CPen*oldpen;pen.CreatePen(PS_SOLID,5,RGB(0,0,0);oldpen=pDC-SelectObject(&pen);for(i=0; iMoveTo(yxi*
20、480,yyi*400); pDC-LineTo(yxi+1*480,yyi+1*400); void CLDlg:OnHermite() int x00=300,y00=350,i,j;double x;CDC *pDC=GetDC();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);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(-10,680); /x箭头pDC-LineTo(0,700);pDC-MoveTo(0,700);pDC-LineTo(10,680); pDC-Mo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中数学七年级上册(华东师大版)角的概念与运算知识清单
- 小学六年级道德与法治下册《学会尊重》第一课时知识清单
- 小学四年级音乐《清晨》跨学科融合教学与审美差异化探究
- 2025-2026学年四川省泸州市高一(下)期末数学试卷(含简略答案)
- 高等流体力学课件-高等流体力学
- 2026科长选拔面试题及答案
- 2026品质主管面试题及答案
- 2026设计方面面试题及答案
- 2026创文类社工面试题及答案
- 医院质量与安全管理委员会工作制度
- 2026江苏连云港市金融控股集团有限公司招聘17人笔试备考题库及答案详解
- 2026四川雅安市雨城区考试招募医疗卫生辅助岗位人员13人笔试模拟试题及答案详解
- 2026公司安全生产管理制度及文件汇编(2026版)
- GB/T 14977-2025热轧钢板表面质量的一般要求
- 10S505 柔性接口给水管道支墩
- HXD2B型电力机车操纵方法
- JJG 196-2006常用玻璃量器
- GB/T 28369-2012铁合金评价品质波动和检查取样精度的试验方法
- GB/T 24962-2010冷冻烃类流体静态测量计算方法
- GB/T 23858-2009检查井盖
- 如家酒店员工手册
评论
0/150
提交评论