数值分析课程设计说明书Word格式文档下载.docx
- 文档编号:14828612
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:24
- 大小:1.53MB
数值分析课程设计说明书Word格式文档下载.docx
《数值分析课程设计说明书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计说明书Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
把所学知识用于实际生活中是非常有必要的。
好的积分软件不仅可以计算出给定函数的定积分,还能准确的计算出各种积分方法的积分值。
因此,数值积分软件的开发是非常实用及有必要的。
关键词:
龙贝格算法;
自适应梯形法;
复化辛卜生法;
MFC
前言
本课程设计是在学习了数值分析和C语言等有关课程后,通过实际的操作来熟悉数值分析和相关软件的应用,培养独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。
好的数值积分软件可以方便的为我们求解出积分值。
课程设计,着重培养的是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,用来丰富自己的知识并且提高对Matlab、VC++等软件的实际操作能力。
通过这次的课程设计,使我们对已经学习过的数值分析课程的进一步的掌握,对知识进行最大程度的消化融汇。
因此这次的课程设计对我们来说具有非常重要的作用:
为以后学习工作做必要的准备和实践,提高自身对数值分析的认识以及软件开发的能力。
第1章总体设计方案
1.1软件结构设计
图1.1.1软件功能结构图
第2章算法分析及设计
2.1自适应梯形法
2.1.1自适应梯形法算法分析:
变步长梯形算法依据公式。
计算时可按如下步骤:
输入精度;
s=0;
1
2
3
4②。
2.1.2自适应梯形法算法设计:
floatAutoTrap(float(*f)(float),floata,floatb)
{
inti;
floatx,s,h=b-a;
floatt1,t2=h/2.0*(f(a)+f(b));
n=1;
do
{
s=0.0;
t1=t2;
for(i=0;
i<
=n-1;
i++)
{
x=a+i*h+h/2;
s+=f(x);
}
t2=(t1+s*h)/2.0;
n*=2;
h/=2.0;
}
while(fabs(t2-t1)>
1e-6);
returnt2;
}
2.2复化辛卜生法
2.2.1复化辛卜生法算法分析
复化辛卜生公式为,计算过程为:
令;
对计算
。
2.2.2复化辛卜生法算法设计
floatSimpson(float(*f)(float),floata,floatb,intn)
intk;
floats,s1,s2=0.0;
floath=(b-a)/n;
s1=f(a+h/2);
for(k=1;
k<
k++)
s1+=f(a+k*h+h/2);
s2+=f(a+k*h);
s=h/6*(f(a)+4*s1+2*s2+f(b));
returns;
2.3龙贝格算法
2.3.1龙贝格算法分析
2.3.2龙贝格算法设计
floatRomberg(floata,floatb,float(*f)(float),floatepsilon)
intn=1,k;
floath=b-a,x,temp;
floatT1,T2,S1,S2,C1,C2,R1,R2;
T1=(b-a)/2*((*f)(a)+(*f)(b));
while
(1)
temp=0;
for(k=0;
x=a+k*h+h/2;
temp+=(*f)(x);
T2=(T1+temp*h)/2;
if(fabs(T2-T1)<
epsilon)
returnT2;
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;
R2=C2+(C2-C1)/63;
if(n==4){R1=R2;
C1=C2;
if(fabs(R2-R1)<
returnR2;
R1=R2;
第3章软件详细设计
3.1主界面设计
数值积分软件主界面如图3.1.1所示,包括两大功能。
一个是选择求积方法,另一个是查看相应算法的算法理论。
为了使软件美观,还可以为软件添加背景图片以及显示系统时间,这样就使软件显得不再单调。
图3.1.1主界面
添加背景图片关键代码:
voidCAutoTrap:
:
OnPaint()
CPaintDCdc(this);
//devicecontextforpainting
CRectrect;
GetClientRect(&
rect);
CDCdcMem;
dcMem.CreateCompatibleDC(&
dc);
CBitmapbmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP2);
BITMAPbitmap;
bmpBackground.GetBitmap(&
bitmap);
CBitmap*pbmpOld=dcMem.SelectObject(&
bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&
dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
显示时间代码:
voidCMyDlg:
OnTimer(UINTnIDEvent)
CDialog:
OnTimer(nIDEvent);
CStringstr;
CTimetheTime=CTime:
GetCurrentTime();
str.Format("
%02d年%02d月%02d日%02d:
%02d:
%02d"
theTime.GetYear(),theTime.GetMonth(),theTime.GetDay(),
theTime.GetHour(),theTime.GetMinute(),theTime.GetSecond());
SetDlgItemText(IDC_STATIC_TIME,str);
3.2功能设计
3.2.1自适应梯形法的实现
通过类向导为控件赋值,从界面获取上下界以及精度值,从而进行计算,将结果显示在对应框。
若输入错误的数据将进行错误提示。
为了美观,以相同方法添加背景图片。
图3.2.1自适应梯形法
图3.2.2积分区间错误提示图3.2.3精度值错误提示
关键代码:
(1)错误检查及提示代码:
if(m_xiajie==m_shangjie)
MessageBox("
积分区间错误!
"
);
return;
if(m_epsilon<
=0)
精度值有误!
3.2.2复化辛卜生法的实现
同样,通过类向导为控件赋值,从界面获取上下界、划分区间及运算次数,从而进行计算,将结果显示在列表框。
图3.2.4复化辛卜生法
图3.2.5错误提示
(1)列表框表头初始化代码:
BOOLCSimpson:
OnInitDialog()
Cdialog:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_combo.SetCurSel(0);
m_List1.SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES);
m_List1.InsertColumn(0,”s[n]”,LVCFMT_LEFT,80);
m_List1.InsertColumn(1,”值”,LVCFMT_LEFT,140);
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
(2)结果显示代码:
for(intj=0;
j<
m_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自适应梯形法简介
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 课程设计 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)