function file: func.m: function f=func(t,y) k=0.01; L=1; global h; f = (k.*y.*(L-y)-h.*(sin(pi.*t)).^2); script file: t0=0;tf=1; tol=input('Enter tolerance: '); hstart=input('Enter H start: '); hend=input('Enter H end: '); step=input('Enter step size: '); i=0; out=zeros(1,3); example=[h,difference,y(1)]; disp(example); for C=hstart:step:hend sol=ode45(@func,[t0 tf],0.5); sxint=deval(sol,tf); b=[C,diff,sxint]; diff=abs(0.5-sxint); if diff < tol,i=i+1; out(i,:)=b; end; end; disp(out); Currently it is not liking something with the h. I want to vary the h in the for loop but it keeps the same h every time. I have tried also making this a handle, but I cant pass h as a parameter in the function in ode45().