数学建模--蒙特卡罗法MATLAB代码保姆式解析

1.简单介绍

2.思想的实际运用

我们利用蒙特卡罗法的思想求解圆周率π的值,这里求得的肯定是近似值,我们是通过大量的模拟实验,利用概率求解的,但是这个值和我们的精确值之间还是有一定的误差的;

我们的思想就是在半径为1的圆的外面做一个外切正方形,这个外切正方形的边长就是2,那么我们想要求的圆的面积π乘上半径的平方实际上就是乘以1的平方,也就是说圆的面积就是π,我们在这个正方形上面撒豆子,这个豆子可能会落在圆形里面,我们根据落在圆形里面的豆子数量占全部正方形里面的豆子的数量的比例,来计算这个圆形的面积,也就是我们的π,假设我们撒了10000颗豆子,有8000颗落在圆形里面,我们直接拿4*80%就是圆形的面积,也就是我们的π的近似值,这样的求解方法实际上就是蒙特卡罗法。前提是我们的实验的次数足够多,也就是说我们的豆子的数量应该足够多,这样进行实验得到的结论才具有普遍性,更有说服力。

3.MATLAB代码逐句分析

这个就是求解圆周率π需要用到的代码,我们分析一下:


(1)clc;clear是清除工作区的命令,这个命令我们已经很常见了,我们建议写上这句命令,这样就可以避免不必要的报错,因为在工作区里面可能我们前面定义的某一个变量和我们这个代码的变量会冲突,我们尽量使用这句话清除工作区的数据;


(2)p就是我们的实验进行的次数,通俗的讲就是我们的要撒的豆子的总量10000,这个数据比较大,结论具有普遍性;


(3)我们接下来使用for循环进行计数,这个里面的rand是一个函数,这个函数的作用就是生成随机数,随机数就可以具有普遍性,减少我们人为因素的影响,在其他的编程语言里面也会用到这个随机数的生成函数,例如我们熟知的扫雷游戏,这个游戏需要随机的布置地雷,这个时候就要设置地雷的坐标,这个地方也用到了rand函数,我们的MATLAB里面的rand函数默认的生成随机数字的范围是0~1,前面我们已经提及过,这个正方形的边长是2,我们让圆心的坐标是(1,1),所以我们让rand*2,这样的话生成的随机数的范围就是0~2之间(横坐标和纵坐标都在0~2之间),正好是落在我们的正方形区域里面;


(4)n表示这个时候落在圆形里面的豆子的数量,因为我们在进行参数的设置,这个时候还没有开始进行,相当于我们定义了一个变量n用来存储落在圆形里面的豆子数量,将来进行循环的时候,符合条件的在0的基础上面进行累加就可以了,这个n就相当于是一个计数器的角色;


(5)这个if语句是计算正方形里面的点到圆心的距离,如果距离小于半径的平方,说明这个循环产生的随机数在圆形里面,我们就是用n累加这个数;plot就是绘图指令,符合条件的和不符合条件的我们需要使用不同的标志进行绘图以方便区分;


(6)这个里面我们一共是进行了10000次循环,每次循环都会产生随机数,每次都会使用if语句进行判断,符合条件的话(豆子落在圆形区域里面),就让n加上1,然后绘制圆形里面的图,否则的话就绘制图圆形和正方形之间的图;plot里面的高亮部分就是一些plot函数的固定参数,我们了解即可,参数的最后一项就是图形颜色的设置,像我们这个里面用到的r表示的是红色,b表示的是蓝色;


(7)axis equal就是让我们的绘制出来的图形的横纵坐标轴的标度是一样的,这样的图像就会更加的美观,我在下面分别放了加上这句代码和不加这句代码的效果图,显然加上这个代码会更好;


(8)n/q就是我们的对应的概率,我们使用这个概率乘上正方形的面积4就是对应的圆形的面积,也就是我们想要计算的圆周率π,这个方法的本质就是概率;最后我们把s的值赋值给pi0,这样pio里面就是我们计算出来的圆周率的近似值;


(9)里面还有一行代码我们没有提到,就是这句hold on,这个代码到底是什么作用,我相信很多初学者都不是很清楚(我也是今天才知道);现在请你记住,这个代码的作用就是让我们每次循环的图像都在一个图像里面进行绘制,换言之,如果没这句代码,我们要进行10000次循环,每次循环都会产生新的窗口,这样的话我们无法进行观察,加上这句代码我们就可以让每次循环绘制的点在一个图里面,方便我们进行观察。


加上axis equal效果:


不加axis equal的效果:

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

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

相关文章

【Lattice FPGA 开发】Diamond的使用

文章目录 Diamond的使用教程界面器件查看与更改管脚分配RTL分析图查看 第三方工具关联Notepad 问题与解决管脚被分类到unconnected,导致无法分配管脚 Diamond的使用教程 【Lattice FPGA 开发】Diamond的工程建立、文件输入、ip核配置、管脚配置、综合及布线以及下载…

python/pygame 挑战魂斗罗 笔记(二)

一、建立地面碰撞体: 现在主角Bill能够站立在游戏地图的地面,是因为我们初始化的时候把Bill的位置固定了self.rect.y 250。而不是真正的站在地图的地面上。 背景地图是一个完整的地图,没有地面、台阶的概念,就无法通过碰撞检测来…

【分治】Leetcode 排序数组

题目讲解 912. 排序数组 算法讲解 我们这里使用三指针&#xff0c;将数组分成三块&#xff1a;<key 和 key 和 >key,如果当前指针指向的数字<key&#xff0c;我们就swap(nums[left]), nums[i] 。如果当前的数字key &#xff0c;就让i。如果当前的数字>key&…

大屏数字字体+渐变色

vue数据大屏使用数字字体_vue数字字体-CSDN博客 用css实现文字字体颜色渐变的三种方法_css 字体颜色渐变-CSDN博客

DNS服务器配置与管理(2)——BIND部署DNS

在Linux上配置DNS的常用软件是BIND&#xff08;Berkeley Internet Name Domain Service&#xff0c;BIND&#xff09;&#xff0c;它是一款实现DNS服务器的开放源码软件。本文详细介绍了在CentOS7上安装并配置Bind软件。 一、Bind软件介绍 BIND包最初是在 1980 年代初在加州大…

35岁再去学程序员靠谱吗?

不亚于49年入国Jun。35岁的程序员都已经在找后路了…… 总结一句话&#xff1a;35岁自学程序员赚点小钱可以&#xff0c;当主业糊口不行&#xff01; 首先&#xff0c;程序员这行吃青春饭是真的。虽说国外有很多程序员可以写代码到70岁&#xff0c;但国内的现状是35岁就会淘汰一…

财商的思考

【200万粉福利特供|| 高考后的“分层之战”和“人生破圈算法”-哔哩哔哩】 https://b23.tv/5ASl8WA 社会三层 &#xff08;1&#xff09;上层 &#xff08;2&#xff09;中层 &#xff08;3&#xff09;基层&#xff1a; 上层 定义&#xff1a;高护城河生产资料和权利的所有…

Java详解:GUI容器组件 | 功能组件

✎ 简介&#xff1a; Graphical User Interface&#xff08;GUI&#xff09;图形用户界面 图形界面对于用户来说在视觉上更易于接受. ✎ 关于swing: • swing是一个为java设计的GUI工具包javax.swing&#xff0c;包括了用户界面的各种组件. • swing中组件可以分为两大类&…

C语言进阶课程学习记录-第36课 - 函数与指针分析

C语言进阶课程学习记录-第36课 - 函数与指针分析 函数类型实验-函数指针实验-回调机制小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 函数类型 实验-函数指针 #include <stdio.h>typedef in…

应急响应-战中反制对抗上线CSGoby蚁剑Sqlmap等安全工具

知识点 战中-反制-安全工具篇CS反制(有版本限制) Goby反制&#xff08;有版本限制&#xff0c;新版goby已修复&#xff09; Antsword反制(有版本限制&#xff0c;别人也不一定用蚁剑) AWVS反制(有版本限制&#xff0c;在awvs 10版本存在&#xff09; BURP反制(有版本限制&…

【论文解读系列】从RNN/CNN到大模型全解析

论文&#xff1a;A Survey of Neural Code Intelligence: Paradigms, Advances and Beyond 地址&#xff1a;GitHub&#xff1a;https://github.com/QiushiSun/NCISurvey 文章目录 一、代码模型的发展 1.神经语言建模&#xff08;Neural Language Modeling&#xff09;时代 …

U盘文件突然消失?别急,这里有数据恢复的终极攻略!

在日常的工作和生活中&#xff0c;U盘几乎成了我们随身携带的“数据小仓库”&#xff0c;存放着各种重要的文件。然而&#xff0c;就在某一天&#xff0c;你突然发现U盘中的文件神秘失踪&#xff0c;仿佛从未存在过一般。这种突如其来的U盘文件消失&#xff0c;无疑让人措手不及…

大模型时代,AI三巨头商汤、旷视、讯飞逐鹿智驾

作者 |张马也 编辑 |德新 2024年的智驾竞争已经处于收敛的阶段&#xff0c;但仍有新的巨头进入这一极度内卷的赛道。他们是商汤、旷视、科大讯飞等以算法见长的AI平台公司。 中国电动汽车百人会论坛上&#xff0c;小鹏汽车董事长何小鹏说&#xff0c;上一个十年是新能源的十年…

视频拍摄知识+AIGC数据预处理

视角 参考链接&#xff1a;https://www.polarpro.com/blogs/polarpro/filmmaking-101-types-of-camera-shots-and-angles Low Angle Shot 低角度拍摄、horizontal Shot 平视、Dutch Angle Shot 荷兰角斜拍、High Angle Shot 高角度拍摄、Bird’s-eye / Aerial Shot 鸟瞰 / 航…

【Mysql数据库进阶01】窗口函数

窗口函数 1 定义2 聚合窗口函数2.1 默认效果/累计效果2.2 前面两行当前一行2.3 前面一行当前一行后面一行 3 排名窗口函数3.1 排名函数3.1.1 排名函数案例 3.2 累积分布 4 取值窗口函数 1 定义 完整的窗口函数定义如下: window_function([expression]) over(partition byorde…

计算机网络 -- 网络编程基础

一 学习准备 1.1 IP地址 在 前文中我们提到过: IP 是全球网络的基础&#xff0c;使用 IP 地址来标识公网环境下主机的唯一性&#xff0c;我们可以根据 目的IP地址 进行跨路由器的远端通信。 但是我们也提到了&#xff0c;通过 IP 地址&#xff0c;只能寻找到目标主机&#xff…

Transformer - Teacher Forcing

Transformer - Teacher Forcing flyfish 在训练过程中&#xff0c;将目标序列输入给解码器的方法称为&#xff08;Teacher Forcing&#xff09;。这个术语又代表什么意思呢&#xff1f; 这里的目标序列就是Ground Truth&#xff0c;也就是我们已知的正确答案 一句话就是我们…

系统思考—战略

“有策略而无战术&#xff0c;是取胜之最慢之道。有战术而无策略&#xff0c;是败亡之前的嘈杂。”—孙子 最近接触的中小企业&#xff0c;充分能感受到在经济下行的情况下&#xff0c;组织与战略是不可分割的两个方面。有时候公司组织出现了问题&#xff0c;可能是因为战略不…

高效便捷!解锁阿里云跨账号专线互联的全新实施方案

作者&#xff1a;小丫、琉璃 背景 为持续提升金融云环境的合规标准以及可用区内产品服务的性能和稳定性&#xff0c;阿里云将对杭州地域BCD三个金融云可用区进行基础设施架构升级与改造&#xff0c;对应可用区云产品将于 2024 年后停止服务&#xff0c;需要将业务迁移到新可用…

HarmonyOS实战开发-如何实现一个简单的健康生活应用

功能概述 成就页面展示用户可以获取的所有勋章&#xff0c;当用户满足一定的条件时&#xff0c;将点亮本页面对应的勋章&#xff0c;没有得到的成就勋章处于熄灭状态。共有六种勋章&#xff0c;当用户连续完成任务打卡3天、7天、30天、50天、73天、99天时&#xff0c;可以获得…
最新文章