Símbolos de APL: "Vezes" e "Divisão"

Patrícia Villela - Nov 18 '22 - - Dev Community

AVISO! Essa série de artigos usará exemplos rodados em Dyalog APL, a implementação da Dyalog.

AVISO 2! Esse artigo contém exemplos de código. Se você quiser rodá-los, copie e cole as linhas identadas à direita (as linhas identadas à esquerda são os resultados) nesse site: https://tryapl.org

Nesse artigo vem mais 2 símbolos!

Vezes (×)

A função monádica do × é "direção" ("Signum" na documentação).
A função "direção" retorna o sinal do argumento

      ×3 ¯10 0
1 ¯1 0
      ×3J4
0.6J0.8
Enter fullscreen mode Exit fullscreen mode

3 é positivo, -10 é negativo e 0 é zero. Esse passo é o comum.

      ×3J4
0.6J0.8
      3J4÷|3J4
0.6J0.8
Enter fullscreen mode Exit fullscreen mode

No caso do número complexo a função é um pouco mais complexa. Ela é a divisão do número pela sua magnitude.

      2×3
6
Enter fullscreen mode Exit fullscreen mode

No entanto há uma diferença de com fazemos multiplicação de matrizes. Quando multiplicamos matrizes, além de a restrição ser apenas que o número de colunas de uma deve ser igual ao número de linhas da outra, cada elemento da matriz resultante é a soma dos produtos dos elementos de cada coluna de uma matriz por cada linha da outra matriz.

A matriz

1   2   3
4   5   6
7   8   9
Enter fullscreen mode Exit fullscreen mode

multiplicada pela matriz

1   2   3
4   5   6
7   8   9
Enter fullscreen mode Exit fullscreen mode

resulta na matriz

30  36  42
66  81  96
102 126 150
Enter fullscreen mode Exit fullscreen mode

No entanto a razão de ser da APL foi uma necessidade de regularização da notação matemática. Por isso a multiplicação de matrizes funciona da mesma maneira que a adição, elemento a elemento.

      3 3⍴2
2 2 2
2 2 2
2 2 2
      (3 3⍴2)×3 3⍴2
4 4 4
4 4 4
4 4 4
Enter fullscreen mode Exit fullscreen mode

Divisão (÷)

A função monádica do ÷ é "recíproco" ("Reciprocal" na documentação).
O retorno dessa função é o inverso do agumento.

      ÷1 ¯2 1J2
1 ¯0.5 0.2J¯0.4
      ÷0
DOMAIN ERROR: Divide by zero
      ÷0
      ∧
Enter fullscreen mode Exit fullscreen mode

O recíproco de 0 claro que dá um erro de divisão por zero.

A função diática do ÷ é "dividir" ("Divide" na documentação). A divisão também funciona da maneira esperada.

      2 0 5÷4 0 2
0.5 1 2.5
Enter fullscreen mode Exit fullscreen mode

Notem que há mais uma incongruência com a matemática padrão. Em APL, 0÷0 é 1!

Conclusão

Esse artigo foi menor mas ainda assim cobrimos dois outros operadores aritméticos da APL.
Bom APL!

Até a próxima!

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .