数学建模--蒙特卡洛模型的Python实现

目录

  1.算法思想简介

  2.算法应用1:问题一阐述

  3.算法应用1:问题一解决

  4.算法应用2:问题二阐述

  5.算法应用2:问题二解决


  1.算法思想简介

#蒙特卡洛算法思想
"""
蒙特卡洛方法的理论其实很类似于概率论中一个比较重要的定理---大数定律。
其基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果。
这个时候我们在样本足够大的情况下我们认为这个事件发生的概率等于实验所得到的结果
"""

  2.算法应用1:问题一阐述

"""
Question1:
计算圆周率pi(Π)值
实验原理:
在正方形内部有一个相切的圆,圆面积/正方形面积之比是(PixRxR)/(2Rx2R)= Pi/4。
在这个正方形内随机产生n个点,假设点落在圆内的概率为P,那么P=圆面积/正方形面积,P= Pi/4。
如何计算点落在圆内的概率P?
可以计算点与中心点的距离,判断是否落在圆的内部,若这些点均匀分布,用M表示落到圆内投点数,N表示总的投点数,则圆周率Pi=4P=4xM/N。
"""

  3.算法应用1:问题一解决

#第一题求解代码
#我们假设r=1,a=0,b=0
import numpy as np
def Qustion1(n):
    r=1.0
    a=0
    b=0
    x_min=a-r
    x_max=a+r
    y_min=b-r
    y_max=b+r
    m=0#m是计算落在圆内的点的个数
    for i in range(n+1):
        x=np.random.uniform(x_min,x_max)
        y=np.random.uniform(y_min,y_max)
        if x*x+y*y<=1:
            m=m+1
    print("第一题的答案是:",4*(m/float(n)))
ans=Qustion1(1000000)
#cout:第一问题的答案是: 3.141468

  4.算法应用2:问题二阐述

""""
Question2:
计算函数定积分值:
实验原理:
若要求函数f(x)从a到b的定积分,我们可以用一个比较容易算得面积的矩型包围在函数的积分区间上(假设其面积为Area),
定积分值其实就是求曲线下方的面积。随机地向这个矩形框里面投点,统计落在函数f(x)下方的点数量占所有点数量的比例为P,
那么就可以据此估算出函数f(x)从a到b的定积分为Area*P。
此处我们将a和b设为0和1,函数f(x)=x^2。
"""

  5.算法应用2:问题二解决

#第二题求解代码
#此处我们将a和b设为0和1,函数f(x)=x^2。
def Question2(n):
    x_min=0
    y_min=0
    x_max=1
    y_max=1
    m=0
    for i in range(n+1):
        x=np.random.uniform(x_min,x_max)
        y=np.random.uniform(y_min,y_max)
        if y-x*x<0:
            m=m+1
    print("第二题的答案是:",m/float(n))
ans2=Question2(1000000)
#第二题的答案是: 0.334016

蒙特卡洛方法是一种基于随机抽样的数学建模技术,可以用于解决各种数学问题,包括数值积分、求解方程、优化问题等。在Python中,可以使用蒙特卡洛方法进行数学建模的步骤如下: 1. 定义问题:首先需要明确要解决的问题,例如计算某个函数的积分、求解某个方程的根等。 2. 设定随机抽样方法:根据问题的性质,选择合适的随机抽样方法。例如,对于积分问题,可以使用均匀抽样或重要性抽样等方法。 3. 进行随机抽样:根据所选的抽样方法,生成一些随机样本点。这些样本点通常是在特定区域内均匀或按照某种概率分布生成的。 4. 计算模型输出:对于每个样本点,根据模型或方程计算相应的输出。例如,对于积分问题,计算样本点在函数上的取值。 5. 统计分析:根据计算得到的模型输出,进行统计分析。例如,可以计算样本输出的平均值、方差等。 6. 得出结果:根据统计分析的结果,得出对原问题的估计或近似解。 在Python中,可以使用NumPy库进行随机数生成和数学计算,以及Matplotlib库进行结果的可视化。此外,还可以使用SciPy库中的一些函数进行更复杂的数学建模和分析。 需要注意的是,蒙特卡洛方法是一种估计方法,其结果的精确性取决于抽样点的数量和质量。因此,在使用蒙特卡洛方法进行数学建模时,需要根据具体问题选择适当的抽样方法和样本点数量,以达到所需的精确度和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温柔济沧海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值