数学建模——蒙特卡洛法

参加了大大小小很多场比赛了,但是都是混子,但还是打算记录一下吧,系统认真过一遍。后续功力深厚,会拓展写的文章,目前是干货,一些背景啥的还都未介绍。

1.介绍

随机抽样,求取近似解。
当无法求得精确解时,进行随机抽样,根据统计试验求近似解,
我的理解就是从一个样本抽取一些数据,进而估计整体的解,由于是抽取的样本数据,因此是近似解。
样本越大,越接近真实值,也就是数学统计值,

!!!注意:蒙特卡洛法是个思路,不是算法,具体问题具体分析。

2.可以做的题型

概率模型:蒙特卡洛算法可以用于模拟复杂的概率模型。例如,在金融领域中,可以使用蒙特卡洛方法来模拟股票价格的随机演化,并进行风险估计和投资组合优化。
最优化问题:蒙特卡洛算法可以用于求解最优化问题。例如,在运筹学中,可以使用蒙特卡洛方法来求解旅行商问题、装箱问题等。
数值计算:蒙特卡洛算法在数值计算中很有用。例如,在微分方程的数值求解中,可以使用蒙特卡洛方法来模拟随机扰动,从而获得系统的稳定解。
随机模型:蒙特卡洛算法可以用于研究随机模型的性质和行为。例如,在生物学中,可以使用蒙特卡洛方法来模拟基因演化和遗传算法。
不确定性分析:蒙特卡洛算法可以用于分析模型的不确定性。例如,在环境科学中,可以使用蒙特卡洛方法来进行不确定性分析和灾害模拟。
等等。

3.实战

3.1求pi的值

在这里插入图片描述

import random #导入random生成随机数

#d定义一个估计pi的函数,传入形参num_saamples
def estimate_pi(num_samples):
    # 定义变量
    inside_circle = 0  #园内点数
    total = 0  #总点数


    #定义for循环,下划线表示在循环中未使用这个变量的值
    #正常for应该是for 变量 in xxx(范围):
    for _ in range(num_samples):
        #定义xy坐标,正方形面积为2*2=4
        x = random.uniform(-1, 1) #random随机函数
        y = random.uniform(-1, 1)

        #求距离
        distance = x ** 2 + y ** 2

        #判断
        if distance <= 1: #园内点
            inside_circle += 1 #园内加一
        total += 1 #循环一次,总点数加一

    pi_estimate = 4 * inside_circle / total #pi的估计值
    return pi_estimate  #这个函数返回的是pi的估计值

num_samples = 100000 #定义循环次数
pi = estimate_pi(num_samples) #求pi的估计值
print("Estimated value of pi:", pi) #打印pi的估计值

3.2求定积分x^2 的值

在这里插入图片描述

import random #导入random

def monte_carlo_integration(func, a, b, num_samples): #定义求取定积分的函数,传入形参func,a,b,numsamples
    total = 0.0 #定义浮点型变量
    for _ in range(num_samples):
        # 定义一个循环,只需要循环,不需要值,用c的话相当于
        #for(int i=0;i<=inum_samples;i++;)

        x = random.uniform(a, b) #产生一个【0,1】的数
        total += func(x)  #算函数值累计求和
    average = total / num_samples #求平均
    integral = average * (b - a) #算面积(积分值)
    return integral #返回积分值

def f(x): #定义一个函数,返回x^2的值
    return x**2

a = 0
b = 1
num_samples = 100000

integral = monte_carlo_integration(f, a, b, num_samples) #形参传入函数的名字,a,b,num_samples
print("The integral of f(x) = x^2 from", a, "to", b, "is approximately:", integral)

相关推荐

  1. 数学熵权

    2024-03-14 11:32:01       28 阅读
  2. 数学--灰色关联分析

    2024-03-14 11:32:01       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 11:32:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 11:32:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 11:32:01       82 阅读
  4. Python语言-面向对象

    2024-03-14 11:32:01       91 阅读

热门阅读

  1. 备战蓝桥之思维

    2024-03-14 11:32:01       45 阅读
  2. python自动爬取,保存并运行程序。

    2024-03-14 11:32:01       43 阅读
  3. Amazon Redshift

    2024-03-14 11:32:01       38 阅读
  4. Docker Commit提交

    2024-03-14 11:32:01       38 阅读
  5. Docker中 仓库的使用

    2024-03-14 11:32:01       40 阅读
  6. PyQt5 使用setStyleSheet设置控件的样式

    2024-03-14 11:32:01       32 阅读
  7. 在Windows电脑上跑linux用双系统、虚拟机还是WSL?

    2024-03-14 11:32:01       41 阅读
  8. vuex怎么防止数据刷新丢失?

    2024-03-14 11:32:01       42 阅读