作者youlieme (仙女吃槟榔)
看板Fortran
标题Re: [问题] 函数问题
时间Mon Feb 28 21:49:56 2011
※ 引述《Jesuscrash (被爱是一种幸福)》之铭言:
: ※ 引述《Jesuscrash (被爱是一种幸福)》之铭言:
: : 请问各位先进,小弟写了此函数计算,发现函数式子debug似乎要带入
: : 的数字并没有带入函数式子中,希望各位先进可以能给个帮忙~谢谢
: program INTEGRAL
: : Real A,B,W1,W2,W3,W4,W5,W6,X1,X2,X3,X4,X5,X6,I,X,PI
: : PI=3.141593
: : A=0.0
: : B=1.0
: W1=0.0337652429
: : W2=0.1693953068
: : W3=0.380690407
: : W4=0.619309593
: : W5=0.8306046932
: : W6=0.9662347571
: : X1=W1*B+W6*A
: : X2=W6*B+W1*A
: : X3=W2*B+W5*A
: : X4=W5*B+W2*A
: : X5=W3*B+W4*A
: : X6=W4*B+W3*A
: : I=(B-A)*(0.0856622462*(F(X1)+F(X2))+
: : < 0.1803807865*(F(X3)+F(X4))+
: : < 0.2339569673*(F(X5)+F(X6)))
: : WRITE(*,*) I
: : END PROGRAM
: : function F(X)
: : implicit none
: : real X,DYDX,T,R,F
: : T=12
: : DYDX=5*T*(2969/20000/(x**0.5)-63/500-879/1250*x+8529/10000*(x**2)-
: : > 203/500*(x**3))
: : F=SQRT(1+DYDX**2)
: : RETURN
: : END
: 我将F浮点数补上後compile所得到的答案仍然是1.0,还是怪怪的@@~
: 恳请各位帮个忙> <~谢谢!!
回文比较乾脆,以前写程式时偶尔也有这种问题。
常常自己觉得逻辑都正确,用手算都没问题,但写成程式算出来就是不对。
後来慢慢了解,程式在计算时,会依变数型态不同而有差异。
整数跟浮点数存的方法也不太一样,这些可以看书解释比较清楚。
在计算时依照你需要的计算式来宣告变数可以避免掉这些问题。
在遇到你这种情况时,可以印出各段的计算结果,看看到底哪里出了状况。
等这种烂经验(!?)多了之後,看程式码就大概知道什麽状况了...
----
烂经验丰富也许不是一件好事...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.99.46.65
1F:推 Jesuscrash:感谢!~ 03/01 17:24
2F:推 dj31416:非常同意:D 03/05 16:00