2022年亚太杯APMCM数学建模大赛E题有多少核弹可以摧毁地球求解全过程文档及程序

news2024/12/28 15:58:03

2022年亚太杯APMCM数学建模大赛

E题 有多少核弹可以摧毁地球

原题再现

  1945年8月6日,第二次世界大战即将结束。为了尽快结束战争,美国在日本广岛投下了下一颗名为“小男孩”的原子弹。这样一颗原子弹在广岛炸死了20万人,广岛的所有建筑物都倒塌了。这是人类历史上第一次将原子弹付诸实践,也让许多人第一次意识到原子弹的可怕威力。在这里插入图片描述
  核武器是指与核反应有关的巨大致命武器,包括氢弹、原子弹、中子弹等。核武器是人类有史以来最强大的武器之一,经常让人想起毁灭天地的场景。原子弹的瞬间爆炸温度可以达到数千万度。原子弹的爆炸当量约为数万至数十万吨TNT当量。原子弹的爆炸及其辐射范围可以摧毁一座城市。
  由于原子弹的可怕威力,许多国家希望用它来威慑其他国家,保护自己的国家免受外国入侵。二战后,世界各国开始疯狂研发制造原子弹,甚至制造出了“大伊万”等破坏性武器。
  “大伊凡”是目前世界上已知威力最大的核弹,也就是苏联时期建造的“沙皇炸弹”。它不仅是世界上威力最大的核弹,也是最大的核弹。“沙皇炸弹”有多大?数据显示,它的长度为8米,直径为2.1米,重量高达27吨,设计TNT当量为50兆吨。苏联原计划设计相当于100兆吨的导弹,但由于破坏力太大,无法找到合适的试验场,因此功率降低了一半。即便如此,沙皇炸弹仍然是世界上最强大的核武器。“小男孩”的爆炸威力约为14000吨TNT当量,使广岛成为一片废墟,而“沙皇炸弹”的威力可与数十甚至数百名“小男孩“相媲美。“沙皇炸弹”在苏联新地岛试爆后,甚至在一些远至美国的州也探测到了5级左右的地震,导致欧亚大陆向南移动了9毫米。
  许多人认为这些核武器可以毁灭地球好几次。事实真的是这样吗?就人类开发的核武器的威力而言,如果它们摧毁了地球,并不意味着它们可以把地球炸成碎片,而是意味着人类和地球上生物的生存环境已经被破坏。
  APMCM组织委员会要求您的团队处理当前的报告和未来的核武器预测。他们提供了数据集2022_APMCM_E_data.csv来帮助您进行研究。请收集相应的数据,建立数学模型,并回答以下问题。

  要求

  1.基础数据分析

  a) 哪些国家曾经拥有核武器?

  b) 在过去20年中,哪个国家的核武器库存减少或增加最多?

  c) 哪五年的核武器试验最多?

  d) 在过去10年中,哪个国家在核武器研究方面最活跃?

  e) 哪个国家从“不考虑核武器”到“拥有核武器”的转变最快?

  2.预测核武器的数量

  a) 根据所附数据或您收集的数据,建立一个数学模型来预测核武器的数量,并预测未来100年内拥有核武器的国家;

  b) 预测未来100年核武器数量的变化趋势,2123年核武器总数,以及每个国家的核武器数量。

  3.保护我们的星球

  a) 建立核武器引爆位置的数学模型,计算出摧毁地球至少需要多少枚核弹?

  b) 根据数学模型,核弹目前拥有的最大破坏力是多少?足以毁灭地球吗?

  c) 为了保护地球和我们赖以生存的环境,世界核弹的总数应该限制在什么范围内,理论上已经拥有核武器的国家应该限制在哪些范围内?

  4.准备一篇非技术性文章(最多1页)。请给联合国写一篇非技术性的文章(最多1页),解释你的团队的调查结果,并为所有国家提出一些建议。

整体求解过程概述(摘要)

  核武器是人类历史上发展起来的最强大的武器,正是因为核武器的力量,各国才希望通过核武器的威慑作用来保护自己。核武器虽然威力巨大,但一旦爆炸,就会释放出巨大的能量,对生态环境造成严重破坏。
  针对第一个问题,本文根据问题中各国核武器的相关数据进行了基础数据分析。首先,设想所有国家拥有的核武器的状况、储存的核武器数量和进行的核试验数量。使用python遍历相关数据,完成描述性统计分析。构建临界权重评分模型,选取7个指标对不同国家对核武器的态度进行评分,判断朝鲜是最积极的核武器国家。
  对于第二个问题,为了预测未来核武器的数量和趋势,本文构建了一个基于ARIMA时间序列分析的预测模型。首先,对数据进行预处理,并进行ADF稳定性测试和白噪声测试。然后,我们对模型进行评估和测试,以找到最合适的超级参数来引入预测模型。接下来,引入了各国核武器拥有状况和储存情况的数据,并进行了预测和数值分析。最后,我们得出的结论是,2123年的核武器总数将达到2152件,每个国家的核武器数量都将达到2150件。
  对于第三个问题,本文给出了破坏地球的两个定义。一种是用核武器把地球炸成碎片。通过对地球引力结合能和核武器爆炸能力的计算,发现目前核武器的数量远远不够。第二个定义是用核武器及其辐射摧毁地球上的大多数生物。我们将世界地图转换为灰度图像,建立DBSCAN聚类模型,并设置核武器的爆炸半径和传播半径,以获得最终摧毁地球的核弹总数。
  针对第四个问题,我们向联合国提交了一篇非技术性文章,用之前的模型分析结果解释了我们团队对核武器的看法和相关发现,并为所有国家提出了几点建议。我们认为,发展核武器的最终目标是消除核武器。

模型假设:

  为了简化建模,我们做了以下假设:

  1) 假设收集的数据忽略了信息披露程度的影响。
  2) 假设地球被破坏的标准不是地球破碎,而是地球表面的生态环境受到严重破坏。
  3) 本文对核武器数量的分析仅限于收集到的数据中的国家,其他国家没有进行分析。

问题分析:

  问题一分析
  问题1的主要目的是对数据进行基本分析,其中包含五个小问题:
  问题a:数据中的状态=3(国家地位核武器.csv)表明该国当年拥有核武器。因此,通过遍历数据,我们可以发现,状态=3的国家就是曾经拥有核武器的国家。
  问题b:为了更准确地分析问题,我们将首先可视化核武器库存数据(nuclear-chirf-stock.csv),然后分析哪个国家的核武器库存减少或增加最多。由于存在不同的措施,因此开发了两种方法来更全面地分析问题。第一个是每个国家最后一年的核武器数量与最早一年的数量之间的差异。第二种方法是观察每个国家核武器数量的差异。然后对两种方法的结果进行了比较。如果它们是一致的,则可以更好地解释结果的准确性。
  问题c:首先,每年的核武器试验次数是通过处理核武器试验的次数得出的。然后,计算每个“5年”内发生的核武器试验次数,经过比较可以得出核武器试验最多的5年。
  问题d:通过建立CRITIC模型,结合核武器试验数据,对每个国家的核武器研究活动进行评分,从而得出核武器研究最活跃的国家。
  问题e:我们将分析选定的曾经拥有核武器的国家,减去状态=3的最早年份和状态=0的最晚年份,得出这些国家从“不考虑核武器”变为“拥有核武器”的时间间隔,然后进行比较,得出结果。

  问题二分析
  问题二的主要目的是预测核武器,包括预测未来的核武器国家和预测未来核武器的数量。根据数据分析,我们选择建立基于ARIMA的核武器数量预测模型,建立流程图如下
在这里插入图片描述

  从图中可以看出,我们需要首先对时间序列数据进行预处理。由于ARIMA模型建立的先决条件要求,我们需要进行平稳性测试和白噪声测试。在通过平稳性测试和白噪声测试后,进行了模型估计和测试,最终可以成功地建立ARIMA模型。
  建立基于ARIMA的核武器数量预测模型,预测未来100年拥有核武器的国家和核武器数量的变化趋势,预测2123年世界核武器总数和每个国家的核武器数。

  问题三分析
  破坏地球有不同的定义。为了更全面地分析这个问题,我们建立了两个破坏地球的定义。第一个定义是撕裂地球,并在第一个定义的基础上进行了适当的分析。第二个定义是对地球表面的生态环境造成严重破坏。基于这一定义,我们将通过以人口密度为标准的DBSCAN聚类算法建立核武器的爆炸位置模型,然后分析和解决问题,判断摧毁地球需要多少核武器,并计算世界上核武器的极限。

  问题四分析
  根据上述解决方案的结果和我们的调查结果,我们将向联合国撰写一篇非技术性文章,为所有国家提出建议。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

部分程序如下:
import pandas as pd
def CountriesThatHaveNuclearBombs():
 data = pd.read_csv('../data/country-position-nuclear-weapons.csv').values.tolist()
 countries = {}
 for i in data:
 if i[3] == 3:
 countries[i[0]] = i[2]
 return countries
if __name__ == '__main__':
 res = CountriesThatHaveNuclearBombs()
 for item in res:
 print(item + ' has nuclear until ' + str(res[item]) + ' year')
import pandas as pd
import matplotlib.pyplot as plt
def draw(countries, years, datas):
 plt.title('Nuclear Growth')
 plt.xlabel('years')
 plt.ylabel('num')
 for data in datas:
 plt.plot(years, data, marker='o', markersize=3)
 plt.legend(countries)
 plt.show()
if __name__ == '__main__':
 data = pd.read_csv('../data/nuclear-warhead-stockpiles.csv').values.tolist()
 datas=[]
 countries = []
 temp = []
 years=[]
 for i in range(2003, 2023):
 years.append(i)
 for i in data:
 countries.append(i[0])
 if i[2] > 2002:
 temp.append(i[3])
 if i[2] == 2022:
datas.append(temp)
 temp = []
 countries_data = list(set(countries))
 countries_data.sort(key=countries.index)
 draw(countries_data,years,datas)
 del countries_data[-4]
 del countries_data[-1]
 del datas[-4]
 del datas[-1]
 draw(countries_data,years,datas)
import pandas as pd
from matplotlib import pyplot as plt
import plotly.express as px
from matplotlib import pyplot as plt
import seaborn as sns
import statsmodels.api as sm
data = pd.read_csv('../data/number-of-nuclear-weapons-tests.csv').values.tolist()
res = []
temp = []
years = []
for i in range(1945, 2020):
 years.append(i)
# print(years)
for i in years:
 for item in data:
 if item[2] == i:
 temp.append(item[3])
 num = 0
 for j in temp:
 num += j
 res.append(num)
 num = 0
 temp = []
print(res)
res = pd.DataFrame(res, columns=['num'])
# res.index=pd.Index(sm.tsa.datetools.dates_from_range('1945', '2019'))
print(res)
fiveyears = []
fiveyearsnum = []
print(len(res.index))
for index in range(0, len(res.index) - 4):
 fiveyearsnum.append(res[index:index + 5].values.transpose().tolist()[0][0] + 
res[index:index + 5].values.transpose().tolist()[0][
 1] + res[index:index + 5].values.transpose().tolist()[0][2] + \
 res[index:index + 5].values.transpose().tolist()[0][3] + res[index:index + 
5].values.transpose().tolist()[0][
 4])
# +'to'+str(i+4)
[fiveyears.append(str(i)) for i in range(1945,2016)]
print(fiveyears)
print(fiveyearsnum)
plt.figure(figsize=(15, 10))
plt.plot(fiveyears,fiveyearsnum)
plt.xticks(rotation=90)
# Control chart notes
plt.annotate('The Max value is %d in %s' % 
(max(fiveyearsnum),fiveyears[fiveyearsnum.index(max(fiveyearsnum))]), # Control the 
content of comments
 xy=(fiveyearsnum.index(max(fiveyearsnum)), max(fiveyearsnum)), # 
The point to comment, y1.index(max(y1)): The index of the maximum value in y1,
 # max(y1):The maximum value in y1
 xytext=(20, 400), # The location of the comment display
 fontsize=30,
 arrowprops=dict(facecolor='black', width=0.5, headwidth=5) # Control 
arrow color, width, arrow width
 # arrowprops=dict(arrowstyle=''<->'') # Try this
 )
plt.show()
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1116602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BAT033:批量删除文件特定字符及特定字符之后的字符

引言&#xff1a;编写批处理程序&#xff0c;实现批量删除文件特定字符及特定字符之后的字符。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击【…

【计算机网络】OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

表示本机IP地址的方式(三种方式)

1、本机和网络上的其他主机都可以通过IP地址访问到服务器 2、通过 127.0.0.1 或者 localhost 访问 127.0.0.1 和 localhost 它们完全等价 只能 本机 通过 127.0.0.1 或者 localhost 访问&#xff0c;网络上的其他主机无法访问 3、 通过 0.0.0.0 访问服务器 表示所有可…

Element Plus el-form表单自定义插槽如何使用

//正常无插槽表单<el-form :model"form" label-width"120px"><el-form-item label"Activity name"><el-input v-model"form.name" /></el-form-item></el-form>//带插槽表单//适用二次封装的form组件&l…

计算机网络篇之TCP滑动窗口

文章目录 前言概述 前言 在网络数据传输时&#xff0c;若传输的原始数据包比较大&#xff0c;会将数据包分解成多个数据包进行发送。需要对数据包确认后&#xff0c;才能发送下一个数据包。在等待确认包的这个过程浪费了大量的时间&#xff0c;不过还好TCP引入了滑动窗口的概念…

如何开发一个 Safari 插件

本文字数&#xff1a;2493字 预计阅读时间&#xff1a;15分钟 由于常用浏览器是Safari&#xff0c;而Safari浏览器的插件比不上Chrome&#xff0c;所以就有了自己开发常用的Safari插件的想法。 打算开发当前页面生成二维码的Extension&#xff0c;因为网络原因&#xff0c;AirD…

微软正式发布开源应用平台 Radius平台

“ 10 月 18 日&#xff0c;微软 Azure 孵化团队正式发布开源应用平台 Radius&#xff0c;该平台将应用程序置于每个开发阶段的中心&#xff0c;重新定义应用程序的构建、管理与理解方式。” 简单的概括就是&#xff0c;它和Kubernetes不一样&#xff0c;Radius将应用程序放在每…

DevExpress WPF Pivot Grid组件,可轻松实现多维数据分析!(二)

在上文中&#xff08;点击这里回顾>>&#xff09;我们主要为大家介绍了DevExpress WPF Pivot Grid组件的超快速枢轴分析功能、Microsoft分析服务等&#xff0c;本文将继续介绍图表透视数据的处理、MVVM支持等。欢迎持续关注我们&#xff0c;探索更多新功能哦~ P.S&#…

LNMP架构部署Discuz论坛系统

文章目录 LNMP架构&部署Discuz论坛系统部署LNMP架构环境前期准备安装Nginx安装mariadb安装php配置nginx 部署Discuz论坛系统下载Discuz论坛系统代码包部署Discuz论坛系统配置虚拟主机安装Discuz论坛访问站点尝试注册一个账号 LNMP架构&部署Discuz论坛系统 部署LNMP架构…

R语言:主成分分析PCA

文章目录 主成分分析处理步骤数据集code 主成分分析 主成分分析&#xff08;或称主分量分析&#xff0c;principal component analysis&#xff09;由皮尔逊&#xff08;Pearson,1901&#xff09;首先引入&#xff0c;后来被霍特林&#xff08;Hotelling,1933&#xff09;发展…

xtrabackup恢复数据时提示“This target seems to be not preared yet.”

测试MySQL数据库备份文件可用性。 备份文件是腾讯云平台备份的MySQL。文件需要xtrabackup恢复。 执行到xtrabackup --prepare --target-dir./mysql时&#xff0c;没有像往常开始执行命令而是给出了一个简短提示。 “This target seems to be not preared yet.” 为了确认前面…

软件工程与计算总结(二十二)软件开发过程模型

&#xff08;自顶向下&#xff0c;逐层细化&#xff09; 目录 一.软件开发的典型阶段 1.需求工程 2.软件设计 3.软件构造 4.软件测试 5.软件交付 6.软件维护 二.软件生命周期模型 三.软件过程模型 四.构建-修复模型 五.瀑布模型 六.增量迭代模型 七.演化模型 八…

Leetcode 第 361 场周赛题解

Leetcode 第 361 场周赛题解 Leetcode 第 361 场周赛题解题目1&#xff1a;2843. 统计对称整数的数目思路代码复杂度分析 题目2&#xff1a;生成特殊数字的最少操作思路代码复杂度分析 题目3&#xff1a;统计趣味子数组的数目思路代码复杂度分析 题目4&#xff1a;边权重均等查…

Git简洁安装方式和使用方式【附安装包资源,Git基础操作,如拉取项目、上传代码、拉取代码】

软件安装包 项目版本管理软件 Git windows版本安装包 安装步骤 双击按照包之后&#xff0c;直接next 安装位置尽量不要选择C盘&#xff0c;如果只有C盘&#xff0c;可以尝试分盘&#xff0c;如果C盘已经很小了&#xff0c;那就没办法了 选择完安装位置之后&#xff0c;直…

网络编程:事件模型关于epoll 边缘触发与水平触发的理解

文章目录 EPOLL事件有两种模型&#xff1a;ET模式LT模式运行区别边缘触发的实际使用代码如下 EPOLL事件有两种模型&#xff1a; Edge Triggered (ET) 边缘触发只有数据到来才触发&#xff0c;不管缓存区中是否还有数据。 Level Triggered (LT) 水平触发只要有数据都会触发。 (…

【USRP】软件无线电基础篇:长波、中波、短波

一、频率和波长 类型频率波长长波30&#xff5e;300千赫&#xff08;KHz&#xff09;10&#xff5e;1千米中波300&#xff5e;3000千赫&#xff08;KHz&#xff09;10&#xff5e;1百米短波3&#xff5e;30兆赫&#xff08;MHz&#xff09;100&#xff5e;10米 二、传输距离 …

SystemVerilog Assertions应用指南 Chapter 11.5SVA检验器的时序窗口

11.5SVA检验器的时序窗口 到目前为止,带延迟的例子使用的都是固定的正延迟。在下面几个例子中,我们将讨论几种不同的描述延迟的方法属性p12检查布尔表达式“a&&b”在任何给定的时钟上升沿为真。如果表达式为真,那么在接下去的1-~3周期内,信号“c”应该至少在一个时钟周…

蓝桥杯每日一题2023.10.20

题目描述 等差数列 - 蓝桥云课 (lanqiao.cn) 知识点&#xff1a; 排序找出最大公约数则为公差 项数: n (第n项值-首项) / 公差 1。 n (an-a1) / d1 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10; int a[N], n; int gcd…

高复杂度,斐波那契数列

n大的时候&#xff0c;值会很大

java中的容器(集合),HashMap底层原理,ArrayList、LinkedList、Vector区别,hashMap加载因子0.75原因

一、java中的容器 集合主要分为Collection和Map两大接口&#xff1b;Collection集合的子接口有List、Set&#xff1b;List集合的实现类有ArrayList底层是数组、LinkedList底层是双向非循环列表、Vector&#xff1b;Set集合的实现类有HashSet、TreeSet&#xff1b;Map集合的实现…