Re: [問題] 函數問題

看板Fortran作者 (仙女吃檳榔)時間13年前 (2011/02/28 21:49), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《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

03/01 17:24, , 1F
感謝!~
03/01 17:24, 1F

03/05 16:00, , 2F
非常同意:D
03/05 16:00, 2F
文章代碼(AID): #1DQwW7KA (Fortran)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):
文章代碼(AID): #1DQwW7KA (Fortran)