kill(all)$

[L.Van_Warren, ICF, timedate()];

van=facebook.com/LearningCalculus;

        In the  course, "Information, Computing and the Future",
        Dr. Daniel Berleant notes that Mars and Earth have land
        masses of similar area[1].

        He then asks the following hypothetical question regarding
        the possible future population of Mars:

              If we start with a colony of 100 people,
              and the rate of population growth is 5% per year,
              how many years will have elapsed
              by the time the population reaches 10 billion (1 x 10^10)?

        We begin the induction by writing:

              the population at year 0 = 100 then
              the population at year 1 = 100*(1+0.05)
              the population at year 2 = 100*(1+0.05)(1+0.05)
      
        Noting that each year composes an instance of (1+0.05) in
        the rhs product we observe the exponential and write:

population(start, rate, year) := start*(1+rate)^year;

population(100, 0.05, x);

population(100, y, x);

round(population(100, .05, 10));

        Now we would like to to know the year that the
        population reaches the peak p of 10 billion,
        so we solve the function for the year. Since the
        abbreviation landscape is unambiguous, we shorten
        the names:

solution:solve(population(s, r, y)=p,y)$

Year(s,r,p):=float(''(rhs(first(solution))));

        Since the function grows so rapidly,
        we will now add some date functions

year(y):=floor(y)$
month(y):=floor((y-year(y))*12)$
day(m):=floor((m-floor(m))*365.25/12)$
date(d):=['year=year(d), 'month=month(d), 'day=day(d)]$

        Here is our first solution
        Starting with a 100 person colony
        and a growth rate of 5% per year
        we reach 10 billion in:

date(Year(100, 0.05, 10^10));

        If we want to solve the same problem
        for a 10% growth rate we have

date(Year(100, 0.10, 10^10));

        Finally if we want to do the Moore's Law
        growth rate of ~41% a year we have:

date(Year(100, 0.41, 10^10));