[matlab]Monte Carlo模拟学习笔记

理论基础:大数定理,当频数足够多时,概率可以逼近频率,从而依靠频率与$\pi$的关系,求出$\pi$

  所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性。

用蒙特卡洛方法进行计算机模拟的步骤:
[1] 设计一个逻辑框图,即模拟模型.
[2] 根据流程图编写程序,模拟随机现象.可通过具有各种概率分布的模拟随机数来模拟随机现象.
[3] 分析模拟结果,计算所需要结果.

ex1.投针试验求$\pi$

    %蒲丰投针实验的计算机模拟
format long; %设置15位显示精度
a=1; l=0.6;    %两平行线间的宽度和针长
figure; axis([0,pi,0,a/2]); %初始化绘图板
set(gca,‘nextplot‘,‘add‘); %初始化绘图方式为叠加
counter=0; n=1120;     %初始化计数器和设定投针次数
x=unifrnd(0,a/2,1,n); phi=unifrnd(0,pi,1,n); %样本空间Ω
frame=moviein(n);     %建立一个1120列的大矩阵
for i=1:n
   if x(i)<l*sin(phi(i))/2   %满足此条件表示针与线的相交
      plot(phi(i),x(i),‘b.‘);
      counter=counter+1; %统计针与线相交的次数
      frame(:,counter)=getframe; %描点并取帧
   end
end
fren=counter/n; pihat=2*l/(a*fren); %用频率近似计算π
disp(counter);
disp(pihat);

  

ex2.依然求$\pi$

n=10000000; a=2; m=0;
for i=1:n
   x=rand*a; y=rand*a;
   if ( (x-a/2)^2+(y-a/2)^2 <= (a/2)^2 )
       m=m+1;
   end
end
disp([‘投点法近似计算的π为: ‘,num2str(4*m/n)]);

ex3.

在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点.经过长期观察发现,我方指挥所对敌方目标的指示有50%是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一门火炮,有1/6的射击效果能全部毁伤敌人火炮.现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值。

p=0.5;m=2000;
efreq=zeros(1,m);efreq2=zeros(1,m);
randnum1 = binornd(1,p,1,m);
randnum2 = unidrnd(6,1,m);k1=0;k2=0;k3=0;
for i=1:m
    if randnum1(i)==0
        k1=k1+1;
    else
        if randnum2(i)<=3
            k1=k1+1;
        elseif  randnum2(i)==6
            k3=k3+1;
        else
            k2=k2+1;
        end
    end
   efreq(i)=(k2+k3)/i;
   efreq2(i)=(k2+2*k3)/i;
end
num=1:m;plot(num,efreq,num,efreq2)

  

时间: 2024-10-10 08:24:21

[matlab]Monte Carlo模拟学习笔记的相关文章

[matlab]bp神经网络工具箱学习笔记

基本就三个函数: newff():创建一个bp神经网络 train():训练函数 sim():仿真函数 同时具有可视化界面,但目前不知道可视化界面如何进行仿真,且设置不太全 工具箱:Neural net fitting textread使用方法:http://blog.sina.com.cn/s/blog_9e67285801010bju.html ex1. clear; clc; %注意P矩阵,matlab默认将一列作为一个输入 P=[0.5152 0.8173 1.0000 ; 0.8173

《C++ Primer Plus》12.7 队列模拟 学习笔记

Heather银行打算在Food Heap超市开设一个自动柜员机(ATM).Food Heap超市的管理者担心排队使用ATM的人流会干扰超市的交通,希望限制排队等待的人数.Heather银行希望对顾客排队等待的事件进行估测.要编写一个程序来模拟这种情况,让超市的管理者可以了解ATM可能招骋的影响.对于这种问题,最自然的方法是使用顾客对列.队列是一种抽象的数据类型(Abstract Data Type,ADT),可以存储有序的项目序列.新项目被添加在队尾,并可以删除队首的项目.队列有点像栈,单栈在

Matlab自带教程学习笔记1

变量赋值,类似 a=1 b=2 数组赋值,类似: t=[1 2 3 4 5] t=1:5 t=0:0.1:2 使用whos命令会输出当前已经定义的变量的: help原文: WHOS is a long form of WHO. It lists all the variables in the current workspace, together with information about their size, bytes, class, etc. 绘制曲线: plot函数: plot(X

Matlab自带教程学习笔记2

定义复数,类似: x=3+4i 定义矩阵,类似: a=[1 2 3;4 5 6;7 8 9] 使用Shift+F1查看可用函数,或是直接单击fx按钮,类似: 使用rand获取随机数(0-1内) 例如,使用 rand(3,3) 生成一个3行3列的随机数矩阵: 若要生成一个行列相等的随机数方阵,可以使用rand(n)函数,类似: rand(5): 将生成5x5的随机数方阵: 使用size获取变量的大小,类似: t=[1 2 3 4 5]: size(t): 得到的是1 5,就是1行5列: 若 t=[

angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指令(5)-link文章也提到了link函数的第五个参数linker. 这篇文章就来讲解一下transclude()方法(linker()方法),是怎么使用的,另外,它也是compile函数的第三个参数,用法一样. 下面就通过自己写一个简易的模拟ngRepeat的指令cbRepeat,来了解linke

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之前一直做使用Java语言开发,其丰富的组件类库使得开发效率那叫一个快呀!突然转来做JavaScript一时间还有点儿不适应(快半年了),不过自从看见那么多漂亮的网站和对JavaScript接触的越来越多,也发现了其中的一些乐趣.正如自己一直坚信的那样,编程语言仅仅是工具,重要的是编程思想!使用Jav

matlab学习笔记 bsxfun函数

matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下.   函数bsxfun [功能描述]两个数组间元素逐个计算. [应用场合]当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作.从MATLAB R2007a开始

matlab学习笔记(一)单元数组

matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil(3.18)=42.单元数组和结构体作用差不多, 相同点:都是存放不同类型的数据,能实现不同类型数据的存储机制. 不同点:结构体数组的 各个元素下有成员,并且每个成员有自己的名字,而单元数组没有成员和成员 名字的感念.3.单元数组,用[]表示元素间隔:用,表示元素之间的间隔:用:表示行间隔. 例如:c

数字图像处理学习笔记之一 DIP绪论与MATLAB基础

写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同时学习过程中会参考网络学习资源.对于数字图像处理的学习不可能仅仅依靠作者所写的这一系列笔记,而是需要花时间和精力学习,本文只可作参考和交流之用.由于涉及此学科不久,在学习过程中难免存在错误,请读者不吝赐教. 数字图像处理绪论 数字图像处理(DIP)的研究目标和处理对象: DIP的研究目标是获取信息,处理对象是