Что означает # в Mathematica?

Кто-нибудь знает, что # в примере Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] означает в Mathematica?

Тогда что означает Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] точно?

Спасибо.

Ответы

Ответ 1

Это заполнитель для переменной.

Если вы хотите определить функцию y (x) = x ^ 2, вы можете просто сделать:

  f = #^2 & 

И "впрыскивает" переменную в знак #. Это важно для спаривания и и #, когда у вас есть вложенные функции.

  In: f[2]  
  Out: 4   

Если у вас есть функция, работающая на двух варах, вы можете сделать:

 f = #1 + #2 &

So

  In: f[3,4]  
  Out: 7  

Или у вас может быть функция, работающая в списке, поэтому:

 f = #[[1]] + #[[2]] &

Итак:

  In: f[{3,4}]
  Out: 7

О Root[]

Согласно Mathematica help:

Root[f,k] represents the exact kth root of the polynomial equation f[x]==0  .

Итак, если ваш poly равен x^2 - 1, используя то, что мы видели выше:

        f = #^2 - 1 &

In[4]:= Root[f, 1]  

Out[4]= -1  (* as we expected ! *)

и

In[5]:= Root[f, 2]  

Out[5]= 1  (* Thanks God ! *)

Но если мы попробуем с полиномом более высокого порядка:

         f = -1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &  

In[6]:= Root[f, 1]

Out[6]= Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]

Это означает, что Mathematica не знает, как измерить символический результат. Это просто первый корень многочлена. Но он знает, каково его числовое значение:

In[7]:= [email protected][-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]

Out[7]= -2.13224

Итак, Root[f,k] является своего рода стенографической записью для корней многочленов с порядком > 3. Я избавляю вас от объяснения радикалов и нахождения полиномиальных корней... к лучшему, думаю,

Ответ 2

Как узнать, что такое встроенный синтаксис в Mathematica:

  • Копировать выражение
  • Do TreeForm [Удерживать [вставить выражение здесь]].
  • Мышь над части дерева для определения рассматриваемого синтаксиса, в этом случае Slot
  • Введите "? Slot"

Ответ 3

Обозначение # (как указано выше) используется для обозначения "переменная идет здесь" в чистой функции ( "закрытие" для вас традиционных разработчиков). Он должен всегда следовать в конце &.

Лучший пример: f[x_]:=x+5. Это создает задержанный набор, который в любое время, когда значение передается в ссылку на символ f в качестве функционального параметра, этому значению будет дано локальное контекстное функциональное имя x (не влияя на глобальное определение x, если таковой существует). Тогда выражение x+5 будет оцениваться с использованием этой новой переменной/значения. Вышеупомянутый процесс требует инициализации символа f, локальной переменной x, а выражение x+5 постоянно хранится в памяти, если вы не очистите его.

Боковое примечание: f=5 и f[x_]:=5 работают как "Символ" f. f можно назвать функцией, когда квадратные скобки используются для извлечения ее значения, а f[x_] может мирно сосуществовать с f[x_,y_] без переопределения друг друга. Один из них будет использоваться при отправке одного параметра, а другой - при отправке 2 параметров.

Несколько раз вам просто нужна быстрая функция, и вам не нужно определять ее и оставлять ее висящей. Итак, (someValue + 5) становится (#+5)&, где & говорит: "Я чистая функция и буду работать с тем, что вы мне отправляете", а # говорит: "Я - параметр (или список параметров) который был отправлен на чистую функцию". Вы также можете использовать #1, #2, #3 и т.д., Если вы отправляете более 1 параметра.

Пример многопараметрической чистой функции общего пользования:

Скажем, mydata - список списков, которые вам нужно отсортировать по медиане списков (например, данные о ценах на жилье из разных городов США):

Sort[ myData , Median[#1] > Median[#2]& ]

Быстрая подсказка, если вы применяете функцию к одному значению, она может выглядеть более аккуратно и чище и использует меньше типизации для использования @ вместо [], что по существу означает Prefix. Не путайте с Map (/@) или Apply(@@). Вышеуказанная команда будет выглядеть следующим образом:

Sort[ myData , [email protected]#1 > [email protected]#2 & ] 

Вы можете связать @ как таковой: [email protected]@DeleteDuplicates[...]

Ответ 4

#1 представляет первый аргумент в чистой функции.

Если у вас есть несколько аргументов #1, #2, #3... ссылаются на первый, второй, третий аргументы и т.д.