商品详情
书名:程序员数学:用Python学透线性代数和微积分
定*:129.8
ISBN:9787**557649*
作者:*罗·奥兰德
版次:第1版
出版时间:202*-*2
内容提要:
代码和数学是相知相惜的好伙伴,它们基于共同的理性思维,数学公式的推导可以自然地在编写代码的过程中展开。本书带*程序员使用自己熟知的工具,*代码,来理解机器学习和游戏设计中的数学知识。通过Python代码和200多个小项目,读者将掌握二维向量、三维向量、矩阵变换、线性方程、微积分、线性回归、logistic回归、梯度下降等知识。
作者简介:
【作者简介】 *罗·奥兰德(Paul Orland) 硅谷*业公司Tachyus的联合*始人兼CEO,拥有耶鲁大学数学学士学位和华盛顿大学物理学硕士学位,曾任微软公司软件开发工程师,近*0年来*直*力于使用数学和函数式编程来*化能源生产。 【译者简介】 *度KFive KFive是*度App大前端团队,成员涵盖PC端和手机*度的大前端研发者。在业务支持之外,KFive研究的技术方向还*括前端基础架构、跨端开发、Node.js、端智能和前端智能化等,并且积累了丰富的产出。KFive的名称**来源于起初的办公地点在*度科技园五号楼,更体现了其对软件开发的理解,*“五Key”:Key*者,*益求*;Key2者,大巧*工;Key3者,*运匠心;Key4者,*炼千锤;Key5者,善始善*。
目录:
第 *章 通过代码学数学 *
*.* 使用数学和软件解决商业问题 2
*.*.* 预测金融市场走势 2
*.*.2 寻找*质交易 4
*.*.3 构建三维图形和动画 6
*.*.4 对物理*建模 8
*.2 如何*效学习数学 9
*.2.* Jane想学习数学 9
*.2.2 在数学课本中苦苦挣扎 *0
*.3 用上你训练有素的左脑 **
*.3.* 使用正式的语言 **
*.3.2 构建你自己的计算器 *2
*.3.3 用函数建立抽象概念 *3
*.4 小结 *4
第 **分 向量和图形
第 2章 二维向量绘图 *6
2.* 二维向量绘图 *6
2.*.* 如何表示二维向量 *8
2.*.2 用Python绘制二维图形 20
2.*.3 练习 23
2.2 平面向量运算 25
2.2.* 向量的分量和长度 28
2.2.2 向量与数相乘 29
2.2.3 减法、位移和距离 3*
2.2.4 练习 34
2.3 平面上的角度和三角学 4*
2.3.* 从角度到分量 42
2.3.2 Python中的三角学和弧度 46
2.3.3 从分量到角度 47
2.3.4 练习 50
2.4 向量集合的变换 57
2.4.* 组合向量变换 59
2.4.2 练习 60
2.5 用Matplotlib绘图 6*
2.6 小结 62
第3章 上*到三维* 63
3.* 在三维空间中绘制向量 64
3.*.* 用坐标表示三维向量 66
3.*.2 用Python进行三维绘图 66
3.*.3 练习 68
3.2 三维空间中的向量运算 70
3.2.* 添加三维向量 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.* 绘制点积 78
3.3.2 计算点积 80
3.3.3 点积的示例 82
3.3.4 用点积测量角度 83
3.3.5 练习 85
3.4 向量积:测量定向区域 88
3.4.* 在三维空间中确定自己的朝向 88
3.4.2 找到向量积的方向 89
3.4.3 求向量积的长度 9*
3.4.4 计算三维向量的向量积 92
3.4.5 练习 93
3.5 在二维平面上渲染三维对象 96
3.5.* 使用向量定义三维对象 97
3.5.2 二维投影 98
3.5.3 确定面的朝向和阴影 99
3.5.4 练习 *0*
3.6 小结 *02
第4章 变换向量和图形 *03
4.* 变换三维对象 *05
4.*.* 绘制变换后的对象 *05
4.*.2 组合向量变换 *07
4.*.3 绕轴旋转对象 **0
4.*.4 *造属于你自己的几何变换 **3
4.2 线性变换 **7
4.2.* 向量运算的*变性 **7
4.2.2 图解线性变换 **9
4.2.3 为什么要做线性变换 *2*
4.2.4 计算线性变换 *24
4.2.5 练习 *27
4.3 小结 *32
第5章 使用矩阵计算变换 *34
5.* 用矩阵表示线性变换 *35
5.*.* 把向量和线性变换写成矩阵形式 *35
5.*.2 矩阵与向量相乘 *36
5.*.3 用矩阵乘法组合线性变换 *38
5.*.4 实现矩阵乘法 *40
5.*.5 用矩阵变换表示三维动画 *4*
5.*.6 练习 *42
5.2 *同形状矩阵的含义 *48
5.2.* 列向量组成的矩阵 *49
5.2.2 哪些矩阵可以相乘 *5*
5.2.3 将方阵和非方阵视为向量函数 *52
5.2.4 从三维到二维的线性映射投影 *54
5.2.5 组合线性映射 *56
5.2.6 练习 *57
5.3 用矩阵平移向量 *63
5.3.* 线性化平面平移 *63
5.3.2 寻找做二维平移的三维矩阵 *67
5.3.4 在四维*里平移三维对象 *70
5.4 小结 *74
第6章 *维泛化 *76
6.* 泛化向量的定义 *77
6.*.* 为二维坐标向量*建*个类 *78
6.*.3 使用同样的方法定义三维向量 *79
6.*.4 构建向量基类 *80
6.*.5 定义向量空间 *82
6.*.6 对向量空间类进行单元测试 *85
6.2 探索*同的向量空间 *88
6.2.* 枚举所有坐标向量空间 *88
6.2.2 识别现实中的向量 *90
6.2.3 将函数作为向量处理 *92
6.2.4 将矩阵作为向量处理 *94
6.2.5 使用向量运算来操作图像 *95
6.2.6 练习 *98
6.3 寻找更小的向量空间 205
6.3.* 定义子空间 205
6.3.2 从单个向量开始 207
6.3.3 生成更大的空间 207
6.3.4 定义“维度”的概念 209
6.3.5 寻找函数向量空间的子空间 2*0
6.3.6 图像的子空间 2*2
6.3.7 练习 2*4
6.4 小结 220
第7章 求解线性方程组 222
7.* 设计*款街机游戏 223
7.*.* 游戏建模 223
7.*.2 渲染游戏 224
7.*.3 发射激光 225
7.*.4 练习 226
7.2 找到直线的交点 227
7.2.* 为直线选择正确的公式 227
7.2.2 直线的标准形式方程 229
7.2.3 线性方程组的矩阵形式 23*
7.2.4 使用NumPy求解线性方程组 233
7.2.6 识别*可解方程组 234
7.2.7 练习 236
7.3 将线性方程泛化到更*维度 240
7.3.* 在三维空间中表示平面 240
7.3.2 在三维空间中求解线性方程组 243
7.3.4 计算维数、方程和解 245
7.3.5 练习 246
7.4 通过解线性方程来改变向量的基 253
7.4.* 在三维空间中求解 255
7.4.2 练习 256
7.5 小结 257
第二*分 微积分和物理仿真
第8章 理解变化率 26*
8.* 根据体积计算平均流速 262
8.*.* 实现average_flow_rate函数 263
8.*.2 用割线描绘平均流速 264
8.*.3 负变化率 265
8.*.4 练习 266
8.2 绘制*间变化的平均流速 266
8.2.* 计算*同时间段内的平均流速 267
8.2.2 绘制间隔流速图 268
8.2.3 练习 270
8.3 瞬时流速的近似值 27*
8.3.* 计算小割线的斜率 272
8.3.2 构建瞬时流速函数 274
8.3.3 柯里化并绘制瞬时流速函数 277
8.4 体积变化的近似值 278
8.4.* 计算短时间间隔内的体积变化 279
8.4.2 将时间分割成更小的间隔 280
8.4.3 在流速图上绘制体积变化的图形 280
8.4.4 练习 283
8.5 绘制*间变化的体积图 283
8.5.* 计算*间变化的体积 283
8.5.2 绘制体积函数的黎曼和 285
8.5.3 提*近似结果的*确度 286
8.5.4 定积分和*定积分 288
8.6 小结 290
第9章 模拟运动的对象 29*
9.* 模拟匀速运动 29*
9.*.* 给小行星设置速度 292
9.*.2 更新游戏引擎,让小行星运动 292
9.*.3 *持小行星在屏幕上 293
9.*.4 练习 295
9.2 模拟加速 295
9.3 深入研究欧拉方法 296
9.3.* 手动计算欧拉方法 297
9.3.2 使用 Python 实现算法 298
9.4 用更小的时间步执行欧拉方法 300
9.5 小结 305
第 *0章 使用符号表达式 306
*0.* 用计算机代数系统计算*确的导数 309
*0.2.* 将表达式拆分成若干*分 3*0
*0.2.3 使用Python语言实现表达式树 3**
*0.2.4 练习 3*3
*0.3 符号表达式的应用 3*5
*0.3.* 寻找表达式中的所有变量 3*7
*0.3.3 表达式展开 3*9
*0.3.4 练习 32*
*0.4 求函数的导数 323
*0.4.* 幂的导数 324
*0.4.2 变换后函数的导数 324
*0.4.3 *些*殊函数的导数 326
*0.4.4 乘积与组合的导数 327
*0.4.5 练习 328
*0.5 自动计算导数 330
*0.5.* 实现表达式的导数方法 330
*0.5.2 实现乘积法则和链式法则 332
*0.5.4 练习 334
*0.6 符号化积分函数 335
*0.6.* 积分作为反导数 335
*0.6.2 SymPy库介绍 336
*0.6.3 练习 337
*0.7 小结 338
第 **章 模拟力场 339
**.* 用向量场对引力建模 339
**.2 引力场建模 342
**.2.* 定义*个向量场 343
**.2.2 定义*个简单的力场 344
**.3 把引力加入小行星游戏 345
**.3.* 让游戏中的对象感受到引力 346
**.3.2 练习 349
**.4 引入势能 350
**.4.* 定义势能标量场 35*
**.4.2 将标量场绘制成热图 352
**.4.3 将标量场绘制成等*线图 354
**.5.* 用横截面测量陡度 354
**.5.2 计算偏导数 356
**.5.3 用梯度求图形的陡度 357
**.5.4 用势能的梯度计算力场 359
**.5.5 练习 36*
**.6 小结 364
第 *2章 *化物理系统 365
*2.* 测试炮弹模拟器 367
*2.*.* 用欧拉方法建立模拟器 368
*2.*.2 测量弹道的属性 369
*2.*.3 探索*同的发射角度 370
*2.*.4 练习 37*
*2.2 计算最佳射程 373
*2.2.* 求炮弹射程关于发射角的函数 373
*2.2.2 求最大射程 376
*2.2.3 确定最大值和最小值 378
*2.2.4 练习 379
*2.3 增强模拟器 38*
*2.3.* 添加另*个维度 38*
*2.3.2 在炮弹周围建立地形模型 383
*2.3.4 练习 386
*2.4 利用梯度上**化范围 388
*2.4.* 绘制射程与发射参数的关系图 388
*2.4.2 射程函数的梯度 389
*2.4.3 利用梯度寻找上坡方向 390
*2.4.4 实现梯度上* 392
*2.4.5 练习 395
*2.5 小结 399
第 *3章 用傅里叶级数分析声波 400
*3.* 声波的组合和分解 40*
*3.2 用Python播放声波 402
*3.2.* 产生第 *个声音 402
*3.2.2 演奏音符 405
*3.2.3 练习 406
*3.3 把正弦波转化为声音 406
*3.3.* 用正弦函数制作音频 406
*3.3.2 改变正弦函数的频率 408
*3.3.3 对声波进行采样和播放 409
*3.3.4 练习 4**
*3.4 组合声波得到新的声波 4*2
*3.4.* 叠加声波的样本来构造和弦 4*2
*3.4.2 两个声波叠加后的图形 4*3
*3.4.3 构造正弦波的线性组合 4*4
*3.4.4 用正弦波构造*个熟悉的函数 4*6
*3.4.5 练习 4*9
*3.5 将声波分解为傅里叶级数 4*9
*3.5.* 用内积确定向量分量 420
*3.5.2 定义周期函数的内积 42*
*3.5.3 实现*个函数来计算傅里叶系数 423
*3.5.4 求方波的傅里叶系数 424
*3.5.5 其他波形的傅里叶系数 424
*3.5.6 练习 426
*3.6 小结 428
第三*分 机器学习的应用
第 *4章 数据的函数拟合 43*
*4.* 衡量函数的拟合质量 433
*4.*.* 计算数据与函数的距离 434
*4.*.2 计算误差的平方和 436
*4.*.3 计算汽车*格函数的代* 440
*4.2 探索函数空间 44*
*4.2.* 绘制通过原点的直线的代* 442
*4.2.2 所有线性函数的空间 443
*4.2.3 练习 445
*4.3 使用梯度下降法寻找最佳拟合线 445
*4.3.* 缩放数据 445
*4.3.2 找到并绘制最佳拟合线 446
*4.3.3 练习 447
*4.4 非线性函数拟合 448
*4.4.* 理解指数函数的行为 448
*4.4.2 寻找最佳拟合的指数函数 45*
*4.5 小结 453
第 *5章 使用logistic回归对数据分类 455
*5.* 用真实数据测试分类函数 456
*5.*.* 加载汽车数据 457
*5.*.2 测试分类函数 458
*5.*.3 练习 458
*5.2 绘制决策边界 460
*5.2.* 绘制汽车的向量空间 460
*5.2.2 绘制更好的决策边界 46*
*5.2.3 实现分类函数 462
*5.2.4 练习 463
*5.3 将分类问题构造为回归问题 464
*5.3.* 缩放原始汽车数据 464
*5.3.2 衡量汽车的“宝马性” 465
*5.3.3 sigmoid函数 467
*5.3.4 将sigmoid函数与其他函数组合 468
*5.3.5 练习 470
*5.4 探索可能的logistic函数 47*
*5.4.* 参数化logistic函数 472
*5.4.2 衡量logistic函数的拟合质量 472
*5.4.3 测试*同的logistic函数 474
*5.4.4 练习 475
*5.5 寻找最佳logistic函数 477
*5.5.* 三维中的梯度下降法 477
*5.5.2 使用梯度下降法寻找最佳拟合 478
*5.5.3 测试和理解最佳logistic分类器 479
*5.5.4 练习 48*
*5.6 小结 483
第 *6章 训练*经网络 484
*6.* 用*经网络对数据进行分类 485
*6.2 手写数字图像分类 486
*6.2.* 构建64维图像向量 487
*6.2.2 构建随机数字分类器 488
*6.2.3 测试数字分类器的表现 489
*6.2.4 练习 490
*6.3 设计*经网络 49*
*6.3.* 组织*经元和连接 492
*6.3.2 *经网络数据流 492
*6.3.3 计算激活值 495
*6.3.4 用矩阵表示法计算激活值 498
*6.4 用Python构建*经网络 499
*6.4.* 用Python实现MLP类 500
*6.4.2 评估MLP 502
*6.4.3 测试MLP的分类效果 503
*6.4.4 练习 504
*6.5 使用梯度下降法训练*经网络 504
*6.5.* 将训练构造为最小化问题 505
*6.5.3 使用scikit-learn自动训练 507
*6.6 使用反向传播计算梯度 509
*6.6.* 根据最后*层的权重计算代* 509
*6.6.2 利用链式法则计算最后*层权重的偏导数 5*0
*6.6.3 练习 5*2
*6.7 小结 5*3
附录A 准备Python(图灵社区下载)
附录B Python技巧和窍门(图灵社区下载)
附录C 使用OpenGL和PyGame加载和渲染三维模型(图灵社区下载)
附录D 数学符号参考(图灵社区下载)
- 人民邮电出版社有限公司 (微信公众号认证)
- 人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...