Mathematica,使用for循环定义多个函数

时间:2012-11-19 12:53:12

标签: for-loop wolfram-mathematica user-defined-functions

我在Mathematica中使用通常的for-loop进行计算:

For[i=1,i<n+1,i++, ...calculation... ]

对于每个i,我需要定义一个函数F_i[x_,y_]:=...。这里“i”被认为是该函数的标签。然而,这不是Mathematica表达的结果。

问题是,如何定义由标签i区分的多个功能?我的意思是,正确的语法是什么?

非常感谢。

2 个答案:

答案 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