Extra exercises
February 2020
Back to index.html.
Extra exercises
Some numerics
- Write a program to find triplets of integer numbers (\(a\), \(b\), and \(c\)) to satisfy \(a^2+b^2=c^2\) where \(0<a,b,c<500\).
- [Optional] Write a program to find prime numbers from 1 to 100.
Systematic covariance structure
- Read one integer number (\(n>0\)) and one real number (\(0<r<1\)) from keyboard, then allocate a square matrix \(\mathbf{M}\).
- Make a tridiagonal matrix with 1 on diagonal and 0 or \(r\) on off-diagonal with an arbitrary \(n\). See the following example for \(n=5\). \[ \mathbf{M}=\left[ \begin{array}{ccccccccc} 1&r&0&0&0\\ r&1&r&0&0\\ 0&r&1&r&0\\ 0&0&r&1&r\\ 0&0&0&r&1\\ \end{array} \right] \]
- Make an “autoregressive” covariance-structure matrix with an arbitrary \(n\). See the following example for \(n=5\). \[ \mathbf{M}=\left[ \begin{array}{ccccccccc} 1&r&r^2&r^3&r^4\\ r&1&r&r^2&r^3\\ r^2&r&1&r&r^2\\ r^3&r^2&r&1&r\\ r^4&r^3&r^2&r&1\\ \end{array} \right] \]
Symmetric matrix
- Read one integer number (\(n\)) from the keyboard, and allocate a square matrix (\(\mathbf{M}\)). Make a symmetric matrix with random numbers with
random_number
. - Make a function to convert a square matrix to a symmetric matrix using its lower (or upper) triangular elements.
Half-stored symmetric matrix
- Consider a symmetric matrix (\(\mathbf{M}\)). How many elements at most do you need to store the unique elements? It means how many elements do you need to store the upper triangular and diagonal elements?
- Make a symmetric matrix with random numbers. Create a subroutine to extract the lower (or upper) elements and put the elements into a vector (\(\mathbf{m}\): packed “matrix”). Mathematically, it is called vec function.
- Create a subroutine to expand a packed “matrix” (\(\mathbf{m}\)) to the full symmetric matrix \(\mathbf{M}\). It is vech function.
- [Optional] Create a function to compute the multiplication of a packed “matrix” (\(\mathbf{m}\)) by an arbitrary vector \(\mathbf{x}\). The result should be the same as \(\mathbf{Mx}\).
Monte Carlo simulation
The random number (\(r\)) in this exercise is in \(0\leq r < 1\), generated with random_number
.
- Generate two random numbers \(r_1\) and \(r_2\) at a time, and if \(r_1^2+r_2^2\leq 1\), increment \(c\). Repeat this process \(N\) times. In the end, what number do you get as \(4c/N\)?
- Generate 12 random numbers at a time, and compute \(x\) as the sum of the random numbers. If \(x-6\) is less than 1.96, increment \(c\). Repeat this process \(N\) times. What number do you get as \(c/N\).
- [Optional] Simulate the Monty Hall Problem.
Fixed file format
- Assume a fixed file format, but each field is separated by at least 1 space. Write a function to read the first row of a file and to determine the column of the last field. For example, when the row has
A001 1 John
, the function returns 10. - With the above exercise, create a subroutine to return the width of the last field in the first row.
- Using the above procedures, create a subroutine to read the last field in a fixed-format file and print it to the screen.
Back to index.html.