万本电子书0元读

万本电子书0元读

顶部广告

程序员数学:用Python学透线性代数和微积分电子书

1.500余幅图片,本书以图文结合的方式帮助你用Python代码解决程序设计中的数学问题。 2.300余个练习,通过边学边练,你会发现线性代数和微积分的重要概念跃然纸上、印在脑中。 3.提供配套源代码和本书彩色图片下载。 数学拥有无穷的力量。它既帮助游戏发工程师建模物理世界,也帮助量化金融分析师赚取利润,还帮助音频处理工程师制作音乐。在数据科学和机器学习领域,数学知识更是不可或缺的。

售       价:¥

纸质售价:¥58.50购买纸书

637人正在读 | 0人评论 6.7

作       者:保罗·奥兰德(Paul Orland) 著

出  版  社:人民邮电出版社有限公司

出版时间:2021-12-01

字       数:39.0万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
代码和数学是相知相惜的好伙伴,它们基于共同的理性思维,数学公式的推导可以自然地在编写代码的过程中展。本书带领程序员使用自己熟知的工具,即代码,来理解机器学习和游戏设计中的数学知识。通过Python代码和200多个小项目,读者将掌握二维向量、三维向量、矩阵变换、线性方程、微积分、线性回归、logistic回归、梯度下降等知识。<br/>【推荐语】<br/>1.500余幅图片,本书以图文结合的方式帮助你用Python代码解决程序设计中的数学问题。 2.300余个练习,通过边学边练,你会发现线性代数和微积分的重要概念跃然纸上、印在脑中。 3.提供配套源代码和本书彩色图片下载。 数学拥有无穷的力量。它既帮助游戏发工程师建模物理世界,也帮助量化金融分析师赚取利润,还帮助音频处理工程师制作音乐。在数据科学和机器学习领域,数学知识更是不可或缺的。 有人热爱数学,将它比作诗歌,为之着迷一生;有人很难领会数学的妙处,受困于“数学焦虑症”。本书正是为了帮助程序员消除这种焦虑,用自己熟悉的工具,即代码,重新发现数学之美。 √ 向量几何和计算机图形 √ 矩阵和线性变换 √ 微积分的核心概念 √ 仿真和优化 √ 图像处理和音频处理 √ 用于回归和分类的机器学习算法 “这本书循序渐地介绍了程序员应该掌握的有用的数学概念。” ——Christopher Haupt,Swoogo公司工程副总裁 “这本书严谨而简明地概述了对现代编程起支撑作用的数学知识。” ——Dan Sheikh,BCG Digital Ventures公司工程师 “实用、引人胜。推荐所有程序员阅读。” ——Vincent Zhu,RethinkXSocial网站联合创始人兼CTO “这本书为需要提高数学技能的程序员建造了一座桥梁,使数学不再那么神秘、那么难以理解。” ——Robert Walsh,Excalibur Solutions公司总裁<br/>【作者】<br/>【作者简介】 保罗·奥兰德(Paul Orland) 硅谷创业公司Tachyus的联合创始人兼CEO,拥有耶鲁大学数学学士学位和华盛顿大学物理学硕士学位,曾任微软公司软件发工程师,近10年来一直致力于使用数学和函数式编程来优化能源生产。 【译者简介】 百度KFive KFive是百度App大前端团队,成员涵盖PC端和手机百度的大前端研发者。在业务支持之外,KFive研究的技术方向还包括前端基础架构、跨端发、Node.js、端智能和前端智能化等,并且积累了丰富的产出。KFive的名称不仅来源于起初的办公地在百度科技园五号楼,更体现了其对软件发的理解,即“五Key”:Key1者,精益求精;Key2者,大巧不工;Key3者,独运匠心;Key4者,百炼千锤;Key5者,善始善终。<br/>
目录展开

版权声明

献词

译者序

前言

本书的构思过程

本书涵盖的数学思想

更多信息

致谢

关于本书

读者对象

本书结构

关于代码

在线论坛

关于封面

第 1 章 通过代码学数学

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

1.1.1 预测金融市场走势

1.1.2 寻找优质交易

1.1.3 构建三维图形和动画

1.1.4 对物理世界建模

1.2 如何高效学习数学

1.2.1 Jane想学习数学

1.2.2 在数学课本中苦苦挣扎

1.3 用上你训练有素的左脑

1.3.1 使用正式的语言

1.3.2 构建你自己的计算器

1.3.3 用函数建立抽象概念

1.4 小结

第一部分 向量和图形

第 2 章 二维向量绘图

2.1 二维向量绘图

2.1.1 如何表示二维向量

2.1.2 用Python绘制二维图形

2.1.3 练习

2.2 平面向量运算

2.2.1 向量的分量和长度

2.2.2 向量与数相乘

2.2.3 减法、位移和距离

2.2.4 练习

2.3 平面上的角度和三角学

2.3.1 从角度到分量

2.3.2 Python中的三角学和弧度

2.3.3 从分量到角度

2.3.4 练习

2.4 向量集合的变换

2.4.1 组合向量变换

2.4.2 练习

2.5 用Matplotlib绘图

2.6 小结

第 3 章 上升到三维世界

3.1 在三维空间中绘制向量

3.1.1 用坐标表示三维向量

3.1.2 用Python进行三维绘图

3.1.3 练习

3.2 三维空间中的向量运算

3.2.1 添加三维向量

3.2.2 三维空间中的标量乘法

3.2.3 三维向量减法

3.2.4 计算长度和距离

3.2.5 计算角度和方向

3.2.6 练习

3.3 点积:测量向量对齐

3.3.1 绘制点积

3.3.2 计算点积

3.3.3 点积的示例

3.3.4 用点积测量角度

3.3.5 练习

3.4 向量积:测量定向区域

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

3.4.2 找到向量积的方向

3.4.3 求向量积的长度

3.4.4 计算三维向量的向量积

3.4.5 练习

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

3.5.1 使用向量定义三维对象

3.5.2 二维投影

3.5.3 确定面的朝向和阴影

3.5.4 练习

3.6 小结

第 4 章 变换向量和图形

4.1 变换三维对象

4.1.1 绘制变换后的对象

4.1.2 组合向量变换

4.1.3 绕轴旋转对象

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

4.1.5 练习

4.2 线性变换

4.2.1 向量运算的不变性

4.2.2 图解线性变换

4.2.3 为什么要做线性变换

4.2.4 计算线性变换

4.2.5 练习

4.3 小结

第 5 章 使用矩阵计算变换

5.1 用矩阵表示线性变换

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

5.1.2 矩阵与向量相乘

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

5.1.4 实现矩阵乘法

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

5.1.6 练习

5.2 不同形状矩阵的含义

5.2.1 列向量组成的矩阵

5.2.2 哪些矩阵可以相乘

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

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

5.2.5 组合线性映射

5.2.6 练习

5.3 用矩阵平移向量

5.3.1 线性化平面平移

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

5.3.3 组合平移和其他线性变换

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

5.3.5 练习

5.4 小结

第 6 章 高维泛化

6.1 泛化向量的定义

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

6.1.2 升级Vec2类

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

6.1.4 构建向量基类

6.1.5 定义向量空间

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

6.1.7 练习

6.2 探索不同的向量空间

6.2.1 枚举所有坐标向量空间

6.2.2 识别现实中的向量

6.2.3 将函数作为向量处理

6.2.4 将矩阵作为向量处理

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

6.2.6 练习

6.3 寻找更小的向量空间

6.3.1 定义子空间

6.3.2 从单个向量开始

6.3.3 生成更大的空间

6.3.4 定义“维度”的概念

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

6.3.6 图像的子空间

6.3.7 练习

6.4 小结

第 7 章 求解线性方程组

7.1 设计一款街机游戏

7.1.1 游戏建模

7.1.2 渲染游戏

7.1.3 发射激光

7.1.4 练习

7.2 找到直线的交点

7.2.1 为直线选择正确的公式

7.2.2 直线的标准形式方程

7.2.3 线性方程组的矩阵形式

7.2.4 使用NumPy求解线性方程组

7.2.5 确定激光是否击中小行星

7.2.6 识别不可解方程组

7.2.7 练习

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

7.3.1 在三维空间中表示平面

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

7.3.3 用代数方法研究超平面

7.3.4 计算维数、方程和解

7.3.5 练习

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

7.4.1 在三维空间中求解

7.4.2 练习

7.5 小结

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

第 8 章 理解变化率

8.1 根据体积计算平均流速

8.1.1 实现average_flow_rate函数

8.1.2 用割线描绘平均流速

8.1.3 负变化率

8.1.4 练习

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

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

8.2.2 绘制间隔流速图

8.2.3 练习

8.3 瞬时流速的近似值

8.3.1 计算小割线的斜率

8.3.2 构建瞬时流速函数

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

8.3.4 练习

8.4 体积变化的近似值

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

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

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

8.4.4 练习

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

8.5.1 计算随时间变化的体积

8.5.2 绘制体积函数的黎曼和

8.5.3 提升近似结果的精确度

8.5.4 定积分和不定积分

8.6 小结

第 9 章 模拟运动的对象

9.1 模拟匀速运动

9.1.1 给小行星设置速度

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

9.1.3 保持小行星在屏幕上

9.1.4 练习

9.2 模拟加速

使飞船加速

9.3 深入研究欧拉方法

9.3.1 手动计算欧拉方法

9.3.2 使用Python实现算法

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

练习

9.5 小结

第 10 章 使用符号表达式

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

在Python中进行符号代数运算

10.2 代数表达式建模

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

10.2.2 构建表达式树

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

10.2.4 练习

10.3 符号表达式的应用

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

10.3.2 计算表达式的值

10.3.3 表达式展开

10.3.4 练习

10.4 求函数的导数

10.4.1 幂的导数

10.4.2 变换后函数的导数

10.4.3 一些特殊函数的导数

10.4.4 乘积与组合的导数

10.4.5 练习

10.5 自动计算导数

10.5.1 实现表达式的导数方法

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

10.5.3 实现幂法则

10.5.4 练习

10.6 符号化积分函数

10.6.1 积分作为反导数

10.6.2 SymPy库介绍

10.6.3 练习

10.7 小结

第 11 章 模拟力场

11.1 用向量场对引力建模

用势能函数对引力建模

11.2 引力场建模

11.2.1 定义一个向量场

11.2.2 定义一个简单的力场

11.3 把引力加入小行星游戏

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

11.3.2 练习

11.4 引入势能

11.4.1 定义势能标量场

11.4.2 将标量场绘制成热图

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

11.5 用梯度连接能量和力

11.5.1 用横截面测量陡度

11.5.2 计算偏导数

11.5.3 用梯度求图形的陡度

11.5.4 用势能的梯度计算力场

11.5.5 练习

11.6 小结

第 12 章 优化物理系统

12.1 测试炮弹模拟器

12.1.1 用欧拉方法建立模拟器

12.1.2 测量弹道的属性

12.1.3 探索不同的发射角度

12.1.4 练习

12.2 计算最佳射程

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

12.2.2 求最大射程

12.2.3 确定最大值和最小值

12.2.4 练习

12.3 增强模拟器

12.3.1 添加另一个维度

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

12.3.3 在三维空间中求炮弹的射程

12.3.4 练习

12.4 利用梯度上升优化范围

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

12.4.2 射程函数的梯度

12.4.3 利用梯度寻找上坡方向

12.4.4 实现梯度上升

12.4.5 练习

12.5 小结

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

13.1 声波的组合和分解

13.2 用Python播放声波

13.2.1 产生第一个声音

13.2.2 演奏音符

13.2.3 练习

13.3 把正弦波转化为声音

13.3.1 用正弦函数制作音频

13.3.2 改变正弦函数的频率

13.3.3 对声波进行采样和播放

13.3.4 练习

13.4 组合声波得到新的声波

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

13.4.2 两个声波叠加后的图形

13.4.3 构造正弦波的线性组合

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

13.4.5 练习

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

13.5.1 用内积确定向量分量

13.5.2 定义周期函数的内积

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

13.5.4 求方波的傅里叶系数

13.5.5 其他波形的傅里叶系数

13.5.6 练习

13.6 小结

第三部分 机器学习的应用

第 14 章 数据的函数拟合

14.1 衡量函数的拟合质量

14.1.1 计算数据与函数的距离

14.1.2 计算误差的平方和

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

14.1.4 练习

14.2 探索函数空间

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

14.2.2 所有线性函数的空间

14.2.3 练习

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

14.3.1 缩放数据

14.3.2 找到并绘制最佳拟合线

14.3.3 练习

14.4 非线性函数拟合

14.4.1 理解指数函数的行为

14.4.2 寻找最佳拟合的指数函数

14.4.3 练习

14.5 小结

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

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

15.1.1 加载汽车数据

15.1.2 测试分类函数

15.1.3 练习

15.2 绘制决策边界

15.2.1 绘制汽车的向量空间

15.2.2 绘制更好的决策边界

15.2.3 实现分类函数

15.2.4 练习

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

15.3.1 缩放原始汽车数据

15.3.2 衡量汽车的“宝马性”

15.3.3 sigmoid函数

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

15.3.5 练习

15.4 探索可能的logistic函数

15.4.1 参数化logistic函数

15.4.2 衡量logistic函数的拟合质量

15.4.3 测试不同的logistic函数

15.4.4 练习

15.5 寻找最佳logistic函数

15.5.1 三维中的梯度下降法

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

15.5.3 测试和理解最佳logistic分类器

15.5.4 练习

15.6 小结

第 16 章 训练神经网络

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

16.2 手写数字图像分类

16.2.1 构建64维图像向量

16.2.2 构建随机数字分类器

16.2.3 测试数字分类器的表现

16.2.4 练习

16.3 设计神经网络

16.3.1 组织神经元和连接

16.3.2 神经网络数据流

16.3.3 计算激活值

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

16.3.5 练习

16.4 用Python构建神经网络

16.4.1 用Python实现MLP类

16.4.2 评估MLP

16.4.3 测试MLP的分类效果

16.4.4 练习

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

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

16.5.2 使用反向传播计算梯度

16.5.3 使用scikit-learn自动训练

16.5.4 练习

16.6 使用反向传播计算梯度

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

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

16.6.3 练习

16.7 小结

附录 A 准备Python

A.1 检查现有Python安装

A.2 下载并安装Anaconda

A.3 在交互模式下使用Python

A.3.1 创建和运行Python脚本文件

A.3.2 使用Jupyter Notebook

附录 B Python技巧和窍门

B.1 Python中的数和数学

B.1.1 math模块

B.1.2 随机数

B.2 Python中的数据集合类

B.2.1 列表

B.2.2 其他迭代

B.2.3 生成器

B.2.4 元组

B.2.5 集合

B.2.6 NumPy数组

B.2.7 字典

B.2.8 有用的集合类函数

B.3 使用函数

B.3.1 给函数更多输入

B.3.2 关键字参数

B.3.3 作为数据的函数

B.3.4 lambda表达式:匿名函数

B.3.5 对NumPy数组应用函数

B.4 用Matplotlib绘制数据

B.4.1 绘制散点图

B.4.2 绘制折线图

B.4.3 更多自定义功能

B.5 Python中的面向对象编程

B.5.1 定义类

B.5.2 定义方法

B.5.3 特殊方法

B.5.4 运算符重载

B.5.5 类方法

B.5.6 继承和抽象类

附录 C 使用OpenGL和PyGame加载和渲染三维模型

C.1 重现第3章中的八面体

C.2 变换视角

C.3 加载和渲染犹他茶壶

C.4 练习

附录 D 数学符号参考

作者简介

看完了

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部