diff --git a/COVID_data_proc.ipynb b/COVID_data_proc.ipynb
index b5a89ba..6d23384 100644
--- a/COVID_data_proc.ipynb
+++ b/COVID_data_proc.ipynb
@@ -2153,6 +2153,46 @@
")"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "-2:2"
+ ]
+ },
+ "execution_count": 1,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "-2:2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "21"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "length(-5:.5:5)"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
diff --git a/Week3_PR_Data.dat b/Week3_PR_Data.dat
new file mode 100644
index 0000000..a908a56
--- /dev/null
+++ b/Week3_PR_Data.dat
@@ -0,0 +1,15 @@
+.1268004831284406 -1.6416953879765301
+.5013092807380928 -.9776975375269383
+1.5280121125586477 .5277112203195138
+1.7001225303407743 1.711524991194374
+1.9924936253216172 1.8910000148140624
+2.706075824201991 -.46342779446395
+2.9949319274309043 -.4435666186385725
+3.4918528112833935 -1.275179133203867
+3.501191722475427 -.6904995966451337
+4.459924502120439 -5.51613079927097
+4.936965850879389 -6.001703074115855
+5.023289852369695 -8.364169009651015
+5.042336980089736 -7.924477516763416
+5.507392850419521 -10.774823709545498
+5.568665171088307 -10.917187797703853
diff --git a/Week3_PR_Template.ipynb b/Week3_PR_Template.ipynb
new file mode 100644
index 0000000..ee013df
--- /dev/null
+++ b/Week3_PR_Template.ipynb
@@ -0,0 +1,588 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Week 3 - Fitting a curve"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Plots.GRBackend()"
+ ]
+ },
+ "execution_count": 1,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# You may need this setup\n",
+ "using Plots\n",
+ "gr() # Activate the GR backend for use with Plots"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "using DelimitedFiles"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Import the supplied data representing 15 pairs to x- and y-values. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_tofit = readdlm(\"Week3_PR_Data.dat\", '\\t');"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[0.1268004831284406, -1.6416953879765301]\n",
+ "[0.5013092807380928, -0.9776975375269383]\n",
+ "[1.5280121125586477, 0.5277112203195138]\n",
+ "[1.7001225303407743, 1.711524991194374]\n",
+ "[1.9924936253216172, 1.8910000148140624]\n",
+ "[2.706075824201991, -0.46342779446395]\n",
+ "[2.9949319274309043, -0.4435666186385725]\n",
+ "[3.4918528112833935, -1.275179133203867]\n",
+ "[3.501191722475427, -0.6904995966451337]\n",
+ "[4.459924502120439, -5.51613079927097]\n",
+ "[4.936965850879389, -6.001703074115855]\n",
+ "[5.023289852369695, -8.364169009651015]\n",
+ "[5.042336980089736, -7.924477516763416]\n",
+ "[5.507392850419521, -10.774823709545498]\n",
+ "[5.568665171088307, -10.917187797703853]\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i = 1:size(data_tofit)[1]\n",
+ " println(data_tofit[i,:])\n",
+ "end"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x, y = data_tofit[:,1], data_tofit[:,2];"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Then we do a scatterplot, this gives us the points the line must go through."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Plot the x and y data points using a scatter plot of the x and y array variables\n",
+ "plot(x,y,line=:scatter,legend=:false)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "For the line, we need a function, which we now define. Note that the parameters a, b, c need not be passed to the function: we will keep resetting them to try to improve the fit."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "parabfit (generic function with 1 method)"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Create a function called parabfit, with x as the argument, returning a*x^2 + b*x + c\n",
+ "function parabfit(x)\n",
+ " return a*x^2 + b*x + c\n",
+ "end"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's check that we do get a reasonable parabola. Choose your own interval [xmin, xmax] and parameters a, b, c. If it looks too much like a straight line, chance your choices until it does."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Create variables a, b and c, assigning each the value 1\n",
+ "a = 1\n",
+ "b = 1\n",
+ "c = 1\n",
+ "\n",
+ "f = Array{Float64}(undef,length(-5:0.5:5))\n",
+ "\n",
+ "# Plot the function parabfit, for x values between -5 and 5 \n",
+ "i = 1\n",
+ "for j = -5:0.5:5\n",
+ " f[i] = parabfit(j) \n",
+ " i = i + 1\n",
+ "end\n",
+ "\n",
+ "plot(-5:0.5:5,f)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we choose a, b, c and plot the curve together with the points. \n",
+ "\n",
+ "Note that by looking at where the data points lie, we can deduce some of the properties for a, b, c, as follows.\n",
+ "\n",
+ "The plot must have a y-intersection that is close to 0, so c is close to 0. Also, the parabola is open downwards, so a must be negative. Finally, it has its maximum at a positive x, so b must be positive. \n",
+ "\n",
+ "Use plot() to start with the scatter plot and plot!() to add the curve for parabfit. (There are other ways to do this ...)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# More plot!() tries.\n",
+ "rangez = 0:0.5:6\n",
+ "a,b,c = -1,4,-3\n",
+ "\n",
+ "f = Array{Float64}(undef,length(rangez))\n",
+ "\n",
+ "# Plot the function parabfit, for x values between -5 and 5 \n",
+ "i = 1\n",
+ "for j = rangez\n",
+ " f[i] = parabfit(j) \n",
+ " i = i + 1\n",
+ "end\n",
+ "plot(x,y,line=:scatter,legend=:false)\n",
+ "plot!(rangez,f)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Julia 1.2.0",
+ "language": "julia",
+ "name": "julia-1.2"
+ },
+ "language_info": {
+ "file_extension": ".jl",
+ "mimetype": "application/julia",
+ "name": "julia",
+ "version": "1.2.0"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/coursera_week2_function.ipynb b/coursera_week2_function.ipynb
index 0cfc33a..9e6026d 100644
--- a/coursera_week2_function.ipynb
+++ b/coursera_week2_function.ipynb
@@ -79,105 +79,105 @@
"\n",
"