# What did I do wrong in my 'for' loop function?

2 ビュー (過去 30 日間)
Minhao Wang 2020 年 10 月 13 日
コメント済み: Image Analyst 2020 年 10 月 13 日
The question is
With the help of an RESP (Registered Education Savings Plan), a parent can start putting aside money for a child's post-secondary education. Suppose that a young couple deposits \$2,000 to start the savings plan, and each month thereafter they contribute \$200. Assume that a fixed interested rate of 6.25% per year compounded monthly is applied.
Each month the balance increases according to the following formula: New balance = Old balance + (Old balance * Monthly interest rate) + Monthly contribution
nb(1) = 2000; %the initial balance
mir = 0.0625/12; %monthly rate
mc = 200;% contribution for each month
for B = 2 : 216
nb(B) = (nb(B-1)+1) + ((nb(B-1)+1) * mir) + mc;
end
fprintf('At the end of 18 years you will have saved \$ %.2f \n',nb(B))
when you run this, you will get 85431.77, But the correct answer should be 85035.09.
Where did I do wrong?

サインインしてコメントする。

### 回答 (2 件)

Steven Lord 2020 年 10 月 13 日
In this line of your code:
nb(B) = (nb(B-1)+1) + ((nb(B-1)+1) * mir) + mc;
What's the old balance? Are you certain that you're accurately carrying over the balance from the previous month into the calculations for the next month? [From the fact that I'm asking these questions, you're probably guessing the answer to that second question is no.]
##### 2 件のコメントなしを表示なしを非表示
Minhao Wang 2020 年 10 月 13 日
the old balance(the initial balance) is 2000\$ , I don't know where did I do wrong...
Steven Lord 2020 年 10 月 13 日
If your initial balance nb(1) is 2000, when you go to compute the balance for month 2 nb(2) you start with an old balance of 2001. That may not seem like a big difference, but it's big enough compounded over two years to make your answer incorrect by about \$400.

サインインしてコメントする。

Image Analyst 2020 年 10 月 13 日
Why are you adding 1 to the old balance nb(B-1)???
##### 2 件のコメントなしを表示なしを非表示
Minhao Wang 2020 年 10 月 13 日
I thought that means add a month?
Image Analyst 2020 年 10 月 13 日
No. B is the month, and the for loop takes care of incrementing the month number. You were improperly adding \$1 to the old balance so that's why your answer was more than the correct answer.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

### Community Treasure Hunt

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

Start Hunting!

Translated by