"Undefined function 'f' for input arguments of type 'double'.
Error in linearinterp>refine (line 11) if abs((f(x1)+f(x2))/2-f(xm))<tol
Error in linearinterp (line 3) points = refine(0, 7, 0.6);"
function linearinterp
f = @(x) (exp(-x/2).*sin(x.^2+8));points = refine(0, 7, 0.6);plot(points, f(points), 'r+');hold onplot(points, f(points));hold off
end
function points = refine(x1, x2, tol)
xm = (x1+x2)/2;
if abs((f(x1)+f(x2))/2-f(xm))<tol
points=[x1,x2];
else
left=refine(x1, xm, tol);right=refine(xm, x2, tol);points=[left, right(2:length(right))];
end
end
Best Answer