diff --git a/notebook/solutions.ipynb b/notebook/solutions.ipynb index 90e96c8e..476ab706 100644 --- a/notebook/solutions.ipynb +++ b/notebook/solutions.ipynb @@ -1 +1 @@ -{"cells":[{"cell_type":"markdown","id":"5dbe7b9e","metadata":{},"source":["# Calculus and Algebra Solutions"]},{"cell_type":"markdown","id":"da4db679","metadata":{},"source":["## Calculus"]},{"cell_type":"markdown","id":"b7e2e87a","metadata":{},"source":["### Exercise 1\n","\n","Let's say, in my office, it takes me 10 seconds (time) to travel 25 meters (distance) to the coffee machine.\n","If we want to express the above situation as a function, then it would be:\n","\n","distance = speed * time\n","\n","So for this case, speed is the first derivative of the distance function above. As speed describes the rate of change of distance over time, when people say taking the first derivative of a certain function, they mean finding out the rate of change of a function.\n","\n","**Find the speed and build the linear function on distance $(d)$ over time $(t)$, when $(t ∈ [0,10])$.**"]},{"cell_type":"code","execution_count":5,"id":"bb3e954e","metadata":{},"outputs":[],"source":["# import libraries\n","import matplotlib.pyplot as plt\n","import numpy as np\n","import pandas as pd\n","\n","# Define the distance function\n","def f(x): return 2.5*x # Function\n","x = np.linspace(0,10) # Domain"]},{"cell_type":"code","execution_count":null,"id":"dbc4c780","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":48,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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","text/plain":["
"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["# Plot the distance function on domain (t)\n","plt.plot(x, f(x))"]},{"cell_type":"code","execution_count":49,"id":"4c4d4f20","metadata":{},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xf(x)
00.0000002.500000
10.2040823.010204
20.4081633.520408
30.6122454.030612
40.8163274.540816
\n","
"],"text/plain":[" x f(x)\n","0 0.000000 2.500000\n","1 0.204082 3.010204\n","2 0.408163 3.520408\n","3 0.612245 4.030612\n","4 0.816327 4.540816"]},"execution_count":49,"metadata":{},"output_type":"execute_result"}],"source":["# Create a DataFrame\n","f1 = pd.DataFrame({'x': x, 'f(x)': f(x)})\n","f1.head()"]},{"cell_type":"markdown","id":"1144168d","metadata":{},"source":["### Exercise 2\n","\n","It turned out that I wasn't walking a constant speed towards getting my coffee, but I was accelerating (my speed increased over time). If my initial *speed = 0*, it still took me 10 seconds to travel from my seat to my coffee, but I was walking faster and faster.\n","\n","$V_o$ = initial speed = $0$\n","\n","t = time\n","\n","a = acceleration\n","\n","**distance** = $V_o * t + 0.5 * a * (t^2)$\n","\n","**speed** = $V_o + a * t$\n","\n","The first derivative of the speed function is acceleration. I realize that the speed function is closely related to the distance function.\n","\n","**Find the acceleration value and build the quadratic function $(t ∈ [0,10])$. Also, create a graph and a table.**"]},{"cell_type":"code","execution_count":4,"id":"ec1f8bd7","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":4,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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","text/plain":["
"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","\n","# Define and plot the quadratic funtion\n","def f(x): return 1/2*0.5*(x**2)\n","x = np.linspace(0,10)\n","plt.plot(x, f(x))"]},{"cell_type":"code","execution_count":63,"id":"ba5c497b","metadata":{},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xf(x)
00.0000001.000000
10.2040821.067940
20.4081631.140495
30.6122451.217980
40.8163271.300730
\n","
"],"text/plain":[" x f(x)\n","0 0.000000 1.000000\n","1 0.204082 1.067940\n","2 0.408163 1.140495\n","3 0.612245 1.217980\n","4 0.816327 1.300730"]},"execution_count":63,"metadata":{},"output_type":"execute_result"}],"source":["# Create a DataFrame\n","f2 = pd.DataFrame({'x': x, 'f(x)': f(x)})\n","f2.head()"]},{"cell_type":"markdown","id":"d4bfd827","metadata":{},"source":["### Exercise 3\n","\n","When I arrive to the coffee machine, I hear my colleague talking about the per-unit costs of producing 'product B' for the company. As the company produces more units, the per-unit costs continue to decrease until a point where they start to increase.\n","\n","To optimize the per-unit production cost at its minimum to optimize efficiency, the company would need to find the number of units to be produced where the per-unit production costs begin to change from decreasing to increasing.\n","\n","**Build a quadratic function $f(x)=0.1(x)^2−9x +4500$ on $x∈[0,100]$ to create the per-unit cost function, and make a conclusion.**"]},{"cell_type":"code","execution_count":46,"id":"36fae3bf","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":46,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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","text/plain":["
"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["# Define and plot the function\n","def f(x): return 0.1*(x)**2 -9*x + 4500\n","x = np.linspace(0,100)\n","plt.plot(x, f(x))"]},{"cell_type":"markdown","id":"aabad82c","metadata":{},"source":["## Linear Algebra"]},{"cell_type":"markdown","id":"6753636d","metadata":{},"source":["### Exercise 1: Sum of two matrices\n","\n","Suppose we have two matrices A and B.\n","\n","```py\n","A = [[1,2],[3,4]]\n","B = [[4,5],[6,7]]\n","\n","then we get\n","A+B = [[5,7],[9,11]]\n","A-B = [[-3,-3],[-3,-3]]\n","```\n","\n","Make the sum of two matrices using Python with NumPy"]},{"cell_type":"code","execution_count":8,"id":"9e200c32","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Printing elements of first matrix\n","[[1 2]\n"," [3 4]]\n","Printing elements of second matrix\n","[[4 5]\n"," [6 7]]\n","Addition of two matrix\n","[[ 5 7]\n"," [ 9 11]]\n"]}],"source":["import numpy as np\n"," \n"," \n","# Creating first matrix\n","A = np.array([[1, 2], [3, 4]])\n"," \n","# Creating second matrix\n","B = np.array([[4, 5], [6, 7]])\n","\n","# Print elements\n","print(\"Printing elements of first matrix\")\n","print(A)\n","print(\"Printing elements of second matrix\")\n","print(B)\n"," \n","# Adding both matrices\n","print(\"Addition of two matrices\")\n","print(np.add(A, B))"]},{"cell_type":"markdown","id":"93bfb6cc","metadata":{},"source":["### Exercise 2: Sum of two lists\n","\n","There will be many situations in which we'll have to find an index-wise summation of two different lists. This can have possible applications in day-to-day programming. In this exercise, we will solve the same problem in various ways in which this task can be performed.\n","\n","We have the following two lists:\n","\n","```py\n","list1 = [2, 5, 4, 7, 3]\n","list2 = [1, 4, 6, 9, 10]\n","```\n","\n","Now let's use Python code to demonstrate addition of two lists."]},{"cell_type":"code","execution_count":2,"id":"867b70fc","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [2, 5, 4, 7, 3]\n","Original list 2 : [1, 4, 6, 9, 10]\n","Resultant list is : [3, 9, 10, 16, 13]\n"]}],"source":["# Naive method\n","\n","# Initializing lists\n","list1 = [2, 5, 4, 7, 3]\n","list2 = [1, 4, 6, 9, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using naive method to add two lists \n","res_list = []\n","for i in range(0, len(list1)):\n"," res_list.append(list1[i] + list2[i])\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"code","execution_count":1,"id":"681930a3","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [1, 3, 4, 6, 8]\n","Original list 2 : [4, 5, 6, 2, 10]\n","Resultant list is : [5, 8, 10, 8, 18]\n"]}],"source":["# Use list comprehension to perform addition of the two lists:\n","\n","# Initializing lists\n","list1 = [1, 3, 4, 6, 8]\n","list2 = [4, 5, 6, 2, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using list comprehension to add two lists\n","res_list = [list1[i] + list2[i] for i in range(len(list1))]\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"code","execution_count":2,"id":"a3a8a425","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [1, 3, 4, 6, 8]\n","Original list 2 : [4, 5, 6, 2, 10]\n","Resultant list is : [5, 8, 10, 8, 18]\n"]}],"source":["# Use map() + add():\n","\n","from operator import add\n"," \n","# Initializing lists\n","list1 = [1, 3, 4, 6, 8]\n","list2 = [4, 5, 6, 2, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using map() + add() to add two lists\n","res_list = list(map(add, list1, list2))\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"code","execution_count":3,"id":"1708d7ee","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [1, 3, 4, 6, 8]\n","Original list 2 : [4, 5, 6, 2, 10]\n","Resultant list is : [5, 8, 10, 8, 18]\n"]}],"source":["# Use zip() + sum():\n","\n","from operator import add\n"," \n","# Initializing lists\n","list1 = [1, 3, 4, 6, 8]\n","list2 = [4, 5, 6, 2, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using zip() + sum() to add two lists\n","res_list = [sum(i) for i in zip(list1, list2)]\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"markdown","id":"1aef1bd2","metadata":{},"source":["### Exercise 3: Dot multiplication\n","\n","We have two matrices:\n","\n","```py\n","matrix1 = [[1,7,3],\n"," [4,5,2],\n"," [3,6,1]]\n","matrix2 = [[5,4,1],\n"," [1,2,3],\n"," [4,5,2]]\n","```\n","\n","A simple technique but expensive method for larger input datasets is using *for loops*. In this exercise, we will first use nested *for loops* to iterate through each row and column of the matrices, and then we will perform the same multiplication using NumPy."]},{"cell_type":"code","execution_count":6,"id":"840e7d0e","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["[[24, 33, 28], [33, 36, 23], [25, 29, 23]]\n"]}],"source":["# Using a for loop input two matrices of size n x m\n","matrix1 = [[1,7,3],\n"," [4,5,2],\n"," [3,6,1]]\n","matrix2 = [[5,4,1],\n"," [1,2,3],\n"," [4,5,2]]\n"," \n","res = [[0 for x in range(3)] for y in range(3)]\n"," \n","# Explicit for loops\n","for i in range(len(matrix1)):\n"," for j in range(len(matrix2[0])):\n"," for k in range(len(matrix2)):\n"," \n"," # Resulting matrix\n"," res[i][j] += matrix1[i][k] * matrix2[k][j]\n"," \n","print(res)"]},{"cell_type":"code","execution_count":7,"id":"db6c3355","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["[[24 33 28]\n"," [33 36 23]\n"," [25 29 23]]\n"]}],"source":["# Import libraries\n","import numpy as np\n"," \n","# Input two matrices\n","mat1 = ([1,7,3],[ 4,5,2],[ 3,6,1])\n","mat2 = ([5,4,1],[ 1,2,3],[ 4,5,2])\n"," \n","# This will return dot product\n","res = np.dot(mat1,mat2)\n"," \n","# Print resulting matrix\n","print(res)"]},{"cell_type":"markdown","id":"34abdf27","metadata":{},"source":["Source:\n","\n","https://www.youtube.com/channel/UCXq-PLvYAX-EufF5RAPihVg\n","\n","https://www.geeksforgeeks.org/\n","\n","https://medium.com/@seehleung/basic-calculus-explained-for-machine-learning-c7f642e7ced3\n","\n","https://blog.demir.io/understanding-gradient-descent-266fc3dcf02f"]}],"metadata":{"interpreter":{"hash":"d3463682613d55fcbb64853e38cc3520a7f67bdf8d6940e781ddcdc423122719"},"kernelspec":{"display_name":"Python 3.9.12 ('calculus-project')","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.9.12"}},"nbformat":4,"nbformat_minor":5} +{"cells":[{"cell_type":"markdown","id":"5dbe7b9e","metadata":{},"source":["# Calculus and Algebra Solutions"]},{"cell_type":"markdown","id":"da4db679","metadata":{},"source":["## Calculus"]},{"cell_type":"markdown","id":"b7e2e87a","metadata":{},"source":["### Exercise 1\n","\n","Let's say, in my office, it takes me 10 seconds (time) to travel 25 meters (distance) to the coffee machine.\n","If we want to express the above situation as a function, then it would be:\n","\n","distance = speed * time\n","\n","So for this case, speed is the first derivative of the distance function above. As speed describes the rate of change of distance over time, when people say taking the first derivative of a certain function, they mean finding out the rate of change of a function.\n","\n","**Find the speed and build the linear function on distance $(d)$ over time $(t)$, when $(t ∈ [0,10])$.**"]},{"cell_type":"code","execution_count":53,"id":"bb3e954e","metadata":{},"outputs":[],"source":["# import libraries\n","import matplotlib.pyplot as plt\n","import numpy as np\n","import pandas as pd\n","\n","# Define the distance function\n","def f(x): return 2.5*x # Function\n","x = np.linspace(0,10) # Domain"]},{"cell_type":"code","execution_count":54,"id":"dbc4c780","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":54,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA77klEQVR4nO3deXxUhb3+8c9km4SQBELIBgHCvgSysImAG5RFRRFESLBXa9vb2yZsEResiFQl1p1NW9tbbX+XsCmLUsUiKoiyCFkgrGEPS8KaTBYySWbO74+23IuiEkjmTCbP+/WaP+bMyczDIcx5ON8zZyyGYRiIiIiIuIiX2QFERESkcVH5EBEREZdS+RARERGXUvkQERERl1L5EBEREZdS+RARERGXUvkQERERl1L5EBEREZfyMTvAtzmdTk6dOkVQUBAWi8XsOCIiInINDMOgtLSU6OhovLx++NiG25WPU6dOERMTY3YMERERuQ4FBQW0bt36B9dxu/IRFBQE/DN8cHCwyWlERETkWthsNmJiYi7vx3+I25WPf49agoODVT5EREQamGs5ZUInnIqIiIhLqXyIiIiIS6l8iIiIiEupfIiIiIhLqXyIiIiIS6l8iIiIiEupfIiIiIhLqXyIiIiIS6l8iIiIiEvVqnxkZGTQt29fgoKCCA8PZ/To0ezfv/+KdW677TYsFssVt//6r/+q09AiIiLScNWqfGzYsIHU1FS2bNnCunXrqK6uZtiwYZSXl1+x3i9/+UtOnz59+fbSSy/VaWgRERFpuGr13S5r16694v67775LeHg4O3bs4JZbbrm8vEmTJkRGRtZNQhEREfEoN3TOR0lJCQChoaFXLF+0aBFhYWHExcUxY8YMKioqvvc57HY7NpvtipuIiIjUvcpqBzNW7GT59gJTc1z3t9o6nU6mTp3KwIEDiYuLu7w8JSWFtm3bEh0dzc6dO3niiSfYv38/K1asuOrzZGRkMHv27OuNISIiItfg4Jky0jKz2FdYygc5p/hJ9wiaNfEzJYvFMAzjen7w17/+NR9//DGbNm2idevW37veZ599xpAhQzh48CAdOnT4zuN2ux273X75vs1mIyYmhpKSEoKDg68nmoiIiPwf7+84wdOr8rhU7SCsqZU3xicwqFNYnb6GzWYjJCTkmvbf13XkIy0tjTVr1rBx48YfLB4A/fv3B/je8mG1WrFardcTQ0RERH5ARVUNz6zezXs7TgBwc4cWvDEhgfAgf1Nz1ap8GIbBpEmTWLlyJV988QWxsbE/+jM5OTkAREVFXVdAERERqb0DRaWkLsoi/0wZXhaYMqQzaXd0xNvLYna02pWP1NRUMjMzWb16NUFBQRQWFgIQEhJCQEAAhw4dIjMzkzvvvJMWLVqwc+dOpk2bxi233EKvXr3q5Q8gIiIi/8swDJZtL2DWB7uprHYSHmRl7oREBnRoYXa0y2p1zofFcvW29M477/Dwww9TUFDAgw8+SF5eHuXl5cTExHDffffx9NNPX/P5G7WZGYmIiMj/KrPX8PTKXazKOQXA4E5hvD4+gbCm9X96Q72d8/FjPSUmJoYNGzbU5ilFRESkDuw5ZSMtM4vD58rx9rKQ/pPO/PrWDni5wZjl2677o7YiIiJiPsMwyNx2nNkf7qGqxklksD/zUxLp2y70x3/YJCofIiIiDVRpZTVPrtjF33eeBuD2Li159YEEQgPNuX7HtVL5EBERaYB2nSghbXEWx85X4ONl4fERXfjFoPZuOWb5NpUPERGRBsQwDP769VHmfLSPKoeTVs0CmJ+SSFKb5mZHu2YqHyIiIg1ESUU1j7+fyye7iwD4SfcIXr6/l2mXSb9eKh8iIiINQE5BMWmZWZy4eAlfbwszRnbjZwPbfe9lMNyZyoeIiIgbMwyD/950hBc/3keN0yAmNIAFyUnExzQzO9p1U/kQERFxU8UVVUxfnsune88AcGfPSF4c24tgf1+Tk90YlQ8RERE3tOPYBSZlZnOqpBI/Hy9m3t2dB/u3aZBjlm9T+RAREXEjTqfB218e5uVP9uNwGsSGBbIgJZEe0SFmR6szKh8iIiJu4nyZnUeX5/LF/rMA3BMfzZwxPWlq9azdtWf9aURERBqobUcuMGlxFkU2O1YfL2bf04PxfWM8YszybSofIiIiJnI6Dd784iCvrTuA04AOLQNZODGJrpGe+83uKh8iIiImOVtqJ31ZDl/mnwNgTFIrnrs3jkAPG7N8m2f/6URERNzU1wfPMWVpDmdL7QT4evPc6Dju793a7FguofIhIiLiQg6nwbz1+cz7LB/DgM4RTVmYkkSniCCzo7mMyoeIiIiLnLFVMnlJNlsOXwBgfJ8Ynr2nBwF+3iYncy2VDxERERfYeOAs05bmcL68iiZ+3sy5ryejE1uZHcsUKh8iIiL1qMbh5PVPD/DmF4cwDOgWFczClETat2xqdjTTqHyIiIjUk9Mll5i8OJtvjl4EYGL/Nsy8uzv+vo1rzPJtKh8iIiL14PN9Z0hflsPFimqaWn3IGNOTUfHRZsdyCyofIiIidaja4eSVT/bzx42HAegRHczClCTahQWanMx9qHyIiIjUkRMXK5i0OJvs48UAPHxzO2bc2RWrT+Mes3ybyoeIiEgd+MfuQh57bycll6oJ8vfh5ft7MSIuyuxYbknlQ0RE5AZU1Th58eN9/OWrIwDEtw5hQUoSMaFNTE7mvlQ+RERErlPBhQrSMrPIPVECwC8GxfL4iK74+XiZnMy9qXyIiIhch493nebx93dSWllDSIAvr46LZ2j3CLNjNQgqHyIiIrVQWe1gzkd7+dvmYwAktWnG/JQkWjULMDlZw6HyISIico2OnisnNTOL3adsAPzq1vZMH9YFX2+NWWpD5UNEROQafJB7iqdW7KLMXkNooB+vPhDP7V3CzY7VIKl8iIiI/IDKagezP9zD4m3HAejXLpR5yYlEhvibnKzhUvkQERH5HgfPlJGWmcW+wlIsFki7vSNThnTCR2OWG6LyISIichUrsk7w9Ko8KqochDX14/XxCQzu1NLsWB5B5UNEROT/qKiqYdbq3SzfcQKAAe1bMHdCAuHBGrPUFZUPERGRfzlQVErqoizyz5ThZYEpQzqTdkdHvL0sZkfzKCofIiLS6BmGwfLtJ3jmgzwqq520DLIyd0ICN3cIMzuaR1L5EBGRRq3cXsPTq/JYmX0SgMGdwnh9fAJhTa0mJ/NcKh8iItJo7T1tI3VRFofPleNlgUeHdeHXt3bAS2OWeqXyISIijY5hGGRuO87sD/dQVeMkMtifecmJ9IsNNTtao6DyISIijUppZTUzVuxizc7TANzepSWvPpBAaKCfyckaD5UPERFpNPJOlpCWmcXR8xX4eFl4fEQXfjGovcYsLqbyISIiHs8wDP62+Rgv/H0vVQ4nrZoFMC85kd5tm5sdrVFS+RAREY9WcqmaJ9/fycd5hQD8pHsEL9/fi2ZNNGYxi8qHiIh4rNyCYtIWZ1Fw4RK+3hZmjOzGzwa2w2LRmMVMKh8iIuJxDMPgL18d5cWP91LtMIgJDWBBchLxMc3MjiaofIiIiIcprqhi+vKdfLq3CICRcZG8OLYXIQG+JieTf1P5EBERj7Hj2EUmL87mZPEl/Ly9mHl3Nx68qa3GLG5G5UNERBo8p9PgT18e5uVP9lPjNGjXogkLUpKIaxVidjS5CpUPERFp0C6UV/Hoshw+338WgFHx0cy5L44gf41Z3JXKh4iINFjbjlxg8uJsCm2VWH28mDWqB8n9YjRmcXMqHyIi0uA4nQZvfnGQ19YdwGlA+5aBLExJoltUsNnR5BqofIiISINyttRO+rIcvsw/B8CYxFY8NzqOQKt2aQ2F/qZERKTB+PrgOaYszeFsqR1/Xy9+d28c43q31pilgVH5EBERt+dwGsxbn8+8z/IxDOgU3pQ3JybRKSLI7GhyHVQ+RETErZ2xVTJlSQ6bD58H4IE+rZl9TxwBft4mJ5PrpfIhIiJu68v8s0xbmsO5siqa+Hnzwn1x3JfY2uxYcoNUPkRExO3UOJy88Wk+C784iGFA18ggFqQk0TG8qdnRpA541WbljIwM+vbtS1BQEOHh4YwePZr9+/dfsU5lZSWpqam0aNGCpk2bMnbsWIqKiuo0tIiIeK7TJZdI+dNWFnz+z+KR0r8Nq1IHqnh4kFqVjw0bNpCamsqWLVtYt24d1dXVDBs2jPLy8svrTJs2jQ8//JDly5ezYcMGTp06xZgxY+o8uIiIeJ7P953hzrlfsu3oBZpafZiXnMic+3ri76vzOzyJxTAM43p/+OzZs4SHh7NhwwZuueUWSkpKaNmyJZmZmdx///0A7Nu3j27durF582ZuuummH31Om81GSEgIJSUlBAfrYjEiIo1BtcPJK5/s548bDwMQ1yqYBclJtAsLNDmZXKva7L9v6JyPkpISAEJDQwHYsWMH1dXVDB069PI6Xbt2pU2bNt9bPux2O3a7/YrwIiLSeJwsvsSkzCyyjhcD8NCAtjx1VzesPjra4amuu3w4nU6mTp3KwIEDiYuLA6CwsBA/Pz+aNWt2xboREREUFhZe9XkyMjKYPXv29cYQEZEGbN2eIqYvz6XkUjVB/j68NLYXI3tGmR1L6tl1l4/U1FTy8vLYtGnTDQWYMWMG6enpl+/bbDZiYmJu6DlFRMS9VdU4+f3affz3piMAxLcOYUFKEjGhTUxOJq5wXeUjLS2NNWvWsHHjRlq3/t/PW0dGRlJVVUVxcfEVRz+KioqIjIy86nNZrVasVuv1xBARkQao4EIFaZlZ5J745+j+54NieWJEV/x8avUZCGnAavU3bRgGaWlprFy5ks8++4zY2NgrHu/duze+vr6sX7/+8rL9+/dz/PhxBgwYUDeJRUSkwVqbd5o7531J7okSQgJ8+dN/9GHm3d1VPBqZWh35SE1NJTMzk9WrVxMUFHT5PI6QkBACAgIICQnh5z//Oenp6YSGhhIcHMykSZMYMGDANX3SRUREPFNltYOMj/by183HAEhq04z5KUm0ahZgcjIxQ60+avt93xr4zjvv8PDDDwP/vMjYo48+yuLFi7Hb7QwfPpw333zze8cu36aP2oqIeJaj58pJzcxi96l/fprxV7e2Z/qwLvh662iHJ6nN/vuGrvNRH1Q+REQ8xwe5p3hqxS7K7DU0b+LLaw8kcHvXcLNjST1w2XU+RERErqay2sHv1uwhc+txAPq1C2VucgJRIRqziMqHiIjUsUNny0hdlMW+wlIsFvjNbR2YNrQzPhqzyL+ofIiISJ1ZmX2C367Mo6LKQVhTP14fn8DgTi3NjiVuRuVDRERu2KUqB7M+yGPZ9hMADGjfgrkTEggP9jc5mbgjlQ8REbkh+UWl/GZRFvlnyrBYYMqQTky6oxPeXlf/hKSIyoeIiFy35dsLmLk6j8pqJy2DrMydkMDNHcLMjiVuTuVDRERqrdxew8zVeazIOgnA4E5hvD4+gbCm+roM+XEqHyIiUiv7Cm2kLsri0NlyvCzw6LAu/PrWDnhpzCLXSOVDRESuiWEYLPmmgGc/2I29xklksD/zkhPpFxtqdjRpYFQ+RETkR5VWVvPUyjw+zD0FwO1dWvLqAwmEBvqZnEwaIpUPERH5QXknS0jLzOLo+Qq8vSw8PrwLvxzcXmMWuW4qHyIiclWGYfA/W47x3Jq9VDmctGoWwLzkRHq3bW52NGngVD5EROQ7Si5VM2PFTj7aVQjA0G4RvDKuF82aaMwiN07lQ0RErrDzRDGpmVkUXLiEr7eFJ0Z05eeDYrFYNGaRuqHyISIiwD/HLH/56igvfryXaodB6+YBLEhJIiGmmdnRxMOofIiICMUVVUxfvpNP9xYBMLxHBC/dH09IgK/JycQTqXyIiDRyO45dZPLibE4WX8LP24vf3tWN/xjQVmMWqTcqHyIijZTTafCnLw/z8if7qXEatG3RhIUpScS1CjE7mng4lQ8RkUboQnkVjy7L4fP9ZwG4u1cUGWN6EuSvMYvUP5UPEZFGZtuRC0xenE2hrRI/Hy+eHdWD5H4xGrOIy6h8iIg0Ek6nwVsbDvHaugM4nAbtwwJZODGJblHBZkeTRkblQ0SkEThXZmfa0hy+zD8HwH2JrXh+dByBVu0GxPX0Wyci4uG+PnSOKUtyOFtqx9/Xi9/dE8e4Pq01ZhHTqHyIiHgoh9Ng/mf5zFufj9OATuFNWTgxic4RQWZHk0ZO5UNExAOdsVUydWkOXx86D8C43q2ZfW8PmvjpbV/Mp99CEREP82X+WaYtzeFcWRVN/Lx5fnQcY5Jamx1L5DKVDxERD1HjcPLGp/ks/OIghgFdI4NYkJJEx/CmZkcTuYLKh4iIBygsqWTy4my2Hb0AQHK/Nswa1R1/X2+Tk4l8l8qHiEgD9/n+Mzy6LJcL5VUE+nmTMbYX98RHmx1L5HupfIiINFDVDiev/GM/f9xwGIDuUcEsnJhEbFigyclEfpjKh4hIA3Sy+BKTF2ez49hFAP5jQFueurObxizSIKh8iIg0MJ/uKeLR5bmUXKomyOrD7+/vxZ09o8yOJXLNVD5ERBqIqhonL63dx583HQGgV+sQFiQn0aZFE5OTidSOyoeISANQcKGCtMXZ5BYUA/DIwFieGNkFq4/GLNLwqHyIiLi5tXmneey9nZRW1hDs78Mr4+IZ1iPS7Fgi103lQ0TETdlrHMz5+17+uvkYAIltmjE/OZHWzTVmkYZN5UNExA0dPVdO2uIs8k7aAPjVre2ZPqwLvt5eJicTuXEqHyIibmbNzlM8+f4uyuw1NG/iy2sPJHB713CzY4nUGZUPERE3UVnt4Lk1e1i09TgAfds1Z15yIlEhASYnE6lbKh8iIm7g0NkyUhdlsa+wFIsFUm/ryNShnfDRmEU8kMqHiIjJVmWf5KmVu6ioctAi0I83JiQwuFNLs2OJ1BuVDxERk1yqcvDsB7tZur0AgAHtWzB3QgLhwf4mJxOpXyofIiImyC8qJTUziwNFZVgsMPmOTkwe0glvL4vZ0UTqncqHiIiLLd9ewMzVeVRWO2kZZGXu+ARu7hhmdiwRl1H5EBFxkXJ7DTNX57Ei6yQAgzuF8doDCbQMspqcTMS1VD5ERFxgX6GN1EVZHDpbjpcF0n/Smd/c1hEvjVmkEVL5EBGpR4ZhsOSbAp79YDf2GicRwVbmTUikf/sWZkcTMY3Kh4hIPSmtrOaplXl8mHsKgNu6tOTVcfG0aKoxizRuKh8iIvUg72QJaZlZHD1fgbeXhceGd+E/B7fXmEUElQ8RkTplGAb/s+UYz63ZS5XDSXSIP/NTEundNtTsaCJuQ+VDRKSO2CqrefL9nXy0qxCAod3Cefn+eJoH+pmcTMS9qHyIiNSBnSeKScvM5viFCny8LDw5sis/HxSLxaIxi8i3qXyIiNwAwzB49+ujzPloL9UOg9bNA5ifnEhim+ZmRxNxWyofIiLXqaSimsfey+Ufe4oAGN4jgpfujyckwNfkZCLuTeVDROQ6ZB2/yKTMbE4WX8LP24vf3tWN/xjQVmMWkWug8iEiUgtOp8GfNx3mpbX7qXEatG3RhAXJSfRsHWJ2NJEGw6u2P7Bx40ZGjRpFdHQ0FouFVatWXfH4ww8/jMViueI2YsSIusorImKaC+VV/OJv25nz0T5qnAZ394pizaRBKh4itVTrIx/l5eXEx8fzyCOPMGbMmKuuM2LECN55553L961WXc1PRBq2b45eYPLibE6XVOLn48WsUd1J6ddGYxaR61Dr8jFy5EhGjhz5g+tYrVYiIyOvO5SIiLtwOg3e2nCI19YdwOE0aB8WyIKUJLpHB5sdTaTBqpdzPr744gvCw8Np3rw5d9xxB88//zwtWlz9S5Tsdjt2u/3yfZvNVh+RRERq7VyZnWlLc/gy/xwA9yW24vnRcQRadbqcyI2o839BI0aMYMyYMcTGxnLo0CGeeuopRo4cyebNm/H29v7O+hkZGcyePbuuY4iI3JDNh84zZUk2Z0rt+Pt68bt74hjXp7XGLCJ1wGIYhnHdP2yxsHLlSkaPHv296xw+fJgOHTrw6aefMmTIkO88frUjHzExMZSUlBAcrMOaIuJaDqfBgs8OMnf9AZwGdAxvypsTk+gcEWR2NBG3ZrPZCAkJuab9d70fO2zfvj1hYWEcPHjwquXDarXqhFQRcQtnSiuZuiSHrw+dB2Bc79bMvrcHTfw0ZhGpS/X+L+rEiROcP3+eqKio+n4pEZHrtin/HFOXZnOurIoAX29euC+OMUmtzY4l4pFqXT7Kyso4ePDg5ftHjhwhJyeH0NBQQkNDmT17NmPHjiUyMpJDhw7x+OOP07FjR4YPH16nwUVE6kKNw8nc9fks+PwghgFdI4NYkJJEx/CmZkcT8Vi1Lh/bt2/n9ttvv3w/PT0dgIceeoi33nqLnTt38te//pXi4mKio6MZNmwYzz33nEYrIuJ2Cksqmbwkm21HLgCQ3C+GWaN64O/73ZPjRaTu3NAJp/WhNiesiIhcry/2nyF9WS4XyqsI9PNmzpie3JvQyuxYIg2WW51wKiLiTqodTl79xwH+sOEQAN2jglk4MYnYsECTk4k0HiofItJonCq+xKTF2ew4dhGAn97Ult/e1U1jFhEXU/kQkUbh0z1FTH8vl+KKaoKsPvz+/l7c2VOfwhMxg8qHiHi0qhonL63dx583HQGgV+sQFiQn0aZFE5OTiTReKh8i4rEKLlSQtjib3IJiAB4ZGMsTI7tg9dGYRcRMKh8i4pHW5hXy+Hu52CprCPb34ZVx8QzroW/bFnEHKh8i4lHsNQ4yPtrHu18fBSCxTTPmJyfSurnGLCLuQuVDRDzGsfPlpGVms+tkCQC/uqU904d3wdfby+RkIvJ/qXyIiEdYs/MUT76/izJ7Dc2b+PLqA/Hc0TXC7FgichUqHyLSoFVWO3huzR4WbT0OQN92zZmXnEhUSIDJyUTk+6h8iEiDdfhsGamZ2ew9bQPgN7d1IP0nnfHRmEXEral8iEiDtCr7JE+t3EVFlYMWgX68Nj6BWzu3NDuWiFwDlQ8RaVAuVTl49oPdLN1eAMBN7UOZOyGRiGB/k5OJyLVS+RCRBiO/qJTUzCwOFJVhscCkOzoxZUgnvL0sZkcTkVpQ+RCRBmH59gKeWb2bS9UOwppamTchgZs7hpkdS0Sug8qHiLi1cnsNM1fnsSLrJACDOobx+vgEWgZZTU4mItdL5UNE3Na+Qhupi7I4dLYcLwtMG9qZ39zeUWMWkQZO5UNE3I5hGCz9poBZH+zGXuMkItjK3AmJ3NS+hdnRRKQOqHyIiFsps9fw1IpdfJB7CoBbO7fktQfiadFUYxYRT6HyISJuY/epEtIyszlyrhxvLwvTh3XhV7e0x0tjFhGPovIhIqYzDIP/2Xqc59bsoarGSVSIP/OTE+nTLtTsaCJSD1Q+RMRUtspqZry/i7/vOg3AkK7hvDIunuaBfiYnE5H6ovIhIqbZeaKYtMxsjl+owMfLwpMju/LzQbFYLBqziHgylQ8RcTnDMHj366PM+Wgv1Q6DVs0CWJCSSGKb5mZHExEXUPkQEZcqqajm8fdz+WR3EQDDukfw8v3xhDTxNTmZiLiKyoeIuEz28YukZWZzsvgSft5ePHVnVx66uZ3GLCKNjMqHiNQ7wzD485dH+P3afdQ4DdqENmFhShI9W4eYHU1ETKDyISL16mJ5FdOX57J+3xkA7uoZRcbYngT7a8wi0lipfIhIvdl+9AKTFmdzuqQSPx8vnrm7OxP7t9GYRaSRU/kQkTrndBr8YeMhXv3HARxOg9iwQBakJNIjWmMWEVH5EJE6dr7MTvqyXDYcOAvAvQnRvHBfT5pa9XYjIv+kdwMRqTNbDp9nypJsimx2/H29mH1PDx7oE6Mxi4hcQeVDRG6Yw2mw8PODvPHpAZwGdAxvysKUJLpEBpkdTUTckMqHiNyQM6WVTFuaw1cHzwNwf+/W/O7eHjTx09uLiFyd3h1E5Lp9dfAcU5bkcK7MToCvN8+PjmNs79ZmxxIRN6fyISK15nAazF2fz/zP8jEM6BIRxMKJiXQM15hFRH6cyoeI1EqRrZLJi7PZeuQCAMn9Ypg1qgf+vt4mJxORhkLlQ0Su2YYDZ0lfmsP58ioC/byZM6Yn9ya0MjuWiDQwKh8i8qNqHE5eXXeAt744BEC3qGAWpiTSvmVTk5OJSEOk8iEiP+hU8SUmL85m+7GLAPz0prb89q5uGrOIyHVT+RCR7/XZviLSl+VSXFFNkNWHF8f24q5eUWbHEpEGTuVDRL6jqsbJy5/s409fHgGgZ6sQFqQk0rZFoMnJRMQTqHyIyBUKLlQwaXE2OQXFADx8cztm3NkVq4/GLCJSN1Q+ROSyT3YX8tjyXGyVNQT7+/DyuHiG94g0O5aIeBiVDxHBXuMg46N9vPv1UQDiY5qxIDmRmNAm5gYTEY+k8iHSyB07X05aZja7TpYA8MvBsTw2vCt+Pl4mJxMRT6XyIdKI/X3naZ58fyel9hqaNfHl1XHxDOkWYXYsEfFwKh8ijVBltYPn/76H/9lyHIA+bZszLzmR6GYBJicTkcZA5UOkkTl8tozUzGz2nrYB8JvbOjDtJ53x9daYRURcQ+VDpBFZnXOSp1bsorzKQWigH6+PT+DWzi3NjiUijYzKh0gjcKnKwewPd7PkmwIA+seGMi85kYhgf5OTiUhjpPIh4uEOnikldVE2+4tKsVhg0u0dmTykEz4as4iISVQ+RDzYeztOMHNVHpeqHYQ1tTJ3QgIDO4aZHUtEGjmVDxEPVFFVw8xVu3k/6wQAAzu24PXxCYQHacwiIuZT+RDxMPsLS0nNzOLgmTK8LDB1aGdSb++It5fF7GgiIoDKh4jHMAyDZdsLeGb1buw1TiKCrcydkMhN7VuYHU1E5Aq1PuNs48aNjBo1iujoaCwWC6tWrbriccMweOaZZ4iKiiIgIIChQ4eSn59fV3lF5CrK7DVMW5rDE+/vwl7j5JbOLflo8mAVDxFxS7UuH+Xl5cTHx7Nw4cKrPv7SSy8xb948/vCHP7B161YCAwMZPnw4lZWVNxxWRL5rzykb98zfxKqcU3h7WXh8RBfefbgvLZpazY4mInJVtR67jBw5kpEjR171McMweOONN3j66ae59957Afjb3/5GREQEq1atYsKECTeWVkQuMwyDRVuP87s1e6iqcRIV4s+85ET6tgs1O5qIyA+q03M+jhw5QmFhIUOHDr28LCQkhP79+7N58+arlg+73Y7dbr9832az1WUkEY9kq6xmxopd/H3naQCGdA3nlXHxNA/0MzmZiMiPq9PyUVhYCEBExJXfihkREXH5sW/LyMhg9uzZdRlDxKPtPFFMWmY2xy9U4ONl4YkRXfnF4FgsFn2aRUQaBtMvcThjxgxKSkou3woKCsyOJOKWDMPgna+OMPatrzl+oYJWzQJY9l8D+OUt7VU8RKRBqdMjH5GRkQAUFRURFRV1eXlRUREJCQlX/Rmr1YrVqhPjRH5ISUU1j7+fyye7iwAY1j2Cl++PJ6SJr8nJRERqr06PfMTGxhIZGcn69esvL7PZbGzdupUBAwbU5UuJNBrZxy9y1/wv+WR3Eb7eFmaN6s4ff9pbxUNEGqxaH/koKyvj4MGDl+8fOXKEnJwcQkNDadOmDVOnTuX555+nU6dOxMbGMnPmTKKjoxk9enRd5hbxeIZh8N+bjvDix/uocRq0CW3CgpREerVuZnY0EZEbUuvysX37dm6//fbL99PT0wF46KGHePfdd3n88ccpLy/nP//zPykuLmbQoEGsXbsWf399p4TItSquqGL68lw+3XsGgLt6RpExtifB/jraISINn8UwDMPsEP+XzWYjJCSEkpISgoODzY4j4nI7jl1gUmY2p0oq8fPxYubd3XmwfxudVCoibq02+299t4uIm3A6Df648TCv/GM/DqdBbFggC1IS6REdYnY0EZE6pfIh4gbOl9lJX5bLhgNnAbgnPpo5Y3rS1Kp/oiLiefTOJmKyrYfPM3lJNkU2O1YfL2bf04PxfWM0ZhERj6XyIWISh9Pgzc8P8vqnB3Aa0KFlIAsnJtE1Uuc6iYhnU/kQMcHZUjtTl2bz1cHzAIxNas1zo3vQxE//JEXE8+mdTsTFvjp4jilLcjhXZifA15vnRsdxf+/WZscSEXEZlQ8RF3E4Deauz2f+Z/kYBnSJCGJBSiKdIoLMjiYi4lIqHyIuUGSrZMqSbLYcvgDAhL4xzBrVgwA/b5OTiYi4nsqHSD3bcOAs6UtzOF9eRaCfN3PG9OTehFZmxxIRMY3Kh0g9qXE4eXXdAd764hAA3aKCWZiSSPuWTU1OJiJiLpUPkXpwqvgSkxdns/3YRQAevKkNT9/VHX9fjVlERFQ+ROrYZ/uKSF+WS3FFNU2tPrw4tid394o2O5aIiNtQ+RCpI9UOJy9/sp+3Nx4GoGerEBakJNK2RaDJyURE3IvKh0gdOHGxgkmLs8k+XgzAwze3Y8adXbH6aMwiIvJtKh8iN+gfuwuZvjwXW2UNwf4+vHR/PCPiIs2OJSLitlQ+RK5TVY2TjI/38s5XRwGIj2nGguREYkKbmBtMRMTNqXyIXIfj5ytIW5zFzhMlAPxycCyPDe+Kn4+XyclERNyfyodILX286zSPv7eTUnsNzZr48sr98QztHmF2LBGRBkPlQ+QaVVY7mPPRXv62+RgAvds2Z35yItHNAkxOJiLSsKh8iFyDI+fKScvMYvcpGwC/vq0D6T/pjK+3xiwiIrWl8iHyIz7IPcWM93dSXuUgNNCP1x6I57Yu4WbHEhFpsFQ+RL5HZbWD2R/uYfG24wD0iw1l3oREIkP8TU4mItKwqXyIXMXBM2WkZWaxr7AUiwUm3d6RyUM64aMxi4jIDVP5EPmWFVkn+O3KPC5VOwhrauWN8QkM6hRmdiwREY+h8iHyLxVVNTyzejfv7TgBwM0dWvDGhATCgzRmERGpSyofIsCBolJSF2WRf6YMLwtMGdKZtDs64u1lMTuaiIjHUfmQRs0wDJZtL2DWB7uprHYSHmRl7oREBnRoYXY0ERGPpfIhjVaZvYanV+5iVc4pAAZ3CuP18QmENbWanExExLOpfEijtOeUjbTMLA6fK8fby8KjwzrzX7d0wEtjFhGReqfyIY2KYRgs2nqc363ZQ1WNk6gQf+YlJ9K3XajZ0UREGg2VD2k0SiurmbFiF2t2ngbgjq7hvDIuntBAP5OTiYg0Liof0ijsOlFC2uIsjp2vwMfLwuMjuvCLQe01ZhERMYHKh3g0wzD469dHmfPRPqocTlo1C2BeciK92zY3O5qISKOl8iEeq+RSNU+8t5O1uwsB+En3CF65P56QJr4mJxMRadxUPsQj5RQUk5aZxYmLl/D1tjBjZDd+NrAdFovGLCIiZlP5EI9iGAb/vekIL368jxqnQUxoAAuSk4iPaWZ2NBER+ReVD/EYxRVVTF+ey6d7zwBwZ89IXhzbi2B/jVlERNyJyod4hB3HLjApM5tTJZX4eXsx8+5uPHhTW41ZRETckMqHNGhOp8HbXx7m5U/243AatGvRhAUpScS1CjE7moiIfA+VD2mwzpfZeXR5Ll/sPwvAqPho5twXR5DGLCIibk3lQxqkrYfPM3lJNkU2O1YfL569pwcT+sZozCIi0gCofEiD4nAavPn5QV7/9ABOA9q3DGRhShLdooLNjiYiItdI5UMajLOldqYtzWHTwXMAjElsxXOj4wi06tdYRKQh0bu2NAhfHzzH5CU5nCuzE+Drze/u7cG4PjFmxxIRkeug8iFuzeE0mLs+n/mf5WMY0DmiKQtTkugUEWR2NBERuU4qH+K2imyVTFmSzZbDFwAY3yeGZ+/pQYCft8nJRETkRqh8iFvaeOAs05bmcL68iiZ+3sy5ryejE1uZHUtEROqAyoe4lRqHk9c/PcCbXxzCMKBbVDALUxJp37Kp2dFERKSOqHyI2zhdconJi7P55uhFACb2b8PMu7vj76sxi4iIJ1H5ELfw+b4zpC/L4WJFNU2tPrw4tid394o2O5aIiNQDlQ8xVbXDySuf7OePGw8DENcqmIUpSbRtEWhyMhERqS8qH2Kak8WXmJSZRdbxYgAevrkdM+7sitVHYxYREU+m8iGmWLeniOnLcym5VE2Qvw8v39+LEXFRZscSEREXUPkQl6qqcfLix/v4y1dHAIiPacaC5ERiQpuYnExERFxF5UNcpuBCBWmZWeSeKAHgF4NieXxEV/x8vExOJiIirqTyIS7x8a7TPP7+TkorawgJ8OXVcfEM7R5hdiwRETFBnf+X89lnn8VisVxx69q1a12/jDQQldUOnlmdx68XZVFaWUPvts35aMpgFQ8RkUasXo589OjRg08//fR/X8RHB1gaoyPnyknLzGL3KRsAv7q1PdOHdcHXW2MWEZHGrF5agY+PD5GRkfXx1NJAfJB7iqdW7KLMXkNooB+vPhDP7V3CzY4lIiJuoF7KR35+PtHR0fj7+zNgwAAyMjJo06bNVde12+3Y7fbL9202W31EEheprHYw+8M9LN52HIB+7UKZl5xIZIi/yclERMRd1Pnx7/79+/Puu++ydu1a3nrrLY4cOcLgwYMpLS296voZGRmEhIRcvsXExNR1JHGRg2fKGL3wKxZvO47FApPu6EjmL/ureIiIyBUshmEY9fkCxcXFtG3bltdee42f//zn33n8akc+YmJiKCkpITg4uD6jSR1akXWCp1flUVHlIKypH6+PT2Bwp5ZmxxIRERex2WyEhIRc0/673s8EbdasGZ07d+bgwYNXfdxqtWK1Wus7htSTiqoaZq3ezfIdJwAY0L4FcyckEB6sox0iInJ19f6xg7KyMg4dOkRUlC6d7WkOFJVy74KvWL7jBF4WmDa0M//zi/4qHiIi8oPq/MjH9OnTGTVqFG3btuXUqVPMmjULb29vkpOT6/qlxCSGYbB8xwmeWZ1HZbWTlkFW5k1IZECHFmZHExGRBqDOy8eJEydITk7m/PnztGzZkkGDBrFlyxZattT83xOU22t4elUeK7NPAjC4Uxivj08grKlGZyIicm3qvHwsWbKkrp9S3MTe0zZSM7M4fLYcby8L6T/pzK9v7YCXl8XsaCIi0oDo0qPyowzDIHPbcWZ/uIeqGieRwf7MT0mkb7tQs6OJiEgDpPIhP6i0spoZK3axZudpAG7v0pJXH0ggNNDP5GQiItJQqXzI98o7WUJaZhZHz1fg42Xh8RFd+MWg9hqziIjIDVH5kO8wDIO/bT7GC3/fS5XDSatmAcxLTqR32+ZmRxMREQ+g8iFXKLlUzRPv7WTt7kIAhnaL4JVxvWjWRGMWERGpGyofcllOQTFpmVmcuHgJX28LM0Z242cD22GxaMwiIiJ1R+VDMAyD/950hN+v3Ue1wyAmNIAFyUnExzQzO5qIiHgglY9GrriiiunLd/Lp3iIARsZF8uLYXoQE+JqcTEREPJXKRyO249hFJmVmcaqkEj9vL56+uxs/vamtxiwiIlKvVD4aIafT4O0vD/PyJ/txOA3atWjCgpQk4lqFmB1NREQaAZWPRuZCeRXpy3L4Yv9ZAEbFRzPnvjiC/DVmERER11D5aES2HbnA5MXZFNoqsfp48ew9PZjQN0ZjFhERcSmVj0bA6TR484uDvLbuAE4D2rcMZGFKEt2igs2OJiIijZDKh4c7W2onfVkOX+afA2BMYiueGx1HoFV/9SIiYg7tgTzY14fOMWVJDmdL7fj7evHcvXGM6xNjdiwREWnkVD48kMNpMP+zfOatz8dpQOeIpixMSaJTRJDZ0URERFQ+PM0ZWyVTluSw+fB5AB7o05rZ98QR4OdtcjIREZF/UvnwIF/mn2Xa0hzOlVXRxM+bF+6L477E1mbHEhERuYLKhweocTh549N8Fn5xEMOArpFBLJyYRIeWTc2OJiIi8h0qHw3c6ZJLTFmcw7ajFwBI6d+GZ+7ujr+vxiwiIuKeVD4asM/3nSF9WQ4XK6ppavVhzpie3BMfbXYsERGRH6Ty0QBVO5y88sl+/rjxMAA9ooNZmJJEu7BAk5OJiIj8OJWPBuZk8SUmZWaRdbwYgIcGtGXGnd00ZhERkQZD5aMBWbeniOnLcym5VE2Qvw8vje3FyJ5RZscSERGpFZWPBqCqxsmLH+/jL18dASC+dQgLUpKICW1icjIREZHaU/lwcwUXKkjLzCL3RAkAPx8UyxMjuuLn42VyMhERkeuj8uHG1uad5rH3dlJaWUNIgC+vjIvnJ90jzI4lIiJyQ1Q+3FBltYOMj/by183HAEhq04x5yYm0bq4xi4iINHwqH27m6LlyUjOz2H3KBsCvbm3P9GFd8PXWmEVERDyDyocb+TD3FDNW7KLMXkPzJr689kACt3cNNzuWiIhInVL5cAOV1Q5+t2YPmVuPA9CvXShzkxOICgkwOZmIiEjdU/kw2aGzZaQuymJfYSkWC6Te1pGpQzvhozGLiIh4KJUPE63MPsFvV+ZRUeUgrKkfr49PYHCnlmbHEhERqVcqHya4VOVg1gd5LNt+AoAB7Vswd0IC4cH+JicTERGpfyofLnagqJTURVnknynDYoEpQzox6Y5OeHtZzI4mIiLiEiofLmIYBst3nOCZ1XlUVjtpGWRl7oQEbu4QZnY0ERERl1L5cIFyew0zV+WxIvskAIM7hfH6+ATCmlpNTiYiIuJ6Kh/1bO9pG6mZWRw+W46XBR4d1oVf39oBL41ZRESkkVL5qCeGYbB4WwHPfribqhonkcH+zEtOpF9sqNnRRERETKXyUQ9KK6t5amUeH+aeAuC2Li157YEEQgP9TE4mIiJiPpWPOpZ3soS0zCyOnq/A28vCY8O78J+D22vMIiIi8i8qH3XEMAz+35ZjPL9mL1UOJ62aBTAvOZHebZubHU1ERMStqHzUgZJL1cxYsZOPdhUCMLRbBK+M60WzJhqziIiIfJvKxw3KLSgmbXEWBRcu4ett4cmR3XhkYDssFo1ZRERErkbl4zoZhsE7Xx0l4+O9VDsMYkIDWJCcRHxMM7OjiYiIuDWVj+tQUlHNY+/l8o89RQCMjIvkxbG9CAnwNTmZiIiI+1P5qKWs4xeZlJnNyeJL+Hl78fTd3fjpTW01ZhEREblGKh/XyOk0+POmw7y0dj81ToN2LZqwICWJuFYhZkcTERFpUFQ+rsGF8iqmL8/ls31nABgVH82c++II8teYRUREpLZUPn7EN0cvMCkzm0JbJX4+Xjw7qgfJ/WI0ZhEREblOKh/fw+k0eGvDIV5bdwCH06B9y0AWpiTRLSrY7GgiIiINmsrHVZwrszNtaQ5f5p8D4L7EVjw/Oo5AqzaXiIjIjdLe9Fs2HzrPlCXZnCm14+/rxe/uiWNcn9Yas4iIiNQRlY9/cTgN5n+Wz7z1+TgN6BTelIUTk+gcEWR2NBEREY+i8gGcKa1k6pIcvj50HoD7e7fmd/f2oImfNo+IiEhda/R7103555i6NJtzZVU08fPm+dFxjElqbXYsERERj+VVX0+8cOFC2rVrh7+/P/3792fbtm319VLXpcbh5JVP9vPTv2zlXFkVXSOD+CBtkIqHiIhIPauX8rF06VLS09OZNWsWWVlZxMfHM3z4cM6cOVMfL1drhSWVpPxpKws+P4hhQHK/NqxKHUjH8KZmRxMREfF4FsMwjLp+0v79+9O3b18WLFgAgNPpJCYmhkmTJvHkk0/+4M/abDZCQkIoKSkhOLjur6nx+f4zPLoslwvlVQT6eZMxthf3xEfX+euIiIg0JrXZf9f5OR9VVVXs2LGDGTNmXF7m5eXF0KFD2bx583fWt9vt2O32y/dtNltdRwKg2uHklX/s548bDgPQIzqYBSlJxIYF1svriYiIyNXV+djl3LlzOBwOIiIirlgeERFBYWHhd9bPyMggJCTk8i0mJqauIwGwfm/R5eLx0IC2vP/rm1U8RERETGD6p11mzJhBenr65fs2m61eCsjwHpE8eFMbBnYIY2TPqDp/fhEREbk2dV4+wsLC8Pb2pqio6IrlRUVFREZGfmd9q9WK1Wqt6xjfYbFYeH50z3p/HREREflhdT528fPzo3fv3qxfv/7yMqfTyfr16xkwYEBdv5yIiIg0MPUydklPT+ehhx6iT58+9OvXjzfeeIPy8nJ+9rOf1cfLiYiISANSL+Vj/PjxnD17lmeeeYbCwkISEhJYu3btd05CFRERkcanXq7zcSPq+zofIiIiUvdqs/+ut8uri4iIiFyNyoeIiIi4lMqHiIiIuJTKh4iIiLiUyoeIiIi4lMqHiIiIuJTKh4iIiLiUyoeIiIi4lMqHiIiIuFS9XF79Rvz7gqs2m83kJCIiInKt/r3fvpYLp7td+SgtLQUgJibG5CQiIiJSW6WlpYSEhPzgOm733S5Op5NTp04RFBSExWKp0+e22WzExMRQUFCg742pR9rOrqHt7Brazq6jbe0a9bWdDcOgtLSU6OhovLx++KwOtzvy4eXlRevWrev1NYKDg/WL7QLazq6h7ewa2s6uo23tGvWxnX/siMe/6YRTERERcSmVDxEREXGpRlU+rFYrs2bNwmq1mh3Fo2k7u4a2s2toO7uOtrVruMN2drsTTkVERMSzNaojHyIiImI+lQ8RERFxKZUPERERcSmVDxEREXGpRlM+Fi5cSLt27fD396d///5s27bN7EgeJyMjg759+xIUFER4eDijR49m//79ZsfyeC+++CIWi4WpU6eaHcXjnDx5kgcffJAWLVoQEBBAz5492b59u9mxPIrD4WDmzJnExsYSEBBAhw4deO65567p+0Hkh23cuJFRo0YRHR2NxWJh1apVVzxuGAbPPPMMUVFRBAQEMHToUPLz812SrVGUj6VLl5Kens6sWbPIysoiPj6e4cOHc+bMGbOjeZQNGzaQmprKli1bWLduHdXV1QwbNozy8nKzo3msb775hj/+8Y/06tXL7Cge5+LFiwwcOBBfX18+/vhj9uzZw6uvvkrz5s3NjuZRfv/73/PWW2+xYMEC9u7dy+9//3teeukl5s+fb3a0Bq+8vJz4+HgWLlx41cdfeukl5s2bxx/+8Ae2bt1KYGAgw4cPp7Kysv7DGY1Av379jNTU1Mv3HQ6HER0dbWRkZJiYyvOdOXPGAIwNGzaYHcUjlZaWGp06dTLWrVtn3HrrrcaUKVPMjuRRnnjiCWPQoEFmx/B4d911l/HII49csWzMmDHGxIkTTUrkmQBj5cqVl+87nU4jMjLSePnlly8vKy4uNqxWq7F48eJ6z+PxRz6qqqrYsWMHQ4cOvbzMy8uLoUOHsnnzZhOTeb6SkhIAQkNDTU7imVJTU7nrrruu+N2WuvPBBx/Qp08fxo0bR3h4OImJifzpT38yO5bHufnmm1m/fj0HDhwAIDc3l02bNjFy5EiTk3m2I0eOUFhYeMX7R0hICP3793fJvtHtvliurp07dw6Hw0FERMQVyyMiIti3b59JqTyf0+lk6tSpDBw4kLi4OLPjeJwlS5aQlZXFN998Y3YUj3X48GHeeust0tPTeeqpp/jmm2+YPHkyfn5+PPTQQ2bH8xhPPvkkNpuNrl274u3tjcPh4IUXXmDixIlmR/NohYWFAFfdN/77sfrk8eVDzJGamkpeXh6bNm0yO4rHKSgoYMqUKaxbtw5/f3+z43gsp9NJnz59mDNnDgCJiYnk5eXxhz/8QeWjDi1btoxFixaRmZlJjx49yMnJYerUqURHR2s7ezCPH7uEhYXh7e1NUVHRFcuLioqIjIw0KZVnS0tLY82aNXz++ee0bt3a7DgeZ8eOHZw5c4akpCR8fHzw8fFhw4YNzJs3Dx8fHxwOh9kRPUJUVBTdu3e/Ylm3bt04fvy4SYk802OPPcaTTz7JhAkT6NmzJz/96U+ZNm0aGRkZZkfzaP/e/5m1b/T48uHn50fv3r1Zv3795WVOp5P169czYMAAE5N5HsMwSEtLY+XKlXz22WfExsaaHckjDRkyhF27dpGTk3P51qdPHyZOnEhOTg7e3t5mR/QIAwcO/M5HxQ8cOEDbtm1NSuSZKioq8PK6clfk7e2N0+k0KVHjEBsbS2Rk5BX7RpvNxtatW12yb2wUY5f09HQeeugh+vTpQ79+/XjjjTcoLy/nZz/7mdnRPEpqaiqZmZmsXr2aoKCgy3PDkJAQAgICTE7nOYKCgr5zHk1gYCAtWrTQ+TV1aNq0adx8883MmTOHBx54gG3btvH222/z9ttvmx3No4waNYoXXniBNm3a0KNHD7Kzs3nttdd45JFHzI7W4JWVlXHw4MHL948cOUJOTg6hoaG0adOGqVOn8vzzz9OpUydiY2OZOXMm0dHRjB49uv7D1fvnadzE/PnzjTZt2hh+fn5Gv379jC1btpgdyeMAV7298847ZkfzePqobf348MMPjbi4OMNqtRpdu3Y13n77bbMjeRybzWZMmTLFaNOmjeHv72+0b9/e+O1vf2vY7XazozV4n3/++VXfkx966CHDMP75cduZM2caERERhtVqNYYMGWLs37/fJdkshqHLyImIiIjrePw5HyIiIuJeVD5ERETEpVQ+RERExKVUPkRERMSlVD5ERETEpVQ+RERExKVUPkRERMSlVD5ERETEpVQ+RERExKVUPkRERMSlVD5ERETEpVQ+RERExKX+P3apsrvkhDpaAAAAAElFTkSuQmCC","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# Plot the distance function on domain (t)\n","plt.plot(x, f(x))"]},{"cell_type":"code","execution_count":55,"id":"4c4d4f20","metadata":{},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xf(x)
00.0000000.000000
10.2040820.510204
20.4081631.020408
30.6122451.530612
40.8163272.040816
\n","
"],"text/plain":[" x f(x)\n","0 0.000000 0.000000\n","1 0.204082 0.510204\n","2 0.408163 1.020408\n","3 0.612245 1.530612\n","4 0.816327 2.040816"]},"execution_count":55,"metadata":{},"output_type":"execute_result"}],"source":["# Create a DataFrame\n","f1 = pd.DataFrame({'x': x, 'f(x)': f(x)})\n","f1.head()"]},{"cell_type":"markdown","id":"1144168d","metadata":{},"source":["### Exercise 2\n","\n","It turned out that I wasn't walking a constant speed towards getting my coffee, but I was accelerating (my speed increased over time). If my initial *speed = 0*, it still took me 10 seconds to travel from my seat to my coffee, but I was walking faster and faster.\n","\n","$V_o$ = initial speed = $0$\n","\n","t = time\n","\n","a = acceleration\n","\n","**distance** = $V_o * t + 0.5 * a * (t^2)$\n","\n","**speed** = $V_o + a * t$\n","\n","The first derivative of the speed function is acceleration. I realize that the speed function is closely related to the distance function.\n","\n","**Find the acceleration value and build the quadratic function $(t ∈ [0,10])$. Also, create a graph and a table.**"]},{"cell_type":"code","execution_count":56,"id":"ec1f8bd7","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":56,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","\n","# Define and plot the quadratic funtion\n","def f(x): return 1/2*0.5*(x**2)\n","x = np.linspace(0,10)\n","plt.xlabel(\"X\")\n","plt.ylabel(\"f(X)\")\n","plt.plot(x, f(x))\n"]},{"cell_type":"code","execution_count":57,"id":"ba5c497b","metadata":{},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xf(x)
00.0000000.000000
10.2040820.010412
20.4081630.041649
30.6122450.093711
40.8163270.166597
\n","
"],"text/plain":[" x f(x)\n","0 0.000000 0.000000\n","1 0.204082 0.010412\n","2 0.408163 0.041649\n","3 0.612245 0.093711\n","4 0.816327 0.166597"]},"execution_count":57,"metadata":{},"output_type":"execute_result"}],"source":["# Create a DataFrame\n","f2 = pd.DataFrame({'x': x, 'f(x)': f(x)})\n","f2.head()"]},{"cell_type":"markdown","id":"d4bfd827","metadata":{},"source":["### Exercise 3\n","\n","When I arrive to the coffee machine, I hear my colleague talking about the per-unit costs of producing 'product B' for the company. As the company produces more units, the per-unit costs continue to decrease until a point where they start to increase.\n","\n","To optimize the per-unit production cost at its minimum to optimize efficiency, the company would need to find the number of units to be produced where the per-unit production costs begin to change from decreasing to increasing.\n","\n","**Build a quadratic function $f(x)=0.1(x)^2−9x +4500$ on $x∈[0,100]$ to create the per-unit cost function, and make a conclusion.**"]},{"cell_type":"code","execution_count":58,"id":"36fae3bf","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":58,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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s3LHQXIOlBLib/OKwbvH1KvAlJSUMHLkSGbOnMmTTz553PagoCBiY397euLw8PCT7vPaa68RHx/PtGnTAOjatSsrVqzg+eefV4ERERGpg7mrfgLgj0mtCfav93kLt1Ovj5DGjBlDamoqQ4cOPeH2uXPnEhUVRWJiIpMnT+bIkSMnfI6oqCj69evHG2+8gWEYrm3p6enHPXdKSgrp6eknzVRRUYHdbq91ExERacry7eV8uTkfgJH925mcpmHVuYrNmzePNWvWkJGRccLtN9xwA+3ataNVq1asX7+eSZMmsXXrVj744APXPo8//jgXXXQRQUFBfPnll9xzzz2UlJRw7733ApCXl0dMTEyt542JicFut1NWVkZgYOBx33fKlCk89thjdX05IiIiXmt+Ri4Op8E57SPoHBtidpwGVacCk5uby7hx40hLSyMgIOCE+9x1112uP3fv3p2WLVsyZMgQduzYQceOHQF4+OGHXfv07t2b0tJSnn32WVeBqY/Jkydz3333ub622+3ExXn+TIMiIiL14XAavOMavOtdZ1+gjh8hZWZmUlBQQFJSEjabDZvNxrJly3jppZew2Ww4HI7jHtO/f38Atm/fftLn7d+/P7t376aiogKA2NhY8vPza+2Tn59PaGjoCc++APj7+xMaGlrrJiIi0lQt3VrA3qJyIoJ8GZ742+NSPVGdzsAMGTKEDRs21Lrv1ltvpUuXLkyaNAmr9fhlubOysgBo2bLlSZ83KyuLiIgI/P39AUhOTubTTz+ttU9aWhrJycl1iSsiItJkHZt590994wjwPf792dPVqcCEhISQmJhY677g4GAiIyNJTExkx44d/Pe//+XSSy8lMjKS9evXM2HCBAYNGuS63PqTTz4hPz+fAQMGEBAQQFpaGk8//TT333+/6zlHjx7NK6+8wsSJE7nttttYsmQJ8+fPZ9GiRQ3wkkVERLzb7kNH+HprAQDX9/OeuV9+qUGvp/Lz8+Orr77ihRdeoLS0lLi4OEaMGMFDDz3k2sfX15fp06czYcIEDMMgISGB5557jjvvvNO1T3x8PIsWLWLChAm8+OKLtGnThlmzZukSahERkVPwzupdGAaclxBFfFSw2XHOCIvxy+uXvYjdbicsLIyioiKNhxERkSajstrJwKlLOFBSwb9GJnFJ95MP4XBHp/r+rbWQREREvEja5nwOlFQQ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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# Define and plot the function\n","def f(x): return 0.1*(x)**2 -9*x + 4500\n","x = np.linspace(0,100)\n","plt.plot(x, f(x))"]},{"cell_type":"markdown","id":"aabad82c","metadata":{},"source":["## Linear Algebra"]},{"cell_type":"markdown","id":"6753636d","metadata":{},"source":["### Exercise 1: Sum of two matrices\n","\n","Suppose we have two matrices A and B.\n","\n","```py\n","A = [[1,2],[3,4]]\n","B = [[4,5],[6,7]]\n","\n","then we get\n","A+B = [[5,7],[9,11]]\n","A-B = [[-3,-3],[-3,-3]]\n","```\n","\n","Make the sum of two matrices using Python with NumPy"]},{"cell_type":"code","execution_count":59,"id":"9e200c32","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Printing elements of first matrix\n","[[1 2]\n"," [3 4]]\n","Printing elements of second matrix\n","[[4 5]\n"," [6 7]]\n","Addition of two matrices\n","[[ 5 7]\n"," [ 9 11]]\n"]}],"source":["import numpy as np\n"," \n"," \n","# Creating first matrix\n","A = np.array([[1, 2], [3, 4]])\n"," \n","# Creating second matrix\n","B = np.array([[4, 5], [6, 7]])\n","\n","# Print elements\n","print(\"Printing elements of first matrix\")\n","print(A)\n","print(\"Printing elements of second matrix\")\n","print(B)\n"," \n","# Adding both matrices\n","print(\"Addition of two matrices\")\n","print(np.add(A, B))"]},{"cell_type":"markdown","id":"93bfb6cc","metadata":{},"source":["### Exercise 2: Sum of two lists\n","\n","There will be many situations in which we'll have to find an index-wise summation of two different lists. This can have possible applications in day-to-day programming. In this exercise, we will solve the same problem in various ways in which this task can be performed.\n","\n","We have the following two lists:\n","\n","```py\n","list1 = [2, 5, 4, 7, 3]\n","list2 = [1, 4, 6, 9, 10]\n","```\n","\n","Now let's use Python code to demonstrate addition of two lists."]},{"cell_type":"code","execution_count":60,"id":"867b70fc","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [2, 5, 4, 7, 3]\n","Original list 2 : [1, 4, 6, 9, 10]\n","Resulting list is : [3, 9, 10, 16, 13]\n"]}],"source":["# Naive method\n","\n","# Initializing lists\n","list1 = [2, 5, 4, 7, 3]\n","list2 = [1, 4, 6, 9, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using naive method to add two lists \n","res_list = []\n","for i in range(0, len(list1)):\n"," res_list.append(list1[i] + list2[i])\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"code","execution_count":61,"id":"681930a3","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [1, 3, 4, 6, 8]\n","Original list 2 : [4, 5, 6, 2, 10]\n","Resulting list is : [5, 8, 10, 8, 18]\n"]}],"source":["# Use list comprehension to perform addition of the two lists:\n","\n","# Initializing lists\n","list1 = [1, 3, 4, 6, 8]\n","list2 = [4, 5, 6, 2, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using list comprehension to add two lists\n","res_list = [list1[i] + list2[i] for i in range(len(list1))]\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"code","execution_count":62,"id":"a3a8a425","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [1, 3, 4, 6, 8]\n","Original list 2 : [4, 5, 6, 2, 10]\n","Resulting list is : [5, 8, 10, 8, 18]\n"]}],"source":["# Use map() + add():\n","\n","from operator import add\n"," \n","# Initializing lists\n","list1 = [1, 3, 4, 6, 8]\n","list2 = [4, 5, 6, 2, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using map() + add() to add two lists\n","res_list = list(map(add, list1, list2))\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"code","execution_count":63,"id":"1708d7ee","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Original list 1 : [1, 3, 4, 6, 8]\n","Original list 2 : [4, 5, 6, 2, 10]\n","Resulting list is : [5, 8, 10, 8, 18]\n"]}],"source":["# Use zip() + sum():\n","\n","from operator import add\n"," \n","# Initializing lists\n","list1 = [1, 3, 4, 6, 8]\n","list2 = [4, 5, 6, 2, 10]\n"," \n","# Printing original lists\n","print (\"Original list 1 : \" + str(list1))\n","print (\"Original list 2 : \" + str(list2))\n"," \n","# Using zip() + sum() to add two lists\n","res_list = [sum(i) for i in zip(list1, list2)]\n"," \n","# Printing resulting list \n","print (\"Resulting list is : \" + str(res_list))"]},{"cell_type":"markdown","id":"1aef1bd2","metadata":{},"source":["### Exercise 3: Dot multiplication\n","\n","We have two matrices:\n","\n","```py\n","matrix1 = [[1,7,3],\n"," [4,5,2],\n"," [3,6,1]]\n","matrix2 = [[5,4,1],\n"," [1,2,3],\n"," [4,5,2]]\n","```\n","\n","A simple technique but expensive method for larger input datasets is using *for loops*. In this exercise, we will first use nested *for loops* to iterate through each row and column of the matrices, and then we will perform the same multiplication using NumPy."]},{"cell_type":"code","execution_count":64,"id":"840e7d0e","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["[[24, 33, 28], [33, 36, 23], [25, 29, 23]]\n"]}],"source":["# Using a for loop input two matrices of size n x m\n","matrix1 = [[1,7,3],\n"," [4,5,2],\n"," [3,6,1]]\n","matrix2 = [[5,4,1],\n"," [1,2,3],\n"," [4,5,2]]\n"," \n","res = [[0 for x in range(3)] for y in range(3)]\n"," \n","# Explicit for loops\n","for i in range(len(matrix1)):\n"," for j in range(len(matrix2[0])):\n"," for k in range(len(matrix2)):\n"," \n"," # Resulting matrix\n"," res[i][j] += matrix1[i][k] * matrix2[k][j]\n"," \n","print(res)"]},{"cell_type":"code","execution_count":65,"id":"db6c3355","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["[[24 33 28]\n"," [33 36 23]\n"," [25 29 23]]\n"]}],"source":["# Import libraries\n","import numpy as np\n"," \n","# Input two matrices\n","mat1 = ([1,7,3],[ 4,5,2],[ 3,6,1])\n","mat2 = ([5,4,1],[ 1,2,3],[ 4,5,2])\n"," \n","# This will return dot product\n","res = np.dot(mat1,mat2)\n"," \n","# Print resulting matrix\n","print(res)"]},{"cell_type":"markdown","id":"34abdf27","metadata":{},"source":["Source:\n","\n","https://www.youtube.com/channel/UCXq-PLvYAX-EufF5RAPihVg\n","\n","https://www.geeksforgeeks.org/\n","\n","https://medium.com/@seehleung/basic-calculus-explained-for-machine-learning-c7f642e7ced3\n","\n","https://blog.demir.io/understanding-gradient-descent-266fc3dcf02f"]}],"metadata":{"interpreter":{"hash":"d3463682613d55fcbb64853e38cc3520a7f67bdf8d6940e781ddcdc423122719"},"kernelspec":{"display_name":"Python 3.9.12 ('calculus-project')","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.11.4"}},"nbformat":4,"nbformat_minor":5}