精华内容
下载资源
问答
  • 随机模拟——蒙特卡洛方法(含实例及matlab代码)

    万次阅读 多人点赞 2020-02-02 21:26:08
    是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。 基本思想 当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计...

    蒙特卡洛方法

    蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。

    基本思想

    当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。

    常见应用及matlab代码

    求圆周率

    正方形的内切圆与正方形的面积之比是π/4。

    根据蒙特卡洛算法的思想,在这个正方形内部,随机产生1000000个点(即1000000个坐标对 (x, y)),计算它们与圆心的距离,从而判断是否落在圆的内部。如果这些点的位置服从二维的均匀分布均匀分布,那么圆内的点应该占到所有点的 π/4,因此将这个比值乘以4,就是π的值。

    利用matlab实现

    N=1000000;    %随机点的数目
    x=rand(N,1);  %rand 生成均匀分布的伪随机数。分布在(0~1)之间
    y=rand(N,1);  %矩阵的维数为N×1
    count=0;
    
    for i=1:N
    %如果点在圆内,计数器加1
    	if (x(i) - 0.5)^2 + (y(i)-0.5)^2 <= 0.25
    		count = cou
    展开全文
  • %在地面上画一个面积为 1 的正方形,然后在其中内切一个圆。 %现在,在整个广场上散布一些小物体(例如,米粒或沙子)。 %如果物体均匀分散,那么圆内物体与正方形内物体的比例应该约为?/4, % 是圆面积与正方形面积...
  • 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以...基于matlab编写的算法,基于蒙特卡洛法求解椭圆面积,有很高的参考价值
  • 蒙特卡罗法matlab实现

    2018-08-29 23:35:47
    利用matlab实现蒙特卡罗法的源程序!
  • MATLAB 抽取随机数 MCMC原理

    千次阅读 2017-03-07 10:12:28
    1、matlab自带抽取随机数的函数 注:只列举各个函数名字,具体各个函数的用法可用help查看。 (1)正态分布随机数:randn(),normrnd(), mvnrnd(); 其中最后一个用于抽取联合正态分布的随机数。 (2)均匀分布随机数...

    1、matlab自带抽取随机数的函数
    注:只列举各个函数名字,具体各个函数的用法可用help查看。
    (1)正态分布随机数:randn(),normrnd(), mvnrnd(); 其中最后一个用于抽取联合正态分布的随机数。
    (2)均匀分布随机数:rand()
    (3)beta分布随机数: betarnd() - Beta random numbers.
    (4)二项分布随机数:binornd() -Binomial random numbers.
    (5)卡方分布随机数:chi2rnd() -Chi square random numbers.
    (6)指数分布随机数:exprnd() -Exponential random numbers.
    (7)极值分布随机数:evrnd() - Extreme value random numbers
    frnd - F random numbers.
    gamrnd - Gamma random numbers.
    geornd - Geometric random numbers.
    gevrnd - Generalized extreme value random numbers.
    gprnd - Generalized Pareto inverse random numbers.
    hygernd - Hypergeometric random numbers.
    iwishrnd - Inverse Wishart random matrix.
    johnsrnd - Random numbers from the Johnson system of distributions.
    lognrnd - Lognormal random numbers.
    mhsample - Metropolis-Hastings algorithm. 可用mhsample()抽取马尔科夫链,即MCMC抽样可采用这个函数。
    mnrnd - Multinomial random vectors.
    mvnrnd - Multivariate normal random vectors.
    mvtrnd - Multivariate t random vectors.
    nbinrnd - Negative binomial random numbers.
    ncfrnd - Noncentral F random numbers.
    nctrnd - Noncentral t random numbers.
    ncx2rnd - Noncentral Chi-square random numbers.
    normrnd - Normal (Gaussian) random numbers.
    pearsrnd - Random numbers from the Pearson system of distributions.
    poissrnd - Poisson random numbers.
    randg - Gamma random numbers (unit scale).
    random - Random numbers from specified distribution.
    randsample - Random sample from finite population.
    raylrnd - Rayleigh random numbers.
    slicesample - Slice sampling method. (MCMC中的切片抽样方法)
    trnd - T random numbers.
    unidrnd - Discrete uniform random numbers.
    unifrnd - Uniform random numbers.
    wblrnd - Weibull random numbers.
    wishrnd - Wishart random matrix.
    参考文献:[MATLAB中统计分析函数]http://wenku.baidu.com/link?url=fxtUOBzUiRwhPl0JD1H8gt_1Gce_YqTxAYWct-G_pehbkRIZYKTVo508rCKHi1OGvqq3M6QYSyRx43hZ5QCG3zSofx80o2wxLxzcfWsJcq7
    2、MCMC原理
    主要讨论两种形式的MCMC:Metropolis-Hastings 和Gibbs抽样。
    先理解MCMC中的两种思想:Monte Carlo 积分和Markov chains。
    一、Monte Carlo Integration

    概率统计推断中许多问题需要计算复杂的积分或者在大的结果空间内求和。如计算函数 g(x) 的期望,其中 x 是随机变量,密度函数为p(x),如果 x 是连续随机变量,则

    E[g(x)]=g(x)p(x)dx

    x 是离散随机变量,则

    E[g(x)]=g(x)p(x)

    The general idea of Monte Carlo integration is to use samples to approximate the expectation of a complex distribution.(蒙特卡洛积分的一般思想是用抽样的样本矩近似复杂分布的期望)

    x(t),t=1,2,...,N 是从分布 p(x) 抽取的独立样本,因此,我们可用有限项求和近似上述积分:

    E[g(x)]=1ni=1ng(x(t))

    一般来说,随着增加抽样量 n ,近似精度越来越高。Crucially,近似精度还依赖于样本的相关性。当样本是相关的,有效样本规模减小。(When the samples are correlated, the effective sample size decreases. This is not an issue with the rejection sampler but a potential problem with MCMC approaches. 我是这么理解的,对与Metropolis-Hastings算法来讲,相关性不是问题,因为采用了rejection策略,而对于Gibbs抽样,需要注意相关性问题,因为在Gibbs抽样中抽得的样本全留下。)

    二、Markov chains
    A markov chain is a stochastic process where we transition from one state to another state using a simple sequential procedure.设起始状态为x(1),转移函数为 p(x(t)|x(t1)) (to determine the next state, x(2) conditional on the last state.) We then keep iterating to create a sequence of states:

    x(1)x(2)x(t)

    产生T个状态的Markov链的步骤如下:
    1. Set t=1
    2. Generate a initial value u , and set x(t)=u.
    3. Repeat
       t=t+1
       sample a new value u from the transition function p(x(t)|x(t1))
       set x(t)=u
    4. Until t=T .

    下面重点介绍MCMC,讨论三种方法Metropolis,Metropolis-Hasting,Gibbs sampling。
    MCMC关键的两个分布是target distribution和proposal distribution。MCMC的目的就是抽target distribution的样本。

    Metropolis算法
      Metropolis是MCMC所有方法中最简单的,是Metropolis-Hastings的一种特殊情形,proposal分布需要对称( q(θ(t)|θ(t1))=q(θ(t1)|θ(t)) )。
      算法步骤:
      1. Set t=1
      2. Generate a initial value u , and set θ(t)=u.
      3. Repeat
          t=t+1
         Generate a proposal θ from q(θ|θ(t1))
         Evaluate the acceptance probability α=min(1,p(θ)p(θ(t1)))
         Generate a u from a Uniform(0,1) distribution
         If uα, accept the proposal and set θ(t)=θ ,else set θ(t)=θ(t1) .
      4.Until t=T .   
    注意给定的proposal distribution 实际上是个条件分布。从接受率公式可看出,target distribution可以是unnormalized。

    Metropolis-Hastings算法
    Metropolis-Hastings算法(MH)是Metropolis算法的generalized version。 算法步骤一样,但是接受率需改为

    α=min(1,p(θ)p(θ(t1))q(θ(t1)|θ)q(θ|θ(t1)))

      proposal distribution的选取原则
      可以看出,在Metropolis算法和MH算法中,proposal distribution起到和很重要的作用。proposal distribution原则上可以任意选择,常见有两种简单方式,一种是随机游动链,新值 y 为现在值x加上一随机变量 z ,即y=x+z,此时, qyt+1|yt(y|x)=q(yx) ,其中 q 为任一概率密度。另一种称为独立链,新值y与现在值 x 无关,即qyt+1|yt(y|x)=q(y),其中 g 为任一概率密度。对于有界的随机变量,注意应该建立合适的proposal distribution。Generally,一个好的rule是to use a proposal distribution has positive density on the same support as the target distribution. For example, if the target distribution has support over 0θ<,the proposal distribution should have the same support. 

    MH 用于多元抽样
      两种策略,blockwise updating和componentwise updating. 本文重点介绍后一种。因为对第一种寻找合适的高维proposal 分布比较难。另一个是拒绝率往往会很高。
      下面是两维componentwise MH sampler steps:
      1. set t=1 .
      2. Generate an initial value u=(u1,u2,...,uN), and set θ(t)=u
      3 Repeat
         t=t+1
        Generate a proposal θ1 from q(θ1|θ(t1)1)
      Evaluate the acceptance probability α=min(1,p(θ1,θ(t1)2)p(θ(t1)1,θ(t1)2)q(θ(t1)1|θ1)q(θ1|θ(t1)1))
        Generate a u from a Uniform(0,1) distribution
        If uα, accept the proposal and set θ(t)1=θ1 ,else set θ(t)1=θ(t1)1 .
        Generate a proposal θ2 from q(θ2|θ(t1)2)
       Evaluate the acceptance probability α=min(1,p(θ(t)1,θ2)p(θ(t)1,θ(t1)2)q(θ(t1)2|θ2q(θ2|θ(t1)2))
        Generate a u from a Uniform(0,1) distribution
        If uα,accept the proposal and set θ(t)2=θ2 ,else set θ(t)2=θ(t1)2 .
      4. Until t=T .
      
    Gibbs sampling
     在Gibbs抽样中,没有rejecttion,因此提高了计算效率。另一个优势是没必要去寻找合适的proposal distribution。但是我们需要知道多元分布的条件分布,即the Gibbs sampler can only be applied in situations where we know the full conditional distributions of each component in the multivariate distribution conditioned on all other components.
     二元情况的Gibbs sampling步骤:
     1. set t=1 .
     2.Generate an initial value u=(u1,u2) and set θ(t)=u .
     3. Repeat
        t=t+1
       Sample θ(t)1 from the conditional distribution f(θ1|θ2=θ(t1)2)
       Sample θ(t)2 from the conditional distribution f(θ2|θ1=θ(t)1)
     4. Until t=T .
     
    参考文献:[Computational statistics with matlab]http://psiexp.ss.uci.edu/research/teachingP205C/205C.pdf

    展开全文
  • 蒙特卡洛算法的MATLAB实现

    千次阅读 2020-11-08 16:16:27
    一 解决问题 蒙特卡洛算法,即随机取样法,也称为计算机随机模拟方法,源于世界著名赌城——Monte Carlo,算法由此得名。 它是基于概率论的一种计算方法:即通过随机数或者伪随机数来计算比较难以解决的问题,因为...

    一 解决问题

    蒙特卡洛算法,即随机取样法,也称为计算机随机模拟方法,源于世界著名赌城——Monte Carlo,算法由此得名。

    它是基于概率论的一种计算方法:即通过随机数或者伪随机数来计算比较难以解决的问题,因为设计概率问题,那么结果就不是一个准确的值,而是一个近似值,并且所使用的样本(统计点数)越多,所得到的结果越准确。例如:不规则图形的面积问题等。

    二 基本原理

    我们以面积计算的问题讲解蒙特卡洛算法的实现步骤如下:

    1.画出图像

    求要计算图像的基本形状。此处以y1=3x;y2=8-x为例,画出图像如下:

    2.确定边界

    通常为矩形,要求矩形必须完整包括所求图像。

    如上图,因为图像交点为(2,6),因此,确定边界如红框所示:(0,0),(8,0),(8,6),(0,6)

    3.随机统计

    在(矩形)边界范围内随机产生点,并统计落在所求图像中的点。所用到的函数为unifrnd函数。本例子以10^7(7次方在保证运行速度的情况下,基本可以满足准确度)为例。

    4.确定面积

    用比值法求面积,即落在图像上的点:整个范围内的点=所求图像面积:矩形边界面积。

    即所有图像I面积=矩形边界面积*落在图像上的点/整个范围内的点。

    三 相关的知识

    本例中使用到的unifrnd函数的相关知识。

    R = unifrnd(A,B,M,N,...) or R = unifrnd(A,B,[M,N,...])

    即产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n)

    如y=(0,8,[1,10000000]),即产生1*10000000阶位于(0,8)之间的数。

    四 代码实现

    %画函数图像
    x=0:0.25:10;
    y1=3*x;
    y2=8-x;
    plot(x,y1,x,y2)
    
    axis([0 10 0 10]);
    legend('y1=3x','y2=8-x');
    title('蒙特卡洛算法');
    text(2,6,'交点');
    grid on
    %产生随机点
    x=unifrnd(0,8,[1,10000000]);
    y=unifrnd(0,6,[1,10000000]);
    %统计所在所求图形中的点
    frequency=sum(y<3*x & x<=2)+sum(y<8-x & x>2);
    %计算面积
    area=6*8*frequency/10^7;

    五 结果测验

    由函数图像可知,所求区域面积为:24单位。

    算法运行结果如下:

    由结果可知,算法每次运行结果都不一样,这是有概率统计的特性所致。但是结果都稳定在24左右,这与理论值是一样的。

     

    以上实例以规则图形为例,对于不规则图像,本算法同样适用,且更便利。

    今天的分享就到这里,如有不足,欢迎大家评论指导。

     

    展开全文
  • MATLAB蒙特卡洛方法求椭圆面积代码 在某个规定的范围内随机打点,找到满足条件的点,并数一下这些点的数量与总的随机点数量的比,就OK了。关键是设置条件。 代码 clear;clc; n=10000; %随机数的个数 a=51/2; %长...

    MATLAB蒙特卡洛方法求椭圆面积


    在某个规定的范围内随机打点,找到满足条件的点,并数一下这些点的数量与总的随机点数量的比,就OK了。关键是设置条件。

    代码

    clear;clc;
    n=10000; %随机数的个数
    
    a=51/2; %长半轴
    b=29/2; %短半轴
    %生成随机数
    x=rand(1,n);
    y=rand(1,n);
    %改变随机数的范围
    x=2*a.*x-a;
    y=2*b.*y-b;
    
    r=(1/(a*a)).*(x.*x)+(1/(b*b)).*(y.*y); %椭圆边界
    m1=find(r<=1);%满足条件(椭圆内)的点
    
    X=x(m1);Y=y(m1);
    mm=length(m1); 
    area=a*b*mm/n;%椭圆面积
    
    %把椭圆点出来
    figure(1);hold on;
    plot(X,Y,'.b');
    xlim([-30 30]);ylim([-15 15]);
    
    ax=gca;
    fs=18;
    ax.XColor = 'red';
    ax.YColor = 'red';
    ax.XAxisLocation='Origin';
    ax.YAxisLocation='Origin';
    ax.FontSize = fs;
    
    %把椭圆边缘画出来
    fplot(@(x)sqrt((1-x.^2./650.25).*210.25),[-25.5 25.5],...
        'Color','red');
    
    fplot(@(x)-sqrt((1-x.^2./650.25).*210.25),[-25.5 25.5],...
        'Color','red');
    

    如果用一条直线把椭圆切割一下。。。

    代码

    %Monte Carlo 方法计算椭圆被一条直线切割后其中一部分的面积
    
    clear;clc;
    n=50000;
    
    a=51/2; %长半轴
    b=29/2; %短半轴
    x=rand(1,n);
    y=rand(1,n);
    x=2*a.*x-a;
    y=2*b.*y-b;
    
    r1=(1/(a*a)).*(x.*x)+(1/(b*b)).*(y.*y);
    r2=2.*x+5-y;
    m1=find(r1<=1);%第一个条件
    m2=find(r2>=0);%第二个条件
    m3=find(ismember(m2,m1));
    M=m2(m3);
    X=x(M);
    Y=y(M);
    mm=length(M); 
    area=a*b*mm/n;
    
    figure(1);hold on;
    plot(X,Y,'.b');
    xlim([-30 30]);
    ylim([-15 15]);
    
    ax=gca;
    fs=18;
    ax.XColor = 'red';
    ax.YColor = 'red';
    ax.XAxisLocation='Origin';
    ax.YAxisLocation='Origin';
    ax.FontSize = fs;
    
    % 把椭圆的边缘画出来
    fplot(@(x)sqrt((1-x.^2./650.25).*210.25),[-25.5 25.5],...
        'Color','red');
    
    fplot(@(x)-sqrt((1-x.^2./650.25).*210.25),[-25.5 25.5],...
        'Color','red');
    
    %把直线画出来
    fplot(@(x)2.*x+5,[-30 30],...
        'Color','blue');
    
    
    

    结果如下图:
    在这里插入图片描述

    展开全文
  • ——ユリ熊嵐关于蒙特卡洛这个学期上统计,学的时候提到蒙特卡洛方法。这个名字听起来很高级,其实就是上随机数乱搞(bushi)。对于一个不熟悉的分布,工程上可以通过生成符合该分布的随机数的方法研究其相关性质,...
  • Matlab规划问题——蒙特卡洛

    千次阅读 2020-06-27 14:08:07
    Matlab规划问题——蒙特卡洛法 一、蒙特卡洛法简介 ​ 蒙特卡洛法是基于大量事件的统计结果来实现一些确定性问题的计算。而在规划问题中,蒙特卡洛法可以通俗理解为枚举法,通过产生很多随机数,对每一个随机数都...
  • 数学建模小白最近在学习蒙特卡洛模拟,学习了很多随机数生成方式,就这里做一个小的总结吧!(可能不全,欢迎大家补充、指正。) %第1种rand rand(3,2)% rand(m,n)函数产生由在[0,1]之间均匀分布的随机数组成的m行...
  • 蒙特卡洛算法优化非线性规划问题实例 求解此题需要三个函数文件 目标函数文件 function z=goal(x) z=3*(x(1)-2)^2+4*(x(2)-1)^2+x(1)*x(2)+2*(0.5*x(3)-3)^2; 约束条件函数文件 function lpc=lpconst(x) if 2*x(1...
  • 蒙特卡洛方法 matlab 实现

    千次阅读 2017-08-15 16:41:39
    蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法。 假设我们有个y=x^2的表达式,如何用MC方法求得函数在[0,1]区间的定积分呢? 定积分可以用面积来求解,也就是通过求箭头下...
  • 使用MatLab实现蒙特卡洛求解圆周率 pi

    千次阅读 多人点赞 2019-12-08 20:51:18
    使用MatLab实现蒙特卡洛求解圆周率 1.思路 基本原理,假设有一个正方形的内切圆,在正方形的内部均匀的取随机点,当取的两个x,y满足圆的方程 (a/2)^2 = x^2 + y^2是,表示在圆的内部,而在圆的内部的概率是: p =...
  • MATLAB-蒙特卡罗方法

    万次阅读 多人点赞 2019-08-16 20:14:48
    蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用...
  • 蒙特卡洛模拟法是一种模拟法,由电子计算机来模拟一个过程的实现,重复 一定次数,然后计算系统的风险指标。它是用随机数来模拟数学与物理问题以求其近似解的一种通用方法。它可以解决带有随机性的问题和确定性问题...
  • 随机模拟—蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为...
  • Matlab实现蒙特卡洛法求心形线面积 思路: 1、生成一定数量的随机数,其大小在[0,1)之间; 2、用随机数确定一个长宽已知的矩形,并保证心形线在矩形中; 3、计算随机点落在心形线中的概率,然后乘以矩形的面积即可...
  • Matlab蒙特卡洛模拟二维伊辛模型相变过程

    千次阅读 多人点赞 2020-04-07 18:27:40
    具体的计算公式和matlab代码详见附录A。 虽然大体了解了相变的过程,以及理论上的精确解,我们能否通过实验的方式,验证这一结论呢?借助计算机模拟这一过程来验证结果呢? 三、二维伊辛模型模拟 因为不可能遍历所有...
  • montecarlo计算结构可靠度的matlab程序-...1.三种常用分布函数(正态,对数正态,极值一型)的随机数的生成。 2.可靠度度功能函数 3.可靠指标与概率的转换 4.有中文的注释 5.这是一个关于结构可靠度分析的两个实例
  • 实用标准文案精彩文档基于MATLAB蒙特卡洛方法对可靠度的计算——《可靠性工程》大作业目录TOC \o "1-2" \h \z \u HYPERLINK \l "_Toc466883960" 目录 PAGEREF _Toc466883960 \h 2HYPERLINK \l "_Toc466883961" ...
  • 蒙特卡洛法之MATLAB实现

    万次阅读 多人点赞 2016-01-07 20:55:21
    使用蒙特卡洛法必须使用计算机生成相关分布的随机数。eg: y = x^2 ,y = 12 - x与X轴在第一象限与X轴围成一个曲边三角形。设计一个随机试验,求该图形的近似值。 其图形如下图所示:x=0:0.25:1
  • MATLAB-生成特定分布随机数的方法

    千次阅读 2020-12-30 16:13:53
    原文链接点击进入
  • Matlab--蒙特卡洛方法求pi值

    千次阅读 2020-08-13 22:13:45
    Matlab--蒙特卡洛方法求pi值 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值...
  • 随机数"的计算方法。 假设我们有个y=x^2的表达式,如何用MC方法求得函数在[0,1]区间的定积分呢? 定积分可以用面积来求解,也就是通过求箭头下的面积 为了衔接方便,照顾新手,给出作图程序吧 x=0:0.01:1;y=x.^...
  • 蒙特卡洛法:  某些问题而言,利用穷举法,会导致计算量过大。蒙特卡洛就是随机生成很多解,然后不断寻找更好的解。到了一定次数,结果就会很接近。 具体问题: 目标函数写成Max 条件:条件(代码里面假设有四个...
  • * MATLAB随机数的产生  - Uniform,Normal & Custom distributions * 蒙特卡洛仿真 * 产生股票价格路径 * 期权定价  - 经典公式  - 和蒙特卡洛方法比较  - 方差减小技巧  - Exotic Options * ...
  • 蒙特卡洛方法也称为统计模拟法、随机抽样技术、计算机随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。它源于世界著名的赌城—摩纳哥的...
  • Matlab关于蒙特卡洛仿真资料讲义和程序举例-第二讲-第五讲.rar 看到有些同学在找这方面的资料,的确蒙特卡洛仿真在通信中的应用非常广泛,我把我现有的资料发给大家,希望对大家有用。 比较多,分成了几个压缩...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 411
精华内容 164
关键字:

matlab蒙特卡洛随机数

matlab 订阅