内容简介
本书以Python为工具,系统介绍了建模与仿真的核心方法论及跨学科应用,旨在为读者构建从理论基础到实践操作的完整知识体系。作者通过循序渐进的章节设计,结合真实案例与代码实现,揭示了建模在科学工程领域的广泛应用潜力,同时强调对模型本质的理解与批判性思考。 本书从随机数生成、蒙特卡罗方法等基础工具切入,逐步延伸至隐马尔可夫模型(HMM)、耦合微分方程、ABM模型等复杂方法。每章以“理论-代码-应用”的结构展开介绍。它强调使用不同计算环境的算法思维能力,并提供了一些有趣的示例,包括莎士比亚文本生成HMM、电影数据库、病毒传播和国际象棋等。本书适合具备基础Python能力的读者阅读。
目录
目 录
译者序
前言
第1章 概述 1
第2章 随机数 3
2.1 随机的定义 3
2.2 复制随机序列 6
2.3 缩放与偏移 7
2.4 其他类型的随机数 7
2.5 高斯分布 9
2.6 确认随机性 10
2.7 本章小结 12
练习题 12
第3章 随机数的应用 13
3.1 纸牌游戏:战争 13
3.2 Python实现 14
3.3 改变游戏 19
3.3.1 一张A 19
3.3.2 四张A 20
3.4 本章小结 20
练习题 21
第4章 蒙特卡罗方法 22
4.1 随机向量 22
4.2 掷骰子 23
4.3 蒙特卡罗方法应用示例 24
4.3.1 水平线分隔 24
4.3.2 斜线分隔 25
4.3.3 积分 26
4.3.4 正方形 28
4.3.5 π值预估 29
4.4 超球体 30
4.5 合理抽样 31
4.6 估算星形面积 33
4.6.1 几何性质 34
4.6.2 理论比 36
4.6.3 使用蒙特卡罗方法估计
星形面积占比 38
4.7 非平均分布 41
4.8 本章小结 42
练习题 43
第5章 自组织建模 44
5.1 谢林模型 44
5.2 用Python建模 45
5.3 试验 48
5.4 修改算法 49
5.5 本章小结 52
练习题 52
第6章 隐马尔可夫模型 53
6.1 输出HMM 53
6.2 转换HMM 55
6.2.1 转换HMM的数据结构 56
6.2.2 构建转换HMM 58
6.3 循环HMM 61
6.4 注意事项 62
6.4.1 假设的数据 63
6.4.2 虚假字符串 63
6.4.3 递归概率 63
6.5 本章小结 64
练习题 64
第7章 起始密码子的识别 65
7.1 简要生物学背景 65
7.2 Python实现 66
7.2.1 数据 66
7.2.2 概率和对数几率 67
7.2.3 构建矩阵 68
7.2.4 一个查询 70
7.2.5 测试工作 70
7.3 本章小结 72
练习题 72
第8章 HMM在棒球中的应用 74
8.1 棒球就够了 74
8.2 棒球HMM 75
8.3 数据采集 76
8.4 统计事件 79
8.5 创建转换HMM 80
8.6 分析 82
8.6.1 用户选择的局 82
8.6.2 罕见的转换 83
8.6.3 不寻常的局 84
8.7 本章小结 85
练习题 85
第9章 隐莎士比亚模型 86
9.1 构建HMM 86
9.2 创造新的字符串 88
9.3 发现新莎士比亚 90
9.4 结构 92
9.5 Midsummer Madness 94
9.6 本章小结 95
练习题 95
第10章 关联的数据 97
10.1 电影数据库 97
10.2 Python查询 99
10.3 关联 102
10.4 Floyd-Warshall算法 105
10.4.1 B矩阵和P矩阵 105
10.4.2 创建G矩阵和P矩阵 107
10.4.3 用Python创建矩阵 109
10.4.4 查找最短路径 110
10.5 Floyd-Warshall在演员中的
应用 112
10.6 无法连接 114
10.7 本章小结 116
练习题 116
第11章 基因表达阵列 117
11.1 数据 118
11.2 阅读电子表格 119
11.3 协议 119
11.3.1 减去背景 119
11.3.2 比值和强度 120
11.3.3 M和A 121
11.3.4 LOWESS 122
11.4 多个文件 124
11.5 简单分析 126
11.6 本章小结 128
练习题 128
第12章 联立方程 130
12.1 线性代数方法 131
12.2 Python实现 131
12.3 计算的限制 133
12.3.1 矩阵求逆的精度 133
12.3.2 奇点 134
12.4 应用题 136
12.4.1 游乐场收费 136
12.4.2 交通流量 136
12.5 基尔霍夫定律的应用 137
12.5.1 基尔霍夫电流定律 138
12.5.2 基尔霍夫电压定律 138
12.5.3 创建方程 139
12.5.4 计算电流 141
12.6 本章小结 142
练习题 142
第13章 运动仿真 144
13.1 直线运动 144
13.2 汽车碰撞 145
13.3 加速运动 146
13.4 垂直方向的运动 148
13.4.1 向上运动 148
13.4.2 向下运动 149
13.4.3 向上和向下运动 150
13.5 抛体运动 150
13.6 能量 152
13.6.1 示例1 154
13.6.2 示例2 155
13.7 下落物体的瞄准点 158
13.7.1 定义变量 159
13.7.2 瞄准 159
13.7.3 彩弹射击速度 160
13.7.4 飞行时间
前言/序言
前 言
Python作为一种强大的计算工具,正在迅猛发展,它是一种易用的语言,它的工具库为它提供了高效而又广泛的用途。随着工具的不断扩展,用户可以创建富有洞察力的模型和仿真。
虽然这些工具提供了一种创建流水线的简单方法,但这种结构并不能保证提供正确的结果。通常,在构建一个仿真时,很多事情都可能出错,而且出错的方式可能很狡猾。
用户需要了解的不仅仅是如何构建进程流水线。例如,为什么要选择使用某些步骤?这些步骤完成了什么?每一步的限制是什么?仿真怎么不能提供正确的答案呢?
如果没有这些答案,仿真可能只是一种计算机练习,与现实没有关联。
本书通过理论、代码和应用介绍了建模和仿真的基础,先从简单的结构开始,然后引入一些现实中的应用。然而,现实比本书所讨论的情形更复杂,因此本书的模型和仿真仅展示了基础应用。
本书选取的主题旨在深入探讨建模的不同方面,例如,有些章节讨论连通性,有些章节讨论运动学,还有一些章节讨论基于规则的应用。但遗憾的是,本书不能涵盖建模和仿真的所有主题。
希望你能发现这本书是富有教育意义的、基础性的,并且在某些方面是有趣的。
关于软件
为本书编写的一些Python函数,多数都已在正文中提供,有些函数只展示了部分代码,因为有些代码是重复的。例如在国际象棋的章节中,其中一个函数有几行是专门为一个玩家写的,而另一个玩家也使用了几乎相同的几行代码,所以后者的这几行代码就被省略了,同时也说明了省略的内容。还有一些函数实现起来非常简单,就没有在书中进行展示。
书中所有的Python代码都已在Github上存档,目录中包含了为项目创建的Python脚本和数据文件,不包含从其他来源中检索的数据,数据所在位置如下所示:
https://github.com/jmkinser/ModSim411
Jason M. Kinser
于美国弗吉尼亚州乔治梅森大学费尔法克斯分校




















