python学成需要多久(程序员数学:用Python学透线性代数和微积分)

wufei123 发布于 2024-09-27 阅读(1)

[遇见数学 李想]:如果你是一名程序员,但对数学知识感到困惑;又或是随已掌握了足够的数学,不过对编程语言是门外汉,想要熟练应用Python的话,那么Paul Orland的《程序员数学:用Python学透线性代数和微积分》是非常值得一读的。

全书使用Python代码和300多个练习,带你逐步掌握二维向量、三维向量、矩阵变换、线性方程、微积分、线性回归、逻辑回归、梯度下降等数学概念,并应用到机器学习和游戏设计中图灵另一本Peter Harrington所著《机器学习实战》也是以Python核心编程实例的实践书籍,推荐!

本书的特色在于,它将数学知识与程序设计结合起来,通过代码来讲解数学概念,让我们可以边学边练,更加深入地理解数学的应用无论是编程初学者还是有一定数学基础的程序员,都能够从中受益此外,本书还采用图文结合的方式,让数学概念更加生动形象。

Christopher Haupt,Swoogo公司工程副总裁评价这本书循序渐进地介绍了程序员应该掌握的有用的数学概念Dan Sheikh,BCG Digital Ventures公司工程师则认为本书严谨而简明地概述了对现代编程起支撑作用的数学知识。

Vincent Zhu,RethinkXSocial网站联合创始人兼CTO推荐所有程序员阅读,而Robert Walsh,Excalibur Solutions公司总裁认为,本书为需要提高数学技能的程序员建造了一座桥梁,使数学不再那么神秘、那么难以理解。

因此,我推荐Paul Orland的这本好书,希望更多朋友能够从中受益第 1 章 通过代码学数学数学就像棒球、诗歌或者美酒一些人为之着迷,以至于为它奉献终生;另一些人却难以领会其妙处接受过十余年的数学教育,你应该已经属于这两个阵营之一了。

如果我们在学校里像学习数学一样学习关于美酒的知识呢?要是一周五天、每天听一小时的葡萄品类和发酵技术课程,我想我绝不会喜欢葡萄酒也许在这样的世界里,我需要按照老师布置的作业每天喝上三四杯这种体验听起来很美妙,但有时我可能并不愿意在放学后喝得醉醺醺的。

我在数学课上的经历就是这样,这让我一度对这门学科望而却步学习数学就像品葡萄酒一样,是后天才能培养的爱好,但是天天听课和写作业没办法让你长出一根善于品尝美酒的舌头判断自己是否具有学习数学的天赋似乎很容易如果你相信自己,并且对开始学习数学感到兴奋,那就太好了!如果你不那么乐观,那么本章就是为你设计的。

被数学吓退的现象很普遍,它有一个名字:数学焦虑症我希望能消除你可能有的任何焦虑,并告诉你学习数学可以是一场激动人心的经历,并不可怕你需要的只是合适的工具和端正的态度本书的主要学习工具是 Python 编程语言。

我猜你在高中学习时,数学知识是写在黑板上而不是计算机代码里的这真是太可惜了,因为高级编程语言远比黑板或任何昂贵的计算器更强大、用途更多用代码学习数学的一个好处是,设计必须精确,以便计算机理解,而且永远不会让新符号产生歧义。

就像学习其他东西一样,成功的关键是你有学习的动机动机多种多样:你可能被数学概念的美感所吸引,或者喜欢数学问题那种像“脑筋急转弯”一样的感觉,抑或有一个梦寐以求的应用程序或游戏,需要写一些数学相关的代码来使它工作。

现在,我将专注于一种更实际的动机——用软件解决数学问题可以赚很多钱1.1  使用数学和软件解决商业问题经常有人诟病高中数学课:“我什么时候才能在现实生活中用到这些知识?”老师告诉我们,数学会帮助我们在事业上取得成功并赚钱。

我觉得他们说得没错,尽管举的例子并不准确例如,我不会手动计算银行复利(银行也不会)也许,如果我像三角学老师建议的那样成为建筑工地的测量员,就会每天用正弦公式和余弦公式来赚取工资看起来高中课本里所谓的“实际”应用并没那么有用,但是对数学的真实应用还是有的,而且有些应用带来的商业利润令人瞠目结舌。

许多问题是通过将正确的数学思想转化为可用的软件来解决的这里将分享一些我最喜欢的例子1.1.1  预测金融市场走势我们都听说过股票交易员通 确的时间买入和卖出正确的股票而赚取数百万美元的传奇故事受所看电影的影响,我总是把他们想象成穿着西装的中年男子,一边开着跑车,一边用手机对着经纪人大喊大叫。

也许这种刻板印象在某一时期是正确的,但今天的情况已经不同了在曼哈顿的摩天大楼里,隐藏着成千上万被称为量化金融分析师(quant)的人量化金融分析师又称定量分析师,负责设计数学算法来自动交易股票并赚取利润。

他们不穿西装,也不花时间对着手机大喊大叫,但我相信他们中的很多人拥有非常漂亮的跑车那么,量化金融分析师是如何写出自动赚钱的程序的呢?这个问题的最佳答案是被严密保护的商业秘密,但肯定涉及大量数学知识我们可以看一个简单的例子来了解自动交易策略的工作原理。

股票是代表公司所有权的金融资产类型当市场认为一家公司经营良好时,其股票价格就会上涨:买入股票的成本增加,卖出股票的回报也会增加股票价格的变化是不稳定的、实时的图 1-1 显示了在一天交易中的股票价格图

图 1-1  股价随时间变化的典型图形对于这只股票,如果你在第 100 分钟左右以 24 美元买入 1000 股,并在第 430 分钟左右以 38 美元全部卖出,当天就可以赚 14 000 美元这很棒!挑战在于,你必须提前知道这只股票会上涨,而且清楚第 100 分钟和第 430 分钟分别是买入和卖出的最佳时机。

虽然你可能无法准确预测最低或最高价格,但也许能找到一天中相对较好的买卖时机让我们来看看如何用数学方法来实现这个目标我们可以通过找到一条“最佳拟合”线来衡量股票价格会涨还是会跌,这条线大致遵循价格的变动方向。

这个过程称为线性回归,本书的第三部分会介绍因为数据是不断变化的,所以可以在“最佳拟合”线上下再计算出两条线,以显示价格上下浮动的区域把它们叠加在价格图表上,可以看出这些线和趋势相符,如图 1-2 所示

图 1-2  利用线性回归确定股票价格的变化趋势有了对股票价格走势的数学理解,我们就可以编写代码,在股票价格相对于其趋势开始低位波动时自动买入,并在价格回升时自动卖出具体来说,我们的程序可以通过网络连接到证券交易所,在价格低于底线时买入 100 股,并在价格越过顶线时卖出 100 股。

图 1-3 展示了一次这样的盈利交易:以 27.80 美元左右的价格买入,以 32.60 美元左右的价格卖出,在一小时内可以赚到约 480 美元

图 1-3  使用我们基于规则的交易软件进行买卖,赚取利润我不敢说这是一个完备的可执行策略,但重点是,只要有正确的数学模型,你就可以自动获利此刻,不知有多少程序正在构建和更新对股票等金融工具进行趋势预测的模型。

如果你编写出这样的程序,就能在享受闲暇时光的同时赚钱了!上文节选自人邮图灵《程序员数学 用Python学透线性代数和微积分》,[遇见数学]已获发布授权。

目录向上滑动阅览目录 第 1章 通过代码学数学  11.1 使用数学和软件解决商业问题 21.1.1 预测金融市场走势 21.1.2 寻找优质交易 41.1.3 构建三维图形和动画 61.1.4 对物理世界建模 8

1.2 如何高效学习数学 91.2.1 Jane想学习数学 91.2.2 在数学课本中苦苦挣扎 101.3 用上你训练有素的左脑 111.3.1 使用正式的语言 111.3.2 构建你自己的计算器 12

1.3.3 用函数建立抽象概念 131.4 小结 14第 一部分 向量和图形第 2章 二维向量绘图 162.1 二维向量绘图 162.1.1 如何表示二维向量 182.1.2 用Python绘制二维图形 20

2.1.3 练习 232.2 平面向量运算 252.2.1 向量的分量和长度 282.2.2 向量与数相乘 292.2.3 减法、位移和距离 312.2.4 练习 342.3 平面上的角度和三角学 41

2.3.1 从角度到分量 422.3.2 Python中的三角学和弧度 462.3.3 从分量到角度 472.3.4 练习 502.4 向量集合的变换 572.4.1 组合向量变换 592.4.2 练习 60

2.5 用Matplotlib绘图 612.6 小结 62第3章 上升到三维世界 633.1 在三维空间中绘制向量 643.1.1 用坐标表示三维向量 663.1.2 用Python进行三维绘图 663.1.3 练习 68

3.2 三维空间中的向量运算 703.2.1 添加三维向量 703.2.2 三维空间中的标量乘法 723.2.3 三维向量减法 723.2.4 计算长度和距离 733.2.5 计算角度和方向 743.2.6 练习 75

3.3 点积:测量向量对齐 783.3.1 绘制点积 783.3.2 计算点积 803.3.3 点积的示例 823.3.4 用点积测量角度 833.3.5 练习 853.4 向量积:测量定向区域 883.4.1 在三维空间中确定自己的朝向 88

3.4.2 找到向量积的方向 893.4.3 求向量积的长度 913.4.4 计算三维向量的向量积 923.4.5 练习 933.5 在二维平面上渲染三维对象 963.5.1 使用向量定义三维对象 97

3.5.2 二维投影 983.5.3 确定面的朝向和阴影 993.5.4 练习 1013.6 小结 102第4章 变换向量和图形 1034.1 变换三维对象 1054.1.1 绘制变换后的对象 1054.1.2 组合向量变换 107

4.1.3 绕轴旋转对象 1104.1.4 创造属于你自己的几何变换 1134.2 线性变换 1174.2.1 向量运算的不变性 1174.2.2 图解线性变换 1194.2.3 为什么要做线性变换 121

4.2.4 计算线性变换 1244.2.5 练习 1274.3 小结 132第5章 使用矩阵计算变换 1345.1 用矩阵表示线性变换 1355.1.1 把向量和线性变换写成矩阵形式 1355.1.2 矩阵与向量相乘 136

5.1.3 用矩阵乘法组合线性变换 1385.1.4 实现矩阵乘法 1405.1.5 用矩阵变换表示三维动画 1415.1.6 练习 1425.2 不同形状矩阵的含义 1485.2.1 列向量组成的矩阵 149

5.2.2 哪些矩阵可以相乘 1515.2.3 将方阵和非方阵视为向量函数 1525.2.4 从三维到二维的线性映射投影 1545.2.5 组合线性映射 1565.2.6 练习 1575.3 用矩阵平移向量 163

5.3.1 线性化平面平移 1635.3.2 寻找做二维平移的三维矩阵 1675.3.4 在四维世界里平移三维对象 1705.4 小结 174第6章 高维泛化 1766.1 泛化向量的定义 1776.1.1 为二维坐标向量创建一个类 178

6.1.3 使用同样的方法定义三维向量 1796.1.4 构建向量基类 1806.1.5 定义向量空间 1826.1.6 对向量空间类进行单元测试 1856.2 探索不同的向量空间 1886.2.1 枚举所有坐标向量空间 188

6.2.2 识别现实中的向量 1906.2.3 将函数作为向量处理 1926.2.4 将矩阵作为向量处理 1946.2.5 使用向量运算来操作图像 1956.2.6 练习 1986.3 寻找更小的向量空间 205

6.3.1 定义子空间 2056.3.2 从单个向量开始 2076.3.3 生成更大的空间 2076.3.4 定义“维度”的概念 2096.3.5 寻找函数向量空间的子空间 2106.3.6 图像的子空间 212

6.3.7 练习 2146.4 小结 220第7章 求解线性方程组 2227.1 设计一款街机游戏 2237.1.1 游戏建模 2237.1.2 渲染游戏 2247.1.3 发射激光 2257.1.4 练习 226

7.2 找到直线的交点 2277.2.1 为直线选择正确的公式 2277.2.2 直线的标准形式方程 2297.2.3 线性方程组的矩阵形式 2317.2.4 使用NumPy求解线性方程组 2337.2.6 识别不可解方程组 234

7.2.7 练习 2367.3 将线性方程泛化到更高维度 2407.3.1 在三维空间中表示平面 2407.3.2 在三维空间中求解线性方程组 2437.3.4 计算维数、方程和解 2457.3.5 练习 246

7.4 通过解线性方程来改变向量的基 2537.4.1 在三维空间中求解 2557.4.2 练习 2567.5 小结 257第二部分 微积分和物理仿真第8章 理解变化率 2618.1 根据体积计算平均流速 262

8.1.1 实现average_flow_rate函数 2638.1.2 用割线描绘平均流速 2648.1.3 负变化率 2658.1.4 练习 2668.2 绘制随时间变化的平均流速 2668.2.1 计算不同时间段内的平均流速 267

8.2.2 绘制间隔流速图 2688.2.3 练习 2708.3 瞬时流速的近似值 2718.3.1 计算小割线的斜率 2728.3.2 构建瞬时流速函数 2748.3.3 柯里化并绘制瞬时流速函数 277

8.4 体积变化的近似值 2788.4.1 计算短时间间隔内的体积变化 2798.4.2 将时间分割成更小的间隔 2808.4.3 在流速图上绘制体积变化的图形 2808.4.4 练习 2838.5 绘制随时间变化的体积图 283

8.5.1 计算随时间变化的体积 2838.5.2 绘制体积函数的黎曼和 2858.5.3 提升近似结果的精确度 2868.5.4 定积分和不定积分 2888.6 小结 290第9章 模拟运动的对象 291

9.1 模拟匀速运动 2919.1.1 给小行星设置速度 2929.1.2 更新游戏引擎,让小行星运动 2929.1.3 保持小行星在屏幕上 2939.1.4 练习 2959.2 模拟加速 2959.3 深入研究欧拉方法 296

9.3.1 手动计算欧拉方法 2979.3.2 使用 Python 实现算法 2989.4 用更小的时间步执行欧拉方法 3009.5 小结 305第 10章 使用符号表达式 30610.1 用计算机代数系统计算精确的导数 309

10.2.1 将表达式拆分成若干部分 31010.2.3 使用Python语言实现表达式树 31110.2.4 练习 31310.3 符号表达式的应用 31510.3.1 寻找表达式中的所有变量 317

10.3.3 表达式展开 31910.3.4 练习 32110.4 求函数的导数 32310.4.1 幂的导数 32410.4.2 变换后函数的导数 32410.4.3 一些特殊函数的导数 32610.4.4 乘积与组合的导数 327

10.4.5 练习 32810.5 自动计算导数 33010.5.1 实现表达式的导数方法 33010.5.2 实现乘积法则和链式法则 33210.5.4 练习 33410.6 符号化积分函数 33510.6.1 积分作为反导数 335

10.6.2 SymPy库介绍 33610.6.3 练习 33710.7 小结 338第 11章 模拟力场 33911.1 用向量场对引力建模 33911.2 引力场建模 34211.2.1 定义一个向量场 343

11.2.2 定义一个简单的力场 34411.3 把引力加入小行星游戏 34511.3.1 让游戏中的对象感受到引力 34611.3.2 练习 34911.4 引入势能 35011.4.1 定义势能标量场 351

11.4.2 将标量场绘制成热图 35211.4.3 将标量场绘制成等高线图 35411.5.1 用横截面测量陡度 35411.5.2 计算偏导数 35611.5.3 用梯度求图形的陡度 35711.5.4 用势能的梯度计算力场 359

11.5.5 练习 36111.6 小结 364第 12章 优化物理系统 36512.1 测试炮弹模拟器 36712.1.1 用欧拉方法建立模拟器 36812.1.2 测量弹道的属性 36912.1.3 探索不同的发射角度 370

12.1.4 练习 37112.2 计算射程 37312.2.1 求炮弹射程关于发射角的函数 37312.2.2 求射程 37612.2.3 确定值和小值 37812.2.4 练习 37912.3 增强模拟器 381

12.3.1 添加另一个维度 38112.3.2 在炮弹周围建立地形模型 38312.3.4 练习 38612.4 利用梯度上升优化范围 38812.4.1 绘制射程与发射参数的关系图 38812.4.2 射程函数的梯度 389

12.4.3 利用梯度寻找上坡方向 39012.4.4 实现梯度上升 39212.4.5 练习 39512.5 小结 399第 13章 用傅里叶级数分析声波 40013.1 声波的组合和分解 40113.2 用Python播放声波 402

13.2.1 产生第 一个声音 40213.2.2 演奏音符 40513.2.3 练习 40613.3 把正弦波转化为声音 40613.3.1 用正弦函数制作音频 40613.3.2 改变正弦函数的频率 408

13.3.3 对声波进行采样和播放 40913.3.4 练习 41113.4 组合声波得到新的声波 41213.4.1 叠加声波的样本来构造和弦 41213.4.2 两个声波叠加后的图形 41313.4.3 构造正弦波的线性组合 414

13.4.4 用正弦波构造一个熟悉的函数 41613.4.5 练习 41913.5 将声波分解为傅里叶级数 41913.5.1 用内积确定向量分量 42013.5.2 定义周期函数的内积 42113.5.3 实现一个函数来计算傅里叶系数 423

13.5.4 求方波的傅里叶系数 42413.5.5 其他波形的傅里叶系数 42413.5.6 练习 42613.6 小结 428第三部分 机器学习的应用第 14章 数据的函数拟合 43114.1 衡量函数的拟合质量 433

14.1.1 计算数据与函数的距离 43414.1.2 计算误差的平方和 43614.1.3 计算汽车价格函数的代价 44014.2 探索函数空间 44114.2.1 绘制通过原点的直线的代价 44214.2.2 所有线性函数的空间 443

14.2.3 练习 44514.3 使用梯度下降法寻找拟合线 44514.3.1 缩放数据 44514.3.2 找到并绘制拟合线 44614.3.3 练习 44714.4 非线性函数拟合 44814.4.1 理解指数函数的行为 448

14.4.2 寻找拟合的指数函数 45114.5 小结 453第 15章 使用logistic回归对数据分类 45515.1 用真实数据测试分类函数 45615.1.1 加载汽车数据 45715.1.2 测试分类函数 458

15.1.3 练习 45815.2 绘制决策边界 46015.2.1 绘制汽车的向量空间 46015.2.2 绘制更好的决策边界 46115.2.3 实现分类函数 46215.2.4 练习 46315.3 将分类问题构造为回归问题 464

15.3.1 缩放原始汽车数据 46415.3.2 衡量汽车的“宝马性” 46515.3.3 sigmoid函数 46715.3.4 将sigmoid函数与其他函数组合 46815.3.5 练习 470

15.4 探索可能的logistic函数 47115.4.1 参数化logistic函数 47215.4.2 衡量logistic函数的拟合质量 47215.4.3 测试不同的logistic函数 474

15.4.4 练习 47515.5 寻找logistic函数 47715.5.1 三维中的梯度下降法 47715.5.2 使用梯度下降法寻找拟合 47815.5.3 测试和理解logistic分类器 479

15.5.4 练习 48115.6 小结 483第 16章 训练神经网络 48416.1 用神经网络对数据进行分类 48516.2 手写数字图像分类 48616.2.1 构建64维图像向量 48716.2.2 构建随机数字分类器 488

16.2.3 测试数字分类器的表现 48916.2.4 练习 49016.3 设计神经网络 49116.3.1 组织神经元和连接 49216.3.2 神经网络数据流 49216.3.3 计算激活值 495

16.3.4 用矩阵表示法计算激活值 49816.4 用Python构建神经网络 49916.4.1 用Python实现MLP类 50016.4.2 评估MLP 50216.4.3 测试MLP的分类效果 503

16.4.4 练习 50416.5 使用梯度下降法训练神经网络 50416.5.1 将训练构造为小化问题 50516.5.3 使用scikit-learn自动训练 50716.6 使用反向传播计算梯度 509

16.6.1 根据后一层的权重计算代价 50916.6.2 利用链式法则计算后一层权重的偏导数 51016.6.3 练习 51216.7 小结 513附录A 准备Python(图灵社区下载)附录B Python技巧和窍门(图灵社区下载)

附录C 使用OpenGL和PyGame加载和渲染三维模型(图灵社区下载)附录D 数学符号参考(图灵社区下载)极简世界神话人类文明伊始,我们的祖先就对世间万物给出了自己的解释于是,各个文化中托生出属于自己的神话故事。

他们用这些故事解释天空、大地的形成,为人们的道德树立标准,为帝王的尊贵背书这是人类最早的“科学”这本书讲述了历史上重要文明或文化中流传下来的神话故事,包括埃及神话、希腊神话、罗马神话、中国神话、北欧神话等。

你会看到为何很多文化中都会出现“全视之眼”,比如《指环王》中的索伦之眼,基督教中的上帝之眼;你会了解为什么玛雅文化会预言2012年12月21日为世界末日;你还会知道为什么艺术家都喜欢把能给自己带来灵感的人称为“缪斯女神”。

读神话,也是读文化,读历史……极简哲学史在开始这段哲学之旅前,让我们来聊聊“桌子”吧没错,就是我们生活中再熟悉不过的桌子按照哲学家柏拉图的看法,世界上有三张桌子:一张是画家画的桌子,一张现实中的桌子,还有一张是作为桌子的概念的桌子。

在柏拉图眼中,画家所画的桌子是对现实中桌子的摹仿,最不可靠,现实中的桌子无法会破损,也无法永存,只有桌子的概念,才是真正真实的存在但是,经验主义者不会同意这个观点,在他们眼中,只有现实存在、能被我们感觉到的具体的桌子才是实在的。

而海德格尔会说,这两种看法我都不同意你看,从一张桌子出发,我们几乎可以问出所有的哲学问题来,也可以看到各种哲学流派的不同思考听上去高深莫测的哲学,是通过一代又一代哲学家不断地追问和求索展开的真正的哲学问题没有终极答案,也永远不会过时,永远是自由而敞开的。

哲学王国充满了对话乃至争论,哲学家们的思想碰撞不仅跨域空间,更是跨越文明与时间的,摇曳着独属爱智者的魅力之光在这本小书里,你会看到两千多年来的哲学家们的思想结晶作者以简洁晓畅的语言,带我们走近一个又一个哲学史上闪闪发光的名字,见证他们的故事,聆听回响在历史长河中的智慧之声。

极简地理学本书是“极简通识系列”中的一本,这是一套从不同角度认识世界的普及读本每本都讲述了本学科中最重要的发现或成就,是了解学科的速读口袋书内容浅显易读,绝佳的学科入门读物特邀著名科普作家马志飞审校并作序推荐。

这本书全面而详细地介绍了地理学的入门知识全书为自然与社会两大主题,自然部分包括河流、海岸、地壳板块、气候和天气等分支,而社会部分则探讨了人口、城市、工业、经济等话题你会了解天气和气候是如何形成的;你会认识到城市化将带来怎样的影响;你更能学会把缠绕在复杂问题四周的线索梳理整合,使重点清晰。

这里不仅有知识,还包含着一种独特而宝贵的思维方式,非常适合学生及对地理感兴趣的读者极简天文学作为一本天文学科普读物,这是献给每一颗好奇心的一场星际之旅、时空之旅从我们仰头就可以看到的太阳、星星与月亮,到更远的星系乃至宇宙边缘,这段旅程将覆盖930亿光年的空间,横跨近140亿年的时间。

从熟悉的太阳、月亮讲起,直到恒星、星系,再到黑洞、暗物质、大爆炸理论……作者精心编排了一条富有趣味的路线,带我们领略到那些我们好奇的关于宇宙的一切,同时体验一段人类探索星空和宇宙奥秘的“浓缩版”认知历程。

本书是“极简通识系列”中的一本,这是一套从不同角度认识世界的普及读本每本都讲述了本学科中最重要的发现或成就,是了解学科的速读口袋书内容浅显易读,绝佳的学科入门读物特邀著名科普作家马志飞审校并作序推荐这本书全面而详细地介绍了地理学的入门知识。

全书为自然与社会两大主题,自然部分包括河流、海岸、地壳板块、气候和天气等分支,而社会部分则探讨了人口、城市、工业、经济等话题你会了解天气和气候是如何形成的;你会认识到城市化将带来怎样的影响;你更能学会把缠绕在复杂问题四周的线索梳理整合,使重点清晰。

这里不仅有知识,还包含着一种独特而宝贵的思维方式,非常适合学生及对地理感兴趣的读者极简20世纪历史作为一本天文学科普读物,这是献给每一颗好奇心的一场星际之旅、时空之旅从我们仰头就可以看到的太阳、星星与月亮,到更远的星系乃至宇宙边缘,这段旅程将覆盖930亿光年的空间,横跨近140亿年的时间。

从熟悉的太阳、月亮讲起,直到恒星、星系,再到黑洞、暗物质、大爆炸理论……作者精心编排了一条富有趣味的路线,带我们领略到那些我们好奇的关于宇宙的一切,同时体验一段人类探索星空和宇宙奥秘的“浓缩版”认知历程。

↓↓↓扫描上文二维码或点击阅读原文进入人邮旗舰书店进一步查看

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。