python输入半径计算球的体积_如何用Python中的Monte-Carlo方法计算10维球体积?

你的日常生活中有很多问题.

您收到的错误消息来自您的行

r = 2.0*np.random.uniform(0,1,iter) - 1.0

函数调用np.random.uniform(0,1,iter)不会创建单个随机数.相反,像大多数numpy函数一样,它返回一个数组 – 在这种情况下,是一个你声明的长度的向量(在本例中是iter).所以r也是一个数组,因为它使用这个数组,而total0是一个数组,原因相同.

然后你试着评估total0<但是左边是一个数组,右边是一个标量,所以numpy不喜欢比较.我可以详细了解错误消息的含义,但这是基本的想法. 解决方案是将r视为向量 – 实际上,作为球体中的随机点,您需要边长2.你做了一个拼写错误并使用iter而不是随机向量的大小变暗,但是如果你进行了改变,你将得到你想要的点.您可以使用numpy快速获取其长度,并查看该点是否位于以原点为中心的半径范围内. 这是一些纠正的代码.我删除了一个循环 – 你试图建立一个正确大小的向量的循环,但我们现在有numpy一次构建它.我还用更具描述性的名称替换了您的变量名称,并进行了一些其他更改.

import numpy as np

def nSphereVolume(dim, iterations):

count_in_sphere = 0

for count_loops in range(iterations):

point = np.random.uniform(-1.0, 1.0, dim)

distance = np.linalg.norm(point)

if distance < 1.0:

count_in_sphere += 1

return np.power(2.0, dim) * (count_in_sphere / iterations)

print(nSphereVolume(10, 100000))

请注意,仅仅1000次迭代的蒙特卡罗就会给出非常差的精度.您需要更多迭代才能获得有用的答案,因此我将重复次数更改为100,000.例程现在变慢了,但提供了大约2.5的更一致的答案.这与theoretical answer很好地吻合

np.pi**(10 // 2) / math.factorial(10 // 2)

其评估结果为2.550164039877345.

(这是对注释的响应,用于解释返回值np.power(2.0,dim)*(count_in_sphere / iterations.)

此例程生成随机点,其中每个坐标都在区间[-1.0,1.0)中.这意味着这些点均匀分布在维度dim的超立方体中.超立方体的体积是其两侧的产物.每一边的长度都是2.0,所以我们可以用2.0功率调暗或者np.power(2.0,暗淡)来计算超立方体的体积.

我们生成了迭代点,它们的count_in_sphere位于以原点为中心的半径1的超球面上.因此,超立方体中也在超球面中的点的比例或比例是count_in_sphere / iterations.这些点通过超立方体均匀分布,因此我们可以估计超球面体积与超立方体体积的比例与这些集合中随机点的比例相同.因此,我们得到了高中的比例

volume_of_hypersphere / volume_of_hypercube = points_in_hypersphere / points_in_hypercube

意识到方程只是近似的.通过volume_of_hypercube将该等式的两边相乘,得到

volume_of_hypersphere = volume_of_hypercube * points_in_hypersphere / points_in_hypercube

替代,我们得到

volume_of_hypersphere = np.power(2.0, dim) * count_in_sphere / iterations

这是函数返回的值.同样,它只是近似的,但概率论告诉我们,我们生成的随机点越多,近似越好.

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

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

相关文章

linux怎样以root用户运行,如何在Linux机器中以root用户身份运行Elastic...

我试图在我的Linux计算机上运行Elasticsearch 5.2.1,我是它的root用户.当我尝试执行Elasticsearch时.我收到以下错误,[2017-03-15T03:26:18,976][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [elk_data1] uncaught exception in thread [main]org.elasticsearch.boot…

python语言的两种注释方法_python编程时添加中文注释的方法

python编程时添加中文注释的方法 发布时间&#xff1a;2020-08-24 17:09:52 来源&#xff1a;亿速云 阅读&#xff1a;77 作者&#xff1a;小新 这篇文章主要介绍python编程时添加中文注释的方法&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴…

springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析

本篇要点介绍各种配置方式的优先级。介绍各种外部化配置方式。介绍yaml的格式及原理。介绍如何绑定并测试类型安全的属性配置。介绍ConfigurationProperties与Value的区别。一、SpringBoot官方文档对于外部化配置的介绍及作用顺序SpringBoot支持多种外部化配置&#xff0c;以便…

spark入门_入门必读 | Spark 论文导读

Resilient Distributed Datasets: A fault-tolerant abstraction for in-Memory cluster computing&#xff0c; 是讲述 Spark RDD 的基础论文&#xff0c;通读论文能给我们带来全景的 Spark 知识面摘要&#xff1a;RDD,全称Resilient Distributed Dataset,可伸缩性数据集。使用…

Qt在linux下无法输入中文,Ubuntu使用集成开发环境QT无法输入中文的解决方法

QT Creator是轻量级集成开发环境&#xff0c;在Ubuntu系统操作中&#xff0c;使用QT时无法输入中文&#xff0c;遇到这种情况要如何处理呢&#xff1f;下面小编就给大家介绍下Ubuntu如何解决QT无法输入中文问题。1 安装搜狗输入法&#xff0c;(如果你想用ubuntu自带的输入法也没…

altium pcb 信号高亮_在PCB设计中高效的放置元件技巧

在印刷电路板设计中&#xff0c;设置电路板轮廓后&#xff0c;将零件(占地面积)调用到工作区。然后将零件重新放置到正确的位置&#xff0c;并在完成后进行接线。组件放置是这项工作的第一步&#xff0c;对于之后的平滑布线工作是非常重要的工作。如果在接线工作期间模块不足&a…

linux升级ssh到6.6版本,CentOS6.5 openssh升级到openssh-7.6版本

CentOS6.5 openssh升级到openssh-7.6版本2018-8-3 foooy升级前保证故障后能现场处理&#xff0c;或者远程卡处理&#xff0c;否则不要这样直接升级yum install -y gcc openssl-devel pam-devel rpm-buildwget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6…

python中csv文件通过什么表示字符_python_写入csv文件时候无法进行原样写入(写入字符串中出现逗号,时候,csv文件自动分成两个单元格)...

问题描述&#xff1a; 写入csv文件时候无法进行原样写入(写入字符串中出现逗号","时候&#xff0c;csv文件自动分成两个单元格) with open("test.csv","w") as f: f.write("闲暇时&#xff0c;我会被一段&#xff0c;配乐诗朗诵,所感动,悲伤…

linux爬365租房没有数据,新手求助,LINUX下安装11G不能MOUNT数据库

各位&#xff0c;我是新手&#xff0c;请帮我看一下这样的情况该如何处理&#xff0c;谢谢啦。[rootlocalhost ~]# su - oracle[oraclelocalhost ~]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Tue Mar 23 16:04:25 2010Copyright (c) 1982, 2009, Oracle. A…

rabbitmq怎样确认是否已经消费了消息_阿里Java研发二面:了解RabbitMQ?说说RabbitMQ可靠性投递...

上期写到高并发下RabbitMq消息中间件你应该介么玩今天给小伙伴说说&#xff01;有自己看法的也可以在评论区留言探讨&#xff0c;也可以转发关注下我以后会长期分享&#xff01;目录&#xff1a;确保消息发送到RabbitMQ服务器确保消息被正确的路由确保消息在队列正确地存储确保…

linux 装完yum不能用,【linux】yum 不能安装应用,提示There are no enabled repos Run “yum repolist all”...

回答一般来说著名的linux系统基本上分两大类&#xff1a;1 RedHat系列&#xff1a;Redhat、Centos、Fedora等2 Debian系列&#xff1a;Debian、Ubuntu等RedHat 系列&#xff1a;1 常见的安装包格式 rpm 包&#xff0c;安装rpm包的命令是 “rpm -参数”2 包管理工具 yum3 支持ta…

更新fielddata为true_线程与更新UI,细谈原理

前言 相信不少读者都阅读过相类似的文章了&#xff0c;但是我还是想完整的把这之间的关系梳理清楚&#xff0c;细节聊好&#xff0c;希望你也能从中学到一些。进入正题&#xff0c;大家应该都听过这样一句话——“UI更新要在主线程&#xff0c;子线程更新UI会崩溃”。久而久之就…

linux sublime3 插件安装插件,手动安装sublimeText3插件

就在今天下午&#xff0c;我花了一个小时的时间安装sublime3插件stylus&#xff0c;就是为了让stylus文件能够高亮显示。网上找了很多方法&#xff0c;可以通过package control安装&#xff0c;然而&#xff0c;我的sublime package control能够正常显示&#xff0c;插件列表也…

vbs打开软件光标停在第一个输入框_三维设计软件,3DMAX最全快捷键大全,赶快收藏哦...

文章后有获取软件的方式。基本快捷键A-角度捕捉开关 B-切换到底视图C-切换到摄象机视图D-封闭视窗E-切换到轨迹视图F-切换到前视图G-切换到网格视图H-显示通过名称选择对话框I-交互式平移J-选择框显示切换K-切换到背视图L-切换到左视图M-材质编辑器N-动画模式开关O-自适应退化开…

linux通过延长器改变分辨率,HDMI延长器的优势及常见问题(转载)(转载)

HDMI延长器普遍用于一切需要进行HDMI信号调配和组合的领域&#xff0c;比如&#xff1a;军工、多媒体教学、电视电话会议、大屏幕显示、会展、金融、科研,天气、超市、会议系统等领域。以达到确保信号长间隔无衰减的传输。HDMI延长器的优势1、HDMI单网线延长器&#xff0c; 直接…

mfc读取txt文件并显示_Python入门丨文件读写

文件读写文件读写&#xff0c;是Python代码调用调用电脑文件的主要功能&#xff0c;能被用于读取和写入文本记录、音频片段、Excel文档、保存邮件以及任何保存在电脑上的东西。读取文件读取文件三个步骤&#xff1a;准备工作&#xff1a;首先在桌面新建了一个test文件夹&#x…

c语言最简单程序实例,C语言第一个简单实例

在信息化、智能化的世界里&#xff0c;可能很早很早 我们就听过许多IT类的名词&#xff0c;C语言也在其中&#xff0c;我们侃侃而谈&#xff0c;到底C程序是什么样子&#xff1f;让我们先看简单的一个例子:#include /*引入头文件*/int main(void) …

c语言 多个线程对同一变量执行memcpy_手把手带你实现线程池

执行与任务分离的组件— 线程池wangbojing/threadpool​github.com多线程技术主要解决了处理器单元内多个线程执行的问题&#xff0c;它可以显著的减少处理器单元的闲置时间&#xff0c;增加处理器单元的吞吐能力。线程池是多线程编程的一个必要组件&#xff0c;并且对于很多编…

android shape 自定义,Android自定义shape的使用

MainActivity如下:package cn.testshape;import android.os.Bundle;import android.app.Activity;/*** Demo描述:* 自定义shape的使用*/public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstan…

python 爬虫库 beautifulsoup4_Python爬虫之BeautifulSoup4

The Dormouses storyOnce upon a time there were three little sisters; and their names were , Lacie and Tillie; and they lived at the bottom of a well.... """ # 创建 Beautiful Soup 对象&#xff0c;指定lxml解析器 soup BeautifulSoup(html, "…