首先我要声明,我是一名 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
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
希望另一个简单的修复。