---
class: mth302
---
# Miniproject 7
**Initial due date: Sunday, April 9 at 11:59pm ET**
## Overview
This miniproject will teach you about the **Runge-Kutta** method, a standard numerical solution technique for differential equations.
**Prerequisites:** A strong grasp of Euler's Method for single DE's is needed. You will also need to be comfortable using a spreadsheet. Miniproject 6 (Euler's Method for systems) is also recommended.
## Background
A description of the Runge-Kutta method along with an example [is given in this tutorial](https://github.com/RobertTalbert/linalg-diffeq/blob/main/tutorials/Runge-Kutta%20tutorial.ipynb). Read it carefully and make sure you can work along with the example before proceeding.
## Assignment
1. Given the initial value problem:
$$(2+t^2) y' + 2ty = 0, \quad y(1) = 1$$
(a) Use the Runge-Kutta method with a step size of $h = 0.1$ to find an approximation to $y(2)$. Show your work by hand on the first iteration, then do the rest in a Google Sheet or using Python code according to the formatting rules for [Miniproject 6](/SV8fgpxkRY-M-KYb8FbGzg). The spreadsheet or computer code must show *all* the intermediate steps in a way that allows a reader to reproduce your work without re-entering any code.
(b) Repeat part (a) usiung Euler's Method with a step size of $h=0.1$.
(c) You can check (but don't do it for your writeup) that an algebraic solution for this IVP is $y(t) = \dfrac{3}{t^2 + 2}$. What is the *exact* value of $y(2)$? And what is the percent error in each of the approximations you did in (a) and (b)?
2. In [Miniproject 5](/Vstzok2PSs6-uST6HpdD8Q), the following IVP is used to model a population that grows under environmental constraints:
$$\frac{dP}{dt} = 0.02P\left(1-\frac{P}{500}\right), P(0) = 100$$
Use the Runge-Kutta method with a step size of $h = 0.5$ to estimate the population in year 5. Show your work by hand on the first iteration, then do the rest in a Google Sheet or using Python code according to the formatting rules for [Miniproject 6](/SV8fgpxkRY-M-KYb8FbGzg). The spreadsheet or computer code must show *all* the intermediate steps in a way that allows a reader to reproduce your work without re-entering any code.
3. For the third item on this assignment, you'll use the Runge-Kutta method on a third initial-value problem that will be unique to you. That is, nobody else in either section of MTH 302 will have this particular initial-value problem to solve. [Please click here to go to a Google Form which will ask you for your name and section](https://docs.google.com/forms/d/e/1FAIpQLSeMrkVWWKLIkzcfOgcbY9FxLJMp4_XpUwgPCsnXX_RJWgPOfg/viewform). **Fill this form out no later than 11:59pm ET on Thursday, April 6** and then you will receive your IVP via email no later than Friday, April 7. Please note, the initial due date for this assignment is Sunday, April 9 and so **if you do not fill out the form by 11:59pm ET on Thursday April 6 you will not be able to complete this assignment.**
## Submission and Grading
### Formatting and special items for grading
Miniproject 7 involves a significant amount of numerical calculations. The writeup you produce will be different from other Miniprojects, so read the following guidelines carefully.
You may do your calculations in one of two ways:
1. **Using a Google Sheet spreadsheet**. Whenever a part of a problem asks you to compute something, enter your work in an organized, easy-to-read way into your spreadsheet and do the computation using spreadsheet formulas. **You are not supposed to do every computation by hand separately!** You are supposed to use the functionality of a spreadsheet to set up a formula in a small number of cells and then apply it automatically (through dragging the formula) to other cells. If you go this route, *use a different tab for each part of each problem*. This would result in one spreadsheet with five tabs. Do not make five different spreadsheets, and do not put all the computations into a single tab on one spreadsheet. If you do either of these, your work will be marked *Incomplete* and returned without comment. When you are done with your spreadsheet, **set the permissions so that everyone with the link can comment** and then include the link in your writeup (see below).
2. **Using Python code inside a Colab notebook**. If you know some Python or are willing to learn, you may write code in a Colab notebook code cell that produces your computations automatically. As with spreadsheets *you are not supposed to do every computation by hand separately* -- the idea is to use code to automatically generate all the result you need on a particular part of a problem. If you write code, please note: **You may not use any `import` statements**, for example you may not import SciPy or NumPy; and **you must include an explanation for what your code is doing and why it works with each code cell you use**. If you import an external library like SymPy or NumPy, or if you give code with no explanation or an insufficient or irrelevant explanation, your work will be marked *Incomplete* and returned without comment.
These problems typically also ask for written explanation and sometimes mathematical work that is not a spreadsheet or Python computation. If you are using a spreadsheet, you are allowed to use a document other than a Jupyter notebook (for example a Word document) to write these up. Then be sure to insert the link to your Google Sheet inside the document.
If you are writing Python code, just put your written and math work in the Colab notebook with your code, like you usually do.
Please note, no other spreadsheets (Excel, Numbers, etc.) are allowed. It has to be a Google Sheet. And, do not use a hand calculator! This would force you to perform roughly 300 different sets hand calculations separately if you did. Use Google Sheets or Python, nothing else.
I do not typically look over student work to give feedback before it's submitted, but if you want to show me your work prior to submission to make sure it is *formatted* correctly, that's fine this time.
Otherwise: Please review the section on Miniprojects in the document [Standards For Student Work in MTH 302](https://github.com/RobertTalbert/linalg-diffeq/blob/main/course-docs/standards-for-student-work.md#standards-for-miniprojects) before attempting to write up your submission. Note that *all* Miniprojects:
- **Must be typewritten**. If any portion of the submission has handwritten work or drawings, it will be marked *Incomplete* and returned without further comment.
- **Must represent a good-faith effort at a complete, correct, clearly communicated, and professionally presented solution.** Omissions, partial work, work that is poorly organized or sloppily presented, or work that has numerous errors will be marked *Incomplete* and returned without further comment.
- **Must include clear verbal explanations of your work when indicated, not just math or code**. You can tell when verbal explanations are required because the problems say something like "Explain your reasoning".
Your work here is being evaluated *partially* on whether your math and code are correct; but just as much on whether your reasoning is correct and clearly expressed. Make sure to pay close attention to both.
And please review the requirements above for including your code.
### How to submit
You will submit your work on Blackboard in the *Miniproject 7* folder under *Assignments > Miniprojects*. But you will *not* upload a PDF for Miniprojects. Instead you will **share a link that allows me (Talbert) to comment on your work**. [As explained in one of the Jupyter and Colab tutorials](https://gvsu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=ef5c0e24-5c1d-437f-be05-af730108b6d8), the process goes like this:
1. In the notebook, click "Share" in the upper right.
2. **Do not share with me by entering my email.** Instead, go to *General Access*, and in the pulldown menu select "Anyone with the link", then set the permissions to "Commenter".
3. Then click "Copy Link".
4. **On Blackboard**, go to the *Assignments* area, then *Miniprojects*. Select Miniproject 5.
5. Under **Assignment Submission**, where it says *Text Submission*, click "Write Submission".
6. **Paste the link to your notebook in the text area that appears.**
7. Then click "Submit" to submit your work.
I will then evaluate your work using the link. Specific comments will be left on the notebook itself. General comments will be left on Blackboard.

Initial due date: Sunday, April 9 at 11:59pm ET Overview Our final miniproject reaches back into linear algebra to look at diagonalizable matrices and their uses in solving systems of differential equations. Prerequisites: You'll need to be able to solve basic systems of differential equations and find the eigenvalues and eigenvectors for a small matrix. You'll also need a basic comfort level with concepts of linear independence and matrix arithmetic from earlier in the course. Background This entire problem comes from Section 3.9.1 in your textbook. Here is a rephrased version of the introduction to that section.

3/29/2023Initial due date: Sunday, April 9 at 11:59pm ET Overview This miniproject introduces a version of Euler's Method as a numerical solution technique for systems. Prerequisites: You will need to be comfortable with using Euler's method for single differential equations. You'll also benefit from some familiarity with spreadsheets or Python in order to automate the calculations. Background This tutorial gives you the background you need for this assignment. Please read it and make sure you understand the concepts and the example: https://github.com/RobertTalbert/linalg-diffeq/blob/main/assignments/Euler's_Method_for_Systems.ipynb

3/22/2023Initial due date: Sunday, March 26 at 11:59pm ET Overview Eigenvalues of a matrix are incredibly useful and important for many applications. (Some of these applications are in Miniprojects 1-3.) But computing eigenvalues of a matrix, even of relatively small size, can be difficult or impossible to do exactly. So we need numerical approximation methods for most practical uses of eigenvalues. This miniproject will teach you one such method. Prerequisites: You'll need to know what an eigenvalue and eigenvector for a matrix are, and how to find these using SymPy. You'll also need to know how to multiply matrices and vectors. Background Complete the following warmup exercises first. These don't go in your writeup. They are just here to teach you some terminology you'll need in the main assignment.

3/3/2023Initial due date: Sunday, March 12 at 11:59pm ET Overview In this miniproject, you'll apply concepts from linear algebra to study discrete dynamical systems. These are related to the idea of Markov chains that was the subject of Miniproject 1 and are the linear algebra analogue of systems of differential equations which we will study later. Prerequisites: You'll need to know what an eigenvalue and eigenvector for a matrix are, and how to find these using SymPy. This miniproject also requires some knowledge of matrix-vector multiplication. Background Complete the following before beginning this miniproject. These are not part of your writeup, but you'll need the knowledge before you can understand the tasks in the assignment.

2/21/2023
Published on ** HackMD**