282842712474 发表于 2010-2-6 09:11:06

我知道我错在哪里了,我是简单地把各个方向的力叠加起来,其实力是矢量,不同方向的力要通过平行四边形法则合成。wayne 的结果是对的

zgg___ 发表于 2010-2-8 11:57:49

当年,我还真的认认真真的积分的一遍呢,能得到相同的结果的。
为什么要算呢,也是因为不相信这么巧。赫赫。
后来学了高斯定律,才发现其中的巧妙。
在后来学了场论,就觉得这个很自然了。
简单的说就是:
三维空间中,平方反比的力可以构成所谓的场。
可以想象空间中的穿梭的电力线来表示。
这些线密的地方,力就大,力的大小正比于线的密度。
这些线的起点和终点都是质点,中间不会有分叉。这有点象水流,质点就是龙头。
又因为球的对称性,球面上各点的线的密度都是一样的,所以,球面上线的分布就和所有质量都集中在球心的分布是一样的了。所以引力算出来也是一样的了。

282842712474 发表于 2010-2-8 14:24:37

当年,我还真的认认真真的积分的一遍呢,能得到相同的结果的。
为什么要算呢,也是因为不相信这么巧。赫赫。
后来学了高斯定律,才发现其中的巧妙。
在后来学了场论,就觉得这个很自然了。
简单的说就是:
三维 ...
zgg___ 发表于 2010-2-8 11:57 http://bbs.emath.ac.cn/images/common/back.gif
目前还没有研究得如此深入,不过现在每当遇到一个问题,都会用自己的方法去解答一遍,领略其中的奥妙和乐趣。
即便在高中范围,我们的物理/数学结果很多都是近似的,要想精确,只能靠自己钻研

KeyTo9_Fans 发表于 2010-2-9 16:58:32

当年,我还真的认认真真的积分的一遍呢,能得到相同的结果的。
为什么要算呢,也是因为不相信这么巧。赫赫。
后来学了高斯定律,才发现其中的巧妙。
在后来学了场论,就觉得这个很自然了。
简单的说就是:
三维 ...
zgg___ 发表于 2010-2-8 11:57 http://bbs.emath.ac.cn/images/common/back.gif

你比我强,居然积出来了。

我一遇到复杂的积分就懒得算了。

所以随机撒点测试。

初中的时候用Pascal语言写了一个程序。

使用物理书上的数据,随机撒点测试出来的重力加速度居然高达35.98。

但硬是不知道程序错在哪。

现在程序找不到了,所以无从考证了。

也许是犯了11#的错误吧。

刚才用C++语言重新写一遍。

总算得到了比较合理的结果。

测试原理示意图:



撒的点越多,计算出来的合力就与真实的重力越接近。

程序代码如下:#include<cstdio>
#include<cstdlib>
#include<cmath>

double fx,fy,fz,x,y,z,d2,d,f,r,m,G;
unsigned int points;

double random()        //产生一个(-r,r)内的随机实数
{
        return((rand()<<15)+rand()+0.5)/84.2678661-r;
}

int main()
{
        r=6371004;        //球体半径(m)
        m=5.972e+24;        //球体质量(kg)
        G=6.6699e-11;        //万有引力常数(m^3/(kg*s^2))
        /*
        球心坐标: (0,0,0)
        观测点坐标: (0,0,6371004)
        观测点质量(kg): 1
        */
        while(1)        //死循环,手动停止运行
        {
                x=random();        //在(±r,±r,±r)的立方体区域内随机撒点
                y=random();        //在(±r,±r,±r)的立方体区域内随机撒点
                z=random();        //在(±r,±r,±r)的立方体区域内随机撒点
                if(x*x+y*y+z*z<r*r)        //如果该点在球体内部
                {
                        points++;        //计数
                        d2=x*x+y*y+(z-r)*(z-r);        //计算该点与观测点之间的距离的二次方
                        d=sqrt(d2);        //计算该点与观测点之间的距离
                        f=G*m/d2;        //计算观测点受该点的作用力大小
                        fx+=f*x/d;        //累加x方向作用力
                        fy+=f*y/d;        //累加y方向作用力
                        fz+=f*(z-r)/d;        //累加z方向作用力
                        if(!(points&(points-1)))        //如果撒点数量为2的幂
                                printf("%d points:\nfx=%lf\nfy=%lf\nfz=%lf\n\n",points,fx/points,fy/points,fz/points);        //输出作用力的累加结果
                }
        }
        return 0;
}输出结果如下:1 points:
fx=-0.504992
fy=1.089107
fz=-2.786112

2 points:
fx=0.045807
fy=0.266773
fz=-2.680663

4 points:
fx=6.654460
fy=0.611433
fz=-4.832651

8 points:
fx=3.145399
fy=-0.198672
fz=-8.535033

16 points:
fx=6.883737
fy=-16.238135
fz=-21.631994

32 points:
fx=4.481852
fy=-7.696729
fz=-14.273876

64 points:
fx=3.052186
fy=-3.985701
fz=-10.637478

128 points:
fx=0.850507
fy=-2.367781
fz=-9.573686

256 points:
fx=0.985709
fy=-2.412828
fz=-9.164519

512 points:
fx=-1.149785
fy=0.767298
fz=-9.200110

1024 points:
fx=0.498825
fy=3.954861
fz=-10.622059

2048 points:
fx=0.788642
fy=1.260368
fz=-10.189412

4096 points:
fx=0.670000
fy=0.627230
fz=-9.475491

8192 points:
fx=0.469960
fy=0.313758
fz=-9.538444

16384 points:
fx=0.231084
fy=0.060587
fz=-9.396589

32768 points:
fx=0.152588
fy=0.075723
fz=-9.518079

65536 points:
fx=0.012187
fy=0.639470
fz=-9.928055

131072 points:
fx=-0.006771
fy=0.548331
fz=-9.798466

262144 points:
fx=-0.038481
fy=0.198065
fz=-9.653929

524288 points:
fx=-0.062438
fy=0.136324
fz=-9.654400

1048576 points:
fx=-0.090212
fy=0.090709
fz=-9.735008

2097152 points:
fx=-0.018408
fy=0.018729
fz=-9.817123

4194304 points:
fx=-0.042417
fy=-0.016079
fz=-9.807387

8388608 points:
fx=0.005726
fy=0.034669
fz=-9.816914

16777216 points:
fx=-0.000047
fy=-0.004595
fz=-9.802623

33554432 points:
fx=-0.009231
fy=0.039061
fz=-9.798101

67108864 points:
fx=0.025819
fy=0.045322
fz=-9.807124

134217728 points:
fx=0.018054
fy=0.014610
fz=-9.793641

268435456 points:
fx=0.007861
fy=-0.003544
fz=-9.794530

536870912 points:
fx=-0.006209
fy=-0.005673
fz=-9.805951

1073741824 points:
fx=-0.007044
fy=-0.004944
fz=-9.806332

-2147483648 points:
fx=-0.006682
fy=-0.004939
fz=-9.806913最后的计数是负的可能是整数过大,超出了int的范围。

理想的结果应该是$fx=fy=0$,$fz=g$。

根据$fx$和$fy$的测量值可以大致地估计出$fz$与真实值的偏差。

风云剑 发表于 2010-2-9 17:22:52

随机法数值积分:loveliness:

282842712474 发表于 2010-2-9 20:04:34

随机法数值积分:loveliness:
风云剑 发表于 2010-2-9 17:22 http://bbs.emath.ac.cn/images/common/back.gif
懒人其实更牛!不牛怎么能懒呢?

其实这个积分不难,用极坐标(应该是柱形变换吧)变换一下就搞掂了。

倪举鹏 发表于 2014-3-2 21:57:26

巧啊,这问题我高三时候就积分积出来了,结果很简单的。就算人在深矿井里,或者是飞机上,都算出来了。我只用一阶积分,分层的积,等有空将答案贴上。这问题有那么难么?楼上都像杀鸡用牛刀啊

倪举鹏 发表于 2014-5-7 19:26:44

三次积分积出来了质点在球表面或者球外 引力很巧就是GMm/r^2质点在球内(2 G m (4 r^3 - 3 r^2 R + R^3 + r R Sqrt[-3 r^2 + 2 r R + R^2] -
    R^2 Sqrt[-3 r^2 + 2 r R + R^2]) )/(3 r^2)      

mathe 发表于 2014-5-7 20:48:39

我们可以分析球面和质点之间的引力,设球面半径为r,质点到球心距离为R.然后我们将球面用一些垂直于质点球心连线的平行平面切分,如果这些平面间等距,我们可以知道球面被切成一些面积相等的小环,而每个环对质点的引力的合力显然垂直这些切面,于是非常容易表示,就变成一个一阶积分问题了

mathe 发表于 2014-5-7 21:43:58

经计算质量为M的球面对质点m的引力为\(\displaystyle \frac{GmM}{2r}\int_{-r}^r\frac{R-h}{(R^2+r^2-2Rh)^{\frac{3}{2}}}dh\)
在\(R>r\)时结果为\(\frac{GmM}{R^2}\),而在\(R<r\)时结果为\(0\)。
由此我们得出质点在球外面时,相当于球的所有质量都集中在球心时产生的引力,即\(\frac{GmM}{R^2}\)。
而质点在球内部时,相当于球的半径只有等于质点到球心部分距离的那部分球产生的引力。由于这部分质量只有\(\frac{MR^3}{r^3}\),所以产生的引力为\(\frac{GmMR^3}{r^5}\)
页: 1 [2] 3
查看完整版本: 球体的引力问题