[問題] 以切割法 求球積分
最近又開始在寫作業
這次其中有一題 是要求球積分
爬完文後 雖然有人問過一樣的問題
但我想利用"切割"法來逼近(以前高中剛開始教積分時的算法)
也就是假設[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
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
04/11 22:58, 4F
→
04/11 23:04, , 5F
04/11 23:04, 5F
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章