Позвольте мне сначала сказать, что я новичок в Mathematica, и на этот вопрос, вероятно, легко ответить, но я до сих пор не смог найти никакой помощи для этой конкретной проблемы в Интернете. Здесь я в основном резюмировал, что мне нужно, чтобы мой код делал. Возникла проблема с использованием команды замены /.
с условным оператором IF
. По сути, у меня есть очень длинная функция, которая содержит другую функцию, которая определяется глобально с помощью условного выражения IF
. Эти несколько строк кода демонстрируют ошибку, с которой я сталкиваюсь...
In[1]:= y[x_, z_] = 2*x + 3*z;
In[2]:= zz[x_, z_] := If[y[x, z] < 0, 4*y[x, z], y[x, z]]
In[3]:= zz[-1, -2]
Out[3]= -32
Но мне нужно...
In[4]:= zz[x_, z_] /. x -> -1 /. z -> -2
Out[4]= If[3 Pattern[-2, _] + 2 Pattern[-1, _] < 0,
4 y[Pattern[-1, _], Pattern[-2, _]],
y[Pattern[-1, _], Pattern[-2, _]]]
что не дает ожидаемого числового члена. Заранее благодарю всех за помощь, как бы глупо ни звучал этот вопрос. Примечание. Я должен использовать команду замены, а не напрямую присваивать значение x
и z
.
ДОБАВЛЕНИЕ:
Я слишком упростил свой пример. Возьмите этот пример:
In[91]:= a[b_, c_] = -3*b + 2*c + d + e + f;
In[92]:= g[b_, c_] := If[a[b, c] < 0, -3*a[b, c], a[b, c]];
In[10]:= g[2, 4] /. d -> 1 /. e -> 2 /. f -> 3
Out[10]= 2 + d + e + f
Но я ожидаю увидеть результат Out[10]= 8
Надеюсь, еще одно легкое исправление.
zz[x, z] /. x -> -1 /. z -> -2
без символа подчеркивания? - person Howard   schedule 24.05.2011