APL 的内积和外积有何关系?

Jul*_*ius 1 operators apl dyalog

在 APL 中,可以使用 构造广义内积f.g。根据手册,结果是一个数组,其中每个项目都是根据左操作数和右操作数的向量构造的f/x g\xc2\xa8yx并且y是沿着所述操作数的特定轴获取的向量)。乍一看,外部产品似乎源自于此:它是\xe2\x88\x98.g,我通过设置 获得它f \xe2\x86\x90 \xe2\x88\x98。但是,如果我使用内积的定义来评估它,我似乎没有获得有效的 APL 代码(我得到了\xe2\x88\x98/x g\xc2\xa8y,其中\xe2\x88\x98/特别没有多大意义)。

\n

这两个运算符是否与引擎盖下的某些魔法有关,或者\xe2\x88\x98.只是被解释为与内积无关的不同运算符?

\n

Adá*_*dám 6

在所有现代 APL 中,包括 Dyalog,\xe2\x88\x98.确实只是特殊情况,并且没有左操作数会.使其表现得像\xe2\x88\x98.\xe2\x80\x94 实际上,\xe2\x88\x98是一个二元运算符,它不能是另一个二元运算符 ( .) 的操作数。

\n

从历史上看,\xe2\x88\x98.g被视为一种缺陷f.g,因为f.g可以被视为f/超过对角线值\xe2\x88\x98.g,因此,删除算法的约简部分,仍然保留外积。\xe2\x88\x98被用作一种“空函数”,但该符号后来被重载成为常规的二元(组合)运算符。

\n

然而值得注意的是,艾弗森后来以“tie”运算符的形式概括了外积,其中左操作数是一个数字,表示“捆绑”维度的数量,留下所有其他维度来提供参数用于所有组合。因此,0 .g变得等价于\xe2\x88\x98.g并被\xe2\x88\x98定义为装箱空向量(本质上等价于今天的\xe2\x8a\x82\xe2\x8d\xac),并被视为与0一起使用时的情况.

\n