数值分析实验二Word文档下载推荐.docx

上传人:b****4 文档编号:16493707 上传时间:2022-11-24 格式:DOCX 页数:12 大小:272.30KB
下载 相关 举报
数值分析实验二Word文档下载推荐.docx_第1页
第1页 / 共12页
数值分析实验二Word文档下载推荐.docx_第2页
第2页 / 共12页
数值分析实验二Word文档下载推荐.docx_第3页
第3页 / 共12页
数值分析实验二Word文档下载推荐.docx_第4页
第4页 / 共12页
数值分析实验二Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数值分析实验二Word文档下载推荐.docx

《数值分析实验二Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数值分析实验二Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

数值分析实验二Word文档下载推荐.docx

3、根据泄积分的计算方法,可以考虑二重积分的计算问题。

四、开发平台

1、操作系统:

WindowsXP\2000\Win7

2、编程语言:

VisualC卄6.0+MFC运行库

五.程序模块

六、程序设计流程图

开始

k=l

输出

K=k+1

结束

输出:

积分£

/(a>

/x的近似值卩广“

七、源程序代码

只截取与本程序相关的部分(MFC类程序此处略):

//numerical1.cpp:

implementationfile

//

includeustdafx.hH

#includeHmainframeDlg.hH

#include"

mainframe.h”

include"

numericall.h”

#includcHmath.hM

doublefl(doublex)

{

doublefrel;

frel=sqrt(4.0-pow(sin(x),2));

returnfrel;

}

doublef2(doublex)

doublefre2=0.0.mul=0.0;

if(x==O.OOOOOOOOOOOOOO)fre2=1.0;

else

{mul=sin(x);

fre2=niul/x;

returnfre2;

doublef3(doublex)

doublefre3;

fre3=exp(x)/(4.0+x*x);

returnfre3;

doublef4(doublex)

doublefre4;

fre4=log(1.0+x)/(1.0+x*x);

〃函数一计算函数

〃函数二计算函数

〃函数三计算函数

〃函数四计算函数

gj*OZ=+wnsQx)(j*)=oj:

q=+”x

}(++M:

U>

*1=”)UI)JOJ

uOiqnop)/(E-q)Oiqnop)=q

沱=”x

•QJ+KJ=OJ:

(q)(J*)=QJ:

W)(J*)nj

tsjins9Jfc0J'

00=uins^x^Jirqj'

Bjojqnop

((训qnop)(j*)o[qnopp)urqo[qnop飞aiqnop)5uixiiojqnop

(sd?

一iu<

JJCH一DCIIXCld)iXQ丄-xcia:

(劝oqiuo爼一iu4£

uaa_3aixad)ixoi_xaa:

(uosdiuis"

iu43jLiaa"

Dai4xad)i^i~xaa

XoUIX!

1~ui'

lJJCH—;

xn・XCld"

XQ丄一XGG:

(nftjjcnpcnxcid)m<

aci:

(umMUO!

QiiiH-iuqoiav爼一Oai'

Xad)O!

pe爼一xaG

(xad)9SuEq3XHEjEaoa:

SoiEiaD

}(Xdd#oSuHipxaBlBQ3)3^UKM3xaKlKQ0Q:

:

I^ouaiunupio;

\

00=sdo'

iu:

00=Eioqiuo爼一111

00=uosdiuis_ui•00=SuiX!

l~ui

•0=NF:

I-=iunNuoipunj_iu

}(juarejd'

QQ[:

iBouoiunu)3oiBiQ3:

(/*"

nPIN=*/[uaivdd^puM3)IK3!

J3lunu:

IK3y3iunu

闷jtunpj

sum+=FO:

results=sum*h/2.0;

return(results);

doubleSimpson(doubleajoublebjntn,double(*f)(double))〃复化Simpson公式计算函数

doubleF0、Fl・F2、h,fc,xk,sum.rcsi山s;

F0=(*D(a)+(*f)⑹;

Fl=0.0;

F2=0.0;

xk=a;

h=(double)(b-a)/(double)(n*2);

for(intk=l;

k<

2*n;

k++)

xk+=h;

if(!

(k%2))

F2+=(*f)(xk);

Fl+=(*f)(xk);

fc=(*f)(xk);

sum=FQ+2.0*F2+4.0*Fl;

results=sum*h/3.0;

doubleRomberg(doublea,doubleb.doubleeps.double(*f)(double))//Romberg公式计算函数

doubleFa.Fb・T[10]hp.q,x,cp.s;

intk=l;

intn=l;

Fa=(*f)(a);

Fb=(*f)(b);

T(0]=(Fa+Fb)*(b-a)/2.0;

h=b-a;

cp=cps+1.0:

while((cp>

=eps)&

&

(k<

=90))

p=0.0;

for(inti=O;

i<

n-1;

i++)

{x=a+(i+0.5)*h;

p=p+(*f)(x);

p=(T[0]+h*p)/2.0;

s=1.0;

for(intm=l;

m<

=k;

m++)

s=4.0*s;

q=(s*p-T(m-l])/(s-1.0);

T(m-l]=p;

p=q;

ep=fabs(q-T[k-l]);

k=k+1;

T[k-1]=q;

n=n+n;

h=h/2.0;

}return(q);

voidnumcrical:

OnButtonl()

UpdateData(true);

if(m_FunctionNum==-1)

MessageBox("

请选择一个数值积分进行il•算”);

elseif(m_N=O)

请输入N的值以确左步长”);

switch(m_FunctionNum)

case0:

m_TiXing=Tixing(0.0.0.25,m_N,fl);

break;

case1:

m_TiXing=Tixing(0.0.1.0jn_N,f2);

break:

case2:

m_TiXing=Tixing(0.0J.0jn_N,f3);

case3:

m_TiXing=Tixing(0.0J.Ojn_N,f4);

default:

UpdateData(false);

voidnumerical:

OnButton2()

请选择一个数值积分进行汁算”);

elseif(m_N=O)

MessageBoxC请输入N的值以确左步长”);

m_Simpson=Simpson(0・0.0・25、m_N,fl);

break;

m_Simpson=Simpson(0・0・1.0、m_N,f2);

m_Simpson=Simpson(0.0.1.0jn_N,f3);

m_Simpson=Simpson(0.0.1.0jn_N,f4);

voidnunicrical:

OnButton3()

UpdatcData(true);

请选择一个数值积分进行汁算);

elseif(m_eps==0)

MessageBox(M请输入N的值以确左步长”);

m_Romberg=Rombcrg(0.0.0.25.m_eps,fl);

m_Romberg=Romberg(0.0.1.0.m_eps,f2);

ni_Romberg=Romberg(0.0,1.0.m_eps.f3);

in_Romberg=Romberg(0.0.1.0.m_eps,f4);

运行结果:

A、在复选框中选择数值积分项,并撼确左摊钮,进入子菜单:

数值积分

B、按照提示进行操作:

在编借框中得到答案

①第一个积分

②第二个积分

*sinx

ax

x

J4+x2

1+0

结果分析:

A、分别用两种算法计算同一个积分,并比较其结果当同时用三种方法计算第二个公式的积分时:

结果如上图所示:

精确解:

(/«

0.9460831)

可以看出步长精度取值相同时

复合Simpson算法求得的解为0.946083310888472,更接近真值已达到六位精

而复合梯形公式求得的解为0.94451352166539,仅有两位精准

而Romberg算法求得的解为0.946083004063674亦有六位精准

B、分别取不同步长h=(b^a)/n,试比较计算结果(如n二10.20等);

分别取n二3,3,10进行分析,结果如下图所示

数值枳分

逢择一个进行计苒

—sin亠xdx

xV=

3

0.001

复合梯形公式

Romburg^法

「返回〕

I谨择一个进行计算'

从结果可以看岀步长减小对Romberg公式精度提髙并不明显

i)又复合梯形公式及复合Simpson公式可以看出,n越大,精度越高

ii)但继续增大之后(例如大于10后)没有太多实际意义

iii)但对复合梯形公式的精度改善很大:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1