整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx

上传人:b****5 文档编号:8421209 上传时间:2023-05-11 格式:DOCX 页数:17 大小:143.71KB
下载 相关 举报
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第1页
第1页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第2页
第2页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第3页
第3页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第4页
第4页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第5页
第5页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第6页
第6页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第7页
第7页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第8页
第8页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第9页
第9页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第10页
第10页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第11页
第11页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第12页
第12页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第13页
第13页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第14页
第14页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第15页
第15页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第16页
第16页 / 共17页
整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx

《整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。

整理复化梯形法复化矩形法变步长梯形变步长辛普森Word格式文档下载.docx

#include<

iostream.h>

#include<

math.h>

doublef(doublex)//计算被积函数

{

doubley;

y=log(1+x)/(1+x*x);

//被积函数

returny;

}

doubleTn(doublea,doubleb,intn)//求Tn

doublet=0.0;

doublexk;

//区间端点值

doublet1,t2;

//用来判断精度

do

{

doubleh=(b-a)/n;

for(intk=1;

k<

=n-1;

k++)//每一小段的矩形叠加

{

t1=t;

xk=a+k*h;

t+=h*f(xk);

t2=t;

}

n++;

//如果精度不够就对区间再次细分,直到达到精度要求

while(fabs(t1-t2)<

=1e-7);

//判断计算精度

returnt;

voidmain()

doublea=0.0;

//积分下线

doubleb=2.0;

//积分上限

intn=1024;

//把区间分为1024段

cout<

<

Tn(a,b,n)<

endl;

//输出积分结果

执行结果:

2.复化梯形法

方法和复化矩形法类似,只是把原来的矩形小面积变成了梯形小面积,但是精确度明显提高了,也就是说达到同样的精度需要的时间少了。

变形一下:

doublet1,t2,h=(b-a)/n;

h=(b-a)/n;

k++)//余项叠加,相当于每一个小梯形相加

t+=f(xk);

t=h*(f(a)+f(b))/2+t*h;

//加上初项就是积分结果了

//积分上线

3.变步长梯形法

上面我们在应用复化积分法的时候会对区间进行分割,但是在要求精度是我们也不知道事先应该分割成多少段,分的少了精度达不到,分的多了计算量太大,为了解决这个问题我在上面加了一个循环,来不断地对区间进行再次划分,直到达到精度要求,变步长积分法与我用的方法类似,只不过变步长积分法的区间划分时成倍增加的。

实现方法;

由复化梯形法知道;

步长h=(b-a)/n

现在将步长分半,即在相邻两节点

的中点

处增加一个求积节点,那么

doublef(doublex)//计算被积函数的值

doublet2ntn(doublea,doubleb)

intn=1;

doublehn=b-a;

//原步长

doubletn=0.0;

doublet2n=(f(a)+f(b))*hn/2.0;

while(fabs(t2n-tn)>

1e-7)//判断精度

tn=t2n;

t2n=0.0;

for(intk=0;

k++)//循环叠加

t2n+=f(a+hn/2.0+k*hn);

t2n=tn/2.0+t2n*hn/2.0;

n=n*2;

hn=hn/2.0;

//步长分半

returnt2n;

t2ntn(a,b)<

4.变步长辛普森法

之前的积分斜边都是直线,如果用抛物线接近就会更准确

复化辛普森求积公式

然后就只要每次让他的积分区间加倍就行直到达到要求的精度

stdio.h>

doublea=0.0,b=2.0,e=1e-7;

//积分上下线,和精度要求

intn=1024;

doublef(doublex)

Doubley;

floatsimpson()

inti;

doubles,sn,s2n,p,x,h;

//步长

s=f(a)+f(b);

p=0;

x=a+h;

//积分端点

for(i=1;

i<

i++)

if((i%2)!

=0)

{

p=p+4*f(x);

//在区间中间时乘4

x=x+h;

}

else

s=s+2*f(x);

//积分端点时乘2

s=s+p;

//第一次求和

s2n=s*h/3;

//积分值

do

sn=s2n;

x=a+h/2;

//变步长

s=s-p/2;

p=0;

for(i=1;

=n;

i++)//变步长只需要加就行了

s=s+p;

h=h/2;

s2n=s*h/3;

}while(fabs(s2n-sn)>

e);

//控制精度

returns2n;

{

simpson()<

4.用C++写的综合程序

classBjhs//抽象类

public:

virtualdoublef(doublex)=0;

//虚计算被积函数

virtualvoidprint()=0;

//输出函数

virtualdoubleTn()=0;

//虚函数

};

classFhjx:

publicBjhs//复化矩形法类

Fhjx(){a=0;

b=2;

e=1e-7;

n=1024;

}//构造函数付初值

doublef(doublex);

//计算被积函数

doubleTn()//求Tn

doublet=0.0;

doublexk;

doublet1,t2;

do

doubleh=(b-a)/n;

for(intk=1;

{

t1=t;

xk=a+k*h;

t+=h*f(xk);

t2=t;

n++;

while(fabs(t1-t2)<

=e);

returnt;

voidprint()//输出

{

cout<

"

用复化矩形法计算的结果"

Tn()<

}

private:

doublea,b,e;

intn;

};

doubleFhjx:

:

f(doublex)//外联函数

classFhtx:

publicBjhs//复化梯形法

Fhtx(){a=0;

doublef(doublex);

doubleTn()//求Tn

doublet1,t2,h=(b-a)/n;

{

h=(b-a)/n;

for(intk=1;

{

t1=t;

xk=a+k*h;

t+=f(xk);

t2=t;

}

n++;

while(fabs(t1-t2)<

t=h*(f(a)+f(b))/2+t*h;

returnt;

voidprint()

用复化梯形法计算的结果"

doubleFhtx:

f(doublex)

classBbctx:

publicBjhs//变步长梯形法

public:

Bbctx(){a=0;

n=1;

tn=0;

//计算被积函数的值

doubleTn()

doublehn=b-a;

doublet2n=(f(a)+f(b))*hn/2.0;

while(fabs(t2n-tn)>

e)//判断精度

tn=t2n;

t2n=0.0;

for(intk=0;

t2n+=f(a+hn/2.0+k*hn);

t2n=tn/2.0+t2n*hn/2.0;

n=n*2;

hn=hn/2.0;

returnt2n;

cout<

用变步长梯形法计算的结果"

doubletn;

doubleBbctx:

classBbcxps:

publicBjhs//变步长辛普森法

Bbcxps(){n=1024;

a=0;

}//积分上下线,和精度要求

doublef(doublex);

doubleTn()

=0)//判奇偶,也就是看哪点乘几

}while(fabs(s2n-sn)<

用变步长辛普森法计算的结果"

doublea,b,e,p;

doubleBbcxps:

voiddisplay(Bjhs&

q)//输出函数

q.Tn();

q.print();

voidmain()//选择你想要的方法,用switch语句

chara;

Fhjxb;

安全评价的基本原则是具备国家规定资质的安全评价机构科学、公正和合法地自主开展安全评价。

Fhtxc;

2.量化环境影响后果Bbctxd;

Bbcxpse;

第一节 环境影响评价cout<

求函数y=log(1+x)/(1+x*x)的积分值"

请输入你要选用的方法的编号"

[例题-2005年真题]《中华人民共和国环境影响评价法》规定,建设项目可能造成轻度环境影响的,应当编制( )。

A.复化矩形法B.复化梯形法"

1.环境总经济价值的构成cout<

C.变步长梯形法D.变步长辛普森法"

cin>

>

a;

(2)环境影响后评价。

switch(a){

(3)专项规划环境影响报告书的内容。

除包括上述内容外,还应当包括环境影响评价结论。

主要包括规划草案的环境合理性和可行性,预防或者减轻不良环境影响的对策和措施的合理性与有效性,以及规划草案的调整建议。

case'

A'

display(b);

break;

B'

display(c);

C'

display(d);

(1)生产力变动法case'

D'

display(e);

default:

cout<

输入代码错误"

2.规划环境影响报告书的审查内容}

2.间接市场评估法

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2