1 view (last 30 days)

Show older comments

So the program is meant to stop if balance >= 500000 but it seems to soldier on until it runs out of months. Use of a for loop is required.

clear; close all; clc

balance(1) = 1000;

contribution = 1200;

M = 1; % month ticker

years = 12/M;

interest = 0.0025;

for M = 1:300

if balance(M) >= 50000 %balance(M)

end

M = M + 1; % you need to increment months + 1 every cycle

balance(M) = balance(M-1) + interest*balance(M-1) + contribution;

end

%Balance %This will display the final Balancefprintf('%g Months until $500000 reached\n', M);

fprintf('%g Years until $500000 reached\n', years);

format bank

plot(balance);

grid on

ytickformat('usd')

title('Saving 3% compound')

xlabel('Months')

ylabel('Saving balance')

Jan
on 13 Sep 2021

Edited: Jan
on 13 Sep 2021

Either

for M = 2:300

if balance(M) >= 50000 %balance(M)

break; % Leave the for M loop

end

% NOPE ! M = M + 1; % you need to increment months + 1 every cycle

balance(M) = balance(M-1) + interest*balance(M-1) + contribution;

end

or

for M = 2:300

if balance(M) < 50000 %balance(M)

% NOPE ! M = M + 1; % you need to increment months + 1 every cycle

balance(M) = balance(M-1) + interest*balance(M-1) + contribution;

end

end

If you do not know in advanve how log a loop runs, a while loop is nicer:

M = 2;

while M <= 300 && balance(M) < 50000

balance(M) = balance(M-1) + interest*balance(M-1) + contribution;

M = M + 1;

end

While the counter M must be increased in the while loop, this is done in the for loop automatically.

[EDITED] M starts at 2 now.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!