【发布时间】:2011-05-25 16:27:10
【问题描述】:
我这里有一段复杂的代码,既不漂亮也不容易理解,但它代表了我正在使用的大量代码的简化。我是 Mathematica 新手和have already received some help on this issue from stackoverflow,但它仍然没有解决我的问题。这是我希望你能跟随的代码,并假设我试图让它做。感谢编程高手的帮助。
a[b_, c_] = -3*b + 2*c + d + e + f;
g[b_, c_] := If[a[b, c] < 0, -3*a[b, c], a[b, c]];
h[T_, b_, c_] = (T/g[b, c]);
i[h_, T_, b_, c_] := If[h[T, b, c] > 0, 4*h[T, b, c], -5*h[T, b, c]];
j[b_, c_] := If[a[b, c] < 0, 5*a[b, c], 20*a[b, c]];
XYZ[h_, T_, i_, g_, j_, b_, c_] = T*i[h, T, b, c]*g[b, c] + j[b, c]
rules = {a -> 1, b -> 2, c -> 3, d -> 4, e -> 5, f -> 6, T -> 10};
XYZ[h, T, i, g, j, b, c] //. rules
【问题讨论】:
-
问题到底是什么?我认为你应该解释你正在尝试做什么以及你认为错误在哪里。
-
另外,当你提到previous question时,参考它是明智的。
-
目标是在替换所有变量后得到XYZ的数字输出,但是上面的代码不起作用。
-
rules列表的最后一个条目,您的意思是T -> 10? -
第一个规则 a->1 也没有意义,因为您还定义了一个具有该名称的函数,其头部现在将被 1 替换。摆脱该规则后,表达式计算为数值。
标签: wolfram-mathematica mathematical-expressions