带条件问题的 Mathematica For 循环

问题描述 投票:0回答:1

我正在使用 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。

loops for-loop if-statement iteration wolfram-mathematica
1个回答
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[]]]
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.