计算cosx时出现Fortran错误

时间:2015-11-12 12:38:02

标签: fortran trigonometry

我被分配了以下问题:

创建Fortran程序,该程序能够读取[0-360]检查有效范围(不是类型)的程度,并且能够从以下等式计算并打印cos(x),其中{{ 1}}是弧度的:

x

作为收敛标准假设cos(x)=1-x^2/2! + x^4/4!-x^6/6!+x^8/8!-... 使用两次连续重复之间的绝对误差(我认为这意味着做了)。

对于10^(-5)的计算,应使用最大可能的整数。最后,应在屏幕上打印重复的总数。

所以我的代码是这样的:

!

我得到45度(或 program ex6_pr2 implicit none !Variables and Constants integer::i real*8::fact,fact2 !fact=factorial real,parameter::pi=3.14159265 double precision::degree,radiants,cosradiants,s,oldcosradiants,difference !degree,radiants=angle print*,'This program reads and calculates an angle`s co-sinus' print*,'Please input the degrees of the angle' read*,degree do while(degree<0 .or. degree>360) !number range read*,degree print*,'Error input degree' cycle end do radiants=(degree*pi/180) fact=1 fact2=1 s=0 cosradiants=0 !repeat structure do i=2,200,1 fact=fact*i fact2=fact2*(i+2) oldcosradiants=cosradiants cosradiants=(-(radiants)**i/fact)+(((radiants)**(i+2))/fact2) difference=cosradiants-oldcosradiants s=s+cosradiants if(abs(difference)<1e-5) exit end do !Printing results print*,s+1. end program )等角度的正确结果,而其他角度为90度或180度。

我已经检查了我的因子,我认为错误是隐藏的(至少对我而言)。

我创建了另一个代码,由于以下错误似乎无法运行:FUNCTION名称,(PROJECT2_EX6的结果~FACT),用于不期望的地方,可能缺少&#39;()&#39;

pi/4

1 个答案:

答案 0 :(得分:2)

虽然这是你的作业,但我会在这里帮助你。首先是错误的是你需要用

代替的阶乘
 fact  = 1
 do j = 1,i
    fact = fact*j
 enddo

第二,如果你让你的do循环完成这项工作就更容易了,所以把它作为

运行
do i=4,200,2

和预定义的cosradians在do loob之外

cosradiants = 1-radiants**2/2

另外,您需要考虑使用

在循环中执行的更改符号
   sign = sign*(-1)

并在循环

之前使用sign = 1启动它

在循环中然后

   cosradiants= cosradiants+sign*radiants**i/fact

如果你已经包含了这些东西,它应该可以工作(至少我的代码是这样的)