在引力问题中, 实心圆 是否可以认为是一个 质点 。 实心圆 的 质量均匀 。
具体一点, 实心圆 是否 等价于 位于 圆心 的 质点 。
对于 这一点, 我们考察 实心圆 对 另一个 质点 B 的 引力, 如果 实心圆 对 质点 B 的 引力 等价于 圆心 处 同等 质量 的 质点 对 质点 B 的 引力, 那么 可以把 实心圆 看作是 圆心 处 的 一个 质点 。
根据 牛顿第三定律, 实心圆 对 质点 B 的 引力 等价于 圆心 处 质点 的 引力 意味着 质点 B 对 实心圆 的 引力 也等价于 对 圆心 处 质点 的 引力 。
设 实心圆 为 A, 圆心 为 O 。
先从 直观 的 角度 来看, 对于 圆 外 的 任意 一个 质点 B, 由于 圆 的 对称性, 无论 B 位于 圆 的 哪个方向, 只要 和 圆心 O 的 距离 相等, 则 受到 圆 的 引力 都一样 。 所以 对于 圆 外 的 质点, 实心圆 可以 看作 圆心 处 的 一个 质点 。
对于 圆 内 的 一个 质点 B, 以 圆心 O 为 圆心, 过 B 作一个 圆 P, 圆 P 把 实心圆 A 分割 成 一个 小实心圆 和 一个 环形 。 内部 是 小实心圆, 外部 是 环形 。
小实心圆 和 环形 都 具有 对称性, 所以 B 在 P 上 的 任意 位置 受到 小实心圆 和 环形 的 引力 都一样, 即 只要 B 到 圆心 O 的 距离 相等, B 在 任意位置 受到 小实心圆 和 环形 的 引力 都一样 , 所以, 对于 圆内 的 质点 B, 实心圆 也可以看作是 圆心 处 的 质点 。
但 问题 没有 完, 圆心处 的 质点 的 质量 是否 和 实心圆 的 质量 相等 ?
对于 圆内 的 情况 , 即 质点 B 位于 实心圆 A 内部, 可以考虑一个 特例, 当 B 位于 圆心 O 时, 此时, 实心圆 A 对 B 的 引力 为 0, 如果 把 实心圆 A 看成一个 质点, 则 对 B 的 引力 为 无穷大 。 从这里看起来, 质点 B 位于 实心圆 A 内部 时, 不能把 实心圆 A 看成一个 圆心处 相同质量 的 质点 。
对于 圆外 的 情况 , 即 质点 B 位于 实心圆 A 外部, 可以 先 简单 的 来看, 过 O 、B 作一条 直线 OB, OB 和 实心圆 A 的 边 相交 于 C 、 D, 如图 :
图 1
设 实心圆 A 半径 为 r, 则 OC = OD = r, 设 BD = 2r, 这样 我们 可以来计算一下, C 点 D 点 对 B 造成 的 引力 是 多大,
设 实心圆 A 的 质量 为 M, C 点 D 点 的 质量 为 dM, 质点 B 质量 为 m, 则,
C 点 对 B 的 引力 Fc = G dM m / (4r)² = G dM m / 16 r² ,
D 点 对 B 的 引力 Fd = G dM m / 4 r² ,
C D 对 B 的 引力 之 和 Fcd = G dM m / 16 r² + G dM m / 4 r² = 5/16 * G dM m / r² 。
再来看看 如果 把 C 点 和 D 点 的 质量 都放到 圆心 O, 则 O 对 B 的 引力 是 多少 。
把 C 点 和 D 点 的 质量 都放到 圆心 O , O 的 质量 = dM + dM = 2 dM ,
O 对 B 的 引力 Fo = G 2 dM m / (3r)² = 2 G dM m / 9r² = 2/9 * G dM m / r² ,
看起来 Fcd 不等于 Fo, 且 Fcd > Fo 。
但是 如果 算上 实心圆 上 所有 的 点 , 即 整个 实心圆 A 对 B 的 引力 是不是 等于 圆心处 质量 M 的 质点 对 B 的 引力 , 这个 还不能 确定 。
这需要 用 数学 来 计算一下 。
设 实心圆 的 密度 为 ρ, 以 圆心 O 为 原点, 建立 直角坐标系, 如图 :
图 2
设 B 的 坐标 为 (xb, yb) , 则 实心圆 A 对 B 的 引力 F 可以 通过一个 积分 来 计算 :
F = ∫ G dM m / dM 处和 B 的距离的平方
因为 dM = dx * dy * ρ , dM 处和 B 的距离的平方 = (xb - x)² + (yb - y)² , x, y 是 dM 处 的 坐标 。
于是, F = ∫ G dx dy ρ m / ( (xb - x)² + (yb - y)² ) ,
但是, 因为 力 是 矢量, 每个 dM 对 B 的 引力 的 方向 是 不一样 的, 不能 直接 加起来, 所以 要 把 每个 dM 对 B 的 引力 分成 x方向分量 和 y方向分量, 然后 x分量 之间 可以 相加, y分量 之间 可以 相加, 也就是说, 要有 2 个 积分, 一个 是 x 方向 的 引力, 一个 是 y 方向 的 引力 。
Fx = ∫ G dx dy ρ m / ( (xb - x)² + (yb - y)² ) * (x - xb) / ( (xb - x)² + (yb - y)² ) 开方
Fy = ∫ G dx dy ρ m / ( (xb - x)² + (yb - y)² ) * (y - yb) / ( (xb - x)² + (yb - y)² ) 开方
Fx 是 实心圆 A 对 B 的 引力 F 在 x 方向 的 分量, Fy 是 实心圆 A 对 B 的 引力 F 在 y 方向 的 分量 。
整理一下, 得 :
Fx = ∫ G dx dy ρ m (x - xb) / ( (xb - x)² + (yb - y)² ) 3/2次方
Fy = ∫ G dx dy ρ m (y - yb) / ( (xb - x)² + (yb - y)² ) 3/2次方
先计算 Fx ,
先对 dy 积分, 即 先计算 x 处 宽度 为 dx 的 实心圆 上 y 方向 的 一条 “线段” 对 B 产生 的 引力 的 x 分量, 如 图 2, 就是 计算 CD “线段” 对 B 产生 的 引力 的 x 分量 。
因为是 计算 “ x 处 宽度 为 dx” 的 一条 “线段”, 所以 x 和 dx 都可以 看作 常量, 把 x, dx 提到 积分符号 外面 , 再加上一个 积分符号, 于是 :
Fx = ∫ G ρ m dx (x - xb) ∫ dy / ( (xb - x)² + (yb - y)² ) 3/2次方 (1) 式
可以看到, 出现了 2 个 积分符号 ∫ , 需要 进行 2 次 积分, 先对 dy 积分, 再用 dy 积分 的 结果 对 dx 积分, 这就是 二重积分 。
先 计算 ∫ dy / ( (xb - x)² + (yb - y)² ) 3/2次方 , 把 这个 不定积分 记为 fxcd_x ( y ) , 即
fxcd_x ( y ) = ∫ dy / ( (xb - x)² + (yb - y)² ) 3/2次方 , x, xb, yb 是 常数
这个 积分 就 不求 了, 也不知道 积不积的出来, 我们 假装 已经 求出来了, 接着讨论 。 求出 这个 不定积分 以后, 根据 不定积分 可以 来 求 定积分 。 CD “线段” 对 B 的 引力 的 x 分量 就是 fxcd_x( y ) 对应的 定积分 。
设 CD “线段” 在 x 处 的 宽度 为 单位宽度 时 对 B 的 引力 的 x 分量 是 Fxcd_x , 则
Fxcd_x = fxcd_x( yc ) - fxcd_x( yd ) , yc, yd 是 C 点 D 点 的 y 坐标
即 Fxcd_x 是 不定积分 fxcd_x( y ) 在 区间 [ yc , yd ] 上 对应 的 定积分 。
Fxcd_x * dx 就是 宽度 为 dx 的 CD “线段” 对 B 的 引力 的 x 分量 。
因为 yc = (r² - x²)开方, yd = - (r² - x²)开方 , 所以,
Fxcd_x = fxcd_x ( (r² - x²)开方 ) - fxcd_x ( - (r² - x²)开方 ) ,
到这里, 可以看到, (1) 式 中的 ∫ dy / ( (xb - x)² + (yb - y)² ) 3/2次方 实际上 应该是 定积分 Fxcd_x , 把 Fxcd_x 代入 (1) 式, 代替 ∫ dy / ( (xb - x)² + (yb - y)² ) 3/2次方 , 于是 :
Fx = ∫ G ρ m dx (x - xb) Fxcd_x
= ∫ G ρ m dx (x - xb) ( fxcd_x ( (r² - x²)开方 ) - fxcd_x ( - (r² - x²)开方 ) )
= ∫ G ρ m (x - xb) ( fxcd_x ( (r² - x²)开方 ) - fxcd_x ( - (r² - x²)开方 ) ) dx
即
Fx = ∫ G ρ m (x - xb) ( fxcd_x ( (r² - x²)开方 ) - fxcd_x ( - (r² - x²)开方 ) ) dx (2) 式
到这里, 已经 把 二重积分 转化为 一重积分, 即 普通积分 。
计算出 不定积分 Fx , 就可以求 在 区间 [ -r , r ] 上 对应 的 定积分 Fx , 定积分 Fx 就是 实心圆 A 对 质点 B 的 引力 F 的 x分量 Fx 。
这里的 Fx 包含了 2 个 含义, 一个是 不定积分, 一个是 定积分 , 为了叙述简便, 没有对 不定积分 和 定积分 分别命名 。
同样的方法, 可以求出 Fy 。
二重积分 的 物理意义 是 对 dx * dy 的 积分, dx * dy 是一个 边长为 dx 的 小正方形(dx = dy) , 也可以称为 面积微分,或者 面元 。
计算 二重积分 的 方法 是 先 计算出 x 处 宽度 为 dx 的 y 方向的 “线段”, 即 先对 dy 积分, 然后 再 把 “线” 积 成 “面”, 即 再对 dx 积分 。 当然 对 dy dx 积分 的 顺序 是 任意 的, 可以 先 对 dx 积分, 再对 dy 积分 。
同样的道理, 可以有 三重积分, 即 对 “体” 的 积分, 也就是 对 dx * dy * dz 的 积分, 积分方法 和 二重积分 一样, 点 积 成 线, 线 积 成 面, 面 积 成 体 。 对 dx dy dz 积分 的 顺序 也是 任意 的 。 可以先对 dx 积分, 再对 dy 积分, 再对 dz 积分, 也可以 先对 dy 积分, 再对 dx 积分, 再对 dz 积分, 也可以 先对 dy 积分, 再对 dz 积分, 再对 dx 积分 等等 。
dx * dy * dz 是一个 边长为 dx 的 小正方体 (dx = dy = dz) , 也可以称为 体积微分, 或者 体元 。
上面 的 积分 就 交给 数学家 吧, 哈哈 。 我们 用 计算机 程序模拟 来 算算 看 。 我写了一个 模拟计算程序 , 下载地址 : https://github.com/kelin-xycs/CircleG , 进入页面后 点击右边 绿色 的 “Clone or download” 按钮 就可以下载了 。 程序 只有一个 Html 文件 CircleG.html , 用 Html5 + javascript 写的, 用 浏览器 打开 就可以运行 。
程序界面 里 可以设定 计算参数, 默认参数 是 :
实心圆 A 半径 : 100 米
实心圆 A 密度 : 1 千克/米²
质点 B 坐标 x : 200 米 y : 50 米
质点 B 质量 m : 10 千克
x 轴 直径 切分为多少个 dx : 1000
y 轴 直径 切分为多少个 dy : 1000
万有引力常量 G: 1 牛 * 米平方 / 千克平方
点击 “计算” 按钮, 根据 默认参数 计算 得 的 结果 是 :
实心圆 A 对 质点 B 的 引力 F = 8.155875305844118 牛 , Fx = -7.912739789512828 牛 , Fy = -1.9765755811348025 牛 。 Fx Fy 是 F 的 x分量 y分量 。 F 是 绝对值, Fx Fy 的 正负号 表示 方向 。
把 实心圆 A 看成圆心处同样质量的质点 对 质点 B 的 引力 Fo = 7.3882352941176475 牛 。
可以看到, F 和 Fo 相近, 但也有 明显 的 差距, 所以, 实心圆 和 圆心处同样质量的质点 不等价, 设 质点 O 为 圆心处同样质量的质点, 当 质点 B 在 实心圆 A 外部 时, 质点 O 对 B 的 引力 和 实心圆 A 对 B 的 引力 方向相同, 但 大小不同 。
大家可以 把 “x 轴 直径 切分为多少个 dx ” 、“y 轴 直径 切分为多少个 dy” 修改成 2000 、3000 、 …… 10000 、…… 计算看看, 看 结果 怎么样 。
还有一个问题, 怎么进行 误差分析 ? 即 怎么计算 模拟计算 的 结果 和 理论值 之间 的 差, 或者 差 的 范围 ?
不知道 。
有 2 种 间接 的 方法 :
1 取一个 特例, 质点 B 位于 x 轴 上, 即 质点 的 y 坐标 为 0 , 即 yb = 0 , 比如 x = 200 , y = 0 , 此时 Fy 应该等于 0, 可以 看看 模拟计算 的 Fy 是多少, 比如, 按照 默认参数, 把 质点 B 坐标 y 设置 为 0 , 计算得 的 结果 是 :
实心圆 A 对 质点 B 的 引力 F = 8.725744060375812 牛 , Fx = -8.725743812735963 牛 , Fy = 0.002078865993654827 牛 。 Fx Fy 是 F 的 x分量 y分量 。 F 是 绝对值, Fx Fy 的 正负号 表示 方向 。
把 实心圆 A 看成圆心处同样质量的质点 对 质点 B 的 引力 Fo = 7.85 牛 。
因为 质点 B 位于 x 轴, 所以 Fy 的 理论值 是 0, 所以, Fy = 0.002078865993654827 牛 表示 此时 Fy 和 理论值 的 差距 是 0.002078865993654827 牛 , 这个 数据 和 推论 可以 间接 的 评估 “ x 轴 直径 切分为 1000 个 dx , y 轴 直径 切分为 1000 个 dy ” 的 条件下 的 计算精度 , 也可以说是 误差范围, 或者说 误差级别 。
2 取一个 任意 的 计算结果, 比如 取 默认参数 的 计算结果, 由 上文 可知, F 的 方向 和 Fo 相同, 即 F 的 方向 在 OB 直线 上, 所以 Fy / Fx 的 理论值 等于 OB 的 斜率, 即 质点 B 的 y 坐标 / x 坐标 , 即 yb / xb 。
yb / xb = 50 / 200 = 1 / 4 = 0.25 ,
模拟计算出 的 Fy / Fx = -1.9765755811348025 牛 / -7.912739789512828 牛 = 0.2497
0.25 - 0.2497 = 0.0003 ,
所以, Fy / Fx 的 模拟计算结果 和 理论值 的 差距 是 0.0003 , 这个 数据 和 推论 可以 间接 的 评估 “ x 轴 直径 切分为 1000 个 dx , y 轴 直径 切分为 1000 个 dy ” 的 条件下 的 计算精度 , 也可以说是 误差范围, 或者说 误差级别 。
x 轴 直径 切分为多少个 dx 就是 dx 数量, y 轴 直径 切分为多少个 dy 是 dy 数量 。
把 dx 数量 和 dy 数量 增大, 进行计算, 根据 上面 2 种 方法 均可发现 计算精度 提高了 。
dx 数量 和 dy 数量 为 1000 , 表示需要计算 1000 * 1000 = 100 万 个 面元, 计算量 还是 挺大的, 如果 dx数量 dy数量 增大, 可以提高计算精度, 计算量也会更大, 不过 这种类型 的 计算 可以使用 并行计算 。 利用 多核 多CPU 多主机 来 并行计算, 可以 增大 CPU核 CPU 计算机 的 数量 来 进行 大规模 “暴力” 并行计算 。