作者rinb0919 (冷葉)
看板Fortran
標題[問題] 以切割法 求球積分
時間Mon Apr 11 21:03:36 2011
最近又開始在寫作業
這次其中有一題 是要求球積分
爬完文後 雖然有人問過一樣的問題
但我想利用"切割"法來逼近(以前高中剛開始教積分時的算法)
也就是假設[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
1F:→ Cypresslin:你的z是多少,然後sum放的位置對嗎? 04/11 21:38
2F:→ Cypresslin:^^^^^^^^^^^我看到了= =換頁時被吃掉,哈哈 04/11 22:12
3F:→ rinb0919:我解決這個問題了! 謝謝 04/11 22:26
4F:推 tonyruler:sum位置放錯啦~ 04/11 22:58
5F:→ rinb0919:已修改 謝謝! 04/11 23:04