❶ 求一个MATLAB程序,通过蒙特卡洛方法模拟二维布朗运动的,谢谢
function[x,y,m,n]=br2(x0,xf,y0,yf,h)
x=x0:h:xf;
y=y0:h:yf;
a=randn(size(x));
b=randn(size(y));
m(1)=0;
n(1)=0;
fork=1:length(x)-1;
m(k+1)=m(k)+a(k);
n(k+1)=n(k)+b(k);
end;
再在命令窗口键入
x0=0;
xf=10;
h=0.01;
y0=0;
yf=10;
[x,y,m,n]=br2(x0,xf,y0,yf,h);
plot(m,n)
xlabel('m');
ylabel('n')
❷ 怎么用 Excel 做蒙特卡洛模拟
Excel 做蒙特卡洛模拟的具体操作步骤如下:
1、打开Excel表格,填写三个活动时间估算的乐观值,最可能值和悲观值。
❸ 怎么用 Excel 做蒙特卡洛模拟
1、首先,我们来填入这三个活动时间估算的乐观值,最可能值和悲观值。
分别计算这三个活动的均值和标准差。
均值=(乐观值+4 * 最可能值 + 悲观值)/ 6
标准差=(悲观值-乐观值)/ 6
根据第二步计算出来的均值和标准差,对三个活动按照正态分布进行随机模拟。因为是测试项目,这里我们只进行随机100次。
公式:=INT(NORMINV(RAND(),$F$2,$G$2))
其中:NORMINV 正态分布;INT 去整; RAND() 取随机数;
2、将随机出来的值,进行固化。也就是将上一步中红框的区域,按值复制一份。以防止随机数在每次更改单元格后都会发生变化。
3、由于3个活动均为FS的关系,所以三个互动的时间之和就等于总项目时间。
将总工期考入新的Sheet,并进行从小到大的重新排序。
4、将排序后的数据进行筛选,剔除重复数据。从而的到全部模拟出来工期的值。
进行频度统计。首先选中与总工期相对应的频度下面的单元格D2:D23,然后输入公式“=FREQUENCY(A2:A101,C2:C23)”,然后按下Ctrl+Shift+Enter。如此会计算出模拟出来各个总工期的发生次数。
5、计算积累频度:每一个频度的积累频度=自身的频度+前面所有项的频度之和
选择二维折线图;
6、在添加的空白折线图上右键“选择数据区域”: 数据区域即总工期和积累频度两列。由于我们并不需要总工期呈现为曲线形式,在选择后的对话框中,将总工期删除,只保留累计频度。
将“累计频度改为“蒙特卡洛模拟”。
7、选择标轴C2:C23
最终选择一个好看的样式,展现辛苦生成的图表就可以啦。
注意事项:这里模拟的项目是一个只有3个首尾相接活动的简单项目。在实际项目中,必须考虑由于活动工期变化所导致的关键路径变化的情况。
❹ matlab蒙特卡洛模拟程序是什么
蒙特卡洛模拟法求解步骤应用此方法求解工程技术问题可以分为两类专:确定性问题属和随机性问题。解题步骤如下:
根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致
2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。
3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。
4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。
5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。
❺ MATLAB程序的注释 蒙特卡洛模拟!数学帝进啊!
Randn('seed',0);%设定初始随机变量seed为0
nuT=(r-0.5*sigma^2)*T;%计算过程,计算nuT=(r-0.5*sigma^2)*T
Sit=sigma*sqrt(T);%给T开方后乘以sigma等于Sit
Discpayoff=exp(-r*T)*max(0,s0*exp(nuT+sit*randn(Nu,1))-K);%0和s0乘以e的nuT+sit*randn(Nu,1))-K的最大值乘以e的-r*T次方
[eucall,varorice,ci}=normfit(discpayoff)%返回给定数据discapayoff的正太分布参数估计
Randn('seed',0);%设定初始随机变量seed为0
nuT=(r-0.5*sigma^2)*T;%计算过程,计算nuT=(r-0.5*sigma^2)*T
Sit=sigma*sqrt(T);%给T开方后乘以sigma等于Sit
Rand=randn(Nu,1);%产生Nu个随机数,列矩阵
discpayoff=exp(-r*T)*max(0.s0*exp(nuT+sit*rand)-K);%0和s0乘以e的nuT+sit*rand-K的最大值乘以e的-r*T次方
Discpayoff1=exp(-r*T)*max(0,s0*exp(nuT+sut*-rand)-K);%仍然是乘法运算,max的意思是在括号中取他们的最大值
[eucall,varproce,ci]=normfit([discpayoff;discpayoff1])%返回给定数据的正太分布参数估计
%eucall是给定数据的正太分布均值mu,varproce是标准差sigma,95%置信区间
Dt=T/NSteps;%计算Dt
Nudt=(r-0.5*sigma^2)*dt;%%计算过程,计算nuT=(r-0.5*sigma^2)*dt
Sidt=sigma*sqrt(dt);%dt的开方然后乘以sigma
Randn('seed',0);%设定初始随机变量seed为0
Rand=randn(NRep1,NSteps);%产生NSteps列,每列NRep1个随机变量
% Rand1=nudt+sidt*rand;
% Rand1=nudt+sidt*rand;
% Rand2=cumsum(rand1,2);%这三行都是产生随机变量,
Path=s0*exp(rand2);%Path是e的Rand2次方和s0的乘机
Payoff=zeros(NRep1,1);%产生4行1列0矩阵
For i=1;Nrep1%循环,i从1到Nrep1
Payoff=max(0,mean(path(i,:))-k);%payoff的值等于0和path的第i行-k的最大值
End%结束
[p.aux,CI]=normfit(exp(-r*T)*payoff)%返回payoff乘以e的(-r*T)次方的正态分布均值mu和sigma
%P.aux=mu,CI=sigma
❻ matlab 蒙特卡洛模拟代码的问题
A=[1 2 3] 元素记为ai
a(n)从A中取值,a(1)=1
定义B=[-inf 2 3 inf] 元素记为bi
其中P(a(n)=k)=N(b(k+1)-a(n-1))-N(b(k)-a(n-1)) N为标准正态分布 P为概率回`~
模拟答天数N=40,模拟线程为2,y(n)=a(n)
❼ matlab蒙特卡洛模拟工作空间
首先产生若干随机数, 以此生成一系列随机值作为机械臂关节转角值. 将这些随机值组合带入运动学方程,得到末端坐标值.将这些位置坐标向量值用点状方式显示就得到了所谓的工作空间点集的云图
❽ 如何在lammps中用蒙特卡洛方法进行分子模拟
LAMMPS是专门做分子动力学(MD)模拟的程序。它跟蒙卡完全是两种截然不同的方法。简单的蒙卡code规模很小,你可以自己写 —— 需要一个随机数发生器,一个抽样算法(比如metropolis,接近临界时可用swendson-wang),一个构型空间(如离散化的模型)。针对专门的问题,一般会有专门优化过的程序甚至做好的构型供抽样。
“ LAMMPS is a classical molecular dynamics code that models an ensemble of particles in a liquid, solid, or gaseous state. It can model atomic, polymeric, biological, metallic, granular, and coarse-grained systems using a variety of force fields and boundary conditions. ”
当然LAMMPS也提供了蒙卡功能:
巨正则系综蒙卡:http://lammps.sandia.gov/doc/fix_gcmc.html
direct simulation Monte Carlo: http://lammps.sandia.gov/doc/pair_dsmc.html
❾ 帮我编一下程序,关于蒙特卡洛模拟的
这种题目是没人会给你编的,自己去查些资料吧
❿ matlab如何实现蒙特卡洛算法
1、打开MATLAB软件,如图所示,输入一下指令。