I got confused working with list of functions of two variables.
I construct few lists of functions, one is vector of functions List1 and another is 2D list of functions List2:
FLista = MapThread[F1[#1, b] &, {{a1, a2, a3, a4, a5}}];
FListb = MapThread[F2[#1, b] &, {{a1, a2, a3, a4, a5}}];
FListc = MapThread[F3[#1, b] &, {{a1, a2, a3, a4, a5}}];
List1 = Transpose[{FLista, FListb, FListc}]
{
{F1[a1, b], F2[a1, b], F3[a1, b]},\
{F1[a2, b], F2[a2, b], F3[a2, b]},\
{F1[a3, b], F2[a3, b], F3[a3, b]},\
{F1[a4, b], F2[a4, b], F3[a4, b]},\
{F1[a5, b], F2[a5, b], F3[a5, b]}\
}
List2= FLista + FListb + FListc
{F1[a1, b] + F2[a1, b] + F3[a1, b], F1[a2, b] + F2[a2, b] + F3[a2, b],\
F1[a3, b] + F2[a3, b] + F3[a3, b], F1[a4, b] + F2[a4, b] + F3[a4, b],\
F1[a5, b] + F2[a5, b] + F3[a5, b]}
where {a1, a2, a3, a4, a5} are given numbers.
Now I would like to define the second argument for each function in List1 and List2. Let it be b={b1, b2, b3}.
And I would like to obtain the following:
(*Desired output for List1:*)
{
{F1[a1, b1], F2[a1, b1], F3[a1, b1]},\
{F1[a1, b2], F2[a1, b2], F3[a1, b2]},\
{F1[a1, b3], F2[a1, b3], F3[a1, b3]},\
{F1[a2, b1], F2[a2, b1], F3[a2, b1]},\
...
{F1[a4, b3], F2[a4, b3], F3[a4, b3]}\
{F1[a5, b1], F2[a5, b1], F3[a5, b1]}\
{F1[a5, b2], F2[a5, b2], F3[a5, b2]}\
{F1[a5, b3], F2[a5, b3], F3[a5, b3]}\
}
(*Desired output for List2:*)
{F1[a1, b1] + F2[a1, b1] + F3[a1, b1], F1[a1, b2] + F2[a1, b2] + F3[a1, b2],F1[a1, b3] + F2[a1, b3] + F3[a1, b3], ...
F1[a5, b1] + F2[a5, b1] + F3[a5, b1], F1[a5, b2] + F2[a5, b2] + F3[a5, b2], F1[a5, b3] + F2[a5, b3] + F3[a5, b3]}
I would expect, there is a solution based on Map or Thread functions, but, I have no idea how to tell Mathematica that the first argument in Fn[arg1,arg2] is already defined with {a1, a2, a3, a4, a5}, and they have ignore first index or assume it to be blind.
I still have lack of expertise in this topic, and the paradigm I am implementing such constructions might be wrong. Any suggestions are warmly invited.
UPD Whit the solution given by @lercir below, I have to emphasize that I am looking for the solution of sequential assignments of arg1 and arg2. The procedure I would like to implement is the sequential definition of arguments: 1) Define arg1s 2) work with this functions (what I omitted in the post thinking it is not necessary to be noted) 3) Define arg2s to the final lists.
List1 /. Thread[b -> {b1, b2, b3}]$\endgroup$