0

我在 Mathematica 中使用通常的 for 循环进行计算:

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

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

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

非常感谢。

4

2 回答 2

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)
于 2012-11-19T14:25:27.553 回答
0

以下是一些可能有所帮助的步骤。下面有两个版本,第二个包含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

于 2012-11-19T13:56:34.593 回答