How I studied Maxima.
这篇文章,与其它在此网站可找到的文章不同,不评价某些技术书。 反而,现在我要关于我学习Maxima的经验讲故事。 我提醒阅读者,这篇文章我尚未没有做完,但是因为我已经到达了某些结果,所以我想存在的经验记录好。
什么是maxima和为什么我决定学习它? Maxima是全世界第二个的计算机代数系统(也称为符号运算系统)。 (第一个计算机代数系统叫做Reduce。)
Maxima是在60年代底基于Lisp类语言写的。 它原来的名字是Macsyma,来自MIT(麻省理工学院)MAC项目。(Man and Computer)
MAC项目引发了很多不同的Lisp和其它关于第一代人工智能的软件。 Macsyma是其项目之一,是在美国能源部的支持下开发的。 (美国能源部是美国政府唯一一个管理非战用核能的机关。)
老macsyma是由传统Lisp演变而来的,后来被使用标准化的Common Lisp重构。 从1998以后更名为maxima而成为自由软件。
因为我的工作需要高级数学推理,所以我想要能够提升我的计算能力的辅助软件。 而且,因为我对Lisp比较熟悉,所以我认为Maxima是合理的选择。
1. 我学习maxima的历史。
我学习maxima的历史由三个阶段组成。 第一个是追随莫斯科国家大学的物理部的课文“Maxima为理论物理学者”。 第二个是跟编程语言没有关系的阶段:阅读Michel Talagrand的书“量子场论”。 第三个是使用Maxima语言和Common Lisp写作自己需要的Maxima扩展包“随机性函数级数”。
第三个阶段我尚未实现,所以这篇文章没有写完。
1.1. 我的关于“Maxima为理论物理学者”的观点。
为什么我从这本书开始学习maxima? 实际上我不能说这本书是一种很好的学习资料。 它的两位作者都不是专门做程序语言的专家,而是物理学家。 所以从文本容易判断,他们不太理解程序语言的怪点。 比如他们不理解“函数”和“宏”的区别。 (阅读过我关于CMake的短评的读者可能现在有“已经见过”的感觉。) 那为什么我能够容忍?
是因为他们的书有练习题。 对我来说这很头疼。 我见过很多讲的比较好的书籍,但没有任何练习题。 从我的经验来讲,没有练习题严重影响学习效果。 当然,我本身有一些经验,会为自己出练习题。 但是总体来说,我感觉回答作者提供的练习题既快,又有效。
如上所述,该书包含几个练习题。 阅读这本书的主要文本我需要14个小时。 不能说很长时间,有可能因为我学习程序语言的经验比较丰富。
读完主要内容之后我开始解决练习题。 解决问题的过程没有想象的那么简单。 这本书的练习册由5个练习题组成。 第一个和第二个练习题比较容易理解。 只需要仔细的阅读这本书和maxima的官方说明书。 做这两个练习题我需要13个小时,然后在13个小时内我适应了使用大部分maxima的常见结构: 表达式,函数,宏,循环,递归,块,代码生成。
第三个问题要求我作出更多的努力。 是因为它是关于量子力学的,基本上需要我运算算子的函数。 我从大学的时候没有用过量子物理,所以需要刷新我的知识。
1.2. 学习量子力学。
如上所述,那本带练习题的书是被理论物理学家写的。 而且第三个和第四个练习题都是关于量子力学。
为了刷新我的量子力学的知识我选了Michel Talagrand的“What is Quantum Field Theory”. 为什么我选了它,并且如果我决定对每个书写短评,为什么我把它提到这里?
第一个问题的答案是:因为在我们的“计算理论社会”,Talagrand被算最尊敬的领袖之一。 实际上,量子力学,尤其是量子场论,跟算法理论和编程不那么近,所以越有意思查询我们的师公对没有关系的领域的看法。 于是,我开始阅读这本书不太厚望好介绍。 越更开心我发现他的第一章的普通的量子力学(不包含量子场论)的介绍写的比较清晰,包括足够的练习题,并且它的数学严格性比一般的物理学书更高。
我很重视他提到几本关于量子理论书,所以不清楚的地方读者可以查看。
我没有阅读整个书,35章中我只阅读了三个介绍普通的量子力学的。 所有现在我的经验不满足写短评的需求。 这是第二个问题的回答。
不过,如果读者对量子理论感兴趣,我可以推荐Talagrand的书。
1.3. 继续调研maxima
Talagrand的书让我下次理解练习的题主,但是我还是没有完全回答它们。 综合来说,第一和第二个练习题一起要求我耗15个小时,比只阅读上述的课本差不多。 但是第三和第四个练习题已经令我花30多个小时,要求我理解maxima的格式匹配的算法,完全的阅读maxima的官方说明书,甚至在maxima开发者邮件列表问几个问题。
到底,maxima作者之一帮我写作基础调和振动的代数,而且我花了几天适应他满足练习题的需求,但是还是失败了。 事实上,那时我已经算本项目落空。
这个失败的项目让我考虑很长时间。 甚至maxima的开发者偷偷的建议使用大规模商业软件做数学分析,比如Mathematica或Maple。 怎么一回事? 怎么办?
我在未来还是思考学写FriCAS,另外一个数学软件。 那个FriCAS比maxima更大,更复杂,也不一定会满足我的需求。
我是否还是需要学Mathematica? 我在过去查一次Mathematica,感觉哭笑不得:什么都会,但是在所有的方面被限制的软件。
方正,我发现了Maxima的VTK支持好像几年没有维护,在2023用不了。 让我不开心。
不过,什么样的任务Maxima会做好?
虽然量子力学不是Maxima的有点,很多任务它会完成。 比如符号微分学和积分学,为分方程式。 第一年,第二年的学生们可能获益使用它做作业。 我也见很多课本使用它插图力学:静力学和动力学。 互联网上也可以找很优秀的课程:如何使用Maxima做经济模型。
Maxima的Fortran和C接口和比较满意,可以使用Maxima分析问题之后生成Fortran或C++的代码。
2. 结论
我希望在未来maxima会为我的服务,比如做插图或者可视化函数。 但是现在的用户经验比我预计不那么好。