蒙特卡罗模拟法 —— python

目录

1.简介

2.实例分析

2.1 模拟求近似圆周率

2.2 估算定积分

2.3 求解整数规划


1.简介

        蒙特卡洛又称随机抽样或统计试验,就是产生随机变量,带入模型算的结果,寻优方面,只要模拟次数够多,最终是可以找到最优解或接近最优的解。

         基本思想:为了解决数学、物理、工程技术等方面的问题,首先建立一个概率模型或随机过程,使它的参数等于问题的解;然后通过对模型或过程的观察或抽样试验来计算所求参数的统计特征,最后给出所求解的近似值。

2.实例分析

2.1 模拟求近似圆周率

        绘制单位圆和外接正方形,正方形ABCD的面积为:2*2=4,圆的面积为:S=Π*1*1=Π,现在模拟产生在正方形ABCD中均匀分布的点n个,如果这n个点中有m个点在该圆内,则圆的面积与正方形ABCD的面积之比可近似为m/n

程序如下:

#模拟求近似圆周率
import random
import numpy as np
import matplotlib.pyplot as plt
#解决图标题中文乱码问题
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
#进入正题
r=random.random()
num=range(0,200000,10)
mypi=np.ones((1,len(num)))
for j in range(len(num)):# 投点次数n = 10000# 圆的半径、圆心r = 1.0a,b = (0.,0.)# 正方形区域x_min, x_max = a-r, a+ry_min, y_max = b-r, b+r# 在正方形区域内随机投点x = np.random.uniform(x_min, x_max, n) #均匀分布y = np.random.uniform(y_min, y_max, n)#计算点到圆心的距离d = np.sqrt((x-a)**2 + (y-b)**2)#统计落在圆内点的数目res = sum(np.where(d < r, 1, 0))#计算pi的近似值(Monte Carlo:用统计值去近似真实值)mypi[0,j] = 4 * res / n
plt.plot(range(1,len(mypi[0])+1),mypi[0],'.-') 
plt.grid(ls=":",c='b',)#打开坐标网格
plt.axhline(y=np.pi,ls=":",c="yellow")#添加水平直线
# plt.axvline(x=4,ls="-",c="green")#添加垂直直线
plt.legend(['模拟', '实际'], loc='upper right', scatterpoints=1)
plt.title("近似圆周率")
plt.show()

返回:

2.2 估算定积分

程序如下:

#估算定积分
import random
import numpy as np
import matplotlib.pyplot as plt
#解决图标题中文乱码问题
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
#进入正题
r=random.random()
num=range(1,10**6,500)
s = np.ones((1,len(num)))
for j in range(len(num)):n = 30000#矩形边界区域x_min, x_max = 0.0, 1.0y_min, y_max = 0.0, 1.0#在矩形区域内随机投点xx = np.random.uniform(x_min, x_max, n)#均匀分布y = np.random.uniform(y_min, y_max, n)#统计落在函数y=x^2下方的点res = sum(np.where(y < x**2, 1 ,0))#计算定积分的近似值s[0,j] = res / n
plt.plot(range(1,len(s[0])+1),s[0],'.-') 
plt.grid(ls=":",c='b',)#打开坐标网格
plt.axhline(y=1/3,ls=":",c="red")#添加水平直线
# plt.axvline(x=4,ls="-",c="green")#添加垂直直线
plt.legend(['模拟', '实际1/3'], loc='upper right', scatterpoints=1)
plt.title("估算定积分")
plt.show()

返回:

2.3 求解整数规划

要解的方程为:

条件如下:

程序如下:

# 求解整数规划
import random
import numpy as np
import time
import matplotlib.pyplot as plt
#解决图标题中文乱码问题
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
#进入正题
time_start=time.time() #计时开始
p0=0
for i in range(10**7):x=np.random.randint(0,99,(1,3))f=2*x[0,0]+3*x[0,0]**2+3*x[0,1]+x[0,1]**2+x[0,2]g=[x[0,0]+2*x[0,0]**2+x[0,1]+2*x[0,1]**2+x[0,2],x[0,0]+x[0,0]**2+x[0,1]+x[0,1]**2-x[0,2],2*x[0,0]+x[0,0]**2+2*x[0,1]+x[0,2],x[0,0]+2*x[0,1]**2]if g[0]<=100 and g[1]<=500 and g[2]<=400 and g[3]>=10:if p0<f:x0=xp0=f
print('最优解:',x0)
print('最优值:',p0)
time_end=time.time() #计时结束
print('用时:',time_end-time_start)

返回:

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

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

相关文章

win10推送_Win10推送更新升级Edge浏览器:用户发现电脑速度因此变慢

新Win10让电脑变慢&#xff1f;如果你有类似感觉&#xff0c;那并非首例。据外媒报道&#xff0c;不完全汇总发现&#xff0c;在打上Windows 10补丁KB4559309, KB4541301或者KB4541302(视Windows版本不同)后&#xff0c;部分用户报告了启动速度以及日常运行程序变慢的情况。上述…

java人民币读法转换

实现浮点数转换成人民币读法字符串 将浮点数转换成人民币读法字符串&#xff0c; 例如&#xff1a; 将1006.333转换为壹千零陆元叁角叁分。 整体解析&#xff1a; 将浮点数分成整数部分和小数部分&#xff0c;分开处理整数部分和小数部分。 小数部分的处理比较简单&#xff…

博弈论 —— matlab

目录 1.简介 2.算法原理 3.实例分析 1.各参数初始化 2.计算期望与实际期望 3.博弈过程 4.绘图 完整代码 1.简介 博弈论又被称为对策论(Game Theory)既是现代数学的一个新分支&#xff0c;也是运筹学的一个重要学科。 博弈论主要研究公式化了的激励结构间的相互作用。是研…

电脑有回声_电脑连接麦克风有回音怎么办?麦克风回声的解决方法

电脑插入麦克风后说话有回声怎么办&#xff1f;麦克风说话有回音该如何解决&#xff1f;下面给大家介绍电脑连接麦克风有回音的解决方法。解决方法&#xff1a;1、打开【控制面板】&#xff0c;找到并点击【硬件和声音】&#xff0c;如图所示&#xff1a;2、在【硬件和声音】窗…

线性规划 —— matlab

目录 一、基本概念 二、概念的数学形式表达 三、确定w和b 1.读取或输入数据 2.归一化、标准化 2.1 均值 2.2 归一化 2.3 标准化 3.求解w和b 1.直接解方程 2.最小二乘法&#xff08;least square method&#xff09;求解&#xff1a; 4. 评估回归模型 四、regress线…

Java商品信息查询

使用一维数组和二维数组的相关知识&#xff0c;以及数组排序的多种算法来实现商品信息查询的功能。 假设在仓库系统中&#xff0c;每件商品都有 3 个库存信息&#xff0c;分别是入库量、出库量和当前库存量。定义一个一维数组来存储 5 件商品的名称&#xff0c;并定义一个二维…

openwrt dhcp 无法获取ip_电脑的 ip 是怎么来的呢?我又没有配置过

来源 | 苦逼的码农作者 | 帅地对于我们平时上网的电脑的 ip 是如何来的呢&#xff1f;一种简单的方法就是我们自己来配置了显然&#xff0c;这里有两种配置方式&#xff0c;一种是自动获取 ip 地址&#xff0c;一种是我们手动来设置&#xff0c;我相信大部分人都是通过自动获取…

线性回归 —— python

目录 一、基本概念 二、概念的数学形式表达 三、确定w和b 1.读取或输入数据 2.归一化、标准化 2.1 均值 2.2 归一化 2.3 标准化 3.求解w和b 1.直接解方程 2.最小二乘法&#xff08;least square method&#xff09;求解&#xff1a; 4. 评估回归模型 四、sklearn中…

审查元素找不到创建的元素_香奈儿除了珍珠,还有哪些你不知道的经典元素?答案在原文中找...

Chanel曾经说过&#xff1a;“没有珍珠的女人&#xff0c;不算是女人”珍珠是Coco永远的标志无论白天还是夜晚也无论她穿着运动服还是毛衣男装裤甚至在她人生最后的一段日子珍珠饰品都如影随形。BUT&#xff01;你能相信&#xff1f;对珍珠如此看重的Coco竟然卖的大部分珍珠是人…

博弈论 —— python

目录 1.简介 2.算法原理 3.实例分析 1.各参数初始化 2.计算期望与实际期望 3.博弈过程 4.绘图 完整代码 1.简介 博弈论又被称为对策论(Game Theory)既是现代数学的一个新分支&#xff0c;也是运筹学的一个重要学科。 博弈论主要研究公式化了的激励结构间的相互作用。是研…

android应用程序 多少钱_关于APP开发你最想了解的事,开发一个APP多少钱?

当我们在进行APP开发&#xff0c;最关注的问题一定是APP开发的价格问题&#xff0c;而作为软件开发行业的从业人员&#xff0c;经常会遇到这样的情况&#xff1a;“别说这么多&#xff0c;你只要告诉我开发一个软件多少钱就行了”。郑州APP开发公司的确&#xff0c;无论我们买什…

mvc 扫描二维码跳转内部指定页面_开源神器:一个二维码,让文件传输不设限!...

大家好&#xff0c;我是小 G。今天给大家推荐一个在前不久火遍 GitHub 的开源项目&#xff1a;QRCP。从项目的命名你们应该就能大致猜测出来&#xff0c;这款神器的主要作用&#xff0c;就是能通过指定二维码&#xff0c;快速完成文件的传输功能。项目作者是来自意大利的一位小…

K-means聚类 —— matlab

目录 1.简介 2.算法原理 3.实例分析 3.1 读取数据 3.2 原理推导K均值过程 3.3 自带kmeans函数求解过程 完整代码 1.简介 聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程&#xff0c;聚类就是一种发现这种内在结构的技术&#xff0c;聚类技术经常被称为…

数据线给电脑联网是什么原理_物联网孵化的产物——条码扫描器

一、什么是物联网&#xff1f;物联网的概念由凯文阿什顿(Kevin Ashton)于1999年被提出&#xff0c;即Internet of Things(IOT)&#xff0c;也称为Web of Things。根据阿什顿的想法&#xff0c;计算机最终能够在没有人工干预的情况下&#xff0c;自主产生及收集数据&#xff0c;…

灰色关联法 —— matlab

目录 1.简介 2.算法详解 2.1 数据标准化 2.2 计算灰色相关系数 2.3 计算灰色关联度系数 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 绘制 x1,x4,x5,x6,x7 的折线图 3.4 计算灰色相关系数 完整代码 1.简介 对于两个系统之间的因素&#xff0c;其随时间或不同对象而…

灰色关联与TOPSIS法 —— matlab

目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得到最大最小参考行 3.4 与最大值的灰色相关系数 3.5 与最小值的灰色相关系数 3.6 计算综合评分 …

mmap函数_Linux内存映射mmap原理分析

一直都对内存映射文件这个概念很模糊&#xff0c;不知道它和虚拟内存有什么区别&#xff0c;而且映射这个词也很让人迷茫&#xff0c;今天终于搞清楚了。。。下面&#xff0c;我先解释一下我对映射这个词的理解&#xff0c;再区分一下几个容易混淆的概念&#xff0c;之后&#…

灰色关联法 —— python

目录 1.简介 2.算法详解 2.1 数据标准化 2.2 计算灰色相关系数 2.3 计算灰色关联度系数 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 绘制 x1,x4,x5,x6,x7 的折线图 3.4 计算灰色相关系数 完整代码 1.简介 对于两个系统之间的因素&#xff0c;其随时间或不同对象而变…

arraylist线程安全吗_Java中的集合和线程安全

通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务&#xff0c;我们应该如何在单线程和多线程中使用集合(Collection)。话题有点高端&#xff0c;我们不是很好理解。所以&#xff0c;我会尽可能的描述的简单点。通过这篇指南&#xff0c;你将会对Java集合…

灰色关联与TOPSIS法 —— python

目录 1.简介 2.算法详解 2.1 指标正向化及标准化 2.2 找到最大最小参考向量 2.3 计算与参考向量的相关系数 2.4 求评分 3.实例分析 3.1 读取数据 3.2 数据标准化 3.3 得到最大最小参考行 3.4 与最大值的灰色相关系数 3.5 与最小值的灰色相关系数 3.6 计算综合评分…