{"id":402,"date":"2024-02-25T14:28:12","date_gmt":"2024-02-25T19:28:12","guid":{"rendered":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/chapter\/vectors_ai-3\/"},"modified":"2024-02-25T17:28:40","modified_gmt":"2024-02-25T22:28:40","slug":"vectors_ai-3","status":"publish","type":"chapter","link":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/chapter\/vectors_ai-3\/","title":{"raw":"What is a Vector?","rendered":"What is a Vector?"},"content":{"raw":"<h1 id=\"vectors\">Vectors<\/h1>\r\n<h5>Updated Feb 2024<\/h5>\r\nA vector is something which has magnitude or length and direction. It is used to describe a variety of things. We can also view a vector as an ordered n-tuple, ie, [latex](a, b, c)[\/latex], or as a set of directions.\r\n<h2 id=\"vectors-in-two-dimensions\">Vectors in two dimensions<\/h2>\r\nIn two dimensions, a vector is an ordered pair of real numbers, <span class=\"math inline\">[latex](a,b)[\/latex]<\/span> or [latex]\\binom{a}{b}[\/latex] (expressed vertically. We use\u201carrow\u201d notation to show that this has direction - as opposed to being a point. When we draw this, it has an arrow:\r\n\r\n<span class=\"math display\">\\[\\vec{v} = \\binom{1}{2}, \\,\\, \\vec{w} = \\binom{3}{1}\\]<\/span>\r\n<div id=\"cb1\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb1-1\">\r\n<\/span><\/code><\/pre>\r\n<div class=\"textbox shaded\"><code><span id=\"cb1-1\"><span class=\"co\">## This is a Python cell; see how we create vectors:<\/span><\/span> <span id=\"cb1-2\"><\/span>\r\n<span id=\"cb1-3\"><span class=\"co\">## We need a library, NumPy has the best math-y stuff<\/span><\/span>\r\n<span id=\"cb1-4\"><span class=\"im\">import<\/span> numpy <span class=\"im\">as<\/span> np<\/span> <span id=\"cb1-5\"><\/span>\r\n<span id=\"cb1-6\"><span class=\"co\">## Define a Vector<\/span><\/span>\r\n<span id=\"cb1-7\"><span class=\"co\">## note that I've used 2 sets of brackets: the square ones define a list INSIDE of the function<\/span><\/span>\r\n<span id=\"cb1-8\">v <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>])<\/span> <span id=\"cb1-9\"><\/span>\r\n<span id=\"cb1-10\">w <span class=\"op\">=<\/span> np.array([<span class=\"dv\">3<\/span>,<span class=\"dv\">1<\/span>])<\/span> <span id=\"cb1-11\"><\/span> <span id=\"cb1-12\"><\/span>\r\n<span id=\"cb1-13\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"v = \"<\/span>, v, <span class=\"st\">\" and w = \"<\/span>, w)<\/span><\/code><\/div>\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\r\n&nbsp;\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\r\n<\/div>\r\n<pre><code>v =  [1 2]  and w =  [3 1]<\/code><\/pre>\r\n<h2><\/h2>\r\n<h2 id=\"visualizing\">Visualizing:<\/h2>\r\nUsually vectors look like arrows coming out from [latex](0,0)[\/latex]\r\n<div id=\"cb3\" class=\"sourceCode\">\r\n<div class=\"textbox shaded\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb3-1\"><span class=\"co\">## Don't worry a lot about graphing, but know that matplotlib is a pretty good tool, and lets us plot our math stuff nicely<\/span><\/span>\r\n<span id=\"cb3-2\"><span class=\"co\">## matplotlib also makes stats visualizations!<\/span><\/span>\r\n<span id=\"cb3-3\"><\/span>\r\n<span id=\"cb3-4\"><span class=\"co\">## Why plt?  I dunno... tradition<\/span><\/span>\r\n<span id=\"cb3-5\"><span class=\"im\">import<\/span> matplotlib.pyplot <span class=\"im\">as<\/span> plt <\/span>\r\n<span id=\"cb3-6\"><\/span>\r\n<span id=\"cb3-7\"><\/span>\r\n<span id=\"cb3-8\"><span class=\"co\"># Creating plot <\/span><\/span>\r\n<span id=\"cb3-9\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb3-10\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb3-11\"><\/span>\r\n<span id=\"cb3-12\"><\/span>\r\n<span id=\"cb3-13\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb3-14\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb3-15\"><\/span>\r\n<span id=\"cb3-16\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb3-17\">plt.title(<span class=\"st\">'Vectors on a Plane'<\/span>) <\/span>\r\n<span id=\"cb3-18\"><\/span>\r\n<span id=\"cb3-19\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb3-20\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb3-21\"><\/span>\r\n<span id=\"cb3-22\"><\/span>\r\n<span id=\"cb3-23\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb3-24\">plt.grid() <\/span>\r\n<span id=\"cb3-25\">plt.show() <\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<figure><img class=\"size-medium wp-image-404 aligncenter\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_3_0-300x241.png\" alt=\"\" width=\"300\" height=\"241\" \/><figcaption aria-hidden=\"true\"><\/figcaption><\/figure>\r\nBut they don\u2019t need to start at [latex](0,0)[\/latex]! Think of them as a set of instructions, saying \u201cfrom any begining point, go <span class=\"math inline\">[latex]a[\/latex]<\/span> steps to the right, and <span class=\"math inline\">[latex]b[\/latex]<\/span> steps up.\r\n\r\nIn this plot, I have the second (red) vector start where the first one ends.\r\n\r\nIn the next plot, the blue vector is repeated a bunch of times\u2026.\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb4\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb4-1\"><\/span>\r\n<span id=\"cb4-2\"><span class=\"co\"># Creating plot <\/span><\/span>\r\n<span id=\"cb4-3\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb4-4\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb4-5\"><\/span>\r\n<span id=\"cb4-6\"><span class=\"co\">#plt.quiver(X, Y, 1,2, color='g', units='xy', scale= 1) <\/span><\/span>\r\n<span id=\"cb4-7\"><\/span>\r\n<span id=\"cb4-8\"><\/span>\r\n<span id=\"cb4-9\"><span class=\"co\">## and the red line starts where the blue one ends.<\/span><\/span>\r\n<span id=\"cb4-10\">plt.quiver(v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb4-11\"><\/span>\r\n<span id=\"cb4-12\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb4-13\">plt.title(<span class=\"st\">'Vectors can start anywhere'<\/span>) <\/span>\r\n<span id=\"cb4-14\"><\/span>\r\n<span id=\"cb4-15\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb4-16\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb4-17\"><\/span>\r\n<span id=\"cb4-18\"><\/span>\r\n<span id=\"cb4-19\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb4-20\">plt.grid() <\/span>\r\n<span id=\"cb4-21\">plt.show() <\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<figure><img class=\"alignnone size-medium wp-image-405\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_5_0-300x241.png\" alt=\"\" width=\"300\" height=\"241\" \/><\/figure>\r\n<div id=\"cb5\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb5-1\"><\/span><\/code><\/pre>\r\n<div class=\"textbox shaded\"><code><code><code><span id=\"cb5-2\"><span class=\"co\"># Creating plot\r\n<\/span><\/span> <span id=\"cb5-3\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb5-4\">plt.quiver([<span class=\"dv\">0<\/span>,<span class=\"dv\">1<\/span>,<span class=\"dv\">3<\/span>], [<span class=\"dv\">0<\/span>,<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>], [v[<span class=\"dv\">0<\/span>],v[<span class=\"dv\">0<\/span>],v[<span class=\"dv\">0<\/span>]], [v[<span class=\"dv\">1<\/span>], v[<span class=\"dv\">1<\/span>], v[<span class=\"dv\">1<\/span>]], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>)\r\n<\/span>\r\n<span id=\"cb5-6\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb5-7\">plt.title(<span class=\"st\">'Vectors can start anywhere'<\/span>) <\/span><\/code><\/code><\/code>plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">10<\/span>,<span class=\"dv\">10<\/span>))<code><code><span id=\"cb5-10\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">10<\/span>,<span class=\"dv\">10<\/span>))<\/span><span id=\"cb5-11\"><\/span><\/code><\/code><span id=\"cb5-12\"><\/span> <span id=\"cb5-13\"><span class=\"co\"># Show plot with grid\r\n<\/span><\/span><span id=\"cb5-14\"><code>plt.grid()<\/code><\/span><span id=\"cb5-15\"><code>\r\nplt.show()<\/code> <\/span>\r\n\r\n<\/div>\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\r\n<\/div>\r\n<figure><figcaption aria-hidden=\"true\"><img class=\"alignnone size-medium wp-image-406\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_6_0-300x236.png\" alt=\"\" width=\"300\" height=\"236\" \/><\/figcaption><\/figure>\r\n<h2 id=\"other-vector-spaces\">Other Vector Spaces<\/h2>\r\nWe can put these vectors anywhere - in particular, we can add dimensions, to make vectors work for us, making 3 dimensional, or even 27 dimensional vectors. You saw some really big ones in Neural Networks, where each dimension is a feature. Anyways!\r\n<h2 id=\"operations-with-vectors.\">Operations with Vectors.<\/h2>\r\n<h5 id=\"scaling\">Scaling<\/h5>\r\nWe can multiply a vector by a scaler (or constant), by multiplying\r\neach component by the same constant:\r\n\r\n<span class=\"math display\">\\[c\\binom{a}{b} =\\binom{ca}{cb}\\]<\/span>\r\n\r\nSo:\r\n\r\n<span class=\"math display\">\\[-2\\binom{1}{2}=\\binom{-2}{-4}\\]<\/span>\r\n<h6 id=\"adding\">Adding:<\/h6>\r\nAdd two vectors, by adding the components:\r\n\r\n<span class=\"math display\">\\[\\binom{a}{b}+\\binom{c}{d} =\\binom{a+c}{b+d}\\]<\/span>\r\n\r\nOr,\r\n\r\n<span class=\"math display\">\\[\\binom{1}{2}+\\binom{3}{1} =\r\n\\binom{4}{3}\\]<\/span>\r\n\r\nThis creates a vector that goes one direction, then the next.\r\n\r\nCheck out some math:\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb6\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb6-1\"><span class=\"co\">## Remember our v and w?<\/span><\/span>\r\n<span id=\"cb6-2\"><\/span>\r\n<span id=\"cb6-3\">v <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>])<\/span>\r\n<span id=\"cb6-4\">w <span class=\"op\">=<\/span> np.array([<span class=\"dv\">3<\/span>,<span class=\"dv\">1<\/span>])<\/span>\r\n<span id=\"cb6-5\"><\/span>\r\n<span id=\"cb6-6\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"Multipling v by -2 gives \"<\/span>, <span class=\"op\">-<\/span><span class=\"dv\">2<\/span><span class=\"op\">*<\/span>v)<\/span>\r\n<span id=\"cb6-7\"><\/span>\r\n<span id=\"cb6-8\"><span class=\"co\">#Graphically: <\/span><\/span>\r\n<span id=\"cb6-9\"><\/span>\r\n<span id=\"cb6-10\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb6-11\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb6-12\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb6-13\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, <span class=\"op\">-<\/span><span class=\"dv\">2<\/span><span class=\"op\">*<\/span>v[<span class=\"dv\">0<\/span>], <span class=\"op\">-<\/span><span class=\"dv\">2<\/span><span class=\"op\">*<\/span>v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb6-14\"><span class=\"co\">## and the sum<\/span><\/span>\r\n<span id=\"cb6-15\"><\/span>\r\n<span id=\"cb6-16\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb6-17\">plt.title(<span class=\"st\">'Multiplication!'<\/span>) <\/span>\r\n<span id=\"cb6-18\"><\/span>\r\n<span id=\"cb6-19\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">5<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb6-20\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">5<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb6-21\"><\/span>\r\n<span id=\"cb6-22\"><\/span>\r\n<span id=\"cb6-23\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb6-24\">plt.grid() <\/span>\r\n<span id=\"cb6-25\">plt.show() <\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<pre><code>Multipling v by -2 gives  [-2 -4]<\/code><\/pre>\r\n<figure><figcaption aria-hidden=\"true\"><img class=\"alignnone size-medium wp-image-408\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_9_1-300x236.png\" alt=\"\" width=\"300\" height=\"236\" \/><\/figcaption><\/figure>\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb8\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb8-1\"><\/span>\r\n<span id=\"cb8-2\"><span class=\"co\">## add<\/span><\/span>\r\n<span id=\"cb8-3\">z <span class=\"op\">=<\/span> v<span class=\"op\">+<\/span>w<\/span>\r\n<span id=\"cb8-4\"><\/span>\r\n<span id=\"cb8-5\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"The sum of v and w is \"<\/span>,z)<\/span>\r\n<span id=\"cb8-6\"><\/span>\r\n<span id=\"cb8-7\"><span class=\"co\">##Graphically:<\/span><\/span>\r\n<span id=\"cb8-8\"><\/span>\r\n<span id=\"cb8-9\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb8-10\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb8-11\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb8-12\">plt.quiver(v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb8-13\"><span class=\"co\">## and the sum<\/span><\/span>\r\n<span id=\"cb8-14\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, z[<span class=\"dv\">0<\/span>], z[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb8-15\"><\/span>\r\n<span id=\"cb8-16\"><\/span>\r\n<span id=\"cb8-17\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb8-18\">plt.title(<span class=\"st\">'Adding makes sense geometrically!'<\/span>) <\/span>\r\n<span id=\"cb8-19\"><\/span>\r\n<span id=\"cb8-20\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb8-21\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb8-22\"><\/span>\r\n<span id=\"cb8-23\"><\/span>\r\n<span id=\"cb8-24\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb8-25\">plt.grid() <\/span>\r\n<span id=\"cb8-26\">plt.show() <\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<pre><code>The sum of v and w is  [4 3]<\/code><\/pre>\r\n<figure><img class=\"alignnone size-medium wp-image-409\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_10_1-300x241.png\" alt=\"\" width=\"300\" height=\"241\" \/><\/figure>\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb10\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb10-1\"><span class=\"co\">## order doesn't matter - that's important:<\/span><\/span>\r\n<span id=\"cb10-2\"><\/span>\r\n<span id=\"cb10-3\"><\/span>\r\n<span id=\"cb10-4\"><span class=\"co\">## add<\/span><\/span>\r\n<span id=\"cb10-5\">z <span class=\"op\">=<\/span> w<span class=\"op\">+<\/span>v<\/span>\r\n<span id=\"cb10-6\"><\/span>\r\n<span id=\"cb10-7\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"Whe I flip the order, the sum is still \"<\/span>,z)<\/span>\r\n<span id=\"cb10-8\"><\/span>\r\n<span id=\"cb10-9\"><span class=\"co\">##Graphically:<\/span><\/span>\r\n<span id=\"cb10-10\"><\/span>\r\n<span id=\"cb10-11\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb10-12\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb10-13\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb10-14\">plt.quiver(w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb10-15\"><span class=\"co\">## and the sum<\/span><\/span>\r\n<span id=\"cb10-16\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, z[<span class=\"dv\">0<\/span>], z[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb10-17\"><\/span>\r\n<span id=\"cb10-18\"><\/span>\r\n<span id=\"cb10-19\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb10-20\">plt.title(<span class=\"st\">'Adding in the other order!'<\/span>) <\/span>\r\n<span id=\"cb10-21\"><\/span>\r\n<span id=\"cb10-22\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb10-23\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb10-24\"><\/span>\r\n<span id=\"cb10-25\"><\/span>\r\n<span id=\"cb10-26\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb10-27\">plt.grid() <\/span>\r\n<span id=\"cb10-28\">plt.show() <\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<pre><code>Whe I flip the order, the sum is still  [4 3]<\/code><\/pre>\r\n<figure><img src=\"\/output_11_1.png#fixme\" alt=\"png\" \/><figcaption aria-hidden=\"true\"><img class=\"alignnone size-medium wp-image-410\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_11_1-300x241.png\" alt=\"\" width=\"300\" height=\"241\" \/><\/figcaption><\/figure>\r\n<h2 id=\"getting-super-fancy\">Getting super fancy:<\/h2>\r\nI can combine these:\r\n\r\n<span class=\"math display\">$$5 \\binom{1}{2} - 3\\binom{3}{1} =\\binom{5-9}{10 - 3} = \\binom{-4}{7}$$<\/span>\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb12\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb12-1\"><span class=\"co\">## It's pretty easy to do this in Python.<\/span><\/span>\r\n<span id=\"cb12-2\"><\/span>\r\n<span id=\"cb12-3\"><span class=\"dv\">5<\/span><span class=\"op\">*<\/span>v<span class=\"op\">-<\/span><span class=\"dv\">3<\/span><span class=\"op\">*<\/span>w<\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<pre><code>array([-4,  7])<\/code><\/pre>\r\n<h2 id=\"coordinate-representations\">Coordinate Representations<\/h2>\r\nRemember <span class=\"math inline\">[latex]\\vec(v) = \\binom{1}{2}[\/latex] <\/span>And how I said it was a set of directions? One step to the right, 2 steps up. We can write this using special vectors called <strong>Basis Vectors<\/strong>.\r\n\r\n<span class=\"math display\">\\[\\binom{1}{2} = 1 \\binom{1}{0}+ 2\\binom{0}{1}\\]<\/span>\r\n\r\n[latex]\\binom{1}{0}[\/latex] and $[latex]\\binom{0}{1}[\/latex] are basis vectors, which means that every 2-dimensional vector is a linear combination of there two.\r\n\r\nBut, there\u2019s nothing actually that special about them. What do I mean? I can actually make any set of 2 vectors into a basis, as long as one isn\u2019t a scaler multiple of the other. This is a trick that will come in handy later on.\r\n<h2 id=\"magnitude\">Magnitude<\/h2>\r\nWe said that vectors have magnitude (length) and direction. We say that the length of the vector is the length of the line segment, and we can use Pythagorus. We use 2 lines (or one line) around a vector to show that we\u2019re looking for it\u2019s length.\r\n\r\n<span class=\"math display\">\\[ \\left| \\binom{a}{b}\\right| =\\sqrt{a^2+b^2}\\]<\/span>\r\n\r\nOr:\r\n\r\n<span class=\"math display\">\\[\\left|\\binom{3}{4}\\right| =\\sqrt{3^2+4^2}=\\sqrt{25}=5\\]<\/span>\r\n\r\nThis also works in other dimensions:\r\n\r\n<span class=\"math display\">$$\\left|\\begin{pmatrix}1\\\\2\\\\\r\n3\\end{pmatrix}\\right|=\\sqrt{1^2+2^2+3^2} = \\sqrt{14}\\approx\r\n3.7417$$<\/span>\r\n\r\nIn linear algebra, we call this a <strong>Norm<\/strong>, and in\r\nMachine Learning, it\u2019s called the <strong>L2 Norm<\/strong>.\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb14\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb14-1\"><span class=\"co\">## This is much easier to do in python than to typeset the math!<\/span><\/span>\r\n<span id=\"cb14-2\"><\/span>\r\n<span id=\"cb14-3\"><span class=\"co\">## let's get some linear algebra things:<\/span><\/span>\r\n<span id=\"cb14-4\"><\/span>\r\n<span id=\"cb14-5\"><span class=\"im\">from<\/span> numpy.linalg <span class=\"im\">import<\/span> <span class=\"op\">*<\/span><\/span>\r\n<span id=\"cb14-6\"><\/span>\r\n<span id=\"cb14-7\">a <span class=\"op\">=<\/span> np.array([<span class=\"dv\">3<\/span>,<span class=\"dv\">4<\/span>])<\/span>\r\n<span id=\"cb14-8\">norm_a<span class=\"op\">=<\/span>norm(a)<\/span>\r\n<span id=\"cb14-9\"><\/span>\r\n<span id=\"cb14-10\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"The magnitude of vector \"<\/span>, a, <span class=\"st\">\"is \"<\/span>, norm_a)<\/span>\r\n<span id=\"cb14-11\"><\/span>\r\n<span id=\"cb14-12\">b <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>])<\/span>\r\n<span id=\"cb14-13\">norm_b<span class=\"op\">=<\/span>norm(b)<\/span>\r\n<span id=\"cb14-14\"><\/span>\r\n<span id=\"cb14-15\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"The magnitude of vector \"<\/span>, b, <span class=\"st\">\"is \"<\/span>, norm_b)<\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<pre><code>The magnitude of vector  [3 4] is  5.0\r\nThe magnitude of vector  [1 2 3] is  3.7416573867739413<\/code><\/pre>\r\n<h2 id=\"the-dot-product\">The Dot Product<\/h2>\r\nWe\u2019ve seen that we can add the vectors. and multiply a vector by a scaler. This leads to the question: Is there some form of multiplication between vectors? The answer is\u2026. kind of.\r\n\r\nIn fact, there are two different kinds of multiplication-type operations: the dot product: <span class=\"math inline\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u22c5\u2005<em>(\u20d7<\/em><em>w<\/em>) <\/span>and The cross product: <span class=\"math inline\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u00d7\u2005<em>(\u20d7<\/em><em>w<\/em>)<\/span>.\r\n<h6>Definition:<\/h6>\r\nThe dot product is:\r\n\r\n<span class=\"math display\">$$\\begin{pmatrix}a\\\\b\\end{pmatrix}\\cdot\r\n\\begin{pmatrix}c\\\\d\\end{pmatrix} = ac+ bd$$<\/span>\r\n\r\nThis function takes in two vectors, and outputs a scaler (constant\r\nnumber), for example:\r\n\r\n<span class=\"math display\">$$\\begin{pmatrix}1\\\\2\\end{pmatrix}\\cdot\r\n\\begin{pmatrix}3\\\\1\\end{pmatrix} = (1)(3)+ (2)(1) =5$$<\/span>\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb16\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb16-1\"><span class=\"co\">## this is again, easy in Python!<\/span><\/span>\r\n<span id=\"cb16-2\"><\/span>\r\n<span id=\"cb16-3\">np.dot(v,w)<\/span>\r\n<span id=\"cb16-4\"><\/span>\r\n<span id=\"cb16-5\"><span class=\"co\">## And also for bigger arrays!<\/span><\/span>\r\n<span id=\"cb16-6\"><\/span>\r\n<span id=\"cb16-7\">v1 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">4<\/span>])<\/span>\r\n<span id=\"cb16-8\">v2 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">4<\/span>,<span class=\"op\">-<\/span><span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">0<\/span>])<\/span>\r\n<span id=\"cb16-9\"><\/span>\r\n<span id=\"cb16-10\">v3<span class=\"op\">=<\/span> np.dot(v1, v2)<\/span>\r\n<span id=\"cb16-11\"><\/span>\r\n<span id=\"cb16-12\"><span class=\"bu\">print<\/span>(v1, <span class=\"st\">\" dot \"<\/span>, v2, <span class=\"st\">\" equals \"<\/span>, v3)<\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n<pre><code>[1 2 3 4]  dot  [ 4 -2  3  0]  equals  9<\/code><\/pre>\r\nMathematically, the dot product is (kind of sort of) looking at the angle between the two vectors:\r\n\r\n<span class=\"math display\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u22c5\u2005<em>(\u20d7<\/em><em>w<\/em>)\u2004=\u2004|<em>(\u20d7<\/em><em>v<\/em>)||<em>(\u20d7<\/em><em>w<\/em>)|cos\u2006<em>\u03b8<\/em><\/span>\r\n\r\nWhere <span class=\"math inline\"><em>\u03b8<\/em><\/span> is the angle between the two vectors. What we really get out of this is:\r\n\r\nIf <span class=\"math inline\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u22c5\u2005<em>(\u20d7<\/em><em>w<\/em>)\u2004=\u20040<\/span>, than the two lines are perpendicular. That\u2019s useful!\r\n<h2 id=\"the-cross-product-for-completeness\">The Cross Product for completeness<\/h2>\r\nThe dot product is an operation which takes two vectors and returns a scalar. The Cross product is an operation which takes two vectors and\r\nreturn another vector. It is defined specifically for 3-dimensional\r\nvectors\r\n\r\nThe Cross Product:\r\n\r\n<span class=\"math display\">$$\\begin{pmatrix}a\\\\b\\\\c\\end{pmatrix}\\times\r\n\\begin{pmatrix}d\\\\e\\\\f\\end{pmatrix} =\r\n\\begin{pmatrix}bf-ec\\\\cd-af\\\\ae-bd\\end{pmatrix}$$<\/span>\r\n\r\nHopefully, you look at that and think \u201cGee, I hope Python has a Cross Product function, because I don\u2019t want to do that.\u201d You would be correct.\r\n\r\nIn three dimensions, <span class=\"math inline\"><em>a\u20d7<\/em>\u2005\u00d7\u2005<em>b\u20d7<\/em><\/span> is\r\n<strong>orthogonal<\/strong> ( perpendicular) to both <span class=\"math inline\"><em>a\u20d7<\/em><\/span> and <span class=\"math inline\"><em>b\u20d7<\/em><\/span>.\r\n\r\n<div class=\"textbox shaded\">\r\n<div id=\"cb18\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb18-1\"><span class=\"co\">## It's just np.cross<\/span><\/span>\r\n<span id=\"cb18-2\"><\/span>\r\n<span id=\"cb18-3\">v1 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>])<\/span>\r\n<span id=\"cb18-4\">v2 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">4<\/span>,<span class=\"op\">-<\/span><span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>])<\/span>\r\n<span id=\"cb18-5\"><\/span>\r\n<span id=\"cb18-6\">v3 <span class=\"op\">=<\/span> np.cross(v1,v2)<\/span>\r\n<span id=\"cb18-7\"><\/span>\r\n<span id=\"cb18-8\"><span class=\"bu\">print<\/span>(v1, <span class=\"st\">\" cross \"<\/span>, v2,<span class=\"st\">\" equals \"<\/span>, v3)<\/span>\r\n<span id=\"cb18-9\"><\/span><\/code><\/pre>\r\n<\/div>\r\n<\/div>\r\n\r\n<pre><code>[1 2 3]  cross  [ 4 -2  3]  equals  [ 12   9 -10]<\/code><\/pre>\r\n<div id=\"cb20\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb20-1\">norm(v1<span class=\"op\">-<\/span>v2,<span class=\"dv\">1<\/span>)<\/span><\/code><\/pre>\r\n<\/div>\r\n<pre><code>7.0<\/code><\/pre>\r\n<div id=\"cb22\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb22-1\">?norm<\/span><\/code><\/pre>\r\n<\/div>\r\n<div id=\"cb23\" class=\"sourceCode\">\r\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\r\n<\/div>","rendered":"<h1 id=\"vectors\">Vectors<\/h1>\n<h5>Updated Feb 2024<\/h5>\n<p>A vector is something which has magnitude or length and direction. It is used to describe a variety of things. We can also view a vector as an ordered n-tuple, ie, [latex](a, b, c)[\/latex], or as a set of directions.<\/p>\n<h2 id=\"vectors-in-two-dimensions\">Vectors in two dimensions<\/h2>\n<p>In two dimensions, a vector is an ordered pair of real numbers, <span class=\"math inline\">[latex](a,b)[\/latex]<\/span> or [latex]\\binom{a}{b}[\/latex] (expressed vertically. We use\u201carrow\u201d notation to show that this has direction &#8211; as opposed to being a point. When we draw this, it has an arrow:<\/p>\n<p><span class=\"math display\">\\[\\vec{v} = \\binom{1}{2}, \\,\\, \\vec{w} = \\binom{3}{1}\\]<\/span><\/p>\n<div id=\"cb1\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb1-1\">\r\n<\/span><\/code><\/pre>\n<div class=\"textbox shaded\"><code><span id=\"cb1-1\"><span class=\"co\">## This is a Python cell; see how we create vectors:<\/span><\/span> <span id=\"cb1-2\"><\/span><br \/>\n<span id=\"cb1-3\"><span class=\"co\">## We need a library, NumPy has the best math-y stuff<\/span><\/span><br \/>\n<span id=\"cb1-4\"><span class=\"im\">import<\/span> numpy <span class=\"im\">as<\/span> np<\/span> <span id=\"cb1-5\"><\/span><br \/>\n<span id=\"cb1-6\"><span class=\"co\">## Define a Vector<\/span><\/span><br \/>\n<span id=\"cb1-7\"><span class=\"co\">## note that I've used 2 sets of brackets: the square ones define a list INSIDE of the function<\/span><\/span><br \/>\n<span id=\"cb1-8\">v <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>])<\/span> <span id=\"cb1-9\"><\/span><br \/>\n<span id=\"cb1-10\">w <span class=\"op\">=<\/span> np.array([<span class=\"dv\">3<\/span>,<span class=\"dv\">1<\/span>])<\/span> <span id=\"cb1-11\"><\/span> <span id=\"cb1-12\"><\/span><br \/>\n<span id=\"cb1-13\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"v = \"<\/span>, v, <span class=\"st\">\" and w = \"<\/span>, w)<\/span><\/code><\/div>\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\n<\/div>\n<pre><code>v =  [1 2]  and w =  [3 1]<\/code><\/pre>\n<h2><\/h2>\n<h2 id=\"visualizing\">Visualizing:<\/h2>\n<p>Usually vectors look like arrows coming out from [latex](0,0)[\/latex]<\/p>\n<div id=\"cb3\" class=\"sourceCode\">\n<div class=\"textbox shaded\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb3-1\"><span class=\"co\">## Don't worry a lot about graphing, but know that matplotlib is a pretty good tool, and lets us plot our math stuff nicely<\/span><\/span>\r\n<span id=\"cb3-2\"><span class=\"co\">## matplotlib also makes stats visualizations!<\/span><\/span>\r\n<span id=\"cb3-3\"><\/span>\r\n<span id=\"cb3-4\"><span class=\"co\">## Why plt?  I dunno... tradition<\/span><\/span>\r\n<span id=\"cb3-5\"><span class=\"im\">import<\/span> matplotlib.pyplot <span class=\"im\">as<\/span> plt <\/span>\r\n<span id=\"cb3-6\"><\/span>\r\n<span id=\"cb3-7\"><\/span>\r\n<span id=\"cb3-8\"><span class=\"co\"># Creating plot <\/span><\/span>\r\n<span id=\"cb3-9\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb3-10\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb3-11\"><\/span>\r\n<span id=\"cb3-12\"><\/span>\r\n<span id=\"cb3-13\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb3-14\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb3-15\"><\/span>\r\n<span id=\"cb3-16\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb3-17\">plt.title(<span class=\"st\">'Vectors on a Plane'<\/span>) <\/span>\r\n<span id=\"cb3-18\"><\/span>\r\n<span id=\"cb3-19\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb3-20\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb3-21\"><\/span>\r\n<span id=\"cb3-22\"><\/span>\r\n<span id=\"cb3-23\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb3-24\">plt.grid() <\/span>\r\n<span id=\"cb3-25\">plt.show() <\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-404 aligncenter\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_3_0-300x241.png\" alt=\"\" width=\"300\" height=\"241\" srcset=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_3_0-300x241.png 300w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_3_0-65x52.png 65w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_3_0-225x181.png 225w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_3_0-350x281.png 350w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_3_0.png 539w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption aria-hidden=\"true\"><\/figcaption><\/figure>\n<p>But they don\u2019t need to start at [latex](0,0)[\/latex]! Think of them as a set of instructions, saying \u201cfrom any begining point, go <span class=\"math inline\">[latex]a[\/latex]<\/span> steps to the right, and <span class=\"math inline\">[latex]b[\/latex]<\/span> steps up.<\/p>\n<p>In this plot, I have the second (red) vector start where the first one ends.<\/p>\n<p>In the next plot, the blue vector is repeated a bunch of times\u2026.<\/p>\n<div class=\"textbox shaded\">\n<div id=\"cb4\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb4-1\"><\/span>\r\n<span id=\"cb4-2\"><span class=\"co\"># Creating plot <\/span><\/span>\r\n<span id=\"cb4-3\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb4-4\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb4-5\"><\/span>\r\n<span id=\"cb4-6\"><span class=\"co\">#plt.quiver(X, Y, 1,2, color='g', units='xy', scale= 1) <\/span><\/span>\r\n<span id=\"cb4-7\"><\/span>\r\n<span id=\"cb4-8\"><\/span>\r\n<span id=\"cb4-9\"><span class=\"co\">## and the red line starts where the blue one ends.<\/span><\/span>\r\n<span id=\"cb4-10\">plt.quiver(v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb4-11\"><\/span>\r\n<span id=\"cb4-12\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb4-13\">plt.title(<span class=\"st\">'Vectors can start anywhere'<\/span>) <\/span>\r\n<span id=\"cb4-14\"><\/span>\r\n<span id=\"cb4-15\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb4-16\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb4-17\"><\/span>\r\n<span id=\"cb4-18\"><\/span>\r\n<span id=\"cb4-19\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb4-20\">plt.grid() <\/span>\r\n<span id=\"cb4-21\">plt.show() <\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-405\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_5_0-300x241.png\" alt=\"\" width=\"300\" height=\"241\" srcset=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_5_0-300x241.png 300w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_5_0-65x52.png 65w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_5_0-225x181.png 225w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_5_0-350x281.png 350w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_5_0.png 539w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n<div id=\"cb5\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb5-1\"><\/span><\/code><\/pre>\n<div class=\"textbox shaded\"><code><code><code><span id=\"cb5-2\"><span class=\"co\"># Creating plot<br \/>\n<\/span><\/span> <span id=\"cb5-3\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span><br \/>\n<span id=\"cb5-4\">plt.quiver([<span class=\"dv\">0<\/span>,<span class=\"dv\">1<\/span>,<span class=\"dv\">3<\/span>], [<span class=\"dv\">0<\/span>,<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>], [v[<span class=\"dv\">0<\/span>],v[<span class=\"dv\">0<\/span>],v[<span class=\"dv\">0<\/span>]], [v[<span class=\"dv\">1<\/span>], v[<span class=\"dv\">1<\/span>], v[<span class=\"dv\">1<\/span>]], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>)<br \/>\n<\/span><br \/>\n<span id=\"cb5-6\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span><br \/>\n<span id=\"cb5-7\">plt.title(<span class=\"st\">'Vectors can start anywhere'<\/span>) <\/span><\/code><\/code><\/code>plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">&#8211;<\/span><span class=\"dv\">10<\/span>,<span class=\"dv\">10<\/span>))<code><code><span id=\"cb5-10\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">10<\/span>,<span class=\"dv\">10<\/span>))<\/span><span id=\"cb5-11\"><\/span><\/code><\/code><span id=\"cb5-12\"><\/span> <span id=\"cb5-13\"><span class=\"co\"># Show plot with grid<br \/>\n<\/span><\/span><span id=\"cb5-14\"><code>plt.grid()<\/code><\/span><span id=\"cb5-15\"><code><br \/>\nplt.show()<\/code> <\/span><\/p>\n<\/div>\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\n<\/div>\n<figure><figcaption aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-406\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_6_0-300x236.png\" alt=\"\" width=\"300\" height=\"236\" srcset=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_6_0-300x236.png 300w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_6_0-65x51.png 65w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_6_0-225x177.png 225w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_6_0-350x276.png 350w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_6_0.png 550w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figcaption><\/figure>\n<h2 id=\"other-vector-spaces\">Other Vector Spaces<\/h2>\n<p>We can put these vectors anywhere &#8211; in particular, we can add dimensions, to make vectors work for us, making 3 dimensional, or even 27 dimensional vectors. You saw some really big ones in Neural Networks, where each dimension is a feature. Anyways!<\/p>\n<h2 id=\"operations-with-vectors.\">Operations with Vectors.<\/h2>\n<h5 id=\"scaling\">Scaling<\/h5>\n<p>We can multiply a vector by a scaler (or constant), by multiplying<br \/>\neach component by the same constant:<\/p>\n<p><span class=\"math display\">\\[c\\binom{a}{b} =\\binom{ca}{cb}\\]<\/span><\/p>\n<p>So:<\/p>\n<p><span class=\"math display\">\\[-2\\binom{1}{2}=\\binom{-2}{-4}\\]<\/span><\/p>\n<h6 id=\"adding\">Adding:<\/h6>\n<p>Add two vectors, by adding the components:<\/p>\n<p><span class=\"math display\">\\[\\binom{a}{b}+\\binom{c}{d} =\\binom{a+c}{b+d}\\]<\/span><\/p>\n<p>Or,<\/p>\n<p><span class=\"math display\">\\[\\binom{1}{2}+\\binom{3}{1} =<br \/>\n\\binom{4}{3}\\]<\/span><\/p>\n<p>This creates a vector that goes one direction, then the next.<\/p>\n<p>Check out some math:<\/p>\n<div class=\"textbox shaded\">\n<div id=\"cb6\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb6-1\"><span class=\"co\">## Remember our v and w?<\/span><\/span>\r\n<span id=\"cb6-2\"><\/span>\r\n<span id=\"cb6-3\">v <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>])<\/span>\r\n<span id=\"cb6-4\">w <span class=\"op\">=<\/span> np.array([<span class=\"dv\">3<\/span>,<span class=\"dv\">1<\/span>])<\/span>\r\n<span id=\"cb6-5\"><\/span>\r\n<span id=\"cb6-6\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"Multipling v by -2 gives \"<\/span>, <span class=\"op\">-<\/span><span class=\"dv\">2<\/span><span class=\"op\">*<\/span>v)<\/span>\r\n<span id=\"cb6-7\"><\/span>\r\n<span id=\"cb6-8\"><span class=\"co\">#Graphically: <\/span><\/span>\r\n<span id=\"cb6-9\"><\/span>\r\n<span id=\"cb6-10\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb6-11\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb6-12\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb6-13\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, <span class=\"op\">-<\/span><span class=\"dv\">2<\/span><span class=\"op\">*<\/span>v[<span class=\"dv\">0<\/span>], <span class=\"op\">-<\/span><span class=\"dv\">2<\/span><span class=\"op\">*<\/span>v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb6-14\"><span class=\"co\">## and the sum<\/span><\/span>\r\n<span id=\"cb6-15\"><\/span>\r\n<span id=\"cb6-16\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb6-17\">plt.title(<span class=\"st\">'Multiplication!'<\/span>) <\/span>\r\n<span id=\"cb6-18\"><\/span>\r\n<span id=\"cb6-19\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">5<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb6-20\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">5<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb6-21\"><\/span>\r\n<span id=\"cb6-22\"><\/span>\r\n<span id=\"cb6-23\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb6-24\">plt.grid() <\/span>\r\n<span id=\"cb6-25\">plt.show() <\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<pre><code>Multipling v by -2 gives  [-2 -4]<\/code><\/pre>\n<figure><figcaption aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-408\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_9_1-300x236.png\" alt=\"\" width=\"300\" height=\"236\" srcset=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_9_1-300x236.png 300w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_9_1-65x51.png 65w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_9_1-225x177.png 225w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_9_1-350x276.png 350w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_9_1.png 550w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figcaption><\/figure>\n<div class=\"textbox shaded\">\n<div id=\"cb8\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb8-1\"><\/span>\r\n<span id=\"cb8-2\"><span class=\"co\">## add<\/span><\/span>\r\n<span id=\"cb8-3\">z <span class=\"op\">=<\/span> v<span class=\"op\">+<\/span>w<\/span>\r\n<span id=\"cb8-4\"><\/span>\r\n<span id=\"cb8-5\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"The sum of v and w is \"<\/span>,z)<\/span>\r\n<span id=\"cb8-6\"><\/span>\r\n<span id=\"cb8-7\"><span class=\"co\">##Graphically:<\/span><\/span>\r\n<span id=\"cb8-8\"><\/span>\r\n<span id=\"cb8-9\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb8-10\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb8-11\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb8-12\">plt.quiver(v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb8-13\"><span class=\"co\">## and the sum<\/span><\/span>\r\n<span id=\"cb8-14\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, z[<span class=\"dv\">0<\/span>], z[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb8-15\"><\/span>\r\n<span id=\"cb8-16\"><\/span>\r\n<span id=\"cb8-17\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb8-18\">plt.title(<span class=\"st\">'Adding makes sense geometrically!'<\/span>) <\/span>\r\n<span id=\"cb8-19\"><\/span>\r\n<span id=\"cb8-20\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb8-21\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb8-22\"><\/span>\r\n<span id=\"cb8-23\"><\/span>\r\n<span id=\"cb8-24\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb8-25\">plt.grid() <\/span>\r\n<span id=\"cb8-26\">plt.show() <\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<pre><code>The sum of v and w is  [4 3]<\/code><\/pre>\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-409\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_10_1-300x241.png\" alt=\"\" width=\"300\" height=\"241\" srcset=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_10_1-300x241.png 300w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_10_1-65x52.png 65w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_10_1-225x181.png 225w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_10_1-350x281.png 350w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_10_1.png 539w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n<div class=\"textbox shaded\">\n<div id=\"cb10\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb10-1\"><span class=\"co\">## order doesn't matter - that's important:<\/span><\/span>\r\n<span id=\"cb10-2\"><\/span>\r\n<span id=\"cb10-3\"><\/span>\r\n<span id=\"cb10-4\"><span class=\"co\">## add<\/span><\/span>\r\n<span id=\"cb10-5\">z <span class=\"op\">=<\/span> w<span class=\"op\">+<\/span>v<\/span>\r\n<span id=\"cb10-6\"><\/span>\r\n<span id=\"cb10-7\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"Whe I flip the order, the sum is still \"<\/span>,z)<\/span>\r\n<span id=\"cb10-8\"><\/span>\r\n<span id=\"cb10-9\"><span class=\"co\">##Graphically:<\/span><\/span>\r\n<span id=\"cb10-10\"><\/span>\r\n<span id=\"cb10-11\"><span class=\"co\">## Tells Python to dray a blue arrow from (0,0) to (1,2)<\/span><\/span>\r\n<span id=\"cb10-12\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb10-13\"><span class=\"co\">## and the red line is w<\/span><\/span>\r\n<span id=\"cb10-14\">plt.quiver(w[<span class=\"dv\">0<\/span>], w[<span class=\"dv\">1<\/span>], v[<span class=\"dv\">0<\/span>], v[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'b'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb10-15\"><span class=\"co\">## and the sum<\/span><\/span>\r\n<span id=\"cb10-16\">plt.quiver(<span class=\"dv\">0<\/span>, <span class=\"dv\">0<\/span>, z[<span class=\"dv\">0<\/span>], z[<span class=\"dv\">1<\/span>], color<span class=\"op\">=<\/span><span class=\"st\">'r'<\/span>, units<span class=\"op\">=<\/span><span class=\"st\">'xy'<\/span>, scale<span class=\"op\">=<\/span><span class=\"dv\">1<\/span>) <\/span>\r\n<span id=\"cb10-17\"><\/span>\r\n<span id=\"cb10-18\"><\/span>\r\n<span id=\"cb10-19\">plt.axis(<span class=\"st\">'equal'<\/span>)<\/span>\r\n<span id=\"cb10-20\">plt.title(<span class=\"st\">'Adding in the other order!'<\/span>) <\/span>\r\n<span id=\"cb10-21\"><\/span>\r\n<span id=\"cb10-22\">plt.xticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb10-23\">plt.yticks(<span class=\"bu\">range<\/span>(<span class=\"op\">-<\/span><span class=\"dv\">1<\/span>,<span class=\"dv\">5<\/span>))<\/span>\r\n<span id=\"cb10-24\"><\/span>\r\n<span id=\"cb10-25\"><\/span>\r\n<span id=\"cb10-26\"><span class=\"co\"># Show plot with grid <\/span><\/span>\r\n<span id=\"cb10-27\">plt.grid() <\/span>\r\n<span id=\"cb10-28\">plt.show() <\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<pre><code>Whe I flip the order, the sum is still  [4 3]<\/code><\/pre>\n<figure><img decoding=\"async\" src=\"\/output_11_1.png#fixme\" alt=\"png\" \/><figcaption aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-410\" src=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_11_1-300x241.png\" alt=\"\" width=\"300\" height=\"241\" srcset=\"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_11_1-300x241.png 300w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_11_1-65x52.png 65w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_11_1-225x181.png 225w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_11_1-350x281.png 350w, https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-content\/uploads\/sites\/1653\/2024\/02\/output_11_1.png 539w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figcaption><\/figure>\n<h2 id=\"getting-super-fancy\">Getting super fancy:<\/h2>\n<p>I can combine these:<\/p>\n<p><span class=\"math display\">$$5 \\binom{1}{2} &#8211; 3\\binom{3}{1} =\\binom{5-9}{10 &#8211; 3} = \\binom{-4}{7}$$<\/span><\/p>\n<div class=\"textbox shaded\">\n<div id=\"cb12\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb12-1\"><span class=\"co\">## It's pretty easy to do this in Python.<\/span><\/span>\r\n<span id=\"cb12-2\"><\/span>\r\n<span id=\"cb12-3\"><span class=\"dv\">5<\/span><span class=\"op\">*<\/span>v<span class=\"op\">-<\/span><span class=\"dv\">3<\/span><span class=\"op\">*<\/span>w<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<pre><code>array([-4,  7])<\/code><\/pre>\n<h2 id=\"coordinate-representations\">Coordinate Representations<\/h2>\n<p>Remember <span class=\"math inline\">[latex]\\vec(v) = \\binom{1}{2}[\/latex] <\/span>And how I said it was a set of directions? One step to the right, 2 steps up. We can write this using special vectors called <strong>Basis Vectors<\/strong>.<\/p>\n<p><span class=\"math display\">\\[\\binom{1}{2} = 1 \\binom{1}{0}+ 2\\binom{0}{1}\\]<\/span><\/p>\n<p>[latex]\\binom{1}{0}[\/latex] and $[latex]\\binom{0}{1}[\/latex] are basis vectors, which means that every 2-dimensional vector is a linear combination of there two.<\/p>\n<p>But, there\u2019s nothing actually that special about them. What do I mean? I can actually make any set of 2 vectors into a basis, as long as one isn\u2019t a scaler multiple of the other. This is a trick that will come in handy later on.<\/p>\n<h2 id=\"magnitude\">Magnitude<\/h2>\n<p>We said that vectors have magnitude (length) and direction. We say that the length of the vector is the length of the line segment, and we can use Pythagorus. We use 2 lines (or one line) around a vector to show that we\u2019re looking for it\u2019s length.<\/p>\n<p><span class=\"math display\">\\[ \\left| \\binom{a}{b}\\right| =\\sqrt{a^2+b^2}\\]<\/span><\/p>\n<p>Or:<\/p>\n<p><span class=\"math display\">\\[\\left|\\binom{3}{4}\\right| =\\sqrt{3^2+4^2}=\\sqrt{25}=5\\]<\/span><\/p>\n<p>This also works in other dimensions:<\/p>\n<p><span class=\"math display\">$$\\left|\\begin{pmatrix}1\\\\2\\\\<br \/>\n3\\end{pmatrix}\\right|=\\sqrt{1^2+2^2+3^2} = \\sqrt{14}\\approx<br \/>\n3.7417$$<\/span><\/p>\n<p>In linear algebra, we call this a <strong>Norm<\/strong>, and in<br \/>\nMachine Learning, it\u2019s called the <strong>L2 Norm<\/strong>.<\/p>\n<div class=\"textbox shaded\">\n<div id=\"cb14\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb14-1\"><span class=\"co\">## This is much easier to do in python than to typeset the math!<\/span><\/span>\r\n<span id=\"cb14-2\"><\/span>\r\n<span id=\"cb14-3\"><span class=\"co\">## let's get some linear algebra things:<\/span><\/span>\r\n<span id=\"cb14-4\"><\/span>\r\n<span id=\"cb14-5\"><span class=\"im\">from<\/span> numpy.linalg <span class=\"im\">import<\/span> <span class=\"op\">*<\/span><\/span>\r\n<span id=\"cb14-6\"><\/span>\r\n<span id=\"cb14-7\">a <span class=\"op\">=<\/span> np.array([<span class=\"dv\">3<\/span>,<span class=\"dv\">4<\/span>])<\/span>\r\n<span id=\"cb14-8\">norm_a<span class=\"op\">=<\/span>norm(a)<\/span>\r\n<span id=\"cb14-9\"><\/span>\r\n<span id=\"cb14-10\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"The magnitude of vector \"<\/span>, a, <span class=\"st\">\"is \"<\/span>, norm_a)<\/span>\r\n<span id=\"cb14-11\"><\/span>\r\n<span id=\"cb14-12\">b <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>])<\/span>\r\n<span id=\"cb14-13\">norm_b<span class=\"op\">=<\/span>norm(b)<\/span>\r\n<span id=\"cb14-14\"><\/span>\r\n<span id=\"cb14-15\"><span class=\"bu\">print<\/span>(<span class=\"st\">\"The magnitude of vector \"<\/span>, b, <span class=\"st\">\"is \"<\/span>, norm_b)<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<pre><code>The magnitude of vector  [3 4] is  5.0\r\nThe magnitude of vector  [1 2 3] is  3.7416573867739413<\/code><\/pre>\n<h2 id=\"the-dot-product\">The Dot Product<\/h2>\n<p>We\u2019ve seen that we can add the vectors. and multiply a vector by a scaler. This leads to the question: Is there some form of multiplication between vectors? The answer is\u2026. kind of.<\/p>\n<p>In fact, there are two different kinds of multiplication-type operations: the dot product: <span class=\"math inline\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u22c5\u2005<em>(\u20d7<\/em><em>w<\/em>) <\/span>and The cross product: <span class=\"math inline\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u00d7\u2005<em>(\u20d7<\/em><em>w<\/em>)<\/span>.<\/p>\n<h6>Definition:<\/h6>\n<p>The dot product is:<\/p>\n<p><span class=\"math display\">$$\\begin{pmatrix}a\\\\b\\end{pmatrix}\\cdot<br \/>\n\\begin{pmatrix}c\\\\d\\end{pmatrix} = ac+ bd$$<\/span><\/p>\n<p>This function takes in two vectors, and outputs a scaler (constant<br \/>\nnumber), for example:<\/p>\n<p><span class=\"math display\">$$\\begin{pmatrix}1\\\\2\\end{pmatrix}\\cdot<br \/>\n\\begin{pmatrix}3\\\\1\\end{pmatrix} = (1)(3)+ (2)(1) =5$$<\/span><\/p>\n<div class=\"textbox shaded\">\n<div id=\"cb16\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb16-1\"><span class=\"co\">## this is again, easy in Python!<\/span><\/span>\r\n<span id=\"cb16-2\"><\/span>\r\n<span id=\"cb16-3\">np.dot(v,w)<\/span>\r\n<span id=\"cb16-4\"><\/span>\r\n<span id=\"cb16-5\"><span class=\"co\">## And also for bigger arrays!<\/span><\/span>\r\n<span id=\"cb16-6\"><\/span>\r\n<span id=\"cb16-7\">v1 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">4<\/span>])<\/span>\r\n<span id=\"cb16-8\">v2 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">4<\/span>,<span class=\"op\">-<\/span><span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>,<span class=\"dv\">0<\/span>])<\/span>\r\n<span id=\"cb16-9\"><\/span>\r\n<span id=\"cb16-10\">v3<span class=\"op\">=<\/span> np.dot(v1, v2)<\/span>\r\n<span id=\"cb16-11\"><\/span>\r\n<span id=\"cb16-12\"><span class=\"bu\">print<\/span>(v1, <span class=\"st\">\" dot \"<\/span>, v2, <span class=\"st\">\" equals \"<\/span>, v3)<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<pre><code>[1 2 3 4]  dot  [ 4 -2  3  0]  equals  9<\/code><\/pre>\n<p>Mathematically, the dot product is (kind of sort of) looking at the angle between the two vectors:<\/p>\n<p><span class=\"math display\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u22c5\u2005<em>(\u20d7<\/em><em>w<\/em>)\u2004=\u2004|<em>(\u20d7<\/em><em>v<\/em>)||<em>(\u20d7<\/em><em>w<\/em>)|cos\u2006<em>\u03b8<\/em><\/span><\/p>\n<p>Where <span class=\"math inline\"><em>\u03b8<\/em><\/span> is the angle between the two vectors. What we really get out of this is:<\/p>\n<p>If <span class=\"math inline\"><em>(\u20d7<\/em><em>v<\/em>)\u2005\u22c5\u2005<em>(\u20d7<\/em><em>w<\/em>)\u2004=\u20040<\/span>, than the two lines are perpendicular. That\u2019s useful!<\/p>\n<h2 id=\"the-cross-product-for-completeness\">The Cross Product for completeness<\/h2>\n<p>The dot product is an operation which takes two vectors and returns a scalar. The Cross product is an operation which takes two vectors and<br \/>\nreturn another vector. It is defined specifically for 3-dimensional<br \/>\nvectors<\/p>\n<p>The Cross Product:<\/p>\n<p><span class=\"math display\">$$\\begin{pmatrix}a\\\\b\\\\c\\end{pmatrix}\\times<br \/>\n\\begin{pmatrix}d\\\\e\\\\f\\end{pmatrix} =<br \/>\n\\begin{pmatrix}bf-ec\\\\cd-af\\\\ae-bd\\end{pmatrix}$$<\/span><\/p>\n<p>Hopefully, you look at that and think \u201cGee, I hope Python has a Cross Product function, because I don\u2019t want to do that.\u201d You would be correct.<\/p>\n<p>In three dimensions, <span class=\"math inline\"><em>a\u20d7<\/em>\u2005\u00d7\u2005<em>b\u20d7<\/em><\/span> is<br \/>\n<strong>orthogonal<\/strong> ( perpendicular) to both <span class=\"math inline\"><em>a\u20d7<\/em><\/span> and <span class=\"math inline\"><em>b\u20d7<\/em><\/span>.<\/p>\n<div class=\"textbox shaded\">\n<div id=\"cb18\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb18-1\"><span class=\"co\">## It's just np.cross<\/span><\/span>\r\n<span id=\"cb18-2\"><\/span>\r\n<span id=\"cb18-3\">v1 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">1<\/span>,<span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>])<\/span>\r\n<span id=\"cb18-4\">v2 <span class=\"op\">=<\/span> np.array([<span class=\"dv\">4<\/span>,<span class=\"op\">-<\/span><span class=\"dv\">2<\/span>,<span class=\"dv\">3<\/span>])<\/span>\r\n<span id=\"cb18-5\"><\/span>\r\n<span id=\"cb18-6\">v3 <span class=\"op\">=<\/span> np.cross(v1,v2)<\/span>\r\n<span id=\"cb18-7\"><\/span>\r\n<span id=\"cb18-8\"><span class=\"bu\">print<\/span>(v1, <span class=\"st\">\" cross \"<\/span>, v2,<span class=\"st\">\" equals \"<\/span>, v3)<\/span>\r\n<span id=\"cb18-9\"><\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<pre><code>[1 2 3]  cross  [ 4 -2  3]  equals  [ 12   9 -10]<\/code><\/pre>\n<div id=\"cb20\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb20-1\">norm(v1<span class=\"op\">-<\/span>v2,<span class=\"dv\">1<\/span>)<\/span><\/code><\/pre>\n<\/div>\n<pre><code>7.0<\/code><\/pre>\n<div id=\"cb22\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb22-1\">?norm<\/span><\/code><\/pre>\n<\/div>\n<div id=\"cb23\" class=\"sourceCode\">\n<pre class=\"sourceCode python\"><code class=\"sourceCode python\"><\/code><\/pre>\n<\/div>\n","protected":false},"author":883,"menu_order":11,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-402","chapter","type-chapter","status-publish","hentry"],"part":102,"_links":{"self":[{"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/pressbooks\/v2\/chapters\/402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/wp\/v2\/users\/883"}],"version-history":[{"count":8,"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/pressbooks\/v2\/chapters\/402\/revisions"}],"predecessor-version":[{"id":416,"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/pressbooks\/v2\/chapters\/402\/revisions\/416"}],"part":[{"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/pressbooks\/v2\/parts\/102"}],"metadata":[{"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/pressbooks\/v2\/chapters\/402\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/wp\/v2\/media?parent=402"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/pressbooks\/v2\/chapter-type?post=402"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/wp\/v2\/contributor?post=402"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/businessanalytics\/wp-json\/wp\/v2\/license?post=402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}