複利計算(数列の続き)
10000 円を 利率 月1%で 複利で 預ける
複利法: 利息を 元金に組み入れる
元金 10000円なら
1ヶ月後 は 利息が
100円ついて
10100円になる(これが1ヶ月後 の元金)
(* 10000 0.01) 金利
(+ 10000 (* 10000 0.01)) 元金 と 金利の合計
なので
2ヶ月後 は 利息が
101円ついて
10201円になる(これが2ヶ月後 の元金)
(* 10100 0.01) 金利
(+ 10100 (* 10100 0.01)) 元金 と 金利の合計
(+ 10100 (* 10100 0.01)) 元金 と 金利の合計
これは
(* 10000 1.01) でも いいね
(* 10100 (+ 1 0.01)) を分配法則でばらすと
(+ (* 10100 1) (* 10100 0.01)) なので
(+ 10100 (* 10100 0.01))
nヶ月後の金額は
その前月の金額に 1.01 掛けた値になるよね
(define azukeru (lambda (n)
(cond ((= n 1) 10100)
(else (* (azukeru (- n 1)) 1.01)))))
0ヶ月後は 元金 10000 と考えたら
(define azukeru (lambda (n)
(cond ((= n 0) 10000)
(else (* (azukeru (- n 1)) 1.01)))))
練習
元金 a
月利 b
の 複利法で
nヶ月後
の金額を 求めよ
研究
前月の金額は (azukeru (- n 1)) なので
(azukeru (- n 1)) に 金利を掛けた (* 0.01 (azukeru (- n 1)))が 利息になる
なので
(+ (azukeru (- n 1)) (* 0.01 (azukeru (- n 1)))) 今月の元金
(define azukeru2 (lambda (n)
(cond ((= n 0) 10000)
(else (+ (azukeru2 (- n 1)) (* 0.01 (azukeru2 (- n 1))))))))
このプログラムは間違っていませんが nが30ぐらいになると
止まったようになります。なぜでしょう
積立貯金
毎月 10000 円を 月利 1% の 複利法 で 積み立てる
1ヶ月後 は 利息が
100円ついて
10100円になる(これが1ヶ月後 の元金)
2ヶ月後
元金 10000円 + 10100円になる
利息が (* 0.01 (+ 10000 10100))
(define tumitate (lambda (n)
(cond ((= n 0) 0)
(else (* 元金 1.01)))))
元金は前月前の積立額に当月分の積立額を足したもの
前月前の積立額 (tumitate (- n 1))
当月分の積立額 10000
(define tumitate (lambda (n)
(cond ((= n 0) 0)
(else (* (+ (tumitate (- n 1)) 10000) 1.01)))))