|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- %
- % Calculate and plot the iteration needed for different epsilon values,
- % keeping lambda (accuracy) fixed.
- %
-
-
- % Load the functions and interval
- GivenEnv;
-
- fig_dir = 'figures';
- if ~exist(fig_dir, 'dir')
- mkdir(fig_dir);
- end
-
- % Setup
- % ========================
-
- % lambda = 0.01
- % epsilon: e < lambda/2 = 0.005
- % de: A small step away from zero and lambda/2
- % de = 0.0001
- % N: 50 points (50 epsilon values)
-
- N = 50;
- lambda = 0.01;
- de = 0.0001;
- epsilon = linspace(de, (lambda/2)-de, N);
- k = zeros(1,N); % preallocate k
- n = zeros(1,N); % preallocate n
-
-
- %
- % Call the min_bisection method for each epsilon value for each
- % function and keep the number of iterations needed.
- % Then plot and save the # of iterations k(epsilon) for each function.
- %
-
- figure('Name', 'iterations_over_epsilon_min_bisection', 'NumberTitle', 'off');
- set(gcf, 'Position', [100, 100, 1280, 600]); % Set the figure size to HD
-
- for i = 1:length(funs)
- for j = 1:N
- [a, b, k(j), n(j)] = min_bisection(funs(i), a_0, b_0, epsilon(j), lambda);
- end
- fprintf('%20s(%34s ): [a, b]= [%f, %f], iters(min, max)= (%d, %d), calls(min, max)= (%d, %d)\n', ...
- "min_bisection", char(funs(i)), a(end), b(end), k(1), k(N), n(1), n(N) );
- subplot(1, length(funs), i);
- plot(epsilon, n, '-b', 'LineWidth', 1.0);
- title(titles(i), 'Interpreter', 'latex', 'FontSize', 16);
- xlabel('epsilon');
- ylabel("Calls of f" + i);
- end
-
- %
- % Print and save the figures
- %
- %fig_epsc = fullfile(fig_dir, "iter_over_epsilon_min_bisection" + ".epsc");
- fig_png = fullfile(fig_dir, "iter_over_epsilon_min_bisection" + ".png");
-
- %print(gcf, fig_epsc, '-depsc', '-r300');
- print(gcf, fig_png, '-dpng', '-r300');
-
- close(gcf);
-
|