clear; close all % % Lab 4 % Exercise the Collatz function and plot the results % myname = 'Warren Gibson'; ID = 123456; % % Pick a random odd starting number. Generate and plot the sequence. % n = 20*mod(ID,10)+1; c = collatz(n); semilogy(c,'*-') xlabel('Iteration') ylabel('Sequence value') header = sprintf('Collatz history for starting value n = %d by %s, ID %d', ... n,myname,ID); title(header) start = ; %% vector of starting numbers 3,5, ... 100,000 nstart = length(start); nmax = zeros(1,nstart); %% Pre-allocate arrays nit = zeros(1,nstart); % % Repeat for each starting number % Get nmax and nit for each starting number % for i=1:nstart c = collatz(start(i)); if isinf(c(end)) %% did we overflow? fprintf('Overflow for n=%d\n',start(i)) break end nmax(i) = nit(i) = end figure loglog(start,nit,'.'); xlabel('Starting number'); ylabel('Iterations to finish'); header = sprintf('Collatz problem, %s, ID %d',myname,ID); title(header) figure; %% Now plot highest number reached vs. starting number loglog( etc.