看板 Fortran 關於我們 聯絡資訊
最近又開始在寫作業 這次其中有一題 是要求球積分 爬完文後 雖然有人問過一樣的問題 但我想利用"切割"法來逼近(以前高中剛開始教積分時的算法) 也就是假設[a,b]區間 切割成n等份 利用左右夾擠 來求得近似解 老師提到 為了增加code的彈性 所以不使用半徑的算法 但我寫出來後 遇到問題 就是答案根本不正確 因此想請問 我的邏輯是不是不正確 還是有其他error 導致答案錯誤? 我將球體分成八等份 最後再把體積*8而求得球體積 =======以下為我寫的code======= Program HW2_Q2 implicit none integer ::i,j,n real ::a,b !x軸區間 real ::c,d !y軸區間 real ::x,y,z real ::dx,dy real ::V !1/8球體體積 real ::sum=0 write(*,*) "n=" !假設切成n等份 read(*,*) n write(*,*) "a=? ","b=? ","c=? ","d=? " read(*,*) a,b,c,d !可自訂x,y座標 dx= (b-a)/n dy= (d-c)/n do i=1,n x=a+(i-1)*dx do j=1,n y=c+(j-1)*dy if ( x**2+y**2<=1 ) then z=(1-x**2-y**2)**0.5 !因為開根號內需大於零 V=dx*dy*z endif enddo enddo sum=(sum+V)*8.0 !乘上8即球體積 write(*,*) "The volume of the sphere= ",sum stop End Program HW2_Q2 ========================= 跑出來的結果 n= 100 a=? b=? c=? d=? 0,1,0,1 (我的假設) The volume of the sphere= 1.385833E-05 (大錯特錯....T_T) 懇請各位高人指導... 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.184.177.30
Cypresslin:你的z是多少,然後sum放的位置對嗎? 04/11 21:38
Cypresslin:^^^^^^^^^^^我看到了= =換頁時被吃掉,哈哈 04/11 22:12
rinb0919:我解決這個問題了! 謝謝 04/11 22:26
tonyruler:sum位置放錯啦~ 04/11 22:58
rinb0919:已修改 謝謝! 04/11 23:04