Why is there an error? Undefined function 'f' for input arguments of type 'double'.
Show older comments
Error using arrayfun
Undefined function 'f' for input arguments of type 'double'.
Error in golden (line 3)
plot(t,arrayfun(@f,t));
function golden(a, b)
t=[a:0.01:b];
plot(t,arrayfun(@f,t));
hold on
tol=10^(-12);
r=(3-sqrt(5))/2;
c=a+r*(b-a);
d=b-r*(b-a);
fa=f(a);
fb=f(b);
fc=f(c);
fd=f(d);
while (b-a>tol)
if (fc<fd)
b=d;
fb=fd;
d=c;
fd=fc;
c=a+r*(b-a);
fc=f(c);
plot(c,fc,'r*');
else
a=c;
fa=fc;
c=d;
fc=fd;
d=b-r*(b-a);
fd=f(d);
plot(d,fd,'r*');
end
end
fprintf('Minimum found at x=%.12f \n', (a+b)/2, f(a+b)/2);
hold off
end
1 Comment
Image Analyst
on 5 Mar 2014
http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup Don't double space. Just highlight then click {}Code. Don't click {}Code before highlighting either!
Accepted Answer
More Answers (0)
Categories
Find more on Filter Analysis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!