声明:本文只给国土计算提供一种大致的思路,不能准确代表中华人民共和国的国土容积。
在《论国土》一文中,“国土容积化体系”得到了详细的介绍,“国土容积化体系理论”已经初步建立。接下来的一步,便是计算出国土的容积。
根据拓扑学原理我们可以大致将其原本蜿蜒曲折的边境线规则化,成为一个圆形。由此便得到了一个规则的立体图形——上宽下窄的圆台形。也就是说,国土的容积已经被转化成了一个这个立体图形的体积。考虑到部分问题我们暂时不考虑地球表面是曲面这回事。现在的问题便成为了,如何求出该图形的容积。
以圆周率的计算方法为例:将一个正多边形的边长与高的比值计算出来,并将该多边形的边数无限增加。随着图形的边数增加,得到的图形越来越近似一个圆形。所计算出的比值,就离精准的圆周率更为接近。
由此,我们使用蒙特卡罗方法可以将该图形进行切片,在无限次地切片后,计算出每一片的体积并累加,便能得到近似精确的国土容积。这一举动,让一个还没有学过微积分的初中生来做,无疑是艰难的:因为他们只会一片一片死算下去——而我就是这样的一个初中生。
但这绝不意味着没有解决它的办法了。邓小平同志南方谈话明确指出科技是第一生产力。人脑不足,可以利用电脑,让电脑对其进行切片、计算和累加的操作。基于此,本人利用电脑,用C++这一语言进行示例:
(1)录入国土的高度等一系列常量。其中r表示地下10km处到地心的深度(即6361km),h表示国土的高度(海平面下10km到海拔35km,共计45km),s表示地下10km处的底面积(由相似的原理,易得:s=9.6106km26361km/6371km=9584931.721864699km;
const double s = 9584931.721864699;
const double r = 6361,h = 45;
const double s = 9584931.721864699;
(2)定义临时的变量。其中k表示切片的数量,v表示国土的面积,v1表示第i份国土的容积,r1表示第i份国土距离地心的距离,s1表示第i份国土的底面积大小:
double k=0;
double v=0,v1,r1,s1;
(3)利用循环进行计算。其中,i表示正在计算的国土的序号(由下至上以此为1,2,3……),r1表示第i份国土距离地心的距离(h/k表示每一份国土的高度),s1表示第i份国土的底面积(利用相似易得s1 = s * (r1 + h/k)/r;),v1表示第i份国土的体积(由v=sh易得v1 = s1 * h/k):
for(int i = 1;i <= k;i++){
r1 = r + h/k;
s1 = s * (r1 + h/k)/r;
v1 = s1 * h/k;
v += v1;
(4)在外套上while(1)进行无限循环,来无限次增加切片的数量:
while(1){
k+=1;
// 嵌套(3)中的源码。
}
由此,计算国土容积的程序便完成了。在切片10660次后,v稳定在4.31322e+008。
综上所述,中国国土的容积约为4.31322108km3=4.313221017m3.
程序源码:
#include<bits/stdc++.h>
const double r = 6361,h = 45;
const double s = 9584931.721864699;
double k=0;
double v=0,v1,r1,s1;
using namespace std;
int main(){
while(1){
k+=1000000;
for(int i = 1;i <= k;i++){
r1 = r + h/k;
s1 = s * (r1 + h/k)/r;
v1 = s1 * h/k;
v += v1;
}
cout<<v<<" "<<k<<endl;
v = 0;
}
}
空间原因,不附加原始数据
文档信息
- 本文作者:ovuleseed
- 本文链接:https://ovule-seed.github.io/2023/08/11/z6-%E5%9B%BD%E5%9C%9F%E5%AE%B9%E7%A7%AF%E7%9A%84%E8%AE%A1%E7%AE%97/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)