我在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卡方分布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Django批量插入数据及分页器

文章目录 一、批量插入数据二、分页1.分页器的思路2.用一个案例试试3.自定义分页器 一、批量插入数据 当我们需要大批量创建数据的时候,如果一条一条的去创建或许需要猴年马月 我们可以先试一试for循环试试 我们首先建立一个模型类来创建一个表 models.py&#xff…

有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)

1. 目的 有依次对应关系的数组X、Y、Z,排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应,并打印出排序完成后的X、Y、Z数组。 2. 具体实现 以下面的这个对应关系为例,进行相应编程实现。 X [3.7,7.7,-6.6,1.5,-4.5…

腾讯云HAI域AI作画

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

ChatGPT暂时停止开通plus,可能迎来封号高峰期

前言: 前两日,chat gpt的创始人 San Altman在网上发表了,由于注册的使用量超过了他们的承受能力,为了确保每个人的良好使用体验,chat gpt将暂时停止开通gpt plus。 情况: 前段时间好像出现了官网崩溃的情况,就连api key都受到了影响,所以现在就开始了暂时停止plus的注…

【数据结构】栈详解

目录 1. 前言2. 栈2.1 栈的概念及结构2.2 如何实现栈2.3 数组栈实现2.3.1 top怎么确定2.3.2 栈顶插入2.3.2.1 栈顶插入分析2.3.2.2 栈顶插入代码实现 2.3.3 栈顶删除2.3.4 判空2.3.4.1 分析2.3.4.2 代码实现 2.3.5 栈的元素个数2.3.6 栈销毁2.3.7 栈访问数据 3. 源代码3.1 Stac…

苍穹外卖—解决前端时间属性显示问题

项目场景: 点击员工管理 出现显示时间属性问题 输入员工姓名为zhangsan 现实的时间属性是数组类型 问题描述 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据 APP …

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers 调用 项目地址:https://github.com/KMnO4-zx/self_llm.git 如果大家有其他模型想要部署教程,可以来仓库提交issue哦~ 也可以自己提交PR! InternLM-Chat-7B Transformers 部署调用 环…

【代数学习题4.2】从零理解范数与迹 —— 求数域元素的范数与迹

从零理解范数与迹 —— 求数域元素的范数与迹 写在最前面题目解答 2. 范数 N N N思路求解过程python求解 3. 数域 K K K 的范数 N K N_K NK​思路求解过程Python求解分析解题步骤 4. 迹 T T T求解过程共轭元素计算迹 python求解分析解题步骤 5. 数域 K K K 的迹 T K T_K …

利用 React 和 Bootstrap 进行强大的前端开发

文章目录 介绍React 和 Bootstrap设置环境使用 Bootstrap 创建 React 组件React-Bootstrap 组件结论 介绍 创建响应式、交互式和外观引人入胜的 Web 界面是现代前端开发人员的基本技能。幸运的是,借助 React 和 Bootstrap 等工具的出现,制作这些 UI 变得…

算法设计与分析复习--回溯法(二)

文章目录 上一篇0-1背包问题图着色问题n皇后问题下一篇 上一篇 算法设计与分析复习–回溯(一) 0-1背包问题 问题描述:给定n中物品和一个背包。物品 i i i 的重量是 w i w_i wi​ ,其价格为 v i v_i vi​ , 背包容量为 c c …

speech studio-神经网络定制自己的声音

Speech Studio - 神经网络定制声音 - 概述 (microsoft.com)

Java,数据结构与集合源码,数据结构概述

目录 数据结构概念: 数据结构的研究对象: 研究对象一,数据间逻辑关系: 研究对象二,数据的存储结构(或物理结构): 研究对象三:运算结构 数据结构的相关介绍&#xff…

C++初阶--类型模板

文章目录 泛型编程函数模板使用通用加法函数多模板参数必须用实例化 函数模板的原理类模板使用 注意事项 泛型编程 先看一个例子: 这是一些对于Swap重载的函数,区别是类型不同; 虽然能够重载使用,但代码复用率比较低&#xff0c…

C++11新特性 变参模板、完美转发和emplace

#include <iostream> #include <vector> #include <deque> #include <list> #include <algorithm> using namespace std;class student { public:student() {cout << "无参构造函数被调用!" << endl;}student(int age, st…

C++静态链接库的生成以及使用

目录 一.前言二.生成静态链接库三.使用静态链接库四.其他 一.前言 这篇文章简单讨论一下VS如何生成和使用C静态链接库&#xff0c;示例使用VS2022环境。 二.生成静态链接库 先创建C项目-静态库 然后将默认生成的.h和.cpp文件清理干净&#xff0c;当然你也可以选择保留。 然…

Spring:IoC,AOP的简单理解与使用

IoC容器 IoC &#xff0c;Spring全家桶各个功能模块的基础&#xff0c;是创建对象的容器。 IoC概念 控制反转&#xff0c;将对象的创建进行反转&#xff0c;常规情况下对象由开发者手动创建&#xff0c;而使用IoC不再需要创建对象&#xff0c;由IoC容器根据需求自动创建项目…

2023年【上海市安全员C3证】考试内容及上海市安全员C3证复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 上海市安全员C3证考试内容是安全生产模拟考试一点通总题库中生成的一套上海市安全员C3证复审考试&#xff0c;安全生产模拟考试一点通上上海市安全员C3证作业手机同步练习。2023年【上海市安全员C3证】考试内容及上海…

MyCAT2的主从配置

http://t.csdnimg.cn/KzwDy&#xff08;mysql主从搭建&#xff09; 前提&#xff0c;先搭建好MySQL的主从配置&#xff0c;登录MyCAT 2在MyCAT2里面操作&#xff0c;也就是连接8066这个端口。 一、创建数据源 ​​​​​​​1.创建数据源 添加读写的数据源 /* mycat:createD…

U4_1:图论之DFS/BFS/TS/Scc

文章目录 一、图的基本概念二、广度优先搜索&#xff08;BFS&#xff09;记录伪代码时间复杂度流程应用 三、深度优先搜索&#xff08;DFS&#xff09;记录伪代码时间复杂度流程时间戳结构BFS和DFS比较 四、拓扑排序一些概念有向图作用拓扑排序 分析伪代码时间复杂度彩蛋 五、强…

阿里云oss存储文件上传功能实现(保姆级教程)

先登录&#xff1a; 点击进入控制台 点击左上角导航栏按钮 搜索oss&#xff0c;点击进入 进入之后点击立即开通oss按钮&#xff0c;开通之后点击下图立即创建&#xff0c;弹出创建Bucket 填上Bucket名称&#xff0c;读写权限改为公共读。其他不变点击确定创建&#xff0c;完成…