我正在使用 Mathematica,但我在为我的 For 循环设置条件时遇到了问题。我解释:
我有两个功能
f[x,y,t]
z[x,y,t]
我想提出一个让我做的条件:
for all x€[-a,a] and y€[-b,b] and t€[0,139] : If z[x,y,t]>0 Then f[x,y,t]==0,如果不是,则让 f[x,y,t] 具有其原始值。
我想要做的就像一个数值 Heaviside 函数。
所以我所做的是以下内容:
xx = Table[k, {k, -a, a, a/69}];
yy = Table[k, {k, -b, b, b/69}];
tt = Table[k, {k, 1, 139, 1}];
For[t = 1, t < 140, t++, If[z[xx[[t]], yy[[t]], t] > 0, f[xx[[t]], yy[[t]], t] == 0, Continue]]
这没有显示任何错误,但是当我尝试用值替换时,它似乎没有改变我的 f[x,y,t] 函数的任何内容。
我该怎么做才能让它发挥作用?
我想要的是,如果任何固定 t 的 z[x,y] 大于 0,则任何固定 t 的 f[x,y] 的任何元素都将替换为 0。
这行不通
Clear[f]
t = 1;
f[xx[[t]], yy[[t]]] = {0, 0}
xx[[t]]
-a
所以像这样设置
xx[[t]]
和yy[[t]]
For[t = 1, t < 140, t++,
If[z[xx[[t]], yy[[t]], t] > 0,
{xx[[t]], yy[[t]]} = {0, 0};
Continue[]]]
我想要的是f[x,y]的任何元素对于任何固定的t都将被替换为0
所以只是为了好玩
f[a_, b_] := {a = 0, b = 0}
SetAttributes[f, HoldAllComplete]
例如
t = 1;
f[xx[[t]], yy[[t]]];
xx[[t]]
0
For[t = 1, t < 140, t++,
If[z[xx[[t]], yy[[t]], t] > 0,
f[xx[[t]], yy[[t]]];
Continue[]]]