- 积分
- 3
- 注册时间
- 2003-10-16
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2003-12-28 15:54:44
|
显示全部楼层
来自 黑龙江哈尔滨
回复: 【求助】用FORTRAN语言写出他的不定积分! 急急急急
puti0772 ,看得出你很着急,但我不知道你是想要fortran内部的系统函数还是要自己编的程序,我这有一个龙贝格积分的作业,不知对你是否会有帮助,但不要输入太高的精度,因为它的系统开销很大,我的机器在迭代超过27次时将发生溢出。我将“(1,2)”设为积分的上下限,在VF中运行时,a,b,E分别对应的是积分得上下限和精度。program suanfa
implicit none
real(8), allocatable::T(
real(8) TT !save the value of T(0)
integer m
real a,b,E
real y1,y2,yy
integer i,j,k,Num,number
print*,'please input the value of a,b,E:'
read *,a,b,E
yy=0
y1=3*tan(sqrt(a)+2)
y2=3*tan(sqrt(b)+2)
m=0
TT=0
!main process
do while(1)
allocate(T(0:m))
T(0)=(a-b)*(y1+y2)/2
if(m>0)then
do 50 k=0,m-1
do 200 i=0 ,2**k-1
yy=yy+3*tan(sqrt(a+(b-a)*(i+1/2)/(2**k))+2)
200 end do
T(k+1)=T(k)/2+(b-a)*yy/(2**(k+1))
yy=0
50 end do
!**********
do 300 j=m-1,0,-1
T(j)=((4.0**m)*T(j+1)-T(j))/(4.0**m-1)
300 end do
end if
if (abs(T(0)-TT)<E)then
print*,'I(f)=',T(0)
stop 'ok'
end if
m=m+1
TT=T(0)
deallocate(T)
end do
end program |
评分
-
1
查看全部评分
-
|