Когда вы делаете что-то вроде f[x_]:=Sin[x]
, вы определяете правило замены шаблона.Если вместо этого вы скажете f[x_smth]:=5
(если вы попробуете оба, выполните Clear[f]
перед вторым примером), вы на самом деле говорите «где бы вы ни увидели f[x]
, проверьте, равен ли x
заголовок smth
, и, еслизаменить на 5 ".Попробуйте, например,
Clear[f]
f[x_smth]:=5
f[5]
f[smth[5]]
Итак, чтобы ответить на ваш вопрос, правило таково, что в f[x_hd]:=1;
, hd
может быть чем угодно и соответствует заголовку x.
Можно также иметь более сложные определения, такие как f[x_] := Sin[x] /; x > 12
, которые будут совпадать, если x> 12 (конечно, это может быть произвольно усложнено).
Редактировать: я забыл оРеальная часть.Вы, конечно, можете определить Clear[f];f[x_Real]=Sin[x]
, и это работает, например, для f [12.].Но вы должны иметь в виду, что, хотя Head[12.]
равно Real
, Head[12]
равно Integer
, поэтому ваше определение не будет совпадать.