我在Mathematica中使用通常的for-loop进行计算:
For[i=1,i<n+1,i++, ...calculation... ]
对于每个i
,我需要定义一个函数F_i[x_,y_]:=...
。这里“i”被认为是该函数的标签。然而,这不是Mathematica表达的结果。
问题是,如何定义由标签i区分的多个功能?我的意思是,正确的语法是什么?
非常感谢。
答案 0 :(得分:1)
我不确定你要做什么,但我有信心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)
答案 1 :(得分:0)
以下是一些可能有用的步骤。下面有两个版本,第二个版本包含函数定义的RHS上的i
值。
n = 2;
For[i = 1, i < n + 1, i++,
f[i][x_, y_] := (x + y)*i]
?f
Global`f
f [1] [x_,y_]:=(x + y)i
f [2] [x_,y_]:=(x + y)i
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
Global`f
f [1] [x $ ,y $ ]:=(x $ + y $)1
f [2] [x $ ,y $ ]:=(x $ + y $)2
Clear[i]
f[2][2, 3]
10