[問題] 以切割法 求球積分

看板Fortran作者 (冷葉)時間13年前 (2011/04/11 21:03), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
最近又開始在寫作業 這次其中有一題 是要求球積分 爬完文後 雖然有人問過一樣的問題 但我想利用"切割"法來逼近(以前高中剛開始教積分時的算法) 也就是假設[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

04/11 21:38, , 1F
你的z是多少,然後sum放的位置對嗎?
04/11 21:38, 1F

04/11 22:12, , 2F
^^^^^^^^^^^我看到了= =換頁時被吃掉,哈哈
04/11 22:12, 2F

04/11 22:26, , 3F
我解決這個問題了! 謝謝
04/11 22:26, 3F

04/11 22:58, , 4F
sum位置放錯啦~
04/11 22:58, 4F

04/11 23:04, , 5F
已修改 謝謝!
04/11 23:04, 5F
文章代碼(AID): #1DelmgVO (Fortran)
文章代碼(AID): #1DelmgVO (Fortran)