我在CSDN开组会1-蒙特卡洛模拟在矿床学的应用展望

各位老师、同学们,大家好。今天组会的内容是蒙特卡洛模拟在矿床学的应用展望。

为什么要讲蒙特卡洛模拟呢,因为我发现在地质学方面已经有不少应用,但是蒙特卡洛模拟延伸的知识太晦涩了,劝退了很多探究者们。因此,计划开展一场专题报告,如有不足之处,请批评指正。

1 蒙特卡洛的介绍

蒙特卡洛方法又称统计模拟法,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的⽅法。

image-20231117224505811

将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡洛命名。

image-20231117224552841

蒙特卡洛方法最早在原子弹的研制中正式提出,而事实上,1777年,法国Buffon提出用投针实验的方法求圆周率,这被认为是蒙特卡洛方法的起源。

image-20231117224715781

通常来讲,蒙特卡洛模拟应当包括是三个方面,第一是建立数学模型,然后随机生成数据,最后进行统计和分析处理。详细描述如下:

  • 在蒙特卡洛模拟中,首先需要建立一个描述系统的数学模型,并明确所关注的属性或行为,例如材料的热力学性质、相变行为、输运性质等。

  • 然后,通过随机生成大量的模拟数据,这些数据是基于系统模型和特定的概率分布。

  • 最后,利用统计方法对这些数据进行分析和处理,从而得出关于系统的性质和行为的结果。

image-20231117224919781

蒙特卡洛在众多领域都有所应用,例如材料学、物理科学、生命科学以及计算机科学、金融工程等。


2 蒙特卡洛模拟的地质学应用

尽管蒙特卡洛模拟应用众多,但是在地质学领域仍没有做到普及。在此列举主要的几个研究方向。

2.1 动力学蒙特卡洛模拟

文献1 The effect of crystal size variation on the rate of dissolution – A kinetic Monte Carlo study (Briese et al., 2017,GCA

摘要:

晶体尺寸是许多地球化学过程的重要参数,并且经常被观察到对晶体溶解速率有显著影响。虽然尺寸与溶解度的关系通常用热力学术语(临界半径)来描述,但尺寸与溶解速率的机理基础并不详细。在这里,我们检验了尺寸对溶解速率的影响,以及这种关系与其他参数无关的机理。我们使用动力学蒙特卡罗模型方法观察了四个简单立方晶体(边缘尺寸d=25,64,125,187个晶胞)溶解过程中的原子变化。这些模拟保持了代表不饱和、远离平衡状态的恒定解边界条件。我们观察到表面积归一化溶解速率随着初始晶体尺寸的减小而非线性增加。这种关系可以从机理上理解,部分是扭结原子位和阶跃原子位形成的耦合。在这两个约束条件大致平衡的条件下,总溶解速率最大,质量去除最有效。这种关系反映了扭结原子和台阶原子形成的相互依赖性,它们的高分离频率对溶解过程起主导作用。

关键信息:

Fig. 1. Specific surface sites of a Kossel-type crystal that are characterized through their number of nearest neighbors or the number of bonds. Terrace atoms have 5 nearest neighbors, step atoms have 4, kink atoms have 3, and adatoms have only one.

针对晶体溶解速率的情况,需要先有公式:

image-20231117230528973

where kB and T are Boltzmann’s constant and absolute temperature, respectively. E represents the activation energy necessary for a transition from one state to another, and m is the so-called frequency factor.

在阿伦尼乌兹方程公式中,k表示着速率,k-表示着溶解速率,k+表示着吸附速率。kdif表示着表面扩散情况。好了 到此为止,不必深究。作者主要计算的是k-,并将k+设置为了无穷小。

接着作者假设了四种尺寸的晶体,并让他们先附着上4000个原子。

image-20231117230848910

image-20231117230859214

文献2 Reconstructing Earth’s atmospheric oxygenation history using machine learning*Chen et al., NC,2023

image-20231117231641788

在这里,我们提出了一个独立的策略——利用全球镁铁质火成岩地球化学大数据进行机器学习,以探索过去40亿年的大气情况。地球的含氧大气可能至少部分是地幔冷却的结果,特别是不断演变的地幔熔融过程帮助调节了早期地球大气的平衡。

作者首先手机了全球的镁铁质火成岩地球化学的数据,这个有对应的数据库,不是主要的问题。接着进行了主成分分析,因为元素很多所以进行降维,可以理解。

但是为什么和大气氧化事件联系起来了呢?因为作者发现镁铁质火成岩的数据分析结果和两期氧化事件能匹配上。所以有了后续的研究工作。

作者建立了质量变化的方程,其中重要的是ma质量方程。这个函数由SVR支持向量回归获得函数方程式。接着使用恶魔那个特卡了模拟得到结果。

image-20231117233517884

文献3

Compositional and thermal state of the lower mantle from joint 3D inversion with seismic tomography and mineral elasticity

Deng et al., 2023,PANS

在本研究中,我们采用马尔可夫链蒙特卡罗框架,根据地震层析成像和矿物弹性数据反演了下地幔的 3D 化学成分和热状态。

image-20231117233939557

文献4

Markov chain Monte Carlo inversion of mantle temperature and source composition, with application to Reykjanes Peninsula, Iceland

Brown et al., 2020, EPSL

为了克服这些局限性,我们提出了一种将马尔可夫 链蒙特卡罗(MCMC)采样方法与REEBOX PRO正向地幔融化模型相结合的逆方法。我们使用此工具来约束冰岛雷克雅尼斯半岛下方的地幔潜在温度,熔体体积以及地幔源岩性的微量元素和同位素组成。

image-20231117234745593

image-20231117234756663

image-20231117234803022

在这里 就需要提到马尔科夫链蒙特卡洛模拟了。

1、构建马尔科夫链

1.1 马尔科夫链初始化

(1)从先验概率分布q(m)中随机得到一组输入参数m**(但m数据必须有效)**。

(2)设定迭代变量t,将当前参数写为m**t**。

(3)因此这个根据观察值进行的结果拟合量化为似然函数[L(d, mt)]**。**

1.2模型参数限定

(1)设定一个新的模型参数mt‘,是对mt参数扰动的结果。

1.3模型参数判定

(1)计算接受率。R=(ρ(m(t^′,d)))/(ρ(m(t^ ,d)))

(2)从均匀分布中取随机数r与R比较,当r≤R时,将mt‘添加到马尔科夫链中。t值+1,若反之,则t不变(保持当前状态)。

1.4迭代

(1)重复进行参数限定和判定,指导达到规定迭代次数。


3 蒙特卡洛模拟的研究展望

1. 建立符合矿床学事实的数值模型,运用蒙特卡洛模拟获取分布特征

2. 使用马尔科夫链蒙特卡洛模拟,反演数值模型的基本参数概率分布

3. 使用动力学蒙特卡洛模拟,确定研究材料的宏观失效

4蒙特卡洛模拟实操展示

  • 1. 使用EXCEL*进行蒙特卡洛模拟

    用鼠标选中A列,在编辑栏,输入Rand函数:=RAND();并按【Ctrl+Enter】结束确认,即可生成一列随机小数;=ROUND(RAND(),2);让随机数,强制保留两位小数=RANDBETWEEN(最小整数,最大整数)

    生成服从正态分布的随机数Excel 函数格式“=NORMINV(probability,mean,standard_dev)”参数解释:Probability - 正态分布的概率值,取值范围(0,1)Mean - 算术平均值;Standard_dev - 标准差。

    =NORMINV(RAND(),0,1) 生成均值为0,标准差为1的正态分布随机数

  • 2. 使用*Python进行蒙特卡洛模拟

    1. random.random()random.random() 方法返回一个随机数,其在 0 至 1 的范围之内。以下是其具体用法:

    import random

    random.random()

    1. random.uniform()random.uniform(a , b) 是在指定范围内生成随机数,其有两个参数,一个是范围上限,一个是范围下限,顺序可交换

    import random

    random.uniform(2,6)

    1. random.randint()random.randint(a , b) 是随机生成指定范围内的整数,其有两个参数,一个是范围上限,一个是范围下限,顺序不可交换。

    import random

    random.randint(2,6)

  • 3. 使用*R*语言进行蒙特卡洛模拟

    sample(x, size, replace, prob)x 表示从x中选取随机数,x可以是一个向量(可以由一个元素或者多个元素组成)。size表示随机生成的随机数的个数,是一个非负的整数。replace表示抽取方式(replace = TRUE 表示可放回抽取,replace = FLASE表示不可放回抽取)。prob表示按照给定的概率抽取,由一个向量组成(默认prob = NULL)

    set.seed()函数设置随机种子,如果设置了随机种子每次的随机数是相同的。目的是方便以后他人进行测试。

    runif()函数:随机生成均匀分布的小数runif(n, min = 0, max = 1)n表示随机生成小数的个数。min = 0,max = 1,表示小数的范围在0-1之间。

rnorm()函数:生成服从正态分布的随机数rnorm(n, mean = 0, sd = 1)生成长度为n的向量,向量中的每一个值服从正态分布。

函数概率分布
rexp指数分布
rfF分布
rgammaGamma分布
rgeom几何分布
rhyper超几何分布
rlogisLogistic分布
rmultinom多项式分布
rpois泊松分布
rtt分布
rchisq卡方分布

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DSP介绍及CCS

文章目录 CCS版本编译器CCS使用注意严禁中文 CCS的基本操作新建工程导入现有工程调整字体的大小工程界面恢复标签的使用 仿真盒小虫子进入在线Debug 芯片TMS320F28355基本介绍特性 DSP中特殊指令dsp指令中的EALLOW EDIS CCS TI官网 版本 CCS版本: CCS8.3.1.0004_…

腾讯云HAI域AI作画

目录 🐳前言: 🚀了解高性能应用服务 HAI 👻即插即用 轻松上手 👻横向对比 青出于蓝 🐤应用场景-AI作画 🐤应用场景-AI对话 🐤应用场景-算法研发 🚀使用HAI进行…

Web 自动化神器 TestCafe—页面基本操作篇

前 言 Testcafe是基于node.js的框架,以操作简洁著称,是web自动化的神器 今天主要给大家介绍一下testcafe这个框架和页面元素交互的方法。 一、互动要求 使用 TestCafe 与元素进行交互操作,元素需满足以下条件:☟ 元素在 body 页…

怎么让NetCore接口支持Json参数

项目:NetCore Web API 接口支持Json参数需要安装Newtonsoft.Json.Linq和Microsoft.AspNetCore.Mvc.NewtonsoftJson Program代码 //支持json需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson using Newtonsoft.Json.Serialization;var builder WebApplication.Cr…

【Seata源码学习 】篇三 TM开启全局事务的过程

【Seata源码学习 】篇三 TM开启全局事务的过程 TM发送 单个或批量 消息 以发送GlobalBeginRequest消息为例 TM在执行拦截器链路前将向TC发送GlobalBeginRequest 消息 io.seata.tm.api.DefaultGlobalTransaction#begin(int, java.lang.String) Overridepublic String begin(…

媲美有线操作,支持4KHz响应和无线充电的游戏鼠标,雷柏VT3S上手

对于无线鼠标来说,操作延迟和精度对游戏操作影响很大,常见的游戏鼠标至少都有1KHz的回报率,而雷柏今年已经出了很多支持4KHz回报的鼠标了,像是我现在用的这款VT3S游戏鼠标,就搭载了旗舰级的原相3395引擎,支…

git撤销未git commit的文件

目录 一、问题描述 二、方式1:git命令撤销(更专业) 1、文件已git add,未git commit 2、本地修改,未git add (1)撤销处于unstage的文件,即删除已有变动 (2&#xff…

netty整合websocket(完美教程)

websocket的介绍: WebSocket是一种在网络通信中的协议,它是独立于HTTP协议的。该协议基于TCP/IP协议,可以提供双向通讯并保有状态。这意味着客户端和服务器可以进行实时响应,并且这种响应是双向的。WebSocket协议端口通常是80&am…

一些损失函数的学习

CrossEntropy loss 交叉熵是用来衡量两个概率分布之间的差异性或不相似性的度量交叉熵定义为两个概率分布p和q之间的度量。其中,p通常是真实分布,而q是模型预测的分布 交叉熵还等于信息熵 相对熵 这里,x遍历所有可能的事件,p(x)…

Window下如何对Redis进行开启与关闭

目录 前言1. 图文界面2. 命令行 前言 由于长期使用Linux界面,对于Window下的Redis,不知如何下手。特此记录该博文 特别注意,刚下载好的Redis,如果需要配置密码,可以再该文件进行配置:redis.windows-servi…

基于知识问答的上下文学习中的代码风格11.20

基于知识问答的上下文学习中的代码风格 摘要1 引言2 相关工作3 方法3.1 概述3.2 元函数设计3.3 推理 4 实验4.1 实验设置4.2 实施细节4.3 主要结果 摘要 现有的基于知识的问题分类方法通常依赖于复杂的训练技术和模型框架,在实际应用中存在诸多局限性。最近&#x…

Redis-高性能原理剖析

redis安装 下载地址:http://redis.io/download 安装步骤: # 安装gcc yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar -zxvf redis-5.0.3.tar…

如何让bug远离你?

想让bug远离你,当然是靠佛祖保佑~ /** *************************************************************************** ******************** ********************* ******************** COPYRIGHT INFORMATION *…

09【保姆级】-GO语言的数组和切片

09【保姆级】-GO语言的数组 一、数组1.1 数组定义1.2 数组的使用1.3 数组的遍历1.4 数组的应用案例 二、切片2.1 切片的介绍2.2 切片的原理2.3 切片的三种使用 之前我学过C、Java、Python语言时总结的经验: 先建立整体框架,然后再去抠细节。先Know how&a…

如何使用SD-WAN提升物流供应链网络效率

案例背景 本次分享的物流供应链企业是一家国际性的大型企业,专注于提供全球范围内的物流和供应链解决方案。案例用户在不同国家和地区均设有多个分支机构和办公地点,以支持客户需求和业务运营。 在过去,该企业用户使用传统的MPLS网络来连接各…

基于SDN技术构建多平面业务承载网络

随着企业数字化的浪潮席卷各个行业,传统网络架构面临着更为复杂和多样化的挑战。企业正在寻找一种全面适应数字化需求的网络解决方案。随着软件定义网络(SDN)的发展,“多业务SDN一张网”解决方案为企业提供了一种全新的网络架构&a…

OpenAI 超 700 名员工联名逼宫董事会;ChatGPT 新功能“阅后即焚”丨 RTE 开发者日报 Vol.89

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

java: 无效的目标发行版: 17 问题解决

今天在写完类点击运行后显示java: 无效的目标发行版: 17 网上查询了一番,发现有几个地方需要注意。 还有一个就是设置中,下面的就是我本次问题所在,不知道为什么,他自动添加了下面的东西 一个方法是把目标字节码版本改为正确的&a…

【PCB学习】几种接地符号

声明 该图并非原创,原文出处不可考,因此在这里附加说明。 示意图

Rust开发——切片(slice)类型

1、什么是切片 在 Rust 中,切片(slice)是一种基本类型和序列类型。在 Rust 官方文档中,切片被定义为“对连续序列的动态大小视图”。 但在rust的Github 源码中切片被定义如下: 切片是对一块内存的视图,表…