1、数值分析课程设计说明书 数值分析课程设计说明书班级: 计算B092 姓名: 设计题目: 数值积分软件 设计时间: 2012.2.27 至 2012.3.2 指导教师: 李 慧 评 语: _评阅成绩: 评阅教师: 设计总说明数值积分是求定积分的近似值的数值方法。即用被积函数的有限个抽样值的离散或加权平均近似值代替定积分的值。求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的。另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解。由于以上原因,数值积分
2、的理论与方法一直是计算数学研究的基本课题。对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯等人也在数值积分这个领域做出了各自的贡献,并奠定了它的理论基础。用数值积分的计算理论加以C+语言编写程序来计算数值积分,不仅可以更好的掌握数值积分本身,还可以提高软件开发的能力。把所学知识用于实际生活中是非常有必要的。好的积分软件不仅可以计算出给定函数的定积分,还能准确的计算出各种积分方法的积分值。因此,数值积分软件的开发是非常实用及有必要的。关键词: 龙贝格算法;自适应梯形法;复化辛卜生法;MFC 前 言本课程设计是在学习了数值分析和C语言等有关课程后,通过实际的操作来熟悉数值分析和
3、相关软件的应用,培养独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。好的数值积分软件可以方便的为我们求解出积分值。课程设计,着重培养的是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,用来丰富自己的知识并且提高对Matlab、VC+等软件的实际操作能力。通过这次的课程设计,使我们对已经学习过的数值分析课程的进一步的掌握,对知识进行最大程度的消化融汇。因此这次的课程设计对我们来说具有非常重要的作用:为以后学习工作做必要的准备和实践,提高自身对数值分析的认识以及软件开发的能力。第1章 总体设计方案1.1 软件结构设计图1.1.1 软件功能结构图第2章 算法分析及设计2.1自适
4、应梯形法2.1.1自适应梯形法算法分析:变步长梯形算法依据公式。计算时可按如下步骤:输入精度;s=0;1 2 3 4 。2.1.2自适应梯形法算法设计:float AutoTrap(float (*f)(float),float a,float b) int i; float x,s,h=b-a; float t1,t2=h/2.0*(f(a)+f(b); n=1; do s=0.0; t1=t2; for(i=0;i1e-6); return t2;2.2复化辛卜生法2.2.1复化辛卜生法算法分析复化辛卜生公式为,计算过程为:令;对计算。2.2.2复化辛卜生法算法设计float Simpso
5、n(float (*f)(float),float a,float b, int n) int k; float s,s1,s2=0.0; float h=(b-a)/n; s1=f(a+h/2); for(k=1;k=n-1;k+) s1+=f(a+k*h+h/2); s2+=f(a+k*h); s=h/6*(f(a)+4*s1+2*s2+f(b); return s;2.3龙贝格算法2.3.1龙贝格算法分析 2.3.2龙贝格算法设计float Romberg(float a,float b,float (*f)(float),float epsilon) int n=1,k; float
6、h=b-a,x,temp; float T1,T2,S1,S2,C1,C2,R1,R2; T1=(b-a)/2*(*f)(a)+(*f)(b); while(1) temp=0; for(k=0;k=n-1;k+) x=a+k*h+h/2; temp+=(*f)(x); T2=(T1+temp*h)/2; if(fabs(T2-T1)epsilon) return T2; S2=T2+(T2-T1)/3.0; if(n=1)T1=T2;S1=S2;h/=2;n*=2;continue; C2=S2+(S2-S1)/15; if(n=2)C1=C2;T1=T2;S1=S2;h/=2;n*=2;c
7、ontinue; R2=C2+(C2-C1)/63; if(n=4)R1=R2;C1=C2;T1=T2;S1=S2;h/=2;n*=2;continue; if(fabs(R2-R1)epsilon) return R2; R1=R2;C1=C2;T1=T2;S1=S2;h/=2;n*=2; 第3章 软件详细设计3.1主界面设计数值积分软件主界面如图3.1.1所示,包括两大功能。一个是选择求积方法,另一个是查看相应算法的算法理论。为了使软件美观,还可以为软件添加背景图片以及显示系统时间,这样就使软件显得不再单调。图3.1.1 主界面添加背景图片关键代码:void CAutoTrap:OnPai
8、nt() CPaintDC dc(this); / device context for paintingCRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP2); BITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(
9、0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);显示时间代码:void CMyDlg:OnTimer(UINT nIDEvent) CDialog:OnTimer(nIDEvent); CString str; CTime theTime = CTime:GetCurrentTime(); str.Format(%02d年%02d月%02d日 %02d:%02d:%02d, theTime.GetYear(),theTime.GetMonth(),theTime.GetDay()
10、, theTime.GetHour(),theTime.GetMinute(),theTime.GetSecond(); SetDlgItemText(IDC_STATIC_TIME,str); CDialog:OnTimer(nIDEvent);3.2功能设计3.2.1自适应梯形法的实现通过类向导为控件赋值,从界面获取上下界以及精度值,从而进行计算,将结果显示在对应框。若输入错误的数据将进行错误提示。为了美观,以相同方法添加背景图片。图3.2.1 自适应梯形法 图3.2.2积分区间错误提示 图3.2.3精度值错误提示关键代码:(1) 错误检查及提示代码:if(m_xiajie=m_shang
11、jie) MessageBox(积分区间错误!); return; if(m_epsilon=0) MessageBox(精度值有误!); return; 3.2.2复化辛卜生法的实现同样,通过类向导为控件赋值,从界面获取上下界、划分区间及运算次数,从而进行计算,将结果显示在列表框。若输入错误的数据将进行错误提示。图3.2.4 复化辛卜生法图3.2.5 错误提示关键代码:(1) 列表框表头初始化代码:BOOL CSimpson:OnInitDialog() Cdialog:OnInitDialog(); / TODO: Add extra initialization here m_combo
12、.SetCurSel(0); m_List1.SetExtendedStyle(LVS_EX_FLATSB |LVS_EX_FULLROWSELECT |LVS_EX_HEADERDRAGDROP |LVS_EX_ONECLICKACTIVATE |LVS_EX_GRIDLINES); m_List1.InsertColumn(0,”sn”, LVCFMT_LEFT, 80); m_List1.InsertColumn(1,”值”, LVCFMT_LEFT, 140); return TRUE; / return TRUE unless you set the focus to a contr
13、ol / EXCEPTION: OCX Property Pages should return FALSE(2) 结果显示代码:for(int j=0;jm_cishu;j+) if(index=0) s=Simpson(f7,m_xiajie,m_shangjie,n); if(index=1) s=Simpson(f8,m_xiajie,m_shangjie,n); if(index=2) s=Simpson(f9,m_xiajie,m_shangjie,n); p.Format(%d,n); p=s+p+; q.Format(%f,s); m_List1.InsertItem(j,); m_List1.SetItemText(j,0,p); m_List1.SetItemText(j,1,q); n*=2; 3.2.3龙贝格算法的实现同样,通过类向导为控件赋值,从界面获取上下界及精度值。单机计算按钮,即可将结果显示在结果框。单机返回按钮,返回主界面。若输入错误的数据将进行错误提示。图3.2.6 龙贝格算法3.2.4算法简介功能设计算法简介功能就是对每种算法的简单介绍,单机相应按钮就可以查看。图3.2.7 自适应梯形法简介
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1