2024美赛数学建模C题:网球比赛中的动量,用马尔可夫链求解!详细分析

文末获取历年美赛数学建模论文,交流思路模型

接下来讲解马尔可夫链在2024年C题中的运用

1. 马尔科夫链的基本原理

马尔科夫链 是描述随机过程的一种数学模型,其核心特征是无记忆性

简单来说,系统在某一时刻的状态只取决于当前状态,而与之前的状态无关。

3. 为什么选择马尔科夫链分析网球比赛?

网球比赛中,每次得分可以视为一个随机事件,其得分结果由当前比赛状态决定:

  • 无记忆性:下一分的得分结果不依赖于之前的比分序列。
  • 有限状态:比赛的得分范围有限(如 (0,0)(0,0)(0,0) 到 (4,4)(4,4)(4,4))。
  • 动态变化:每次得分改变比分状态,符合状态转移的特征。

因此,马尔科夫链是分析比赛动量效应及胜率分布的理想工具。

python 复制代码
import numpy as np

# 定义基本参数
max_points = 4  # 一局比赛获胜需要的分数
p_A = 0.6  # 球员A基本得分概率
p_B = 0.4  # 球员B基本得分概率
momentum_factor = 0.1  # 动量因子

# 状态总数:得分从 (0, 0) 到 (max_points, max_points)
num_states = (max_points + 1) * (max_points + 1)

# 初始化转移矩阵
P = np.zeros((num_states, num_states))

# 定义状态索引函数
def state_index(a, b):
    return a * (max_points + 1) + b

# 构建转移矩阵
for a in range(max_points + 1):
    for b in range(max_points + 1):
        current_state = state_index(a, b)
        
        # 检查吸收状态
        if a == max_points or b == max_points:
            P[current_state, current_state] = 1
            continue
        
        # 正常转移状态
        # 动量调整得分概率
        prob_A = p_A + (momentum_factor if a > b else 0)
        prob_B = p_B + (momentum_factor if b > a else 0)
        prob_A, prob_B = prob_A / (prob_A + prob_B), prob_B / (prob_A + prob_B)
        
        # A得分
        next_state_A = state_index(a + 1, b)
        P[current_state, next_state_A] = prob_A
        
        # B得分
        next_state_B = state_index(a, b + 1)
        P[current_state, next_state_B] = prob_B

# 初始状态分布
initial_state = np.zeros(num_states)
initial_state[state_index(0, 0)] = 1

# 模拟比赛
steps = 50
state_distribution = initial_state
for _ in range(steps):
    state_distribution = np.dot(state_distribution, P)

# 提取最终吸收状态的概率
absorption_probabilities = state_distribution.reshape((max_points + 1, max_points + 1))
print("吸收状态概率分布:")
print(absorption_probabilities)
相关推荐
BB学长4 小时前
Icepak|01功能介绍
算法·数学建模·能源·微信公众平台
Cathy Bryant4 小时前
傅里叶变换(二):旋转楼梯
笔记·算法·数学建模·信息与通信·傅里叶分析
ECT-OS-JiuHuaShan1 天前
麻烦是第一推动力,不厌其烦就是负熵流
开发语言·人工智能·数学建模·学习方法·量子计算
TTGGGFF1 天前
MATLAB仿真:从理论到实操的控制系统建模实验
开发语言·数学建模·matlab
Cathy Bryant2 天前
傅里叶变换(一):简介
笔记·算法·数学建模·信息与通信·傅里叶分析
您好啊数模君2 天前
数学建模优秀论文算法-蚁群算法
数学建模·蚁群算法
nnerddboy3 天前
美赛备战:数学建模中的微分方程问题2.Python代码实现
数学建模
老歌老听老掉牙3 天前
符号计算中的表达式等价性验证:数学等价性与计算简化策略分析
python·数学建模·sympy
老歌老听老掉牙3 天前
砂轮轮廓的数学建模与可视化分析
python·数学建模·sympy·砂轮
88号技师3 天前
2025年10月一区SCI-中心碰撞优化算法Centered Collision Optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法