Tomáš Bzdušek
Tomáš Bzdušek

Reputation: 103

Mathematica, define multiple functions using for loop

I am using usual for-loop for computation in Mathematica:

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

For each i I need to define a function F_i[x_,y_]:=.... Here "i" is suuposed to be a label of the function. This is however not the corrcet Mathematica expression.

The question is, how to define multiple functions distinguished by the label i? I mean, what is the correct syntax?

Thanks a lot.

Upvotes: 0

Views: 2242

Answers (2)

mathlawguy
mathlawguy

Reputation: 326

I'm not exactly sure what you are trying to do, but I have some confidence that the for loop is not the way to go in Mathematica. Mathematica already has pattern matching that likely eliminates the need for the loop.

What about something like this

f[i_][x_,y_]:= i(x+y) 

or something like this

f[s_String][x_,y_]:=StringLength[s](x+y)

or even

f[s_,x_,y_]:=StringLength[s](x+y)

Upvotes: 1

Chris Degnen
Chris Degnen

Reputation: 8655

Here are some steps which may help. There are two versions below, the second one includes the value of i on the RHS of the function definition.

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 i

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

Upvotes: 0

Related Questions