这是Words and Buttons Online,是关于#mathematics、#algorithms和#programming的互动 #tutorials、 #demos和 #quizzes的集合。
开始用 Python 时,还没有NumPy或SymPy,过去在 MatLab 做研究,在 Delphi 快速原型开发,甚至在 Prolog 做符号计算,Python 曾像更好的 Perl,不受研究人员欢迎但写起来有趣。作者用 Python 为论文做实验并引入线性代数,逐渐深入后开始研究语言而非原主题,认为 Python 学习曲线平缓易满足于基本知识而错过精彩部分。
文章通过线性代数领域展示 Python 核心的强大:
- 列表推导式:是 Python 单行代码的主要形式,可描述列表转换,如乘向量、字典和元组推导等,Haskell、C#等也有类似语法。
- 列表拉链:可将多个可迭代对象组合成列表的元组,能轻松实现向量加法等操作。
- 求和函数:可简单求和,对于浮点数可使用
math.fsum
获得更精确结果。 - 条件表达式:类似三元运算符,用于根据条件创建表达式,可用于创建单位矩阵等,但因是表达式不易添加副作用,可通过元组技巧实现。
- 传递容器内容作为参数:可通过特殊语法将列表的列表作为函数参数,实现矩阵转置等操作。
- 矩阵乘法:将矩阵作为列表的列表,可通过列表推导式和点积实现矩阵与向量乘法,在投影几何中很重要。
- 平面投影上的点:在计算几何中,可通过简单公式将任意点投影到平面上。
- 列表乘法在参数中:利用列表乘法可复制列表等,用于求两点间欧氏距离等操作。
- 旋转和线性求解器:可通过一行代码实现线性求解器,但实际应使用更好的库,求解过程通过在投影队列中旋转超平面实现。
- 矩阵求逆:虽不是最好的求逆方法,但可通过将单位矩阵除以输入矩阵逐列求解线性方程实现。
总结:仅 10 行 Python 代码就实现了向量加法等多种操作,Python 不仅因包而强大,更是因为用 Python 编写各种代码都很有趣。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。