Как переписать функцию пополам в J?
-
08-07-2019 - |
Вопрос
-: i. 5
вышеупомянутая функция вычисляет половины всех целых чисел в [0,4]. Теперь предположим, что я хотел бы переписать функцию -: просто для удовольствия. Мое лучшее предположение до сих пор было
]&%.2
но это не похоже на это. Как ты это делаешь?
Решение
%&2 NB. divide by two
0.5&* NB. multiply by one half
Другие советы
Обратите внимание, что]% 2: также будет работать, но для обеспечения правильной грамматики вы либо захотите использовать ее в качестве определения имени, либо захотите поместить выражение в скобки.
Я видел, что вы используете%. вероятно, потому что вы делили матрицу и думали, что вам нужно сделать «матричное деление». Р>
Матрица деления и обратная матрица, о которых они говорят, существуют для алгебры матриц, где у вас есть список, ну, по сути, многочленов, и вы хотите выполнить преобразования для многочленов одновременно, чтобы решить уравнения , Одна из вещей, которую вы действительно легко можете сделать в J, это матричная алгебра, есть встроенные функции для деления матрицы и для инвертирования матрицы (как вы видели), а в разделе фраз есть короткие фразы для выполнения всех типичных матричных преобразований. , Например, определитель.
Но когда вы просто делите вектор на скаляр, чтобы получить вектор, или вы делите матрицу на соответствующие элементы другой матрицы, это просто символ% деления.
Если вы хотите попытаться понять это, посмотрите на проблему Эйлера 101 (http://projecteuler.net/problem=101), а затем подгонку кривой Google на сайте Jsoftware.com. Создание матриц из наблюдений и базовых матриц, как показано, позволяют решить для ax ^ 2 + bx + c = y, где у вас есть x и y, и вы хотите определить a, b и c. Просто не забывайте использовать расширенную арифметику для всего, так как результирующие уравнения очень хороши, но не идеальны, если вы этого не делаете, и для решения уравнения вам нужны совершенные уравнения.
Просто подумайте, если вы не хотите играть с матричной алгеброй, вам может быть все равно. Р>