回 帖 发 新 帖 刷新版面

主题:初学者-求助一个编程中遇到的错误

!计算arctanx=x-(1/3)*(x**3)+(1/5)*(x**5)+...+((-1)**n)*(2n+1)*(x**(2n+1)),
program arctac
implicit none
integer::n,i
real::x,arctan

write(*,*) '请输入x'
read(*,*) x

arctan=0
n=0
do while((1/(1+2*n)) .gt. 1e-6)
    i=2*n+1
    arctan= arctan+(((-1.0)**n)*(1/i)*(x**i))
    n=n+1
    print*,n,'arctan=',arctan
enddo
 
end program
运行的时候总是只循环一次,那位高手帮忙看看哪错了?

回复列表 (共4个回复)

沙发

do while((1/(1+2*n)) .gt. 1e-6)
          ----------
          1.0 / (1.0 + 2 * n)

也许还有别的问题。

板凳


错误出在这行
do while((1/(1+2*n)) .gt. 1e-6)

其中 1/(1+2*n)计算结果为0。原因是变量n和表达式中的常量均为integer类型。

可以改为:
do while((1.0/(1+2*n)) .gt. 1e-6)

3 楼

不好意思,回帖时发现已经由回答了。
而且楼上说得对,程序还有其他问题,可能是算法问题。

4 楼

非常感谢两位,貌似就是数据类型问题,我再检查检查

我来回复

您尚未登录,请登录后再回复。点此登录或注册