This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
gibson:teaching:spring-2016:math445:lab5 [2016/02/15 10:17] gibson |
gibson:teaching:spring-2016:math445:lab5 [2016/02/18 08:36] (current) gibson |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Math 445 lab 5: programming basics ====== | ====== Math 445 lab 5: programming basics ====== | ||
| + | |||
| + | |||
| + | Matlab vocabulary for this lab | ||
| + | <code> | ||
| + | for | ||
| + | fprintf | ||
| + | function | ||
| + | mean | ||
| + | std | ||
| + | * | ||
| + | length | ||
| + | size | ||
| + | rand | ||
| + | randn | ||
| + | </code> | ||
| **Problem 1:** Write a **for** loop that will print statements of the form | **Problem 1:** Write a **for** loop that will print statements of the form | ||
| Line 12: | Line 27: | ||
| ---- | ---- | ||
| - | **Problem 2:** If $F$ is a temperature in Farenheit, then $C = \frac{5}{9}(F-32)$ is the same temperature in Celsius. Write a function ''farenheit2celsius'' that takes a Celsius temperature as input, converts it to Celsius, prints a statement of the form ''20 Farenheit is -6.6667 Celsius.'', and returns the Celsius value as its output. | + | **Problem 2:** If $F$ is a temperature in Farenheit, then $C = \frac{5}{9}(F-32)$ is the same temperature in Celsius. Write a function ''farenheit2celsius'' that takes a Farenheit temperature as input, converts it to Celsius, prints a statement of the form ''20 Farenheit is -6.6667 Celsius.'', and returns the Celsius value as its output. |
| ---- | ---- | ||
| - | **Problem 3:** Write a **for** loop that use the above function to print a list of statements | + | **Problem 3:** Write a **for** loop that uses the above function to print a list of statements |
| <code> | <code> | ||
| Line 25: | Line 40: | ||
| for Farenheit temperatures from -10 to 100, in steps of 10. | for Farenheit temperatures from -10 to 100, in steps of 10. | ||
| + | Challenge: Get the text to line up nicely using field-width specifiers in fprintf! | ||
| ---- | ---- | ||
| - | **Problem 4:** Write a function ''average'' that takes an input vector $x$ and computes the average (mean) value of its components, according to the formula | + | **Problem 4:** Write a function ''average'' that takes an input vector $x$ and returns as output the average (mean) value of its elements, according to the formula |
| - | <latex> | + | \begin{equation*} |
| - | \text{average}(x) = (1/N) \sum_{i=1}^N x_i | + | \text{average}(x) = \frac{1}{N} \sum_{i=1}^N x_i |
| - | </latex> | + | \end{equation*} |
| - | Test your function by comparing its output to the output of the built-in Matlab function **mean** on a random vector of length 100. | + | where $N$ is the number of elements in $x$. |
| + | Test your function by comparing its output to the output of the built-in Matlab function **mean** on a random vector of length 100 whose elements are uniformly distributed between 0 and 1. | ||
| ---- | ---- | ||
| - | **Problem 5:** The formula for matrix-vector multiplication $y = Ax$ is | + | **Problem 5:** Write a function ''deviation'' that takes an input vector $x$ and returns the standard deviation of its elements, according to the formula |
| + | |||
| + | \begin{equation*} | ||
| + | \text{deviation}(x) = \sqrt{\frac{1}{N-1} \sum_{i=1}^N (x_i - \bar{X})^2} | ||
| + | \end{equation*} | ||
| + | |||
| + | where $\bar{x}$ is the average the elements of $x$, and $N$ is the number of elements in $x$. | ||
| + | Test your function by comparing its output to the output of the built-in Matlab function **std** on a random vector of length 100 whose elements are in a normal (Gaussian) distribution about $x=0$. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Problem 6:** The formula for matrix-vector multiplication $y = Ax$ is | ||
| <latex> | <latex> | ||
| Line 43: | Line 71: | ||
| </latex> | </latex> | ||
| - | In this formula, $A$ is an $m \times n$ matrix, $x$ is an $n$-dimensional column vector, and $y$ is an $m$-dimesional column vector. | + | In this formula, $A$ is an $m \times n$ matrix, $x$ is an $n$-dimensional column vector, and $y$ is an $m$-dimensional column vector. |
| + | |||
| + | Write a function ''matvecmult'' that takes a matrix $A$ and a vector $x$ as inputs, computes $y = Ax$ according to that formula, and returns the vector $y$. Compare your ''matvecmult'' to Matlab's built-in matrix-vector multiplication operator ''*'' on a random $4 \times 4$ matrix and a random 4d column vector. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Problem 7:** The formula for matrix-matrix multiplication $C = AB$ of an $m \times n$ matrix $A$ and an, $n \times p$ matrix $B$ is | ||
| + | |||
| + | <latex> | ||
| + | C_{i,j} = \sum_{k=1}^n A_{ik} B_{k,j} \quad \text{ for } i = 1,\dots,m, \text{ and } j = 1,\dots,p, | ||
| + | </latex> | ||
| - | Write a function ''matvecmult'' that takes a matrix $A$ and a vector $x$ as arguments, computes $y = Ax$ according to that formula, and returns the vector $y$. Compare your ''matvecmult'' to Matlab's built-in matrix-vector multiplication operator ''*'' on a random $4 \times 4$ matrix and a random 4d column vector. | + | The product $C = AB$ is an $m \times p$ matrix. |
| + | Write a function ''matmatmult'' that takes a matrix $A$ and a vector $x$ as inputs, computes $C = AB$ according to that formula, and returns the matrix $C$. Compare your ''matmatmult'' to Matlab's built-in matrix-vector multiplication operator ''*'' on a random $4 \times 3$ matrix $A$ and a random $3 \times 5$ matrix B. | ||