Works for me. Some possible reasons for your error: p is already defined in your workspace, in a way that doesn't allow the assignment you have in the loop; or your "real" code is actually for a function of multiple variables, (so x is actually a vector).
In the first case, that's easily solved by preallocating p before the loop, which you should do anyway:
a=1:1:9;
x0=200:-10:110;
p = zeros(9,1);
for i=1:9
y=@(x) x*exp(a(i))-x/2;
f=@(x) a(i)*x^2+1/2*y(x)-300;
p(i)=fsolve(f, x0(i));
end
plot(a,p,'o-')
In the second case, you'll just need to changing your indexing. x0 would have to be a matrix, as would p, and you'd have to index into a whole row or column (depending on your choice of orientation) on each iteration.
Best Answer