1. matlab如何实现蒙特卡洛算法?
1、首先我们启动matlab,新建一个函数文件。
2、在弹出的编辑窗口中输入如下代码。该代码的目的是创建蒙特卡洛主函数。
3、然后我们保存该函数文件。
4、再建立一个函数文件,输入代码如下。该代码的目的是构造积分函数,保存上面的积分函数文件。
5、在命令行窗口中直接调用该函数,如图所示为求得的结果。
6、绘制出积分区域即可。
2. matlab程序问题。需要用到蒙特卡洛方法
你给出的解是正确的
首先假设有编号为1~16的16个球,其中
编号1~8,8个球是红色,那么9~16,8个球是白色
n=1e6; %游戏100万次
A=0;B=0;C=0;D=0;E=0; %得奖统计清零
for i=1:n
examp=randperm(16); %随机打乱1~16,16个自然数
num=sum(examp(1:8)<=8); %examp(1:8)取出前8个,就是从16个球中随机抽8个
%sum(examp(1:8)<=8),就是统计编号小于8的球的数量
%也就是红球的个数
if num==0||num==8
A=A+1; %如果8个都是红球,或者没有红球,A类统计加以
elseif num==1||num==7
B=B+1; %以下的判断依次类推
elseif num==2||num==6
C=C+1;
elseif num==3||num==5
D=D+1;
else
E=E+1;
end
end %100万次抽球后,A,B,C,D,E的次数都一一统计记录
t=10*A/n+1*B/n+0.5*C/n+0.2*D/n-3*E/n
%A/n就是得到A奖的概率,以此类推
%用每个将的奖金乘以奖的概率,再相加,得到了奖金的期望
%结果表明,按照概率统计,平局每局要亏掉差不多1块钱
3. matlab如何实现蒙特卡洛算法?
1、打开MATLAB软件,如图所示,输入一下指令。
2、它会提示你没有找到,这个帮助,接着,我们会看到一行蓝色的连接,如图中所示,我们点击进去。
3、接着就会跳出一个界面,如图所示,等待完成搜索,就可以看到MATLAB中所有与之相关的信息。
4、接着,我们可以单击右上方的“在命令框运行”。
5、接着,在命令窗口,会出现很多句英文的提示;然后会看到一个"***.m";单击进去。
6、会出来一个脚本提示,如图所示;我们单击运行该脚本。
4. matlab如何实现蒙特卡洛算法
1、首先我们启动matlab,新建一个函数文件。
2、在弹出的编辑窗口中输入如下代码。该代码的目的是创建蒙特卡洛主函数。
3、然后我们保存该函数文件。
4、再建立一个函数文件,输入代码如下。该代码的目的是构造积分函数,保存上面的积分函数文件。
5、在命令行窗口中直接调用该函数,如图所示为求得的结果。
6、绘制出积分区域即可。
5. matlab蒙特卡洛模拟程序是什么?
蒙特卡洛模拟法求解步骤 应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。解题步骤如下:
根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致
2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。
3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。
4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。
5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。
6. Matlab关于蒙特卡方法的仿真
编了一个简单的程序,供参考。
按照题意,应该就是在圆内生成随机点,然后看该点落在矩形区域内的概率。
感觉设置N和R两个参数其实没必要,直接进行N*R次模拟应该就可以了。
生成随机数的方式存在一定的问题。题中并没有指定随机数的分布规律,这里按照和圆心距离均匀分布、角度也均匀分布处理。这样似乎和射门没什么关系了,因为射门不太可能是这样的规律。另外,尽管沿径向和角度都是均匀分布的,并不意味着在整个圆内分布是均匀的(靠近圆心的位置更密集)。
参考代码:
% 参数输入d = inputdlg({'随机进球数N' '试验次数R'},'试验设置',1,{'1000' '100'});if isempty(d), return, endN = round(str2double(d{1}));R = round(str2double(d{2}));L = 4;W = 2;D = sqrt(L^2+W^2); % 绘图clft = linspace(0,2*pi,200);plot(D/2*cos(t),D/2*sin(t),'linewidth',2);hold onpatch([-1 1 1 -1]*L/2,[-1 -1 1 1]*W/2,'c','Facealpha',0.3)h = plot(NaN,NaN,'.');axis equal % 模拟P = zeros(R,1);for n = 1 : R r = rand(N,1)*D/2; t = rand(N,1)*2*pi; x = r.*cos(t); y = r.*sin(t); P(n) = sum( abs(x) <= L/2 & abs(y) <= W/2 ) / N; set(h,'xdata',x,'ydata',y); drawnowend % 计算概率p = mean(P)
7. 一道Matlab题目,关于蒙特卡罗函数的,诚寻高手
需要蒙特卡洛方法?
高中的排列组合就可以了
在matlab函数里有一个nchoosek(n,k)就是在n中选择k个的可能性
16个选8的可能性有nchoosek(16,8)=12870种
A的可能性有nchoosek(8,8)*nchoosek(8,0)*2=2种可能,概率2/12870=0.0155%
B的可能性有nchoosek(8,7)*nchoosek(8,1)*2=128种可能,概率128/12870=0.99%
C的可能性有nchoosek(8,6)*nchoosek(8,2)*2=1568种可能,概率1568/12870=12.18%
D的可能性有nchoosek(8,5)*nchoosek(8,3)*2=6272种可能,概率6272/12870=48.73%
E的可能性有nchoosek(8,4)*nchoosek(8,4)=4900种可能,概率4900/12870=38.07%
这类游戏期望值为10*0.0155%+1*0.99%+0.5*12.18%+0.2*48.73%-3*38.07%=-0.9723
也就是说你如果你玩足够多次的话,平均每次回输0.9723元
8. 如何在MATLAB中用蒙特卡洛法解非线性规划问题
用蒙特卡洛法求解的基本思想
1
在估计的区域内随机取若干试验点。
2
然后从实验点中找出可行点。
3
再从可行点中选择最小点。
基本假设
1
试验点的第j个分量xj服从[aj ,bj]内的均匀分布.
1
先产生一个随机数作为初始试验点,以后则将上一个试验点的第j个分量随机产生,其它分量不变而产生一新的试验点.这样,每产生一个新试验点只需一个新的随机数分量.当K>MAXK或P>MAXP时停止迭代.
2
符号说明:
P: 试验点总数; MAXP:最大试验点总数;
K: 可行点总数; MAXK:最大可行点数;
X*:迭代产生的最优点; Q:迭代产生的最小值f(X*),其初始值为计算机所能表示的最大数.
MATLAB编程步骤:
1
确定求解的非线性规划问题
2
依次编写三个m文件,首先编写目标函数的m文件
3
然后编写约束条件的m文件
4
再依据蒙特卡洛法求解的基本思想编写主程序的m文件。先初始化,利用unifrnd函数产生服从均匀分布的随机数,作为试验点。
5
然后调用目标函数和约束条件的m文件,找出最优解
6
最后,显示找到的最优解
7
保存编好的程序,