抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Make A Wolfram GitHub Viewer Badge

去年 GitHub 推出了 Actions,以提供内置的持续集成能力。同样是在去年,Wolfram Research 也推出了免费的开发者 Wolfram 引擎,让我们有机会免费运行 Wolfram 语言代码。那么,两件快乐事情重合在一起。而这两份快乐,又给我带来多的快乐。得到的……没错,就是我们期待已久的对 Wolfram 语言程序的持续集成。

前一阵子 GitHub 正式发布了 Actions 功能来提供内置的持续集成和持续发布。而我正好最近在利用 Qt 写数字图像处理的作业,就想利用这个机会尝试一下基于 GitHub Actions 的持续集成。

写下这篇文章的起源是在知乎上看到的一个回答[1]

很简单,就是硬抬杠。

举个例子,我说偶数跟正整数一样多,你就说怎么可能,正整数包含奇数和偶数,所以肯定正整数多。

我解释说偶数跟正整数存在一个一一映射,并且都含有无穷多元素,所以一样多。你就说我听不懂什么一一映射,我只知道我是你的两倍,所以肯定比你多。

那我解释,1对应2,2对应4,3对应6,一直这样下去,每个正整数都对应一个偶数。他就是不同意,说你说话就在放屁,我给你一百块,你给我两百块,一直这样我们看看最后谁的钱多?

我说这在有限的情况下是对的,但是无穷的情况下就不一定了。你就说无穷不就是特别大的数嘛,那我大一你倍不是大你更多?

我说wdnmd吧,你就说你怎么骂人呢?

在这个回答里,作者似乎把对于无法将无穷集合的等势理解成“一样多”的普通人思维当作抬杠。但这件事就真的只是抬杠这么肤浅吗?

首先,你需要一个 Wolfram 账户

搭建一个个人维基用来整理知识的想法早已有之,但具体该使用什么方案却迟迟没能定下来。在最初的想法里,我希望满足下面的几项需求:

  • 内容与表现分离
  • 自动化构建
  • 可以使用自己定制的模板
  • 词条的分类灵活,以适应知识体系的逐渐完善
  • 方便建立知识点(词条)间的联系
  • 需要用笔记时能快速提取
  • LaTeX\LaTeX 公式输入
  • 代码块语法高亮

我们知道,赋值等过程中使用 MatrixForm 往往会导致后续的计算失效。比如:

我们知道,Wolfram|Alpha 有一个名为 Step-by-Step Solutions 的功能,可以显示一些数学问题求解的过程。又比如,著名的 Rubi 可以在求解积分的同时显示积分的求解步骤。实际上,这些系统背后大抵都是基于模式匹配和规则变换而实现的,因而原则上来说自己也可以实现一个。当然,就实践而言这些系统都过于复杂了,例如 Rubi 包含了超过六千条规则,其背后的原理远非三言两语可以阐明的。不过,相比于积分,微分的运算规则要简明得多,而且对规则的应用总是简单机械的,并不像积分那样可能会运用到各种技巧。因此,本文将利用 Mathematica 的模式匹配和规则实现一个带步骤符号求导器。

只要输出介质为pdf,就不要使用 eps 和 PSTricks 插图

最近在做 ComputationalOptics包 的时候为了把 LightField 实现为一个比较典型的Wolfram语言风格的对象,使用了很多undocumented方法,这里主要是做一下记录。

需要注意的是,这里的“对象”不是指“面向对象”里所说的对象(虽然也有点关系),而是类似于 Entity 或者 TemporalData 这类的对象。