bisection method: Simulating a retirement fund

Baba raoulbia at gmail.com
Thu Sep 2 16:37:01 EDT 2010


level: beginner

exercise source:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/assignments/pset4.pdf

Problem 4

Can my code be optimised?
I think my approach is correct but i am hesitant about the initial max
value.

def nestEgVariable(salary, save, preRetireGrowthRates):
    SavingsRecord = []
    fund = 0
    depositPerYear = salary * save * 0.01
    for i in preRetireGrowthRates:
        fund = fund * (1 + 0.01 * i) + depositPerYear
        SavingsRecord += [fund,]
    startingPot = SavingsRecord[-1]
    return startingPot


def
expenseCalculator(postRetireGrowthRates,fundsize,epsilon,yearsOfretirement ):
    low = 0
    high = fundsize
    guess = (low + high) /2
    while abs(guess * yearsOfretirement - fundsize) > epsilon:
        if guess * yearsOfretirement > fundsize :
            high = guess
        else: low = guess
        guess = (low + high) /2
    return guess


def findMaxExpenses(salary,save,preRetireGrowthRates,
postRetireGrowthRates,epsilon):
    yearsOfretirement = len(postRetireGrowthRates)
    fundsize = nestEgVariable(salary, save, preRetireGrowthRates)
    for growthRate in postRetireGrowthRates:
        expenses = expenseCalculator(postRetireGrowthRates,
 
fundsize ,epsilon,yearsOfretirement )
        fundsize  = (fundsize  * (1 + 0.01 * growthRate)) - expenses
        print 'fundsize', fundsize
        print 'expenses', expenses
        yearsOfretirement -=1
    return fundsize



findMaxExpenses(10000,10,[3, 4, 5, 0, 3],[10, 5, 0, 5, 1],0.01)

thanks
Baba



More information about the Python-list mailing list