# Why doesn't my Manipulate work?

I am new to Mathematica and reading my way through a few books. Playing around with Manipulate and I noticed the following does not work:

y[x_]:=x^n;
plot := Plot[y[x],{x,0,10}, AspectRatio->1];
Manipulate[plot,{n,1,5}]


I expected the above to work as I am using SetDelayed in my function definition so not sure if I understand why this doesn't work.

However the following does work.

Manipulate[
Module[{y,x,plot},
y[x_]:=x^n;
plot := Plot[y[x],{x,0,10}, AspectRatio->1];
Show[plot]
],
{n,1,5}
]

• Please have a look at the markdown page and format your question to allow for easy reading (Indenting code segments by four spaces already helps a lot). – Yves Klett Jan 31 '13 at 15:57
• @YvesKlett took care of it. – rcollyer Jan 31 '13 at 15:57
• @rcollyer I was going for sustainable :-) – Yves Klett Jan 31 '13 at 15:58
• @YvesKlett I was going for quick, and a gold badge (eventually). :) – rcollyer Jan 31 '13 at 15:58
• @rcollyer wuzzat? Had I but known! – Yves Klett Jan 31 '13 at 15:59

Your problem stems from the n in y[x_] := x^n; not being in the same scope as the n in your Manipulate and, therefore, not being the same variable.
plot[n_] := Plot[x^n, {x, 0, 10}, AspectRatio -> 1];