当前位置: 首页 > news >正文

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

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

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

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

马尔科夫链是描述随机过程的一种数学模型,其核心特征是无记忆性
简单来说,系统在某一时刻的状态只取决于当前状态,而与之前的状态无关。

 

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

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

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

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

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] = 1continue# 正常转移状态# 动量调整得分概率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)

http://www.lryc.cn/news/502364.html

相关文章:

  • 23种设计模式之状态模式
  • Elasticsearch Serverless 中的数据流自动分片
  • YOLOv10改进,YOLOv10添加U-Netv2分割网络中SDI信息融合模块+GSConv卷积,助力小目标
  • xshell连接虚拟机,更换网络模式:NAT->桥接模式
  • sql的where条件中使用case when
  • MacOS 上以源码形式安装 MySQL 5.7
  • MySQL 事务隔离级别详解
  • C语言——高精度问题
  • aippt:AI 智能生成 PPT 的开源项目
  • 【Qt之·类QSettings·参数保存】
  • location重定向和nginx代理
  • iptables详解
  • Edge SCDN深度解析,边缘安全加速的创新实践
  • solidworks常见问题已解决
  • vCenter开启HA报错
  • 在 Ubuntu 中 make 是否是系统自带的?怎么样查看Linux系统中是否有make?
  • js:我要在template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写
  • 前端使用 Cursor 的最佳助手 - PromptCoder
  • 深入了解 Spring IOC,AOP 两大核心思想
  • QT从入门到精通——Qlabel介绍与使用
  • 华为HarmonyOS NEXT 原生应用开发:鸿蒙中组件的组件状态管理、组件通信 组件状态管理小案例(好友录)!
  • node.js 环境配置
  • 高并发数据采集场景下Nginx代理Netty服务的优化配置
  • 【C++算法】40.模拟_N 字形变换
  • 【云计算】虚拟化技术
  • 手机租赁系统开发指南一站式服务流程解析
  • 【机器学习】—时序数据分析:机器学习与深度学习在预测、金融、气象等领域的应用
  • OBS + SRS:打造专业级直播环境的入门指南
  • 收银系统源码-会员管理
  • MongoDB深化与微软的合作,新增人工智能和数据分析集成和微软 Azure Arc支持