# What is the need for function parameters? Many possible inputs

If I have many possible variables related to one another, why do I need to define my function with parameters for plotting? For example, if I have an equation like:

output_value := a * b * c * d / ( e * f * g * h );


Assuming that all values are defined and have some default value, why can't I just do this to plot:

Plot[ output_value, { b, 0, 100 } ];


The annoying thing is having to do this:

output_value[aparam_, bparam_, cparam_, dparam_, eparam_, fparam_, gparam_, hparam_] := aparam * bparam * cparam * dparam / ( eparam * fparam * gparam * hparam );


and then:

With[ {aparam=a,cparam=c,dparam=d,eparam=e,fparam=f,gparam=g}, Plot[ output_value, { bparam, 0, 100 } ];

-
BTW, you can ease your pain by writing With[{a = a, c = c, ...}, ...] . See the third example under With in the Documentation Center – m_goldberg Nov 12 '13 at 2:48

You do not have to define a function to plot it. You can certainly do

a=1;
f:=a+x;
Plot[f,{x,0,10}]


and the output is the graph you expected. Defining the function as above has many drawbacks:

1) You cannot evaluate it without making an explicit replacement. For example, f(2) becomes

f/.x->2


I would generalize this point and say that defining $f(x)$ with a f[x_] gives convenience down the road.

2) You have to be careful not to use the variable that you are "reserving" for the independent variable:

<<lots of code>> x=3; <<lots of code>> f/.x->2


The last evaluation of f/.x->2 will not necessarily give you the $f(2)$ that you might have expected. I would generalize this point and say that defining $f(x)$ with a f[x_] makes it more difficult to shoot oneself in the foot.

-
I see, so basically you are saying that using function parameters is optional. Thats good. – Tyler Durden Nov 12 '13 at 0:48
@TylerDurden One of the places where parameter lists are almost a necessity is in Manipulate, where sliders won't update a parameter in a function if it isn't explicitly visible to Manipulate. – Sjoerd C. de Vries Nov 12 '13 at 6:38