程序员数学 用Python学透线性代数和微积分

程序员数学 用Python学透线性代数和微积分
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Paul Orland)
2021-12
版次: 1
ISBN: 9787115576491
定价: 129.80
装帧: 平装
开本: 其他
纸张: 胶版纸
页数: 513页
字数: 862千字
77人买过
  • 代码和数学是相知相惜的好伙伴,它们基于共同的理性思维,数学公式的推导可以自然地在编写代码的过程中展开。本书带领程序员使用自己熟知的工具,即代码,来理解机器学习和游戏设计中的数学知识。通过Python代码和200多个小项目,读者将掌握二维向量、三维向量、矩阵变换、线性方程、微积分、线性回归、logistic回归、梯度下降等知识。 【作者简介】

    保罗·奥兰德(Paul Orland)

    硅谷创业公司Tachyus的联合创始人兼CEO,拥有耶鲁大学数学学士学位和华盛顿大学物理学硕士学位,曾任微软公司软件开发工程师,近10年来一直致力于使用数学和函数式编程来优化能源生产。

    【译者简介】

    百度KFive

    KFive是百度App大前端团队,成员涵盖PC端和手机百度的大前端研发者。在业务支持之外,KFive研究的技术方向还包括前端基础架构、跨端开发、Node.js、端智能和前端智能化等,并且积累了丰富的产出。KFive的名称不仅来源于起初的办公地点在百度科技园五号楼,更体现了其对软件开发的理解,即“五Key”:Key1者,精益求精;Key2者,大巧不工;Key3者,独运匠心;Key4者,百炼千锤;Key5者,善始善终。 第 1章 通过代码学数学  1

    1.1 使用数学和软件解决商业问题 2

    1.1.1 预测金融市场走势 2

    1.1.2 寻找优质交易 4

    1.1.3 构建三维图形和动画 6

    1.1.4 对物理世界建模 8

    1.2 如何高效学习数学 9

    1.2.1 Jane想学习数学 9

    1.2.2 在数学课本中苦苦挣扎 10

    1.3 用上你训练有素的左脑 11

    1.3.1 使用正式的语言 11

    1.3.2 构建你自己的计算器 12

    1.3.3 用函数建立抽象概念 13

    1.4 小结 14

    第 一部分 向量和图形

    第 2章 二维向量绘图 16

    2.1 二维向量绘图 16

    2.1.1 如何表示二维向量 18

    2.1.2 用Python绘制二维图形 20

    2.1.3 练习 23

    2.2 平面向量运算 25

    2.2.1 向量的分量和长度 28

    2.2.2 向量与数相乘 29

    2.2.3 减法、位移和距离 31

    2.2.4 练习 34

    2.3 平面上的角度和三角学 41

    2.3.1 从角度到分量 42

    2.3.2 Python中的三角学和弧度 46

    2.3.3 从分量到角度 47

    2.3.4 练习 50

    2.4 向量集合的变换 57

    2.4.1 组合向量变换 59

    2.4.2 练习 60

    2.5 用Matplotlib绘图 61

    2.6 小结 62

    第3章 上升到三维世界 63

    3.1 在三维空间中绘制向量 64

    3.1.1 用坐标表示三维向量 66

    3.1.2 用Python进行三维绘图 66

    3.1.3 练习 68

    3.2 三维空间中的向量运算 70

    3.2.1 添加三维向量 70

    3.2.2 三维空间中的标量乘法 72

    3.2.3 三维向量减法 72

    3.2.4 计算长度和距离 73

    3.2.5 计算角度和方向 74

    3.2.6 练习 75

    3.3 点积:测量向量对齐 78

    3.3.1 绘制点积 78

    3.3.2 计算点积 80

    3.3.3 点积的示例 82

    3.3.4 用点积测量角度 83

    3.3.5 练习 85

    3.4 向量积:测量定向区域 88

    3.4.1 在三维空间中确定自己的朝向 88

    3.4.2 找到向量积的方向 89

    3.4.3 求向量积的长度 91

    3.4.4 计算三维向量的向量积 92

    3.4.5 练习 93

    3.5 在二维平面上渲染三维对象 96

    3.5.1 使用向量定义三维对象 97

    3.5.2 二维投影 98

    3.5.3 确定面的朝向和阴影 99

    3.5.4 练习 101

    3.6 小结 102

    第4章 变换向量和图形 103

    4.1 变换三维对象 105

    4.1.1 绘制变换后的对象 105

    4.1.2 组合向量变换 107

    4.1.3 绕轴旋转对象 110

    4.1.4 创造属于你自己的几何变换 113

    4.2 线性变换 117

    4.2.1 向量运算的不变性 117

    4.2.2 图解线性变换 119

    4.2.3 为什么要做线性变换 121

    4.2.4 计算线性变换 124

    4.2.5 练习 127

    4.3 小结 132

    第5章 使用矩阵计算变换 134

    5.1 用矩阵表示线性变换 135

    5.1.1 把向量和线性变换写成矩阵形式 135

    5.1.2 矩阵与向量相乘 136

    5.1.3 用矩阵乘法组合线性变换 138

    5.1.4 实现矩阵乘法 140

    5.1.5 用矩阵变换表示三维动画 141

    5.1.6 练习 142

    5.2 不同形状矩阵的含义 148

    5.2.1 列向量组成的矩阵 149

    5.2.2 哪些矩阵可以相乘 151

    5.2.3 将方阵和非方阵视为向量函数 152

    5.2.4 从三维到二维的线性映射投影 154

    5.2.5 组合线性映射 156

    5.2.6 练习 157

    5.3 用矩阵平移向量 163

    5.3.1 线性化平面平移 163

    5.3.2 寻找做二维平移的三维矩阵 167

    5.3.4 在四维世界里平移三维对象 170

    5.4 小结 174

    第6章 高维泛化 176

    6.1 泛化向量的定义 177

    6.1.1 为二维坐标向量创建一个类 178

    6.1.3 使用同样的方法定义三维向量 179

    6.1.4 构建向量基类 180

    6.1.5 定义向量空间 182

    6.1.6 对向量空间类进行单元测试 185

    6.2 探索不同的向量空间 188

    6.2.1 枚举所有坐标向量空间 188

    6.2.2 识别现实中的向量 190

    6.2.3 将函数作为向量处理 192

    6.2.4 将矩阵作为向量处理 194

    6.2.5 使用向量运算来操作图像 195

    6.2.6 练习 198

    6.3 寻找更小的向量空间 205

    6.3.1 定义子空间 205

    6.3.2 从单个向量开始 207

    6.3.3 生成更大的空间 207

    6.3.4 定义“维度”的概念 209

    6.3.5 寻找函数向量空间的子空间 210

    6.3.6 图像的子空间 212

    6.3.7 练习 214

    6.4 小结 220

    第7章 求解线性方程组 222

    7.1 设计一款街机游戏 223

    7.1.1 游戏建模 223

    7.1.2 渲染游戏 224

    7.1.3 发射激光 225

    7.1.4 练习 226

    7.2 找到直线的交点 227

    7.2.1 为直线选择正确的公式 227

    7.2.2 直线的标准形式方程 229

    7.2.3 线性方程组的矩阵形式 231

    7.2.4 使用NumPy求解线性方程组 233

    7.2.6 识别不可解方程组 234

    7.2.7 练习 236

    7.3 将线性方程泛化到更高维度 240

    7.3.1 在三维空间中表示平面 240

    7.3.2 在三维空间中求解线性方程组 243

    7.3.4 计算维数、方程和解 245

    7.3.5 练习 246

    7.4 通过解线性方程来改变向量的基 253

    7.4.1 在三维空间中求解 255

    7.4.2 练习 256

    7.5 小结 257

    第二部分 微积分和物理仿真

    第8章 理解变化率 261

    8.1 根据体积计算平均流速 262

    8.1.1 实现average_flow_rate函数 263

    8.1.2 用割线描绘平均流速 264

    8.1.3 负变化率 265

    8.1.4 练习 266

    8.2 绘制随时间变化的平均流速 266

    8.2.1 计算不同时间段内的平均流速 267

    8.2.2 绘制间隔流速图 268

    8.2.3 练习 270

    8.3 瞬时流速的近似值 271

    8.3.1 计算小割线的斜率 272

    8.3.2 构建瞬时流速函数 274

    8.3.3 柯里化并绘制瞬时流速函数 277

    8.4 体积变化的近似值 278

    8.4.1 计算短时间间隔内的体积变化 279

    8.4.2 将时间分割成更小的间隔 280

    8.4.3 在流速图上绘制体积变化的图形 280

    8.4.4 练习 283

    8.5 绘制随时间变化的体积图 283

    8.5.1 计算随时间变化的体积 283

    8.5.2 绘制体积函数的黎曼和 285

    8.5.3 提升近似结果的精确度 286

    8.5.4 定积分和不定积分 288

    8.6 小结 290

    第9章 模拟运动的对象 291

    9.1 模拟匀速运动 291

    9.1.1 给小行星设置速度 292

    9.1.2 更新游戏引擎,让小行星运动 292

    9.1.3 保持小行星在屏幕上 293

    9.1.4 练习 295

    9.2 模拟加速 295

    9.3 深入研究欧拉方法 296

    9.3.1 手动计算欧拉方法 297

    9.3.2 使用 Python 实现算法 298

    9.4 用更小的时间步执行欧拉方法 300

    9.5 小结 305

    第 10章 使用符号表达式 306

    10.1 用计算机代数系统计算精确的导数 309

    10.2.1 将表达式拆分成若干部分 310

    10.2.3 使用Python语言实现表达式树 311

    10.2.4 练习 313

    10.3 符号表达式的应用 315

    10.3.1 寻找表达式中的所有变量 317

    10.3.3 表达式展开 319

    10.3.4 练习 321

    10.4 求函数的导数 323

    10.4.1 幂的导数 324

    10.4.2 变换后函数的导数 324

    10.4.3 一些特殊函数的导数 326

    10.4.4 乘积与组合的导数 327

    10.4.5 练习 328

    10.5 自动计算导数 330

    10.5.1 实现表达式的导数方法 330

    10.5.2 实现乘积法则和链式法则 332

    10.5.4 练习 334

    10.6 符号化积分函数 335

    10.6.1 积分作为反导数 335

    10.6.2 SymPy库介绍 336

    10.6.3 练习 337

    10.7 小结 338

    第 11章 模拟力场 339

    11.1 用向量场对引力建模 339

    11.2 引力场建模 342

    11.2.1 定义一个向量场 343

    11.2.2 定义一个简单的力场 344

    11.3 把引力加入小行星游戏 345

    11.3.1 让游戏中的对象感受到引力 346

    11.3.2 练习 349

    11.4 引入势能 350

    11.4.1 定义势能标量场 351

    11.4.2 将标量场绘制成热图 352

    11.4.3 将标量场绘制成等高线图 354

    11.5.1 用横截面测量陡度 354

    11.5.2 计算偏导数 356

    11.5.3 用梯度求图形的陡度 357

    11.5.4 用势能的梯度计算力场 359

    11.5.5 练习 361

    11.6 小结 364

    第 12章 优化物理系统 365

    12.1 测试炮弹模拟器 367

    12.1.1 用欧拉方法建立模拟器 368

    12.1.2 测量弹道的属性 369

    12.1.3 探索不同的发射角度 370

    12.1.4 练习 371

    12.2 计算射程 373

    12.2.1 求炮弹射程关于发射角的函数 373

    12.2.2 求射程 376

    12.2.3 确定值和小值 378

    12.2.4 练习 379

    12.3 增强模拟器 381

    12.3.1 添加另一个维度 381

    12.3.2 在炮弹周围建立地形模型 383

    12.3.4 练习 386

    12.4 利用梯度上升优化范围 388

    12.4.1 绘制射程与发射参数的关系图 388

    12.4.2 射程函数的梯度 389

    12.4.3 利用梯度寻找上坡方向 390

    12.4.4 实现梯度上升 392

    12.4.5 练习 395

    12.5 小结 399

    第 13章 用傅里叶级数分析声波 400

    13.1 声波的组合和分解 401

    13.2 用Python播放声波 402

    13.2.1 产生第 一个声音 402

    13.2.2 演奏音符 405

    13.2.3 练习 406

    13.3 把正弦波转化为声音 406

    13.3.1 用正弦函数制作音频 406

    13.3.2 改变正弦函数的频率 408

    13.3.3 对声波进行采样和播放 409

    13.3.4 练习 411

    13.4 组合声波得到新的声波 412

    13.4.1 叠加声波的样本来构造和弦 412

    13.4.2 两个声波叠加后的图形 413

    13.4.3 构造正弦波的线性组合 414

    13.4.4 用正弦波构造一个熟悉的函数 416

    13.4.5 练习 419

    13.5 将声波分解为傅里叶级数 419

    13.5.1 用内积确定向量分量 420

    13.5.2 定义周期函数的内积 421

    13.5.3 实现一个函数来计算傅里叶系数 423

    13.5.4 求方波的傅里叶系数 424

    13.5.5 其他波形的傅里叶系数 424

    13.5.6 练习 426

    13.6 小结 428

    第三部分 机器学习的应用

    第 14章 数据的函数拟合 431

    14.1 衡量函数的拟合质量 433

    14.1.1 计算数据与函数的距离 434

    14.1.2 计算误差的平方和 436

    14.1.3 计算汽车价格函数的代价 440

    14.2 探索函数空间 441

    14.2.1 绘制通过原点的直线的代价 442

    14.2.2 所有线性函数的空间 443

    14.2.3 练习 445

    14.3 使用梯度下降法寻找拟合线 445

    14.3.1 缩放数据 445

    14.3.2 找到并绘制拟合线 446

    14.3.3 练习 447

    14.4 非线性函数拟合 448

    14.4.1 理解指数函数的行为 448

    14.4.2 寻找拟合的指数函数 451

    14.5 小结 453

    第 15章 使用logistic回归对数据分类 455

    15.1 用真实数据测试分类函数 456

    15.1.1 加载汽车数据 457

    15.1.2 测试分类函数 458

    15.1.3 练习 458

    15.2 绘制决策边界 460

    15.2.1 绘制汽车的向量空间 460

    15.2.2 绘制更好的决策边界 461

    15.2.3 实现分类函数 462

    15.2.4 练习 463

    15.3 将分类问题构造为回归问题 464

    15.3.1 缩放原始汽车数据 464

    15.3.2 衡量汽车的“宝马性” 465

    15.3.3 sigmoid函数 467

    15.3.4 将sigmoid函数与其他函数组合 468

    15.3.5 练习 470

    15.4 探索可能的logistic函数 471

    15.4.1 参数化logistic函数 472

    15.4.2 衡量logistic函数的拟合质量 472

    15.4.3 测试不同的logistic函数 474

    15.4.4 练习 475

    15.5 寻找logistic函数 477

    15.5.1 三维中的梯度下降法 477

    15.5.2 使用梯度下降法寻找拟合 478

    15.5.3 测试和理解logistic分类器 479

    15.5.4 练习 481

    15.6 小结 483

    第 16章 训练神经网络 484

    16.1 用神经网络对数据进行分类 485

    16.2 手写数字图像分类 486

    16.2.1 构建64维图像向量 487

    16.2.2 构建随机数字分类器 488

    16.2.3 测试数字分类器的表现 489

    16.2.4 练习 490

    16.3 设计神经网络 491

    16.3.1 组织神经元和连接 492

    16.3.2 神经网络数据流 492

    16.3.3 计算激活值 495

    16.3.4 用矩阵表示法计算激活值 498

    16.4 用Python构建神经网络 499

    16.4.1 用Python实现MLP类 500

    16.4.2 评估MLP 502

    16.4.3 测试MLP的分类效果 503

    16.4.4 练习 504

    16.5 使用梯度下降法训练神经网络 504

    16.5.1 将训练构造为小化问题 505

    16.5.3 使用scikit-learn自动训练 507

    16.6 使用反向传播计算梯度 509

    16.6.1 根据后一层的权重计算代价 509

    16.6.2 利用链式法则计算后一层权重的偏导数 510

    16.6.3 练习 512

    16.7 小结 513

    附录A 准备Python(图灵社区下载)

    附录B Python技巧和窍门(图灵社区下载)

    附录C 使用OpenGL和PyGame加载和渲染三维模型(图灵社区下载)

    附录D 数学符号参考(图灵社区下载)
  • 内容简介:
    代码和数学是相知相惜的好伙伴,它们基于共同的理性思维,数学公式的推导可以自然地在编写代码的过程中展开。本书带领程序员使用自己熟知的工具,即代码,来理解机器学习和游戏设计中的数学知识。通过Python代码和200多个小项目,读者将掌握二维向量、三维向量、矩阵变换、线性方程、微积分、线性回归、logistic回归、梯度下降等知识。
  • 作者简介:
    【作者简介】

    保罗·奥兰德(Paul Orland)

    硅谷创业公司Tachyus的联合创始人兼CEO,拥有耶鲁大学数学学士学位和华盛顿大学物理学硕士学位,曾任微软公司软件开发工程师,近10年来一直致力于使用数学和函数式编程来优化能源生产。

    【译者简介】

    百度KFive

    KFive是百度App大前端团队,成员涵盖PC端和手机百度的大前端研发者。在业务支持之外,KFive研究的技术方向还包括前端基础架构、跨端开发、Node.js、端智能和前端智能化等,并且积累了丰富的产出。KFive的名称不仅来源于起初的办公地点在百度科技园五号楼,更体现了其对软件开发的理解,即“五Key”:Key1者,精益求精;Key2者,大巧不工;Key3者,独运匠心;Key4者,百炼千锤;Key5者,善始善终。
  • 目录:
    第 1章 通过代码学数学  1

    1.1 使用数学和软件解决商业问题 2

    1.1.1 预测金融市场走势 2

    1.1.2 寻找优质交易 4

    1.1.3 构建三维图形和动画 6

    1.1.4 对物理世界建模 8

    1.2 如何高效学习数学 9

    1.2.1 Jane想学习数学 9

    1.2.2 在数学课本中苦苦挣扎 10

    1.3 用上你训练有素的左脑 11

    1.3.1 使用正式的语言 11

    1.3.2 构建你自己的计算器 12

    1.3.3 用函数建立抽象概念 13

    1.4 小结 14

    第 一部分 向量和图形

    第 2章 二维向量绘图 16

    2.1 二维向量绘图 16

    2.1.1 如何表示二维向量 18

    2.1.2 用Python绘制二维图形 20

    2.1.3 练习 23

    2.2 平面向量运算 25

    2.2.1 向量的分量和长度 28

    2.2.2 向量与数相乘 29

    2.2.3 减法、位移和距离 31

    2.2.4 练习 34

    2.3 平面上的角度和三角学 41

    2.3.1 从角度到分量 42

    2.3.2 Python中的三角学和弧度 46

    2.3.3 从分量到角度 47

    2.3.4 练习 50

    2.4 向量集合的变换 57

    2.4.1 组合向量变换 59

    2.4.2 练习 60

    2.5 用Matplotlib绘图 61

    2.6 小结 62

    第3章 上升到三维世界 63

    3.1 在三维空间中绘制向量 64

    3.1.1 用坐标表示三维向量 66

    3.1.2 用Python进行三维绘图 66

    3.1.3 练习 68

    3.2 三维空间中的向量运算 70

    3.2.1 添加三维向量 70

    3.2.2 三维空间中的标量乘法 72

    3.2.3 三维向量减法 72

    3.2.4 计算长度和距离 73

    3.2.5 计算角度和方向 74

    3.2.6 练习 75

    3.3 点积:测量向量对齐 78

    3.3.1 绘制点积 78

    3.3.2 计算点积 80

    3.3.3 点积的示例 82

    3.3.4 用点积测量角度 83

    3.3.5 练习 85

    3.4 向量积:测量定向区域 88

    3.4.1 在三维空间中确定自己的朝向 88

    3.4.2 找到向量积的方向 89

    3.4.3 求向量积的长度 91

    3.4.4 计算三维向量的向量积 92

    3.4.5 练习 93

    3.5 在二维平面上渲染三维对象 96

    3.5.1 使用向量定义三维对象 97

    3.5.2 二维投影 98

    3.5.3 确定面的朝向和阴影 99

    3.5.4 练习 101

    3.6 小结 102

    第4章 变换向量和图形 103

    4.1 变换三维对象 105

    4.1.1 绘制变换后的对象 105

    4.1.2 组合向量变换 107

    4.1.3 绕轴旋转对象 110

    4.1.4 创造属于你自己的几何变换 113

    4.2 线性变换 117

    4.2.1 向量运算的不变性 117

    4.2.2 图解线性变换 119

    4.2.3 为什么要做线性变换 121

    4.2.4 计算线性变换 124

    4.2.5 练习 127

    4.3 小结 132

    第5章 使用矩阵计算变换 134

    5.1 用矩阵表示线性变换 135

    5.1.1 把向量和线性变换写成矩阵形式 135

    5.1.2 矩阵与向量相乘 136

    5.1.3 用矩阵乘法组合线性变换 138

    5.1.4 实现矩阵乘法 140

    5.1.5 用矩阵变换表示三维动画 141

    5.1.6 练习 142

    5.2 不同形状矩阵的含义 148

    5.2.1 列向量组成的矩阵 149

    5.2.2 哪些矩阵可以相乘 151

    5.2.3 将方阵和非方阵视为向量函数 152

    5.2.4 从三维到二维的线性映射投影 154

    5.2.5 组合线性映射 156

    5.2.6 练习 157

    5.3 用矩阵平移向量 163

    5.3.1 线性化平面平移 163

    5.3.2 寻找做二维平移的三维矩阵 167

    5.3.4 在四维世界里平移三维对象 170

    5.4 小结 174

    第6章 高维泛化 176

    6.1 泛化向量的定义 177

    6.1.1 为二维坐标向量创建一个类 178

    6.1.3 使用同样的方法定义三维向量 179

    6.1.4 构建向量基类 180

    6.1.5 定义向量空间 182

    6.1.6 对向量空间类进行单元测试 185

    6.2 探索不同的向量空间 188

    6.2.1 枚举所有坐标向量空间 188

    6.2.2 识别现实中的向量 190

    6.2.3 将函数作为向量处理 192

    6.2.4 将矩阵作为向量处理 194

    6.2.5 使用向量运算来操作图像 195

    6.2.6 练习 198

    6.3 寻找更小的向量空间 205

    6.3.1 定义子空间 205

    6.3.2 从单个向量开始 207

    6.3.3 生成更大的空间 207

    6.3.4 定义“维度”的概念 209

    6.3.5 寻找函数向量空间的子空间 210

    6.3.6 图像的子空间 212

    6.3.7 练习 214

    6.4 小结 220

    第7章 求解线性方程组 222

    7.1 设计一款街机游戏 223

    7.1.1 游戏建模 223

    7.1.2 渲染游戏 224

    7.1.3 发射激光 225

    7.1.4 练习 226

    7.2 找到直线的交点 227

    7.2.1 为直线选择正确的公式 227

    7.2.2 直线的标准形式方程 229

    7.2.3 线性方程组的矩阵形式 231

    7.2.4 使用NumPy求解线性方程组 233

    7.2.6 识别不可解方程组 234

    7.2.7 练习 236

    7.3 将线性方程泛化到更高维度 240

    7.3.1 在三维空间中表示平面 240

    7.3.2 在三维空间中求解线性方程组 243

    7.3.4 计算维数、方程和解 245

    7.3.5 练习 246

    7.4 通过解线性方程来改变向量的基 253

    7.4.1 在三维空间中求解 255

    7.4.2 练习 256

    7.5 小结 257

    第二部分 微积分和物理仿真

    第8章 理解变化率 261

    8.1 根据体积计算平均流速 262

    8.1.1 实现average_flow_rate函数 263

    8.1.2 用割线描绘平均流速 264

    8.1.3 负变化率 265

    8.1.4 练习 266

    8.2 绘制随时间变化的平均流速 266

    8.2.1 计算不同时间段内的平均流速 267

    8.2.2 绘制间隔流速图 268

    8.2.3 练习 270

    8.3 瞬时流速的近似值 271

    8.3.1 计算小割线的斜率 272

    8.3.2 构建瞬时流速函数 274

    8.3.3 柯里化并绘制瞬时流速函数 277

    8.4 体积变化的近似值 278

    8.4.1 计算短时间间隔内的体积变化 279

    8.4.2 将时间分割成更小的间隔 280

    8.4.3 在流速图上绘制体积变化的图形 280

    8.4.4 练习 283

    8.5 绘制随时间变化的体积图 283

    8.5.1 计算随时间变化的体积 283

    8.5.2 绘制体积函数的黎曼和 285

    8.5.3 提升近似结果的精确度 286

    8.5.4 定积分和不定积分 288

    8.6 小结 290

    第9章 模拟运动的对象 291

    9.1 模拟匀速运动 291

    9.1.1 给小行星设置速度 292

    9.1.2 更新游戏引擎,让小行星运动 292

    9.1.3 保持小行星在屏幕上 293

    9.1.4 练习 295

    9.2 模拟加速 295

    9.3 深入研究欧拉方法 296

    9.3.1 手动计算欧拉方法 297

    9.3.2 使用 Python 实现算法 298

    9.4 用更小的时间步执行欧拉方法 300

    9.5 小结 305

    第 10章 使用符号表达式 306

    10.1 用计算机代数系统计算精确的导数 309

    10.2.1 将表达式拆分成若干部分 310

    10.2.3 使用Python语言实现表达式树 311

    10.2.4 练习 313

    10.3 符号表达式的应用 315

    10.3.1 寻找表达式中的所有变量 317

    10.3.3 表达式展开 319

    10.3.4 练习 321

    10.4 求函数的导数 323

    10.4.1 幂的导数 324

    10.4.2 变换后函数的导数 324

    10.4.3 一些特殊函数的导数 326

    10.4.4 乘积与组合的导数 327

    10.4.5 练习 328

    10.5 自动计算导数 330

    10.5.1 实现表达式的导数方法 330

    10.5.2 实现乘积法则和链式法则 332

    10.5.4 练习 334

    10.6 符号化积分函数 335

    10.6.1 积分作为反导数 335

    10.6.2 SymPy库介绍 336

    10.6.3 练习 337

    10.7 小结 338

    第 11章 模拟力场 339

    11.1 用向量场对引力建模 339

    11.2 引力场建模 342

    11.2.1 定义一个向量场 343

    11.2.2 定义一个简单的力场 344

    11.3 把引力加入小行星游戏 345

    11.3.1 让游戏中的对象感受到引力 346

    11.3.2 练习 349

    11.4 引入势能 350

    11.4.1 定义势能标量场 351

    11.4.2 将标量场绘制成热图 352

    11.4.3 将标量场绘制成等高线图 354

    11.5.1 用横截面测量陡度 354

    11.5.2 计算偏导数 356

    11.5.3 用梯度求图形的陡度 357

    11.5.4 用势能的梯度计算力场 359

    11.5.5 练习 361

    11.6 小结 364

    第 12章 优化物理系统 365

    12.1 测试炮弹模拟器 367

    12.1.1 用欧拉方法建立模拟器 368

    12.1.2 测量弹道的属性 369

    12.1.3 探索不同的发射角度 370

    12.1.4 练习 371

    12.2 计算射程 373

    12.2.1 求炮弹射程关于发射角的函数 373

    12.2.2 求射程 376

    12.2.3 确定值和小值 378

    12.2.4 练习 379

    12.3 增强模拟器 381

    12.3.1 添加另一个维度 381

    12.3.2 在炮弹周围建立地形模型 383

    12.3.4 练习 386

    12.4 利用梯度上升优化范围 388

    12.4.1 绘制射程与发射参数的关系图 388

    12.4.2 射程函数的梯度 389

    12.4.3 利用梯度寻找上坡方向 390

    12.4.4 实现梯度上升 392

    12.4.5 练习 395

    12.5 小结 399

    第 13章 用傅里叶级数分析声波 400

    13.1 声波的组合和分解 401

    13.2 用Python播放声波 402

    13.2.1 产生第 一个声音 402

    13.2.2 演奏音符 405

    13.2.3 练习 406

    13.3 把正弦波转化为声音 406

    13.3.1 用正弦函数制作音频 406

    13.3.2 改变正弦函数的频率 408

    13.3.3 对声波进行采样和播放 409

    13.3.4 练习 411

    13.4 组合声波得到新的声波 412

    13.4.1 叠加声波的样本来构造和弦 412

    13.4.2 两个声波叠加后的图形 413

    13.4.3 构造正弦波的线性组合 414

    13.4.4 用正弦波构造一个熟悉的函数 416

    13.4.5 练习 419

    13.5 将声波分解为傅里叶级数 419

    13.5.1 用内积确定向量分量 420

    13.5.2 定义周期函数的内积 421

    13.5.3 实现一个函数来计算傅里叶系数 423

    13.5.4 求方波的傅里叶系数 424

    13.5.5 其他波形的傅里叶系数 424

    13.5.6 练习 426

    13.6 小结 428

    第三部分 机器学习的应用

    第 14章 数据的函数拟合 431

    14.1 衡量函数的拟合质量 433

    14.1.1 计算数据与函数的距离 434

    14.1.2 计算误差的平方和 436

    14.1.3 计算汽车价格函数的代价 440

    14.2 探索函数空间 441

    14.2.1 绘制通过原点的直线的代价 442

    14.2.2 所有线性函数的空间 443

    14.2.3 练习 445

    14.3 使用梯度下降法寻找拟合线 445

    14.3.1 缩放数据 445

    14.3.2 找到并绘制拟合线 446

    14.3.3 练习 447

    14.4 非线性函数拟合 448

    14.4.1 理解指数函数的行为 448

    14.4.2 寻找拟合的指数函数 451

    14.5 小结 453

    第 15章 使用logistic回归对数据分类 455

    15.1 用真实数据测试分类函数 456

    15.1.1 加载汽车数据 457

    15.1.2 测试分类函数 458

    15.1.3 练习 458

    15.2 绘制决策边界 460

    15.2.1 绘制汽车的向量空间 460

    15.2.2 绘制更好的决策边界 461

    15.2.3 实现分类函数 462

    15.2.4 练习 463

    15.3 将分类问题构造为回归问题 464

    15.3.1 缩放原始汽车数据 464

    15.3.2 衡量汽车的“宝马性” 465

    15.3.3 sigmoid函数 467

    15.3.4 将sigmoid函数与其他函数组合 468

    15.3.5 练习 470

    15.4 探索可能的logistic函数 471

    15.4.1 参数化logistic函数 472

    15.4.2 衡量logistic函数的拟合质量 472

    15.4.3 测试不同的logistic函数 474

    15.4.4 练习 475

    15.5 寻找logistic函数 477

    15.5.1 三维中的梯度下降法 477

    15.5.2 使用梯度下降法寻找拟合 478

    15.5.3 测试和理解logistic分类器 479

    15.5.4 练习 481

    15.6 小结 483

    第 16章 训练神经网络 484

    16.1 用神经网络对数据进行分类 485

    16.2 手写数字图像分类 486

    16.2.1 构建64维图像向量 487

    16.2.2 构建随机数字分类器 488

    16.2.3 测试数字分类器的表现 489

    16.2.4 练习 490

    16.3 设计神经网络 491

    16.3.1 组织神经元和连接 492

    16.3.2 神经网络数据流 492

    16.3.3 计算激活值 495

    16.3.4 用矩阵表示法计算激活值 498

    16.4 用Python构建神经网络 499

    16.4.1 用Python实现MLP类 500

    16.4.2 评估MLP 502

    16.4.3 测试MLP的分类效果 503

    16.4.4 练习 504

    16.5 使用梯度下降法训练神经网络 504

    16.5.1 将训练构造为小化问题 505

    16.5.3 使用scikit-learn自动训练 507

    16.6 使用反向传播计算梯度 509

    16.6.1 根据后一层的权重计算代价 509

    16.6.2 利用链式法则计算后一层权重的偏导数 510

    16.6.3 练习 512

    16.7 小结 513

    附录A 准备Python(图灵社区下载)

    附录B Python技巧和窍门(图灵社区下载)

    附录C 使用OpenGL和PyGame加载和渲染三维模型(图灵社区下载)

    附录D 数学符号参考(图灵社区下载)
查看详情
12
相关图书 / 更多
程序员数学 用Python学透线性代数和微积分
程序员超强大脑
[荷兰]费莉安·赫尔曼斯(Felienne Hermans)
程序员数学 用Python学透线性代数和微积分
程序员考前突破:考点精讲、真题精解、难点精练
詹宏锋 李锋 许纪贤 编著
程序员数学 用Python学透线性代数和微积分
程序员的README
[美]克里斯·里科米尼(Chris Riccomini) (美) 德米特里·里
程序员数学 用Python学透线性代数和微积分
程序员的制胜技
[土耳其]塞达特·卡帕诺格鲁(Sedat Kapanoglu)
程序员数学 用Python学透线性代数和微积分
程序设计基础(C语言)(第3版)
刘明军 袁宁 张玲 蒋彦 赵亚欧 编著;潘玉奇 主编;蔺永政
程序员数学 用Python学透线性代数和微积分
程序设计基础(Python语言)(微课视频版)
陈守森;刘衍琦;邵燕;张言上;任爱华
程序员数学 用Python学透线性代数和微积分
程序设计算法基础
于瑞国 主编;赵满坤 副主编;喻梅;李雪威
程序员数学 用Python学透线性代数和微积分
程序员的算法趣题2
[日]增井敏克
程序员数学 用Python学透线性代数和微积分
程序性能优化理论与方法
韩林;高伟
程序员数学 用Python学透线性代数和微积分
程序设计基础实验和学习指导(C语言)(微课版)
苏小红 张羽 袁永峰 李东
程序员数学 用Python学透线性代数和微积分
程序设计基础(C语言)习题集与实验指导(第3版)
蒋彦 袁宁 张玲 赵亚欧 编著;潘玉奇 主编;蔺永政
程序员数学 用Python学透线性代数和微积分
程序设计基础(C语言)教程
刘媛媛;雷莉霞;胡平
您可能感兴趣 / 更多
程序员数学 用Python学透线性代数和微积分
归属感:如何通过社群获得商业竞争优势
[美]大卫·斯平克斯(David Spinks) 著;颉腾文化 出品
程序员数学 用Python学透线性代数和微积分
《世界上最大的肚子》2024百班千人暑期书目学前中班名师推荐全新正版现货速发
[美]雷米·查利普(美)柏顿·萨普瑞
程序员数学 用Python学透线性代数和微积分
经济学通义
[美]阿门·A.阿尔钦 (美)威廉·R.艾伦 著;[美]杰里·L.乔丹 编
程序员数学 用Python学透线性代数和微积分
数字化领导力 数字化转型锦囊,领导力精进指南 一本书掌握数字化转型领导力之道
[美]艾萨克·萨科里克 著;王磊 译;颉腾文化 出品;邓斌
程序员数学 用Python学透线性代数和微积分
法哲学基本原理
[美]马克·C.墨菲
程序员数学 用Python学透线性代数和微积分
雪花的故事(用照片展示雪花的秘密,为你揭开冬日奇景的奥秘)
[美]马克·卡西诺[美]乔恩·尼尔森
程序员数学 用Python学透线性代数和微积分
杜甫传
[美]弗洛伦斯.艾思柯
程序员数学 用Python学透线性代数和微积分
神奇的数字零:从数字0开始的极简数学史和人类发展史
[美]查尔斯·塞弗(Charles Seife)著 杨杨立汝 译
程序员数学 用Python学透线性代数和微积分
美利坚在燃烧:20世纪60年代以来的警察暴力与黑人反抗
[美]伊丽莎白·欣顿 著 胡位钧 译
程序员数学 用Python学透线性代数和微积分
温柔亲启
[美]艾米莉·狄金森 著;[美]艾伦·路易斯·哈特、[美]玛莎·内尔·史密斯 编
程序员数学 用Python学透线性代数和微积分
儒教中国及其现代命运(三部曲)
[美]列文森 作者;[中]季剑青 译者
程序员数学 用Python学透线性代数和微积分
逃家小兔成长绘本系列
[美]玛格丽特.怀兹.布朗