国土容积的计算

2023/08/11 初成 共 1545 字,约 5 分钟

声明:本文只给国土计算提供一种大致的思路,不能准确代表中华人民共和国的国土容积。

在《论国土》一文中,“国土容积化体系”得到了详细的介绍,“国土容积化体系理论”已经初步建立。接下来的一步,便是计算出国土的容积。

根据拓扑学原理我们可以大致将其原本蜿蜒曲折的边境线规则化,成为一个圆形。由此便得到了一个规则的立体图形——上宽下窄的圆台形。也就是说,国土的容积已经被转化成了一个这个立体图形的体积。考虑到部分问题我们暂时不考虑地球表面是曲面这回事。现在的问题便成为了,如何求出该图形的容积。

以圆周率的计算方法为例:将一个正多边形的边长与高的比值计算出来,并将该多边形的边数无限增加。随着图形的边数增加,得到的图形越来越近似一个圆形。所计算出的比值,就离精准的圆周率更为接近。

由此,我们使用蒙特卡罗方法可以将该图形进行切片,在无限次地切片后,计算出每一片的体积并累加,便能得到近似精确的国土容积。这一举动,让一个还没有学过微积分的初中生来做,无疑是艰难的:因为他们只会一片一片死算下去——而我就是这样的一个初中生。

但这绝不意味着没有解决它的办法了。邓小平同志南方谈话明确指出科技是第一生产力。人脑不足,可以利用电脑,让电脑对其进行切片、计算和累加的操作。基于此,本人利用电脑,用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;
  }
}

空间原因,不附加原始数据

文档信息

Search

    Table of Contents