让我首先声明我是 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
注意:我必须使用 replace 命令,而不是直接为and赋值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
希望另一个简单的修复。