GNU APL 中带索引参数的行减少

Row Reduction with indexed parameters in GNU APL

我正在使用以下数据结构:

x1a ← 2 1 ⍴ 1 0
x1b ← ⍬

x2a ← 2 2 ⍴ 1 1 0 0
x2b ← 2 1 ⍴ 1 0

x3a ← 1 2 ⍴ 1 0
x3b ← 1

q ← (x3a x3b) (x2a x2b) (x1a x1b)

并尝试与以下操作等效的行缩减:

output ← x3b + x3a +.× x2b + x2a +.× x1a

我原以为结果会类似于以下内容,但我无法得到正确的 rank/operations 工作:

{⍵[2] + ⍺[1] +.× ⍵[1]}/q

感谢任何建议或帮助!

存在三个问题:

  1. 您正在使用 ⍵[1],这将为您提供 的封闭元素。请改用 "pick"。

  2. 你打错了:⍵[2]应该用代替,即2⊃⍺

  3. 你减少的函数期望它的右参数是一个二元素向量,它只使用第一个元素。因此下一次迭代需要return这样的结构。

另请注意,由于 / 需要将等级从 1 降低到 0,结果将同时包含在内,并且还会插入虚拟元素,因此我们需要选择第一个元素唯一元素,即⍬ 1⊃:

      x3b + x3a +.× x2b + x2a +.× x1a
3
      ⍬ 1⊃{((2⊃⍺) + (1⊃⍺) +.× (1⊃⍵)) 'dummy'}/q
3

Try it online!