我在 Mathematica 中使用通常的 for 循环进行计算:
For[i=1,i<n+1,i++, ...calculation... ]
对于每个i
我需要定义一个函数F_i[x_,y_]:=...
。这里“i”被假定为函数的标签。然而,这不是正确的 Mathematica 表达式。
问题是,如何定义标签 i 区分的多个函数?我的意思是,正确的语法是什么?
非常感谢。
我在 Mathematica 中使用通常的 for 循环进行计算:
For[i=1,i<n+1,i++, ...calculation... ]
对于每个i
我需要定义一个函数F_i[x_,y_]:=...
。这里“i”被假定为函数的标签。然而,这不是正确的 Mathematica 表达式。
问题是,如何定义标签 i 区分的多个函数?我的意思是,正确的语法是什么?
非常感谢。
我不确定您要做什么,但我有信心 for 循环不是 Mathematica 的方式。Mathematica 已经有了模式匹配,可能消除了循环的需要。
这样的事情怎么办
f[i_][x_,y_]:= i(x+y)
或类似的东西
f[s_String][x_,y_]:=StringLength[s](x+y)
甚至
f[s_,x_,y_]:=StringLength[s](x+y)
以下是一些可能有所帮助的步骤。下面有两个版本,第二个包含i
函数定义的RHS上的值。
n = 2;
For[i = 1, i < n + 1, i++,
f[i][x_, y_] := (x + y)*i]
?f
全球`f
f[1][x_,y_] := (x+y) 我
f[2][x_,y_] := (x+y) 我
Clear[i]
f[2][2, 3]
5 我
Quit[]
n = 2;
For[i = 1, i < n + 1, i++,
With[{j = i},
f[i][x_, y_] := (x + y)*j]]
?f
全球`f
f[1][x$ ,y$ ] := (x$+y$) 1
f[2][x$ ,y$ ] := (x$+y$) 2
Clear[i]
f[2][2, 3]
10