三个圆柱体相交部分的体积 2007-07-12 22:30:50
分类:
下午和一个兄弟一起做了这个题目。
就是求三个轴心分别沿正交XYZ轴的半径为一的圆柱体相交部分的体积。
下面是用Matlab编程的源程序和结果:
clear();
for i=1:10
N=1000000;
n=0;
x=0;y=0;z=0;
for j=1:N
x=rand;
y=rand;
z=rand;
if x*x+y*y<=1
if y*y+z*z<=1
if x*x+z*z<=1
n=n+1;
end
end
end
end
v(i)=8*n/N;
end
v
mean(v)
结果:
v =
Columns 1 through 7
4.6910 4.6828 4.6829 4.6895 4.6921 4.6810 4.6913
Columns 8 through 10
4.6886 4.6881 4.6866
ans =
4.6874
基本思想就是在第一象限0<=x<=1,0<=y<=1,0<=z<=1的一个正方体里面投点,然后判断所投的点是不是在三个圆柱所围个的体积里面,如果在,则计数器n数值加1。总共投N个点。这样根据大数定理,点落在所求体积内的概率为第一象限内所求体积与正方体体积之比。n/N=V1/1*1*1.
所求的体积为第一象限体积V1的8倍。所以V=8*n/N.(N=1000000)
所得结果为4.6874.
现在我们来求该部分的精确结果:
求该体积的积分比较麻烦:
我们可以看到所求体积在8个象限里面是对称的,所以先求出在第一象限里面的体积。
联立x^2+y^2=1,y^2+z^2=1,x^2+z^2=1三个圆柱方程,我们可以得到三个圆柱的交点为
(sqrt(2)/2,sqrt(2)/2,sqrt(2)/2).再分析第一象限里面体积,我们可以知道该部分的体积又可以分成三部分。每一部分为交点与xyz坐标轴上单位1的点所夹的部分。该部分又可分为对称的两部分。
第一部分为0<=y<=sqrt(2)/2,0<=z<=y,y<=x<=sqrt(1-y^2)围成的体积。
该部分体积可以积分:
Integrate[y*(Sqrt[1 – y^2] – y), {y, 0, Sqrt[2]/2}]
所以所求体积为:
Integrate[y*(Sqrt[1 – y^2] – y), {y, 0, Sqrt[2]/2}]*6*8=8(2-sqrt(2))=4.68629.
以上为在Mathmatics里面用积分求出来的所求体积的精确结果。
发表回复
要发表评论,您必须先登录。