蒙特卡洛模拟计算圆周率和积分

2024-08-29 07:38

本文主要是介绍蒙特卡洛模拟计算圆周率和积分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蒙特卡洛模拟计算圆周率


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Circlen = 1000
r = 1.0
a,b = (0.0,0.0)xmin,xmax = a-r,a+r
ymin,ymax = b-r,b+rx = np.random.uniform(xmin,xmax,n)
y = np.random.uniform(ymin,ymax,n)fig = plt.figure(figsize=(6,6))axes = fig.add_subplot(1,1,1)
plt.plot(x,y,'ro',markersize=1)
plt.axis('equal')d =np.sqrt( (x-a)**2+(y-b)**2)
res = sum(np.where(d<r,1,0))pi = 4*res/n
picircle = Circle(xy = (a,b),radius = r,alpha = 0.5,color='gray')
axes.add_patch(circle)
plt.grid(True,linestyle="--",linewidth="0.8")
plt.show()

蒙特卡洛模拟计算积分

#蒙特卡洛模拟计算积分
n = 100000
xmin,xmax = (0.0,1.0)
ymin,ymax = (0.0,1.0)x = np.random.uniform(xmin,xmax,n)
y = np.random.uniform(ymin,ymax,n)def f(x):return x**2
res = sum(np.where(y<f(x),1,0))integral = res/n
integralfig = plt.figure(figsize=(6,6))axes = fig.add_subplot(1,1,1)
plt.plot(x,y,'ro',markersize=1)
plt.axis('equal')#绘制散点图
xi = np.linspace(0,1,100)
yi = xi**2
plt.plot(xi,yi,'--k')
plt.fill_between(xi,yi,0,color='gray',alpha=0.5,label='area')
plt.grid()

 

这篇关于蒙特卡洛模拟计算圆周率和积分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117253

相关文章

微积分-积分应用5.4(功)

术语“功”在日常语言中用来表示完成一项任务所需的总努力量。在物理学中,它有一个依赖于“力”概念的技术含义。直观上,你可以将力理解为对物体的推或拉——例如,一个书本在桌面上的水平推动,或者地球对球的向下拉力。一般来说,如果一个物体沿着一条直线运动,位置函数为 s ( t ) s(t) s(t),那么物体上的力 F F F(与运动方向相同)由牛顿第二运动定律给出,等于物体的质量 m m m 与其

应届生入职练手习题-蒙特卡洛算法(1.5H)

应届生入职练手习题 [编辑] 模拟射击,根据命中概率来求PI 要求:假设有一个半径为1000的圆形靶子(具体单位没有意义,不用写),我们随意对其进行射击,那么,统计所有落在圆形外接正方形中的弹着点,可以很容易得知:命中这个圆形靶子的概率是圆形的面积与外接方形面积的比 目的:检验编程风格和实现效率 要解这个题目就得有对蒙特卡洛算法的了解,原理如下 在数值积分法中,利用求单位圆的1/4的面积

【matlab 圆周率计算】matlab 求圆周率的两种算法实现比较

%author:laidefa %data:2014-09-19 %丘德诺夫斯基公式求圆周率 function mpi=qdnfsj(m) i=m; s=13591409; for n=1:i A=(factorial(6n)(13591409+54514013n))/(factorial(3n)factorial(n)3*(-640320)(3n)); s=s+A; end mpi=(42688

变速积分PID控制算法

变速积分PID控制算法 变速积分PID控制算法:变速积分PID的基本思想:变速积分的PID积分项表达式: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 变速积分PID控制算法: 在普通的PID控制算法中,由于积分系数 k i k_i ki​是常数,所以在整个控制过程中,积分增量不变。而系统对积分项的要求是,系统偏差大

梯形积分PID控制算法

梯形积分PID控制算法 梯形积分PID控制算法: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 梯形积分PID控制算法: 在PID控制律中积分项的作用是消除余差,为了减小余差,应提高积分项的运算精度,为此,可将矩形积分改为梯形积分。梯形积分的计算公式: ∫ 0 t e ( t ) d t = ∑ i = 0 k e

抗积分饱和PID控制算法

抗积分饱和PID控制算法 抗积分饱和PID控制算法:1.积分饱和现象:2.抗积分饱和算法: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 抗积分饱和PID控制算法: 1.积分饱和现象: 所谓积分饱和现象是指若系统存在一个方向偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构到达极限位置 X m

积分分离PID控制算法

积分分离PID控制算法 积分分离PID控制:积分分离控制基本思路:积分分离控制算法表示:积分分离式PID控制算法程序流程图: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 积分分离PID控制: 在普通的PID控制中引入积分环节的目的,主要为了消除静差,提高控制精度。但在过程启动、结束或大幅度增减设定时,短时间内系统输出

蒙特卡洛法之MATLAB实现

by WC 1.7.2016 蒙特卡洛法(随机取样法)也称为计算机随机模拟方法,它源于世界著名的赌城——Monte Carlo。它是基于对大量事件的统计结果来实现一些确定性问题的计算。使用蒙特卡洛法必须使用计算机

c++求积分算法

//c++ 作业:用两重菜单显示 积分函数和积分方法#include<iostream>#include<cmath>using namespace std;class Function{public:virtual double operator()(double x) const=0; };class Function1:public Function{publi

离散的点进行积分

1,可以直接用梯形公式 % 定义x和y坐标向量x = [0, 1, 2, 3, 4, 5]; % x的值y = [0, sin(1), sin(2), sin(3), sin(4), sin(5)]; % y的值,这里假设y是sin函数在x处的值% 使用trapz函数计算数值积分integral_value = trapz(x, y);% 显示结果disp(['The numerical