蒙特卡洛模拟方法作业及答案(附程序)
- 格式:doc
- 大小:37.50 KB
- 文档页数:4
数学建模蒙特卡洛模拟方法详细案例
数学建模中的蒙特卡洛模拟方法是一种基于随机数生成和概率统计的方法,可以用于求解各种复杂的问题。
下面是一个详细的案例,以帮助你更好地理解蒙特卡洛模拟方法的应用。
案例:估计圆周率
假设我们要求解圆周率(π)的值。
我们可以使用蒙特卡洛模拟方法来估计π的值。
1. 定义问题的概率模型:在这个案例中,我们使用一个简单的概率模型,即在一个边长为1的正方形内随机生成点,并计算这些点到正方形中心的距离。
2. 生成随机数:使用随机数生成器生成一系列的随机数,这些随机数代表点在正方形内的坐标。
3. 计算点到中心的距离:对于每个生成的点,计算它到正方形中心的距离。
4. 计算落在圆内的点的比例:将落在半径为1的圆内的点的数量除以总的点数。
这个比例近似于圆的面积与正方形的面积之比,也就是π/4。
5. 通过比例求解π:将步骤4中的比例乘以4,即可得到π的近似值。
通过多次重复上述步骤并取平均值,可以进一步提高估计的准确性。
需要注意的是,蒙特卡洛模拟方法是一种基于随机数生成和概率统计的方法,其结果具有一定的随机性和误差。
因此,在应用蒙特卡洛模拟方法时,需要选择合适的随机数生成器和概率模型,以确保结果的准确性和可靠性。
第二章蒙特卡洛方法
2.1 简要叙述蒙特卡洛方法的基本思想。
2.2 蒙特卡洛方法对随机数有较高的要求,然而实际应用的随机数通常都是通过某些数学公式计算而产生的伪随机数,但是,只要伪随机数能够通过随机数的一系列的统计检验,我们就可以把它当作真随机数放心使用。
在产生伪随机数的方法中,有比较经典的冯·诺曼平方取中法和线性同余法,请分别写出它们的递推关系式?对于伪随机数一般需要做哪些统计检验(至少写出四个)?
2.3 蒙特卡洛方法计算中减少方差的技术有哪些?
2.4 设连续随机变量的分布密度函数为f(x),在数学上它的分布函数应当为。
试证明得到的是满足分布密度函数的一个抽样值。
2.5 若用蒙特卡罗算法计算定积分,请给出其求解原理与计算步骤。
2.6 简要叙述变分蒙特卡洛方法求解基态本征能量E0和基态本征态波函数
基本原理,并以一维情况为例说明蒙特卡洛计算步骤。
(1) 用Excel“工具>数据分析>随机数发生器”对每年收益产生100个正态分布随机数进行试验,对每次(2) 用Excel函数“=NORMINV(RAND(),均值,标准差)”对每年收益产生100个正态分布随机数进行试验(3) 对100个试验得到的净现值计算发生的频数,并用直方图表示,估计投资不可行的试验占总试验次(4) 四年收益的标准差变更为1万元,2万元,3万元,4万元,再次进行以上计算。
(5) 如果资金贴现率分别为3%、4%、5%、6%和7%,用Excel模拟运算表求上项目可行的概率。
(6) 用Excel“规划求解”计算这个项目的内部回收率IRR。
第一题序号第一年第二年第三年第四年NPV126.858841.0932945.5061270.82242-4.401618803229.7790144.1114455.8178667.303937.130081423330.2143839.6273854.3214867.24714 2.138193408426.3303337.5612950.0221878.57272 2.168781478526.398235.4323750.295475.6665-1.852508993632.9036544.6338447.3705166.90074 2.950918665727.3541332.215245.7839670.36005-12.12294677833.886237.3027247.8293467.15498-2.15735567924.6692741.2947953.6350566.39096-2.9278218391033.4842737.4036550.6585672.9427 4.7569743841128.7508335.6817146.4745773.62793-4.3634676411229.5034439.1975152.5720362.40429-4.4242592181330.4956131.0937947.5557270.61294-8.4096427061429.3952140.826347.7023669.27436-1.6045515491532.2991840.9974549.7141173.59515 6.6089205511629.9664236.9868651.1542865.13032-4.970456421733.2595244.5669149.0956366.56644 4.4443286241829.0915840.7960753.4921670.03117 3.7029308371929.7503542.8735148.6868772.27656 3.9109290012029.3332537.7311450.3887670.092-1.4776805922126.6140133.7116950.9213277.27673-1.342243882228.7077741.0373255.3331370.2156 5.2982415872331.4916840.2114251.1884576.790319.0291773172430.684443.9981752.7371871.091258.3442471592531.3614437.6035248.2618668.90875-2.4725859322627.0494640.744653.7384671.26903 2.9425231832728.655136.9466850.7907676.36858 2.6759545222829.221734.560948.5311667.94694-7.8288337032930.0130837.153646.6171873.65136-1.68380232 3027.4011241.1254852.8674269.15625 1.132279002 3129.7248939.3501849.2942569.81464-0.80983543 3230.5356339.9746456.706259.99592-1.146467719 3328.3928541.5477450.0460567.43178-1.396139516 3430.1441739.4893355.474168.09626 3.640365411 3529.9890641.3945152.2226167.65236 2.046735096 3629.2350541.5228944.6264166.27231-6.252174379 3729.6135140.3455851.1590664.3538-2.894810938 3827.0426338.5482151.7049175.33785 2.534602865 3931.4354939.9482548.1102677.61638 6.757506914 4030.5969441.0790849.0062573.19062 4.117493893 4128.6439537.8577445.5586566.42413-9.209322227 4228.8154540.4140645.9129669.43905-3.940888423 4329.5996336.1340149.6462775.46398 1.105521978 4431.825433.4367454.5308867.881-1.240219696 4527.3603633.9456852.9083272.46835-2.65862733 4629.8972235.0328853.7899266.37804-3.505407325 4729.1736139.108951.298670.163540.464772187 4828.7850544.7031644.8326966.53976-3.39793522 4931.2495441.226145.2272476.96366 4.712012775 5030.9554940.794446.0973763.1043-6.610080329 5134.9981536.9792542.0547664.91371-8.223942637 5230.4219442.375735.5551968.12092-10.66349577 5331.4153737.1398946.8890372.33825-1.206188246 5429.3316438.5409946.5621678.93187 3.222372633 5530.9961637.1144851.4796573.04475 2.91830813 5627.2527741.8503853.9761875.922538.1729226 5732.7996537.6785544.3695572.44849-1.484977305 5830.4394834.7798640.845164.21112-16.18340968 5932.681942.1086348.7094574.323367.712531538 6033.1768839.5235259.2147171.7556812.8015688 6129.4270138.179541.0093969.47983-9.587593623 6228.7111640.4936954.9468672.5486 6.394069786 6325.9938240.54447.0146269.48252-5.522872977 6427.7467240.3319548.3168470.34432-2.211855697 6530.0485837.4381942.8785168.78462-8.625351752 6627.3745539.2338446.8562170.45445-4.733471906 6728.1571337.5854847.2508267.74675-7.370028166 6832.3233538.5934652.6086469.74955 3.788063388 6926.2745639.7199645.7399872.57783-4.557494256 7025.6177642.7907353.5444273.5655 5.156599731 7130.7187338.0757743.8084172.12444-3.857840591 7231.7422837.6261849.49769.07077-0.889070334 7329.2483740.6799251.8477777.962548.85155971 7430.0493537.1104755.2917375.159357.04564493 7529.2111340.6153251.9072171.96557 3.8751361227629.3347140.9119954.251470.07478 4.731356951 7732.0569831.5316651.6208465.76162-7.005067432 7831.8784943.2464748.1641473.02084 6.436778379 7934.2681138.13650.3061473.22351 6.094337068 8031.299440.7609450.5360264.79353-1.088890423 8131.4032145.0684347.5770867.88017 2.90033973 8229.3985838.3632244.5453473.6339-2.975988922 8329.2221937.3996447.0488767.62071-6.802391291 8432.2803243.6919743.079865.60843-3.266702048 8531.1690941.313248.7007567.925270.279031016 8629.1326133.5219844.8164462.17835-16.81075792 8728.8725940.3229547.0617169.83493-2.651081559 8831.6523544.4196842.0437472.24267 1.358313112 8929.6648338.9206846.7886770.10118-3.185294688 9030.9460738.4841642.1218176.67758-0.981984224 9134.0141837.8118852.7132566.2389 1.891611765 9232.4184937.6505851.8822270.02467 2.622287151 9330.0625138.2499147.0287464.47938-7.832633155 9432.0820741.0741844.1296577.50833 4.867058542 9532.1869841.0171244.743372.73241 1.516147088 9628.4474142.2645954.1788971.15283 5.937439654 9726.7941539.7607346.0746572.23887-4.015434531 9827.4842735.842953.0911472.3063-0.79517701 9934.2474739.9367754.5071362.74087 2.712903352 10030.8574847.7138649.9836372.296110.49194327态分布随机数进行试验,对每次试验计算净现值。
蒙特卡洛方法是一种基于随机抽样的数学建模和计算方法,常常用于估算复杂问题的数值解。
以下是一个用蒙特卡洛方法解决的简单例题:问题:估算圆周率π的值假设我们想使用蒙特卡洛方法来估算圆周率π的值。
我们可以通过在一个正方形内随机生成点,并计算落在一个四分之一圆内的点的比例来实现这一目标。
在一个边长为2R的正方形内(R是半径)生成随机点的坐标。
对于每个点,计算它到原点的距离(使用欧几里得距离公式:√(x² + y²))。
如果该距离小于等于半径R,说明点落在四分之一圆内。
统计落在四分之一圆内的点的数量。
使用以下公式估算圆周率π的值:π≈ 4 * (四分之一圆内的点数) / (总点数)。
Python代码示例:import randomdef monte_carlo_pi(num_samples):inside_circle = 0for _ in range(num_samples):x = random.uniform(-1, 1)y = random.uniform(-1, 1)distance = x**2 + y**2if distance <= 1:inside_circle += 1pi_estimate = 4 * inside_circle / num_samplesreturn pi_estimate# 使用10000个随机点估算π的值num_samples = 10000estimated_pi = monte_carlo_pi(num_samples)print(f"估算的π值为: {estimated_pi}")通过增加生成随机点的数量(num_samples),您可以提高估算π值的精度。
蒙特卡洛方法的优点之一是,它的精度随着样本数量的增加而提高,因此可以灵活地控制估算的准确性。
这个例子演示了如何使用蒙特卡洛方法估算π的值,但这个方法也可以应用于解决各种其他复杂问题。
蒙特卡洛模拟计算var例题
蒙特卡洛模拟是一种基于随机抽样的数值计算方法,可以用来
估计复杂系统的性质,比如金融领域中的价值-at-risk (VaR)。
VaR
是用来衡量金融资产或投资组合在一定时间内可能出现的最大亏损,通常以一定的置信水平来表示。
蒙特卡洛模拟可以用来估计资产或
投资组合的VaR。
假设我们要使用蒙特卡洛模拟来计算某个投资组合的VaR。
首先,我们需要确定投资组合的收益率的概率分布。
然后,我们可以
通过随机抽样生成大量的可能的未来收益率路径。
接着,我们对这
些路径进行模拟,计算投资组合在未来一定时间内可能出现的亏损。
最后,我们可以根据这些模拟结果来估计投资组合在特定置信水平
下的VaR。
在进行蒙特卡洛模拟时,需要考虑的因素包括,投资组合的收
益率分布假设、抽样路径的数量、时间段的选择、模拟的时间步长等。
这些因素都会影响最终的模拟结果。
除了计算VaR,蒙特卡洛模拟还可以用来估计其他金融衍生品
的价格、风险敞口等。
它的优点在于可以处理复杂的金融模型和市
场情景,但缺点是计算量大,需要大量的随机抽样和计算,运行时间较长。
总的来说,蒙特卡洛模拟是一种强大的数值计算方法,可以用来估计金融领域的各种风险指标,包括VaR。
通过合理的模拟设计和参数选择,可以得到比较准确的估计结果,帮助投资者和风险管理者更好地理解和管理风险。
蒙特卡罗综合习题报告问题:蒙特卡罗方法模拟137Cs 源的661keV γ射线在NaI(Tl)闪烁体中的输运过程。
一、建立坐标系以闪烁体中轴线为z 轴建立柱坐标系,闪烁体位于0<z<4且r<2的区域。
Cs 电源位于z=-2,r=0点。
二、编程思想一个粒子的状态用(,,)E r Ω表示。
其中E 为粒子能量,(,,)r r z θ= 为粒子的位置坐标,(,)μϕΩ=为粒子的运动方向。
其中μ为粒子运动方向与 z 轴的夹角的余弦,ϕ为粒子运动方向在 x y 平面上投影的方位角。
对于一个粒子经历以下过程:1. 源抽样:由于是点源,能量和位置的分布均为δ函数,抽样得到 661,0,2E KeV r z ===-。
运动方向:各向同性分布密度函数为12121()()()411(),()22f f f f f μϕπμϕπ=⋅===Ω抽样得:1221,2μξϕπξ=⋅-=⋅。
2.到达闪烁体:如果μ≤,无法到达闪烁体,丢弃,返回源抽样重新产生粒子。
粒子进入闪烁体的瞬间,状态为:,0r z θϕ===其他量不变。
3.输运过程:1ln ()t m L E ξ-=-∑抽样得到到下次碰撞的距离,根据当前粒子状态中的,r Ω 算出下次碰撞的坐标(,,)r r z θ=,如果不在闪烁体区域(0<z<4且r<2),输运过程结束。
如果在,继续->碰撞有两种可能:光电效应和康普顿散射。
根据粒子当前的能量,(由NaI(Tl)闪烁体宏观界面数据)线性插值确定它的光电效应截面和康普顿散射界面。
抽样得到本次反应的类型。
如果光电效应,E=0,输运过程结束。
如果康普顿效应,抽样获取碰撞后的能量和运动方向(康普顿散射的能量分布密度函数知道,具体抽样方法参考讲义。
)如果E<1KeV 输运过程结束,反之,重复本过程直到输运过程结束。
4.记录与统计:记录末态能量f E ,计算沉积能量0d f E E E =-,考虑到测量系统分辨率,多道记录能量为沉积能量的高斯展宽。
蒙特卡洛方法例题
蒙特卡洛方法是一种基于随机抽样的数值计算方法,它通过大量模拟实验来近似求解问题。
这种方法在20世纪40年代由美国物理学家蒙特卡洛提出,如今已经在各个领域得到了广泛的应用。
蒙特卡洛方法的原理很简单,关键是确定概率模型。
首先,我们需要建立一个与问题相关的概率模型,然后生成一系列随机数,根据这些随机数计算出对应的数值结果,最后对结果进行统计分析,以得到问题的近似解。
下面我们通过一个例子来说明蒙特卡洛方法的具体应用。
例题:设随机变量X服从正态分布,即X ~ N(μ, σ^2),求X的期望值和方差。
解:我们可以使用蒙特卡洛方法来求解这个问题。
1.确定概率模型:我们已经知道随机变量X服从正态分布,所以概率模型为X = μ + σZ,其中Z ~ N(0, 1)。
2.生成随机数:生成一个标准正态分布的随机数Z1。
3.计算累积概率:根据正态分布表,查找Z1对应的概率值。
4.计算X的期望值和方差:根据概率模型,计算X的期望值μ"和方差σ"。
通过大量的蒙特卡洛模拟实验,我们可以得到X的期望值和方差的近似值。
蒙特卡洛方法在实际应用中具有广泛的应用价值,例如求解复杂数学问题、线性方程组、非线性方程或方程组、进行参数估计和假设检验等。
然而,
它也存在一定的局限性,如计算速度较慢、对采样点的数量要求较高等。
总之,蒙特卡洛方法是一种实用且高效的数值计算方法,在各个领域都取得了显著的成果。
手把手教你蒙特卡洛模拟
1、定义:蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。
2、基于计算机的蒙特卡洛模拟实现步骤:
(1)对每一项活动,输入最小、最大和最可能估计数据(注意这里不是三点估算),并根据提出的问题构造或选择一个简单、适用的概率分布模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),这些特征都可以通过模拟出的概率分布图得到。
(2)根据模型中各个随机变量的分布,利用给定的某种规则,在计算机上快速实施充分大量的随机抽样。
(3)对随机抽样的数据进行必要的数学计算,统计分析模拟试验结果,给出问题的概率解以及解的精度估计,即最小值、最大值以及数学期望值和单位标准偏差。
(4)按照所建立的模型进行仿真试验、计算,求出问题的随机解。
(5)根据求出的统计学处理数据,让计算机自动生成概率分布图,通常为正态分布图。
(6)根据概率分布图读出所需信息,如某项目成本200万情况下的完工概率,或确保70%完工概率时需要的成本等。
3、基于EXCEL与Crystal Ball的蒙特卡洛成本模拟过程实例:
主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:
此主题相关图片如下:。
1.基本思想:
直接蒙特卡罗模拟法:
对求解问题本身就具有概率和统计性的情况。
如:中子在介质中的传播,核衰变过程等,此思想是按照实际问题所遵循的概率统计规律,用计算机进行直接的抽样试验,然后计算其统计参数。
该方法也就是通常所说的“计算机实验”。
间接蒙特卡罗方法:
蒙特卡罗方法也可以人为地构造出一个合适的概率模型,依照该模型进行大量的统计实验,使它的某些统计参量正好是待求问题的解。
2. 伪随机数的产生方法
(1) 平方取中法-- 掐头去尾
这是最早使用的伪随机数,由诺伊曼提出,具体方法是,将一个2r位二进位整数平方后,一般为4r位数,去掉前r位,再去掉后r位,保留中间的2r位,再归一。
此方法有严重缺点,它有向小偏移的趋向,最后退化到零,现在已不用了,但它是最早的伪随机数。
(2) 线性同余发生器(LCG-linear congruence generator)
这是目前应用最广泛的随机数发生器,具体包括乘同余法和混合同余法。
(3) 组合发生器
在实际应用中,如果对随机数的要求较高,可以用一个随机数序列来“搅乱”另一个随机数. 人们发现这样产生的随机数周期变长、随机性也增强,在对随机数要求较高的场合,可以考虑采用这种随机数。
(4) 反馈移位寄存器法(ESR方法)
3. 伪随机数的统计检验方法
伪随机数的好坏是通过各种统计检验来确定的。
如:均匀性、独立性、组合规律检验、无连贯检验、
参数检验等
(1) 均匀性检验
均匀性是指在[0,1]区域内等长度区间的随机数分布的个数应相等。
(2) 独立性检验
独立性是按先后顺序出现的若干个随机数中,每一个数出现都和它前后的各个数无关。
蒙特卡洛模拟计算var例题蒙特卡洛模拟是一种通过随机抽样来估计数值问题解的方法。
其中一个应用是计算变异性(variance)。
下面是一个简单的例题:假设有一只赌博游戏的输赢情况可以用以下概率分布描述:- 70%的概率赢得10元- 20%的概率输掉5元- 10%的概率输掉20元现在我们想要计算这个游戏的变异性(variance)。
为了使用蒙特卡洛模拟计算variance,我们需要进行以下步骤:1. 首先,我们定义一个模拟实验的次数N。
通过增加模拟实验的次数,我们可以增加计算结果的准确度,但也会增加计算时间。
2. 在每次模拟实验中,我们以概率分布中的概率随机生成一个输赢情况,并根据输赢情况计算获得的金额。
重复进行N次模拟实验。
3. 在完成N次模拟实验后,我们得到了N个金额的结果。
我们可以计算这N个金额的平均值和方差。
下面是一个示例Python代码,使用蒙特卡洛模拟计算上述赌博游戏的variance:```pythonimport randomdef monte_carlo_var(N):winnings = []for i in range(N):win = random.choices([10, -5, -20], weights=[0.7, 0.2, 0.1])[0] winnings.append(win)mean = sum(winnings) / Nvariance = sum((win - mean) ** 2 for win in winnings) / Nreturn varianceN = 1000 # 模拟实验的次数variance = monte_carlo_var(N)print("Var = ", variance)```通过运行上述代码,我们可以得到模拟实验得到的variance。
需要注意的是,蒙特卡洛模拟是基于随机抽样的方法,因此结果会存在一定程度的随机性。
蒙特卡洛模拟练习题1. 假设某个银行只有一个营业窗口开放,顾客随机性的进入银行,然后按照先后次序排队等候服务。
营业员服务顾客的时间也是一个随机变量,假定顾客到达的时间和每位顾客接受服务的时间都已给出,并且已填写在下面的表格中,采用“手工”的方式模拟这个系统。
直到第10位顾客服务完成后离开系统。
根据仿真结果回答下列问题:(1)顾客在系统中的平均滞留时间(从进入到离开的时间)(2)顾客的平均排队等待时间(3)营业员处于空闲状态的百分比2.一个大型超市每日都从农村采购新鲜农产品出售,正常情况下每公斤可获例1元。
如果采购数量过多,次日只能减价出售,每公斤将亏损0.4元,现在该市采用以下采购策略:以前一天的市场需求量作为当天的采购量。
据统计分析,每天平均需求量为100 kg,标准差为30 kg。
在这种情况下,该超市经营一个月能获多少利润?3.某企业计划投资建立某产品生产线,为此必须对该产品未来能实现多少利润进行预测和分析。
建立该生产线需投资5万元。
产品能实现多少利润主要受以下三个不确定因素的影响:售价、成本与年销售量。
经过有关生产、计划、销售人员分析,考虑到原材料供应、市场竞争和价格浮动等因素的作用,初步估计售价、成本与年销售量可能出现的情况及其发生概率如下表。
试用蒙特卡罗模拟法分析建立此产品生产线的未来盈亏状况。
4. 在我方某前沿地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏,为躲避我方打击,敌方阵地进行了伪装并经常变换射击地点,经过长期观察,我方指挥所对敌方目标的指示有50%是正确的,并且在指示正确时,有31的射击效果能毁灭敌人一门火炮,有61的射击效果能全部消灭敌人,现请用蒙特卡洛模拟出对敌人实施20次打击的结果,并确定有效射击的比率及毁灭敌方火炮的平均值。
5. 已知零件C 由零件A 和零件B 连接而成,A 和B 的长度均为随机变量,长度分布概率如下,试求20个零件的平均长度。
6. 某服装公司欲订购一批冬装出售,每件冬装加工费的分布如下表,又知该批服装的销售与定价有关如下 ,且当订购多于销售数时每件处理价为5元,试以模拟的方法决定该公司的订购数与定价,以使利润最大。
蒙特卡洛模拟例题
以下是一个蒙特卡洛模拟的例题:
假设有一个问题:一个餐馆的每日顾客数量是随机变化的,且每天的顾客数量是服从正态分布的,均值为100,标准差为10。
现在我们想要通过蒙特卡洛模拟来估计这家餐馆一个月的总顾客数量的范围。
步骤:
1. 设置模拟参数:选择模拟的月份数量,比如选择为10000个月。
2. 生成随机数:根据正态分布的均值和标准差,生成每天的随机顾客数量。
3. 计算总顾客数量:将每天的随机顾客数量累加起来,得到一个月的总顾客数量。
4. 重复模拟:重复步骤2和步骤3,模拟10000个月的总顾客
数量。
5. 分析结果:根据模拟结果,计算出总顾客数量的平均值和标准差,然后根据统计学原理,可以得到一个置信区间,确定一个月总顾客数量的范围。
这个例题中,蒙特卡洛模拟的目的是通过随机生成每天的顾客
数量,来模拟一个月的总顾客数量。
通过重复模拟,可以得到一个总顾客数量的分布。
然后通过分析结果,可以得到这个分布的统计特征,进而得到总顾客数量的范围。