Homework #9
CS 107 - Introduction to Scientific Computation
Homework #9


Due: Wednesday 10/30 at the beginning of class

1. Retirement Investing Analysis:  Using the Monte Carlo analysis techniques we developed in class as a starting point, come up with a realistic stock investment plan, making clear your assumptions, and backing your plan with analysis.  In particular, in the initial comments of invest.m, describe your assumptions of (1) work years, (2) savings rate, and (3) goal of income replacement.  You may, if desired, extend our approach in many ways, including the addition of bond data, social security projections, non-uniform savings rates, etc.  By running invest.m, the grader should be able to reproduce the simulations, graphs, etc. that support your plan, which should be outlined in the initial comments of invest.m.  This exercise is a practical opportunity to apply Monte Carlo analysis to your (hopefully) great future benefit!  Function invest should have no parameters and return the estimated probability of success for your plan. Note: The grading submission system will merely judge that the probability for success is valid.  Separate evaluation (i.e. reading) by the grader will be necessary to score this problem.

2. Pythagorean Triples:  Exercise 8.18 with the following modifications: In triples.m, take the maximum value of cMax as input, rather than assuming 10,000 as a maximum value.  To avoid redundant triples, restrict search such that ab.  Return the (a, b, c) triples as a t-by-3 matrix, where t is the number of triples.  Thus, each row is a triple.  Organize your loops such that these triples are sorted by a, then b.  In other words, the first column of a values is sorted, and if there are multiple triples with a given a value, then b values will be sorted among these triples.  Hint: Your triples will be sorted correctly if you loop through values of a and b correctly.

3. Dot Product: In dotProd.m, use loops to create your own dot product function that takes two equal-length vectors and returns their dot product.  If the two vectors are not of equal length, print "dotProd: input vector lengths do not match", and return an empty list.  A dot product of two vectors v1 and v2 of length n is v1(1) * v2(1) + v1(2) * v2(2) + ... + v1(n) * v2(n).

4. Matrix Multiplication:  In matMult.m, use loops to create your own matrix multiplication function that takes an m-by-n matrix m1 and an n-by-p matrix m2, and returns the m-by-p matrix m3 resulting from the matrix multiplication of m1 and m2.  If the number of columns in m1 does not match the number of rows in m2, print "matMult: input matrices are not compatible", and return an empty list.  Otherwise, return m3.  The value at m3(i, k) is the dot product of row i in m1 and (transposed) column k in m2.