作者charlesdc (MoOn)
看板Fortran
标题Re: [问题] 如何用辛普森积分法解这题?
时间Mon May 18 23:24:36 2009
※ 引述《DrStein (交换关联)》之铭言:
: ※ 引述《sawwas (saw)》之铭言:
: : Q: 将 e^(-x^2) 用辛普森积分法从 0 积到 3
: : ( 限定用Fortran语法编译 )
: : 因为我从来没学过Fortran 所以只好来此求助
: : 拜托各位大大了
不同版本
Implicit none
real*8 xmin,xmax,result1,a_inc,a_leng,aa,a1,a2,f,result2,eps
!辛普生法
integer*8 iseg,i
write(*,*)"输入积分下限,输入积分下限,收敛值"
read(*,*)xmin,xmax,eps
result1=0.0 ;result2=0.0 ;iseg=0.0
do
result2=result1
iseg=iseg+1
a_inc=(xmax-xmin)/iseg
a_leng=a_inc/2.0
aa=a_leng/3.0
a1=xmin
a2=a1+a_inc
result1=result1+(f(a1)+1.0*f(a1+a_leng)+f(a2))*aa
a1=a2
if (abs(result1-result2)<eps) exit
!write(*,*)abs(result1-result2)
end do
write(*,*)"积分下限值",xmin
write(*,*)"积分上限值",xmax
write(*,*)"收敛值",eps
write(*,*)"积分之面积",result1
write(*,*)"共分",iseg,"段"
write(*,*)"至收敛值的差值",abs(result1-result2)
pause
End
real*8 function f(x)
Implicit none
real*8 x
f=exp(-x^2)
return
end
依需求在自己改吧........作业!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.122.2