看板 Fortran 關於我們 聯絡資訊
各位大大 小弟剛入門fortran 有些經驗還是不夠 找不出來哪邊是錯的 請提點一下 程式如下: program trapezoid integer i real*8 h,sum,n,a,b,ans read(*,*)a read(*,*)b read(*,*)n h=(b-a)/n sum=0 x=0 do i=1,n-1 sum=sum+f(x) x=x+h enddo ans=((f(a)+f(b))/2+sum)*h write(*,*) ans end function f(x) real x f=x*x return end 而跑出來的warning是說 inconsistent data type for argument 1 in call to F 我試一個簡單的積分跑出來都沒有值 看了很久不知道哪邊有問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.78.69
callmei:function裡沒有宣告f,program裡沒有宣告f是external?? 03/19 17:05
callmei:另外你的f(x)裡的x是單精度,可是a跟b卻是雙精度變數 03/19 17:14
callmei:再CALL f(a)和f(b)時會出問題 03/19 17:15
callmei:程式原本就可以跑應該是因為你沒有implicit none.. 03/19 17:22
callmei:所以program裡的f被當成新的變數了 自然就可以編譯 03/19 17:23
callmei:但是卻會跑不出答案... 03/19 17:23
callmei:還有n應該是整數,否則DO迴圈時 i=n-1應該會出問題 03/19 17:24
callmei:你試試看我寄給你的修改過後code 我在ivf 11跑出來是對的 03/19 17:31
callmei:噢我錯了 n是不是宣告成整數好像沒差XDD 原諒我XD 03/19 17:33
zx212012:嗯!我大致上知道問題在哪了。是我的精確度沒有看好 03/19 17:43
zx212012:可以跑了!謝謝 03/19 17:58
tonyruler:好像跟我學的梯型法不一樣XD 03/21 01:50