LINUX.ORG.RU

beastie, ты тут J знаешь?

 


0

1

Как работает союз '.'?

Есть два глагола, например.

Монадический det =: -/ . * и диадический prod =: +/ . *

Если им дать матрицы 2x2 как аргумент, получим определитель матрицы и их произведение. Кто бы расписал это более подробно? Я не понимаю, как работает точка

Ответ на: комментарий от basp

Да, с диадическим случаем понятно, а с монадическим - это пипец. Я так и не распарсил, что там происходит. Типа (u.v) берет элемент матрицы, берет алгебраическое дополнение и применяет v, а к результату применяет u. И работает на двумерных ячейках, т.к. ранг всегда 2. Вроде как-то так

pr0n_actor ()

Ох ты! J на моем ЛОРе! А я его когда-то вкуривал довольно долго у упорно, для себя, но потом из-за отсутствия задач, забил. А что ты, автор, на нем делаешь?

anonymous ()

Ты б его хоть кастанул, а то он на тег не подписан

beastie

Deleted ()
Ответ на: комментарий от anonymous

Да я пока тоже только вкуриваю. Но есть одна задача матрицы перемножать, вектора крутить, может и использую его. // ТС

anonymous ()

J не знаю, знаю немного APL.

В общем случае (по аналогии с APL) это называется внутренний продукт.

Допустим A ← 1 2 3

A +.× A = 1 2 3 +.× 1 2 3 = 1×1 + 2×2 + 3×3 = 14
Или, что тоже самое:
+/ A × A = +/ (1 2 3)×(1 2 3) = +/ (1×1 2×2 3×3) = 1 + 4 + 9 = 14

Аналогично для минуса.

beastie ★★★★★ ()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

Прикол в том, что скалярное произведение можно записать хоть через точку, хоть так:

prod =: +/@:*

Я уже встречал 3 варианта композиций (именно композиций, train'ы не рассматриваю) функций @:, @ и . (точка). Все они отличаются тем, что они делают с рангами глаголов, стоящих слева и справа. Так вот точка - это что-то самое изощренное ))

pr0n_actor ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.