I have a very similar function to that which a solution was provided by kguler, but am unsure as to how to adapt the solution that was given there. That post can be seen here. The adaptation is only slight but I will explain it fully below.
I want to construct a function that accepts multiple arguments, but where the number of arguments can change according to the length of a list that I insert as the set of arguments. For example, I have a table which has as elements the following lists:
{{1,2,3,4},{1,2,3,4,5,6},{1,2,3,4,5,6,7,8}, ...}
Note that the first list within the table has a length of 4, with progressive lists having an extra length of 2 compared to its previous. I have created the following function which works for the first list in the table:
f[{a,b,c,d}]:= (y[2] - c)*Exp[2y[1](a - b) + (a^2 - b^2)+ 2y[2](c - d) + (c^2 - d^2)]
Similarly the function for the second list in the table should be:
f[{a,b,c,d,e,f}]:= (y[3] - e)*Exp[2y[1](a - b) + (a^2 - b^2)+ 2y[2](c - d) +
(c^2 - d^2) + 2y[3](e - f) + (e^2 - f^2)]
The main difference to the similar previous post is the factor in front of the exponential. There is a pattern which obeys the following:
- The coefficient in front of the exponential is always (y[n]- (element 1 of nth pair)) - where n is the number of the nth pair of elements in the list - i.e. for 3 pairs n would be 3 etc.
- In the exponent, the argument of y is the number of the pair being considered and the terms within the parenthesis is similarly the first element of each pair minus the second element of each pair.
I want to create a table that has as elements the result of the function. So the first element of such a table will be the evaluation to the above. The second element of the table should be the evaluation of the function also written explicitly above and so on.
How can I create the general function that accepts a varying number of arguments? I will need to loop over this function to assess it for the different lists in the table above.
The solution of this should only be a variation of the solution that was provided by kguler here, but I can't get it to work at the moment. Thanks for your help.