Допустим, у меня есть функция, которая определяет матрицу с точки зрения ее координат i
и j
:
f: {y+2*x}
Я пытаюсь создать квадратную матрицу, которая оценивает эту функцию во всех местах.
Я знаю, что это должно быть что-то вроде f ' (til 5) /:\: til 5
, но я борюсь с отдыхом.
Немного перефразируя ваш вопрос, вы хотите создать матрицу A = [aij], где aij = f(i, j), i, j = 0..N-1.
Другими словами, вы хотите оценить f
для всех возможных комбинаций i и j. Так:
q)N:5;
q)i:til[N] cross til N; / all combinations of i and j
q)a:f .' i; / evaluate f for all pairs (i;j)
q)A:(N;N)#a; / create a matrix using #: https://code.kx.com/q/ref/take/
0 1 2 3 4
2 3 4 5 6
4 5 6 7 8
6 7 8 9 10
8 9 10 11 12
P.S. Нет, (til 5) /:\: til 5
не точно, что вам нужно, но близко. Вы создаете список всех пары, то есть вы соединяете или соединяете первый элемент til 5
с каждым элементом (другого) til 5
один за другим, затем вторым и т. д. Итак, вам нужен оператор соединения (https://code.kx.com/q/ref/join/):
(til 5),/:\: til 5
Это очень очень полезный ответ, большое спасибо!