程序员数学 用Python学透线性代数和微积分
全新正版 极速发货
¥
83.44
6.4折
¥
129.8
全新
库存40件
作者(美)保罗·奥兰德 著 百度KFive 译
出版社人民邮电出版社
ISBN9787115576491
出版时间2021-12
装帧平装
开本16开
定价129.8元
货号1202548394
上书时间2024-11-16
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
【作者简介】
保罗·奥兰德(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.1Jane想学习数学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.2Python中的三角学和弧度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.2SymPy库介绍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.3sigmoid函数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评估MLP502
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(图灵社区下载)
附录BPython技巧和窍门(图灵社区下载)
附录C使用OpenGL和PyGame加载和渲染三维模型(图灵社区下载)
附录D数学符号参考(图灵社区下载)
内容摘要
代码和数学是相知相惜的好伙伴,它们基于共同的理性思维,数学公式的推导可以自然地在编写代码的过程中展开。本书带领程序员使用自己熟知的工具,即代码,来理解机器学习和游戏设计中的数学知识。通过Python代码和200多个小项目,读者将掌握二维向量、三维向量、矩阵变换、线性方程、微积分、线性回归、logistic回归、梯度下降等知识。
主编推荐
1.500余幅图片,本书以图文结合的方式帮助你用Python代码解决程序设计中的数学问题。
2.300余个练习,通过边学边练,你会发现线性代数和微积分的重要概念跃然纸上、印在脑中。
3.提供配套源代码和本书彩色图片下载。
数学拥有无穷的力量。它既帮助游戏开发工程师建模物理世界,也帮助量化金融分析师赚取利润,还帮助音频处理工程师制作音乐。在数据科学和机器学习领域,数学知识更是不可或缺的。
有人热爱数学,将它比作诗歌,为之着迷一生;有人很难领会数学的妙处,受困于“数学焦虑症”。本书正是为了帮助程序员消除这种焦虑,用自己熟悉的工具,即代码,重新发现数学之美。
√ 向量几何和计算机图形
√ 矩阵和线性变换
√ 微积分的核心概念
√ 仿真和优化
√ 图像处理和音频处理
√ 用于回归和分类的机器学习算法
“这本书循序渐进地介绍了程序员应该掌握的有用的数学概念。”
——Christopher Haupt,Swoogo公司工程副总裁
“这本书严谨而简明地概述了对现代编程起支撑作用的数学知识。”
——Dan Sheikh,BCG Digital Ventures公司工程师
“实用、引人入胜。推荐所有程序员阅读。”
——Vincent Zhu,RethinkXSocial网站联合创始人兼CTO
“这本书为需要提高数学技能的程序员建造了一座桥梁,使数学不再那么神秘、那么难以理解。”
——Robert Walsh,Excalibur Solutions公司总裁
— 没有更多了 —
以下为对购买帮助不大的评价