summaryrefslogtreecommitdiff
path: root/PVCM/cama/en/ma20 Rappels sur les matrices.ipynb
blob: fbd8389fb28f5f8dcea883c989fe2b6dc7342c36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
{
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2,
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "**Note**: The Python code must be ignored until the first lab."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "%config InlineBackend.figure_format = 'retina'\n",
    "\n",
    "np.set_printoptions(precision=3, linewidth=150, suppress=True)\n",
    "plt.style.use(['seaborn-whitegrid','data/cours.mplstyle'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def arrow2D(a,b, color='k', text=\"\", **kargs):\n",
    "    astyle = matplotlib.patches.ArrowStyle(\"simple\", head_length=.8, head_width=.8, tail_width=.1)\n",
    "    plt.plot([a[0],b[0]], [a[1],b[1]] ,visible = False) # to define the visible windows\n",
    "    a,b = np.array(a), np.array(b)\n",
    "    plt.annotate(\"\", xytext=a, xy=b, \n",
    "                 arrowprops=dict(arrowstyle=astyle, shrinkA=0, shrinkB=0, aa=True, color=color, **kargs))\n",
    "    direction = (b - a) / np.sqrt(np.square(b - a).sum())\n",
    "    plt.text(*(b + 0.1 * direction), r\"$\\bf\" + text + r\"$\", horizontalalignment='center', size=14)\n",
    "    \n",
    "def vector(v, color='k', text='', **kargs):\n",
    "    arrow2D([0,0], v, color, text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "# Vector\n",
    "\n",
    "A vector is\n",
    "\n",
    "* an arrow that indicates a direction and whose length measures an intensity (physicist's vision)\n",
    "* a table with 2 values in 2D or 3 in 3D (computer vision)\n",
    "* a concept that verifies certain properties (mathematician's view)\n",
    "\n",
    "As part of this course we focus on the first 2 visions and we add\n",
    "\n",
    "* a vector at its origin at (0,0)\n",
    "\n",
    "From a typographical point of view, vectors are denoted with an arrow $\\vec v$ or in bold $\\bf v$. We will use this last notation in this course. A vector function (which returns a vector) is denoted as a $\\bf f(\\,)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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53WG9nLNVI/HH09OOSV57bWOn2v27Jfz539+RMdPRNXwWlMYHTwA0AE7duzIRRddlEWLFmXQoEG56aabctJJJ7Xpsf3792/8euvWrS0GPFu2bEmSDBw4sOMFA0Ab9O2b7NrV8fMMGbIrH/vYi0n+V8dPBrTKIssAUKCdO3fmb//2b7No0aKMHDky3//+99sc7iRJTU1NRowYkSTZuHFjs8fU1dU1rtUzZsyYjhcNAG1w5JHJZz/b8fN86lOb07+/FZahOwh4AKAAb775Zi666KI8+uijGT9+fL7//e/n8MMPb/d5Jk6cmCR54oknmt2/evXqJMmQIUOajHQBQFe7/PLkD7+mCnLCCclf/uUrnVcQ0CoBDwAU4Oabb86///u/5/DDD88dd9yRIUOGFHSehlupL1y4sNn9CxYsSJKcccYZhRUKAAXq0ye5447kgLatpbyPr3wl6ekTJ3Qb/3cDgHZ65plncuutt6Z37965+eabc9BBB+33MUuWLMnUqVMzZ86cJtunTJmSMWPGZMWKFbn77rub7HvooYcyf/789OvXL7Nnz+7U5wAAbXHCCYWNan34w8k739n59QAts8gyALTTbbfdltdffz2jRo3K9773vVaP/fjHP57Bgwenrq4u69at22d/7969c/3112f27Nm5/PLLc//992fs2LHZsGFDli1blp49e+bqq682ngVA0Zx9dnLttckbb7Tt+D59dh8PdC8BDwC00/PPP58kee655zJv3rxWj501a1YGDx7c6jETJkzIfffdl1tuuSUPP/xwVq9enUGDBmXKlCm54IIL3CIUgKJ4443kq19NLrmk7eFOklx4YTJ6dNfVBTRPwAMA7fSd73yn3Y+ZPn16pk+f3uL+YcOG5YorruhIWQDQaZ5+Ojn//OTnP2/f44YPTy6+uGtqAlpnDR4AAACS7O7UueGGZNKk5sOdfv1af/zVVycDBnRNbUDrBDwAAADk6aeTU09NPv3p5LXXmu4bPDiZOzd56KGW76p1/PHJued2eZlACwQ8AAAAVWx/XTtnnJH86lfJRz7S+l213BYdisv//QAAAKpUW7p27r8/OfTQP26//PJk4sSmx374w8nJJ3d5uUArBDwAAABVpj1dOz16NN3Xp09yxx1/HNVyW3QoDQIeAACAKlJI187eTjghufTS3V9/7nNuiw6lwG3SAQAAqsAbbyRf/WpyySX7BjvJ7q6d225rPdjZ0xe+sHs0a/z4Ti0TKJCABwAAoMI9/XRy/vnNj2MNHpzceOPuO2DtPY7Vmh49kgkTOq1EoIOMaAEAAFSojqy1A5QXHTwAAAAVqCu6doDSpYMHAACggujageqkgwcAAKBC6NqB6qWDBwAAoMzp2gF08AAAAJQxXTtAooMHAACgLOnaAfakgwcAAKDM6NoB9qaDBwAAoEzo2gFaooMHAACgDOjaAVqjgwcAAKCE6doB2kIHDwAAQInStQO0lQ4eAACAEqNrB2gvHTwAAAAlRNcOUAgdPAAAACVA1w7QETp4AAAAikzXDtBROngAAACKRNcO0Fl08AAAABSBrh2gM+ngAQAA6Ea6doCuoIMHAACgm+jaAbqKDh4AAIAupmsH6Go6eAAAALqQrh2gO+jgAQAA6AK6doDupIMHAACgk+naAbqbDh4AAIBOomsHKBYdPAAAAJ1A1w5QTDp4AAAAOkDXDlAKdPAAAAAUSNcOUCp08AAAALSTrh2g1OjgAQAAaAddO0Ap0sEDAADQBrp2gFKmgwcAAGA/dO0ApU4HDwAAQAt07QDlQgcPAABAM3TtAOVEBw8AAMAedO0A5UgHDwAAwB/o2gHKlQ4eAACg6unaAcqdDh4AAKCq6doBKoEOHgAAoCrp2gEqiQ4eAACg6ujaASqNDh4AAKBq6NoBKpUOHgAAoCro2gEqmQ4eAACgounaAaqBDh4AAKBi6doBqoUOHgDogPr6+sybNy/HHHNMxo0bl+XLl7fr8cuXL8+4ceP2+9/3vve9LnoGAJVJ1w5QbXTwAECBXnzxxXzuc5/L0qVLO3yuoUOH5vTTT29x/7hx4zr8MwCqha4doBoJeACgAMuWLcuFF16Yl156KTNnzszixYvzwgsvFHy+0aNH59JLL+3ECgGqzxtvJF/9anLJJclrr+27/4wzkttuSw49tPtrA+hqAh4AKMCPfvSj7Nq1KzfffHOmTJmSn/3sZ8UuCaCq6doBqp2ABwAKMGnSpHzyk5/MyJEji10KQFXTtQOwm4AHAApw7rnnFrsEgKqnawfgjwQ8AFAi6urq8tOf/jS/+c1v8uabb2bUqFE59dRTM3To0GKXBlBSdO0A7KvggGfNmjWdWUdZ2b59e5Lq/jOgfVwzFMJ1U1527tyZJFm/fn0GDRrU5setX78+SfLUU0/lXe96V+Pfe4NevXplxowZOfvss9t8TtcMbeV1hvYqhWvm2Wdr8vnPD8+qVf322Tdw4Bu55JJN+cu/fCWvvJK88koRCqSJUrhmKD/Vft2MHz++oMfp4AGAErBt27ZMmzYtp512WoYMGZLa2to88MADmT9/fu6+++706dMn06dPL3aZAEXzxhvJnXcenK98ZUh27Oi5z/5TT63LFVf8Locc8noRqgMovh719fX1xS6i3DSkiIWmalQf1wyFcN2Ulz//8z/Pxo0bM2/evEyePLnNj9uyZUvWrVuXwYMHZ9SoUfvs//rXv54bbrgh/fv3z89//vP07du3xXOtXLkySXL88ce3/wlQlbzO0F7FumastVO+vM5QCNdNYfaNvgGAbjNgwIAcffTRzYY7SXL++efnwAMPzNatW/P44493c3UAxfXGG8kNNySTJjUf7pxxRvKrXyUf+YhwB0DAAwAlrKamJkOGDEmSvPTSS0WuBqD7PP10cuqpyac/ve9CyoMHJ3PnJvffbyFlgAYCHgAosvr6+rQ0MV1fX5/a2tokyVve8pZurAqgOHTtABRGwAMARXTeeeflmGOOycKFC5vdv3Tp0tTV1aVXr16ZNGlSN1cH0L107QAUTsADAN1gyZIlmTp1aubMmdNk+wknnJCdO3fmmmuuybPPPttk36ZNm3LVVVclSWbMmKGDB6hYunYAOs5t0gGgnWpra/O1r31tn21Jctddd+XBBx9s3D5z5syMHj06dXV1Wbdu3T7nmjNnTh577LGsWLEiH/jAB/Lud787hxxySDZv3pyHH34427dvz9vf/vZcfPHFXfqcAIrFHbIAOoeABwDaacuWLZk3b16z+xYtWtTk+/e+970ZPXp0i+fq06dPvv3tb+eee+7JggULsnz58mzdujUDBw7MpEmTMm3atEybNi0HHHBApz4HgGJ7443kq19NLrlk33GsZHfXzm23GccCaCsBDwC008iRI7N27dp2PWb69OmZPn16s/t69eqVc845J+ecc05nlAdQ8nTtAHQ+a/AAAADdwlo7AF1HBw8AANDldO0AdC0dPAAAQJfRtQPQPXTwAAAAXULXDkD30cEDAAB0Kl07AN1PBw8AANBpdO0AFIcOHgAAoMN07QAUlw4eAACgQ3TtABSfDh4AAKAgunYASocOHgAAoN107QCUFh08AABAm+naAShNOngAAIA2efbZmnz+88OzatW++3TtABSXgAcAAGjVG28kX/1q8rnPjcmOHfsOAZxxRnLbbcmhhxahOACSCHgAAIBWNF1rp2m4o2sHoHRYgwcAANiHtXYAyosOHgAAoInW7pA1cOAbufnmA3TtAJQYHTwAAECS/XftnHpqXe6//ze6dgBKkA4eAACg1a6dhrV2Tjhhg2AHoETp4AEAgCpmrR2AyqCDBwAAqlRbunastQNQHnTwAABAldG1A1B5dPAAAEAV0bUDUJl08AAAQBXQtQNQ2XTwAABAhdO1A1D5dPAAAECF0rUDUD108AAAQAXStQNQXXTwAABABdG1A1CddPAAAECF0LUDUL108AAAQJnTtQOADh4AAChjunYASHTwAABAWdK1A8CedPAAAECZ0bUDwN508AAAQJnQtQNAS3TwAABAGdC1A0BrdPAAAEAJ07UDQFvo4AEAgBKlaweAttLBAwAAJUbXDgDtpYMHAABKiK4dAAqhgwcAAEqArh0AOkIHD/zBqaeemt/97neN348aNSoPPvhgk2NWrVqVs88+u8m2pUuXZujQoY3f79q1KyeeeGK2b9/euG38+PG5+uqru6hyAKDc6doBoKN08MAfvP3tb2/y/XPPPZfNmzc32bZy5cp9Hrf3tieffLJJuJMkEydO7KQqAYBKomsHgM4i4IE/2DvgSfYNb5oLeFatWrXfY44++ugOVgcAVJqnn05OPTX59KeT115rum/w4GTu3OT++5NDDy1KeQCUGQEP/MFJJ520z7Y9w5v6+vo8/vjj+xzzX//1X61+X1NTk3HjxnVSlQBAudO1A0BXEPDAH4waNSqH7vVPZHt24zzzzDOpra3d53Fr167Nli1bGr/fu6Nn0qRJ6dOnT+cWCwCUJV07AHQVAQ/sYe8xraeeeqpxPZ09g5sjjjgigwYNSpK8+eabjfueeeaZ/P73v2/1nABA9dG1A0BXE/DAHvYOY15//fWsXr06SdNunhNOOCFve9vbGr9v2Nfc+juTJ0/u/EIBgLKhaweA7iDggT00F8Y0dOfsGd4cf/zxOf744xu/b9jX3Po7ewZBAED10LUDQHfqVewCoJSMHDkyI0aMyMaNGxu3rVq1Ki+88EKee+65xm3HH398hg0b1vj9L37xi+zcuXOfDp63ve1t1t8BgCr09NPJ+ec3H+wMHpzceGNy7rmCHQA6jw4e2MveXTyrV69u0pkzfPjwHHrooTnmmGPSu3fvJMlrr72Wn/70p9mwYUOr5wIAKpuuHQCKRcADe9l7HZ4tW7bku9/9buP3DaNZffr0ycSJExu333bbbfucS8ADANXDWjsAFJOAB/bSXCizYsWKxq+PO+64Zr/+1a9+1eQxBx54YCZNmtQFFQIApUTXDgClQMADezn00EMzcuTIFvfvubjynl/v7W1ve1tqamo6tTYAoLTo2gGgVAh4oBktjVYNGjQof/qnf9r4/XHHHZceLfxT3N6jXgBA5dC1A0CpEfBAM1oKZ972trelZ88//t/moIMOylvf+tZmj7X+DlSH+vr6zJs3L8ccc0zGjRuX5cuXF3Se9evX55JLLsl73vOeTJw4MZMnT84FF1yQxx57rJMrBjpK1w4ApUjAA8046aSTmt3e3EhWc9v69u2bY445ptPrAkrLiy++mL/5m7/JVVddlR07dhR8npUrV+bMM8/MD3/4w4wYMSIzZszIsccem0ceeSSzZs3KnXfe2YlVA4XStQNAKetV7AKgFA0bNixr165t07FXXnllrrzyyi6uCCg1y5Yty4UXXpiXXnopM2fOzOLFi/PCCy+0+zzbt2/PRRddlG3btuXaa6/NmWee2bhv1apVmTVrVq655ppMnjw5RxxxRCc+A6A9nn46Of/85oOdwYOTG29Mzj1XsANA8ejgAYAC/OhHP8quXbty880357LLLkvv3r0LOs/ChQuzcePGnHzyyU3CnWT3Ol9nnXVWdu3alblz53ZC1UB76doBoFwIeACgAJMmTcqPf/zjTJkypUPnWbx4cZJk6tSpze4//fTTkyRLlizp0M8B2s9aOwCUEwEPABTg3HPPzciRIzt8nieffDJJMmHChGb3H3XUUUmS2trabNiwocM/D9g/XTsAlCNr8EA3qd1Rm9/W/bbD5xnUZ1D61/TvhIqAYtu5c2c2bdqUJBk+fHizx/Tt2zeDBw9ObW1t1q9f3ymhEtAya+0AUK4KDnjWrFnTmXWUle3btyep7j8D2ueup+7KVU9c1SnnqulZk3tPvzeHDTysU85H6fJaU1527tyZZPftzgcNGtSmx7z66quNXz/33HONYc/eGtb3Wbt2bQ4++OD9ntc1Q1t5nfmjN95I7rzz4HzlK0OyY8e+Te6nnlqXK674XQ455PU89VQRCiwRrhnayzVDIar9uhk/fnxBj9PBA91gYO+BnXauN+rfSE3Pmk47H1A8e95avVevln8lNwQ8HbkVO9CyZ5+tyec/PzyrVvXbZ9/AgW/kkks25S//8hVdOwCUtIIDnkITpUrQkCJW858B7VNfX59HNj+SBf+zoMPnOnfSuTnthNM6oSpKndea8lJTszt4HT16dJv/zoYNG9b49dixY9OnT59Wjz/88MNbPffKlSuTuGZou2p/nXnjjeSrX00uuWTfRZST3Wvt3HbbATn00EOTWEk5cc3Qfq4ZCuG6KYxFlqEb9OjRI/94/D9m3J+M69B5DuhxQC5916WdVBVQbP37/3E9ra1bt7Z43JYtW5IkAwd2XjcgVDt3yAKg0gh4oJv0790/93zonhzY68CCz3HupHMz9uCxnVgVUEw1NTUZMWJEkmTjxo3NHlNXV9e4Vs+YMWO6rTaoVO6QBUClEvBANzpm6DG56f03FfRY3TtQmSZOnJgkeeKJJ5rdv3r16iTJkCFDmox0Ae2naweASibggW720WM/mr8++q/b/bjT3npaDj/o8C6oCCimqVOnJkkWLlzY7P4FC3av3XXGGWd0W01QaXTtAFANBDzQzXr06JGvf+Dr7V6PZ/EzizP59sl54NcPpL6+vouqA7rKkiVLMnXq1MyZM6fJ9ilTpmTMmDFZsWJF7r777ib7HnroocyfPz/9+vXL7Nmzu7NcqBi6dgCoFm6TDkUwoGZA7vnQPZl8++S89nozt+1owYrnV+SM756REw89MV949xfy/rHvTw//1Ajdrra2Nl/72tf22ZYkd911Vx588MHG7TNnzszo0aNTV1eXdevW7XOu3r175/rrr8/s2bNz+eWX5/7778/YsWOzYcOGLFu2LD179szVV19tPAvaqW13yBLsAFA5BDxQJA3r8cy5f87+D96LoAeKa8uWLZk3b16z+xYtWtTk+/e+970ZPXp0q+ebMGFC7rvvvtxyyy15+OGHs3r16gwaNChTpkzJBRdc4Bah0E5PP52cf37z41iDByc33pice65xLAAqi4AHiuijx340//nsf+auX9zV4jEf+NMPpFfPXrn3qXv32SfogeIYOXJk1q5d267HTJ8+PdOnT29x/7Bhw3LFFVd0tDSoarp2AKhm1uCBItrfejwH9DggXzn9K/nxh3+cVX+zKmceeWazxzUEPdboAaBa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x3sX9mvp0qX5xje+kaeffjpbtmzxOYl2WbFiRc4888wk8TuqjXrU19fXF7uIcrNmzZokyfjx4/OlL30pc+fOTc+ePfOOd7wjI0eOzG9/+9s8+uij2bVrV0466aR84xvfSE1NTZGrppj2vGYWLVqUCy+8MDt37syRRx6ZiRMn5pVXXsnPf/7zbNu2LRMnTsy8efOa3D6Z6rTndfPiiy/mc5/7XJYuXdq43y+6KrN9e3LssU27d0aNyuPf+U7O/+Qns23btnz3u99NknzjG9/II488kl27duWyyy7LzJkzi1Q0pcprCu2x53uXww47LGPHjk2PHj28d6FVe35OOvroo3PkkUf6nESbrVixIn/3d3+Xl19+OYnfUW0lMu2ABx98MHPnzk3//v0zd+7cHH300Y37nnrqqZx99tl57LHH8t3vfjfnnXde8QqlZGzatCkXX3xxdu7cmc9+9rM5//zzG/c9//zz+au/+qv88pe/zO23356/d6tj/mDZsmW58MIL89JLL2XmzJlZvHhxXnjhhWKXRXdrZjRrx9e+ln+44ops27Yt1157beP2r3/961m1alVmzZqVa665JpMnT84RRxzR3RVTovZ8TfmLv/iLPPbYY41voGFve793ecc73pFk9z8+eO9CS/b8nHTFFVdk7Nixjd2oPifRFt/85jfz8ssv56CDDsrvf//7YpdTNiyy3AE/+MEPkiTnn39+k3AnSY488sj81V/9VZLkP/7jP7q9NkrTvffem23btmXSpElNwp0kOfTQQ/PRj340SbJ48eJilEeJ+tGPfpRdu3bl5ptvzmWXXZbevXsXuyS6WwujWT/ZtSsbN27MySef3NjC3OC4447LWWedlV27dmXu3LndVyslb8/XlL/5m7/JAQccUOySKGHeu1CIPT8njR07tsk+n5PYn4ceeig/+9nPctJJJ/kHqnbSwdMBn/jEJ/KhD30oEydObHb/6NGjkyRbt27tzrIoYSeffHIOPvjgjBw5stn9b33rW5Mkv/vd77qzLErcpEmT8slPfrLF64YK18pdsxZ/5jNJ/nir9b2dfvrpmTdvXpYsWZIvfvGL3VAs5WDP15SGUVBoifcuFGLPz0nNdV/4nERL6urqctlll6V///6ZM2dObr311mKXVFYEPB0wceLEFsOdJHnuueeSJIcffnh3lUSJO+qoo3LUUUe1uL9h7Oaggw7qrpIoA+eee26xS6CYWrlr1pNPPplk9yLNzWl4vamtrc2GDRuEhCTxmkL7eO9CIfb8nNRcwONzEi350pe+lE2bNuUTn/hE/uRP/qTY5ZQdI1pd5Gc/+1nuvPPO1NTUZM6cOcUuhzJQX1+ff/u3f0vS8r/GA1WmhdGsvO992blzZzZt2pQkGT58eLMP79u3bwYPHpwkWb9+fVdWClQh710ohM9JtGTp0qX50Y9+lJNPPjmnnXZascspSzp4OsmmTZty++23Z+vWrVmzZk2efPLJHHXUUbniiivyp3/6p8UujzLwjW98I6tXr87gwYP9sgNaHc1Kki1btjRubu3ONf369Uttba02eKDTee9CW7z00kv58Y9/nD59+vicRIu2bNmSyy+/PAMGDMgXv/jF1NbWFruksiTg+YNPfepTbZ5DHzBgQK688som215++eXMmzev8fuRI0fmne98Z/7X//pfnVonpaOj18yevvWtb+X6669P7969c+ONN+Ytb3lLZ5VJCWnPNTN06NBcfPHFXVwRJa2V0awk2bFjR+Pm1hbebrj97Pbt2zu/RqBqee9CW73yyitZsGBB4/c+J9Gca665Jr/97W/zT//0Txk+fLiAp0ACnj/YuHFj1q1b16ZjhwwZss+28ePHZ+3atdm+fXueffbZzJ8/P9/61rdy55135hvf+EZOOOGEzi6ZIuvoNZPsbm2+9tprc8cdd6SmpiZf/vKXc9JJJ3VmmZSQ9lwzO3fu7OJqKGmtjGY1OPDAAxu/3rVrV/r06dPsqRqupb59+3Z+nUDVqa+vzx133JH58+d770KbvPWtb829996bww47zOckmvXzn/88P/jBD/KOd7wjH/7wh4tdTlkT8PzBPffc0+ZjW/sX+L59+2b8+PEZP358RowYkSuvvDKf+cxn8uCDD6ZnT0seVZKOXjM7duzIRRddlEWLFmXQoEG56aabvEGqcO25ZpLWX2uoYPsZzWqw51jW1q1bWwx4Gka5Bg4c2OmlAtVlx44d+Zd/+ZcsW7bMexfazeckmrNly5Z8/vOfT//+/d3xsxMIeLrQ9OnTc+WVV2bjxo359a9/nXHjxhW7JErEzp0787d/+7d59NFHM3LkyNx2223uIgDstp/RrAY1NTUZMWJENm7cmI0bN+bggw/e51R1dXV59dVXkyRjxozpspKByrfne5ehQ4fmjjvu8N6FgvmcRIPvf//7ef755zNq1Kj88z//c+P2hvcvv/71r5MkN910U+66665Mnjw5f/3Xf12UWsuBgKdA27dvz5e+9KW8+OKLufTSS5u9hVuPHj3So0eP1NfX57XXXitClZSiN998MxdddFEeffTRjB8/Pt/4xjdaHOECqkwbRrP2NHHixGzcuDFPPPFEjj766H32r169OsnuMdFhw4Z1drVAldjzvcuYMWNy+eWXC3do0datW3PjjTc2fk5qjs9JNGhYI/C5557Lc8891+JxK1asSLL75hG0TMBToAMPPDD3339/Xn755bzjHe/Ihz70oX2O+dWvfpX6+vr06NEjo0aNKkKVlKKbb745//7v/57DDz88d9xxRw466KBilwSUgjaOZu1p6tSpWbRoURYuXNjsv2Y1LGp5xhlndHa1QBXZ873LP/7jP2bQXh2FsKd+/fo1+Zw0ceLEfY7xOYkGn/jEJ/KJT3xin+0NSxV86Utfyv/9v/838+bNy+TJk7u7vLJj2LFAPXr0aFwA6stf/nLW7tVOv3nz5lx11VVJklNOOaXZ1nmqzzPPPJNbb701vXv3zs033yzcAf6ojaNZe5oyZUrGjBmTFStW5O67726y76GHHsr8+fPTr1+/zJ49uysqBqrA3u9dhDvsz96fk5599tkm+31Ogq6jg6cD/s//+T/55S9/mYcffjjTp0/P5MmTM3LkyGzevDnLly/P1q1bM2LEiFxxxRXFLpUScdttt+X111/PqFGj8r3vfa/VYz/+8Y9n8ODB3VMYJauurq7xTVCDhttG3nXXXXnwwQcbt8+cOTOjR4/uzvLoLO0czWrQu3fvXH/99Zk9e3Yuv/zyfPe7302SfOxjH8uyZcvSs2fPXH311cazaFRbW5uvfe1rjd+//PLLjQtxe02hOXu/d3n55ZeTpNkP5d670GDPz0n/8A//kIkTJ+bII4/0OQm6mICnA2pqanLbbbdl/vz5uffee/Pkk09m+fLl6dOnTw477LD8+Z//eWbNmuXOJTR6/vnnk+yeMZ03b16rx86aNcubJLJt27YWr5VFixY1+f69732vD2PlqIDRrD1NmDAh9913X2655ZbGbU8++WSmTJmSCy64IOPHj+/kgilnW7Zs8ZpCu3jvQiH2/Jx01113Zd26dfnVr37lcxJ0sR719fX1xS6i3DTMA3rTTFu5ZiiE66ZKfOYzyb/8S9Ntixbtt3unOStXrkySHH/88Z1RGVXA6wzt5ZqhvVwzFMJ1Uxhr8ABAsRQ4mgUAAHsT8ABAMXRwNAsAAPYk4AGAYijgrlkAANASAQ8AdDejWQAAdDIBDwB0J6NZAAB0AQEPAHQno1kAAHQBAQ8AdBejWQAAdBEBDwB0B6NZAAB0IQEPAHQHo1kAAHQhAQ8AdDWjWQAAdDEBDwB0JaNZAAB0AwEPAHQlo1kAAHQDAQ8AdBWjWQAAdBMBDwB0BaNZAAB0IwEPAHQFo1kAAHQjAQ8AdDajWQAAdDMBDwB0JqNZAAAUgYAHADqT0SwAAIpAwAMAncVoFgAARSLgAYDOYDQLAIAiEvAAQGcwmgUAQBEJeACgo4xmAQBQZAIeAOgIo1kAAJQAAQ8AdITRLAAASoCABwAKZTQLAIASIeABgEIYzQIAoIQIeACgEEazAAAoIQIeAGgvo1kAAJQYAQ8AtIfRLAAASpCABwDaw2gWAAAlSMADAG1lNAsAgBIl4AGAtjCaBQBACRPwAEBbGM0CAKCECXgAYH+MZgEAUOIEPADQGqNZAACUAQEPALTGaBYAAGVAwAMALTGaBQBAmehV7AIAoCTtZzRr/fr1ufXWW/Poo49m8+bN6d+/f4499ticd955Oemkk9r8Y5YvX56PfOQj+z3uC1/4Qs4+++z2PgsAAKqEgAcAmtPKaNbKlSvzsY99LNu2bcuJJ56YU045JZs2bcojjzySn/3sZ7nssssyc+bMdv24oUOH5vTTT29x/7hx4wp5FgAAVAkBDwDsrZXRrO3bt+eiiy7Ktm3bcu211+bMM89sPGTVqlWZNWtWrrnmmkyePDlHHHFEm3/k6NGjc+mll3bSEwAAoNpYgwcA9rSf0ayFCxdm48aNOfnkk5uEO0ly3HHH5ayzzsquXbsyd+7c7qsZAICqJ+ABgD3t565ZixcvTpJMnTq12Yc3jFktWbKk62oEAIC9CHgAoEEb7pr15JNPJkkmTJjQ7CmOOuqoJEltbW02bNjQNXUCAMBerMEDAMl+R7OSZOfOndm0aVOSZPjw4c2epm/fvhk8eHBqa2uzfv36jBw5ss0l1NXV5ac//Wl+85vf5M0338yoUaNy6qmnZujQoQU9JQAAqkfBAc+aNWs6s46ysn379iTV/WdA+7hmKITrpnsdct11+ZO9RrP+5/LLs3XjxmTjxiTJq6++2rjvueeeawx79ta7d+8kydq1a3PwwQe3+nPXr1+fJHnqqafyrne9q/HvvUGvXr0yY8aMdt0i3TVDW3mdob1cM7SXa4ZCVPt1M378+IIep4MHgKp13XXXZd26dRn/yiv56qpVTfYtGD4813/3u8l3v5skOfjgg/N3f/d3jft79Wr5V2hDwLNjx44217Jt27ZMmzYtp512WoYMGZLa2to88MADmT9/fu6+++706dMn06dPb8/TAwCgihQc8BSaKFWChhSxmv8MaB/XDIVw3XS9urq6vPjcc/mH9etzwB7bn+/VK5f367e7e2cPRx99dOPXY8eOTZ8+fVo9/+GHH77fv79Ro0Zl/PjxGTx4cEaNGtVk3ymnnJLDDjssN9xwQ374wx/m05/+dPr27dviuVauXJnENUPbeZ2hvVwztJdrhkK4bgpjkWUAqtY999yTJz74wbx1164m2w/9yU+y6v/9v6xdu7bxv5/+9Kfp379/4zFbt25t8bxbtmxJkgwcOHC/NQwYMCBHH330PuFOg/PPPz8HHnhgtm7dmscff7wtTwsAgCok4AGgerXhrll7qqmpyYgRI5IkG/fq7mlQV1fXuFbPmDFjOlxiTU1NhgwZkiR56aWXOnw+AAAqk4AHgOrUhrtmNWfixIlJkieeeKLZ/atXr06SDBkyJMOGDWtTKfX19amvr29xX21tbZLkLW95S5vOBwBA9RHwAFCd/vEfk73umpXbb08GDWr1YVOnTk2SLFy4sNn9CxYsSJKcccYZbSrjvPPOyzHHHNPi+ZYuXZq6urr06tUrkyZNatM5AQCoPgIeAKpPO0ez9jRlypSMGTMmK1asyN13391k30MPPZT58+enX79+mT17dpN9S5YsydSpUzNnzpwm20844YTs3Lkz11xzTZ599tkm+zZt2pSrrroqSTJjxgwdPAAAtMht0gGoLgWOZjXo3bt3rr/++syePTuXX3557r///owdOzYbNmzIsmXL0rNnz1x99dX7jGfV1dVl3bp1+5xvzpw5eeyxx7JixYp84AMfyLvf/e4ccsgh2bx5cx5++OFs3749b3/723PxxRd35FkDAFDhBDwAVJcCR7P2NGHChNx333255ZZb8vDDD2f16tUZNGhQpkyZkgsuuKBdt/Ts06dPvv3tb+eee+7JggULsnz58mzd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",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 287,
       "width": 572
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "vector([3,2], 'b', \"v\")\n",
    "vector([-2,1], 'g',  \"w\")\n",
    "vector([-1,-1.5], 'r')\n",
    "plt.gca().spines[:].set_position('zero')\n",
    "plt.axis('equal');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "The basic vector operations are\n",
    "\n",
    "* addition\n",
    "$$ \\begin{bmatrix}\n",
    "   v_1 \\\\\n",
    "   v_2\n",
    "   \\end{bmatrix} \n",
    "   +\n",
    "   \\begin{bmatrix}\n",
    "   w_1 \\\\\n",
    "   w_2\n",
    "   \\end{bmatrix} \n",
    "   = \n",
    "   \\begin{bmatrix}\n",
    "   v_1 + w_1 \\\\\n",
    "   v_2 + w_2\n",
    "   \\end{bmatrix} \n",
    "$$\n",
    "* multiplication by a scalar:\n",
    "$$\n",
    "   α \\,\n",
    "   \\begin{bmatrix}\n",
    "   w_1 \\\\\n",
    "   w_2\n",
    "   \\end{bmatrix} \n",
    "   =\n",
    "   \\begin{bmatrix}\n",
    "   α \\, w_1 \\\\\n",
    "   α \\, w_2\n",
    "   \\end{bmatrix} \n",
    "$$\n",
    "\n",
    "Of course vectors exist in 3D and in any dimension."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "# Matrices and linear maps\n",
    "\n",
    "The matrices are\n",
    "\n",
    "* a representation of a linear map (mathematician's vision)\n",
    "* a 2D table (vision of a computer scientist who didn't understand everything)\n",
    "* a very practical tool to do many things\n",
    "\n",
    "A ${\\bf f}$ map or transformation is said to be linear if it satisfies:\n",
    "\n",
    "* ${\\bf f(v)} + {\\bf f(w)} = {\\bf f(v + w)}$\n",
    "* ${\\bf f}(α \\, {\\bf v}) = α \\, {\\bf f(v)}$ with α a scalar.\n",
    "\n",
    "This offers 2 properties:\n",
    "\n",
    "* the origin (0,0) stays at (0,0)\n",
    "* any line remains a line after its transformation by a linear map.\n",
    "\n",
    "To define a linear map, it suffices to indicate how the base is transformed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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O4BrEHgAAAD8XEpKihISEnT48GGtX7/eYt2ePXu0bds2hYaGKjMz07x8165dSktL09SpU1s8VkhIiDIyMnT58mXNmTPH4j4dFRUVevHFFyVJCwYMULvMTOIO4CMIO4BrcQ8ewAHHjx/XypUrdfDgQZWXlyskJEQJCQlKS0vT5MmTbd5MEoDnMxqN+sc//qFFixaprq5O2dnZSk5Odve0gDYRHBysl19+WZmZmXr22Wf13nvvqVevXiouLtb+/fsVGBioefPmWVyeVVVVZfWmp86MJUlTp07V559/rtzcXKWlpWnEiBG6dOmS9u7dq/Pnz+uZHj30s//6L5tx59SpU1qxYoUmTJggSUpOTtaQIUOUkZFhfrIXAM/g6D12jEajtm/fruzsbNXX1/MdDdhA4AHstGPHDj355JOqr69X3759ddttt+m7777TJ598okWLFunDDz9Udna2xRNEAHiHb7/9VrNnz9bevXvdPRXAbZKSkrR161YtW7ZMubm5KigoUEREhFJSUjR9+nQlJia26lghISFavny51q1bpy1btpgv8brpppv06i236NbXXlOAjbiTl5enrKwsGQwGc+AZMmSI9u3bp927d2vOnDlKT09v2X8gAC0ycuRIHTt2TDNnznTo5sl8RwP2CzAar/6mBHCtoqIinTt3Tv/xH/8hg8Ggp556Sg899JB5fWlpqX71q1/p7NmzevTRR/X444+7cbYA7FVUVCRJunDhgp588kmdO3dO6enp2rlzp8rLy/ntIOApmrihsu6/X7W1tRo7dqxKSkq0YMECxcfHS5Juvvlm5efna8qUKTIajdqyZYt69+7tpjcBwGg0OvQkLUnav3+/+Tv6nnvu0cGDB3X+/Hm+owEbuAcPYIfdu3fLYDBo0KBBFnFHunKK6cMPPyxJ2rlzpzumB6AFNm/erIaGBi1dulRz5sxRcHCwu6cEwKSZuCNduZlzSUmJRo4cqXHjxlnsPnToUE2cOFENDQ1avXp1G04cwLUcjTuS5Xf0I488onbt2rXCzADfQeAB7DBkyBC98MILeuKJJ6yuv/HGGyVJZ86cactpAXCBQYMGacuWLUpJSXH3VABczY64I/34yxXT07uulZqaKunKTaEBeBe+owHHcA8ewA49e/Zs8t4D5eXlkqQuXbq01ZQAuMiDDz7o7ikAuJadcUeSCgsLJV257481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",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 298,
       "width": 572
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# base d'origine\n",
    "vector([1,0], text='i')\n",
    "vector([0,1], text='j')\n",
    "# base transformée\n",
    "vector([-2,1], 'r', 'f(i)')\n",
    "vector([-1,-1], 'r', 'f(j)')\n",
    "plt.gca().spines[:].set_position('zero')\n",
    "plt.axis('equal');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "For any vector ${\\bf v}$ we have\n",
    "\n",
    "$$ {\\bf f(v)} = {\\bf f}( v_1 \\, {\\bf i} + v_2 \\, {\\bf j}) = v_1 \\, {\\bf f(i)} + v_2 \\, {\\bf f(j)} $$\n",
    "\n",
    "since $\\bf f$ is linear. This shows that it is enough to know the transformation of the base.\n",
    "\n",
    "Carrying out the calculations, we have in the case of the figure above\n",
    "\n",
    "$$  \n",
    "v_1 \\, {\\bf f(i)} + v_2 \\, {\\bf f(j)} = \n",
    "v_1 \\,\n",
    "\\begin{bmatrix}\n",
    "   -2 \\\\\n",
    "   1\n",
    "\\end{bmatrix} \n",
    "+\n",
    "v_2 \\,\n",
    "\\begin{bmatrix}\n",
    "   -1 \\\\\n",
    "   -1\n",
    "\\end{bmatrix} \n",
    "=\n",
    "\\begin{bmatrix}\n",
    "   -2 \\, v_1 \\\\\n",
    "   1 \\, v_1 \n",
    "\\end{bmatrix} \n",
    "+\n",
    "\\begin{bmatrix}\n",
    "   -1 \\, v2\\\\\n",
    "   -1 \\, v2\n",
    "\\end{bmatrix} \n",
    "=\n",
    "\\begin{bmatrix}\n",
    "   -2 \\, v_1 -1 \\, v2\\\\\n",
    "   1 \\, v_1    -1 \\, v2\n",
    "\\end{bmatrix} \n",
    "=\n",
    "\\begin{bmatrix}\n",
    "   -2  & -1 \\\\\n",
    "   1   &  -1\n",
    "\\end{bmatrix} \n",
    "\\,\n",
    "\\begin{bmatrix}\n",
    "   v_1 \\\\\n",
    "   v_2\n",
    "\\end{bmatrix} \n",
    "$$\n",
    "\n",
    "The matrix and the matrix product are thus introduced.\n",
    "\n",
    "The linear map $\\bf f$ of our figure can therefore be represented by a matrix operation: ${\\bf f}({\\bf v}) =  A \\, {\\bf v}$ where the matrix A is\n",
    "\n",
    "$$\n",
    "A =\n",
    "\\begin{bmatrix}\n",
    "   -2  & -1 \\\\\n",
    "   1   &  -1\n",
    "\\end{bmatrix} \n",
    "$$\n",
    "\n",
    "Note that we find $\\bf f(i)$ in the first column and $\\bf f(j)$ in the second column.\n",
    "\n",
    "One will be able to check in exercise that the application ${\\bf f} : {\\bf v} \\mapsto A \\, {\\bf v}$ is indeed linear."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "## Determinant of a matrix\n",
    "\n",
    "The determinant indicates the magnification of the surface of an object after transformation by $\\bf f$ or, what is the same, after multiplication by A."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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bun2229XfHy8Nm/eTNwxg8BjDUIPAMDD+fn46N1JkxQaGKj0zEz933/+oxrcp8FqKefO6S/LlkmSBnftqgmDB9vtWABcUCVxRw895Jg5AbAbwo51CDzVQegBAHiw6GbN9M8pU+Rbr542HTig99bbZ/nSnCtX9Mj8+bpkMKhjZKRmT5woLy+vqp8IwDMQdwCPQdipHo9Zg2f79u1aunSpDh48qMzMTNWvX19t27ZVr169NHTo0OoN1qCBDvv5adOOHerXtKn6tmtnn0kDAOBk+nXooB/++U+7HiMoIEBrXnzRrscA4KJsEHeSk5M1f/587dq1SxkZGQoKClKPHj00ceJE9e3b1w6TRm3Y4v3as2ePxo8fX+V+r7zyitvcYtvVla6xc9NNN+nf//63HnnkEeXl5WnRokXq06dPtcfzlO97jwg8b775phYuXChvb2/169dPUVFR+vXXX7Vr1y4lJiZq165d+vTTT40LclVl48aNevrpp1VcXKwf+vXToZwc9W3SRN0iI+38SgAAAAAPZSHu7J40SX2tjDv79+/X5MmTZTAYFBsbq4EDByo9PV0JCQnaunWrZsyYobFjx9pj9qgBW79fzZo1q/Qf9zt06GCLaaMGunXrpvDwcPXs2dO4ePK5c+f00EMPafv27bUa25O+790+8Hz99ddauHChgoKCtHDhQnUtc9ePH3/8Uffff7++//57ffrpp5o4cWKV4509e1Z//vOf5eXlpY8++kj9+vUzbtv11VcqOHpUAzt3tsdLAQAAADyThbjzaosW+mzvXq08dkztqjirPjc3V9OnT5fBYNCsWbM0YsQI47bExERNmDBBM2fOVJ8+faocC/Znj/erVatWepEzRJ1Shw4ddO7cOeMl2Tt37tQzzzyj8+fPa+zYsdq0aZPOnj1b7XE97fve7dfg+eyzzyRJDzzwgEnckaSOHTvqjjvukCRt2bLFqvGWLVum7OxsjRw50iTuSFK/uDgtPXpUv/vrX/VLTo4NZg8AAAB4uEouy/J55BEVFBRo4cKFVQ6zYcMGpaamasCAASa/5ElSz549NXr0aKvHgv3xfnmesuvtrVixQgUFBZo7d65mzJhR7duol/K0P0duH3j+9Kc/6b333tO9995rdntERIQkKcfKILNp0yZJUlxcnNntd9xxhw6dOqUnPvmExZgBAACA2qhizZ3Sy202b95c5VBV/RxfnbFgf7xfnq179+5auXKlhgwZUqtxPO3PkdsHni5duuj2229X8+bNzW4/c+aMJKlNmzZVjpWfn68TJ05Ikjp16mTxeJJ07Ngx5QcGctctAAAAoCasWFC587WlETIzM3X69OlKhzty5Igkyz/HV2cs2B/vl2cbN26coqKiaj2Op/05cvvAU5mtW7dq/fr18vX11ZQpU6rcPzU1VVevXlVgYKDCwsLM7lMakgoKCpSWllbyILdXBwAAAKxn5d2yyv5cnpycbHG4/Px8paenS/rfGfzlWTsW7M+e71dWVpa+/PJL/e1vf9Ps2bO1fPly47HgXjzx+97tF1kuKz09XR999JFycnKUlJSkI0eOqE2bNvrjH/+o9u3bV/n87OxsSVJQUJDFfcpuq3DZV2nouXRJ+vln6fz5mr0QAAAAwF1V81bo9evXV2ZmZqVLLpT+HC9V/rO8NWPB/uz1fh07dkyDBg2qsL+vr68eeughPf744zWbMJySJ37fu1Tgeeqpp5SUlGTVvs2aNauwUNKFCxe0aNEi4+dRUVG64YYb1KBBA6vGzMvLk6RKF3jy8vKSr6+vCgoKlJuba34nQg8AAABQkYW4UzRvnrwt3Ardz89Pkiz/7K3//RwvVf6zvDVjwf7s9X5lZ2frgQce0MiRI9WiRQudP39eixcv1ieffKL33ntPgYGBVl3ZAdfgid/3LhV4UlNTdfLkSav2zc/Pr/BYTEyMjh49qtzcXJ06dUqrV6/WwoULtW7dOi1YsEC9evWqdMyAgABJJZdfWVJcXGzcHhgYWPkkCT0AAABACQtxZ0bTpvq/SZPkb+FppT/3V/azd+nP8VLJz/L+/uZHs2Ys2J+t36/OnTvr888/V1hYmFq2bGl8PCIiQtOnT1dISIj+9re/ad68eRo7dizvv5vwxO97lwo8y5cvt8k4gYGBiomJUUxMjOrVq6cPP/xQzz77rL7++mt5e1telig4OFhS5XfcKnsaWEhIiHUTIvQAAADAk1USd5aHhempnByLv5yV/vxd2c/e5ZdRqM1YsD9bv1/BwcHq2rWrxe0PPPCA5s2bp5ycHH333Xfq379/DWYNZ+OJ3/cevciyJN12222SSs4OOnbsWKX7RkZGytfXV7m5ubpw4YLZfVJTUyVJ/v7+atGiRfUmw2LMAAAA8DSVrLmz49odbkp/xi4vKytLly9fliRFR0dbPISfn58iIyNtMhbsr67fLz8/PzVp0kSSdJ5/bHcbnvh979aBJycnR2+++aaefvppi9+oXl5e8vLykiRduXKl0vF8fX3VoUMHSdL3339vdp8DBw5IKrkNm49PDU+QIvQAAADAE1SxoHKXLl0kSYcOHTL79NKfvZs0aWK8m60lthwL9mfr96u4uFjFxcUWt2VmZkqS1euzwjV42ve9Wwee+vXra82aNVq3bp2++eYbs/scP35cxcXF8vLyMrke05KhQ4dKktavX292+9q1ayVJw4YNq+GsyyD0AAAAwF1ZcbesuLg4SdKGDRvMDlH6s/edd95Z5eFsORbsz5bv18SJE9WtWzeLY23fvl1ZWVny8fFR9+7dazhjOCNP+75368Dj5eWl+++/X5I0e/ZsHT161GR7RkaGFixYIEkaOHCgwsPDjdsWL16suLg4/d///Z/Jc+6//341bNhQa9as0bZt20y2LVu2TPv27VOzZs00atQo270QQg8AAADciZW3Qh8yZIiio6O1b98+LVu2zGTXbdu2afXq1apfv74mTZpkfHzz5s1mD1mTseA4NX3vH330Uf3lL38x2b9Xr17Kz8/XzJkzderUKZNt6enpeuONNyRJo0aN4gweF2Xpvfe073uvYkvnqbmJ/Px8PfLII4qPj5ePj4/69OmjqKgoZWRkaM+ePcrJyVHTpk21fPlyRUREGJ83Z84czZ07VwMGDDBGoFLx8fF69NFHVVhYqP79+ysqKkonTpzQ3r17Vb9+fX344YdV3pGrVliMGQAAAK7KyrhT6siRI5o0aZIyMzMVGxurtm3b6vTp09q5c6e8vLw0e/Zs47/SS9KKFSvUqlUrSdKNN95Yq7HgWDV571944QVFRkaaXMGRl5enBx98UPv27ZOvr69uueUWNW3aVBkZGYqPj1dubq569+6t+fPnq379+o54qSgjMzNT7733nsljX3zxhXJycjR06FA1a9bM+PjYsWPVqlUri++95Fnf9y51F62a8PPz07/+9S+tXr1aq1at0pEjR7Rnzx75+/urdevW6tatm4YPH24Sd6py8803a+XKlZo3b552796t3bt3q1GjRho5cqT++Mc/6rrrrrPjKxJ33QIAAIBrqmbckUrWtvzyyy81b948xcfH68CBAwoNDdWQIUP08MMPKyYmxurD23Is2J+t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",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 305,
       "width": 572
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# base d'origine\n",
    "vector([1,0], text='i')\n",
    "vector([0,1], text='j')\n",
    "plt.fill([0,1, 1, 0],[0,0,1,1], '#bbbbbb')\n",
    "plt.text(0.5, 0.5, 'Surface = 1', horizontalalignment='center', size=16)\n",
    "# base transformée\n",
    "vector([-2,1], 'r', 'f(i)')\n",
    "vector([-1,-1], 'r', 'f(j)')\n",
    "plt.fill([0,-2, -3, -1],[0,1,0,-1], '#ffbbbb')\n",
    "plt.text(-1.5, 0, 'Surface = det(A)', horizontalalignment='center', size=16)\n",
    "plt.gca().spines[:].set_position('zero')\n",
    "plt.axis('equal');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy.linalg as lin\n",
    "\n",
    "A = np.array([[-2, -1], [1, -1]])\n",
    "lin.det(A)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "* if det(A) = 0 then that means that $\\bf f(i)$ and $\\bf f(j)$ are collinear, so that we have lost a dimension (we look at the slice of the plane).\n",
    "* if det(A) < 0 then that means that $\\bf f(i)$ is after $\\bf f(j)$ counterclockwise (we flipped the plane)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "If you are not comfortable with linear algebra, I invite you to watch [the videos of 3 blues, 1 brown](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "## Standards\n",
    "\n",
    "### Norm of a vector\n",
    "\n",
    "There are different norms, the best known being the Euclidean norm or norm 2. Its definition is:\n",
    "\n",
    "$$\n",
    "|| {\\bf v} ||_2 = \\sqrt{\\sum_{i=1}^n v_i^2} = \\sqrt{\\bf v . \\bf v}\n",
    "$$\n",
    "\n",
    "We also have norm 1 (also known as Manhattan):\n",
    "\n",
    "$$\n",
    "||{\\bf v}||_1 = \\sum_{i=1}^n |v_i|\n",
    "$$\n",
    "\n",
    "Norm n:\n",
    "\n",
    "$$\n",
    "|| {\\bf v} ||_n = \\left( {\\sum_{i=1}^n v_i^n} \\right)^{1/n}\n",
    "$$\n",
    "\n",
    "and therefore the infinite norm is the max (one must use the limits to understand why)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "v      = [ 0.1  1.   4.  10.  50. ]\n",
      "v¹⁰⁰   = [1.000e-100 1.000e+000 1.607e+060 1.000e+100 7.889e+169]\n",
      "Σ v¹⁰⁰ = 7.888609052210118e+169\n",
      "ǁvǁ₁₀₀ = 50.00000000000001\n"
     ]
    }
   ],
   "source": [
    "v = np.array([0.1, 1, 4, 10, 50])\n",
    "print(\"v      =\", v)\n",
    "print(\"v¹⁰⁰   =\", v**100)\n",
    "print(\"Σ v¹⁰⁰ =\", (v**100).sum())\n",
    "print(\"ǁvǁ₁₀₀ =\", (v**100).sum()**0.01)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "### Norm of a matrix\n",
    "\n",
    "The norm that derives from the scalar product is the **Frobenius norm**:\n",
    "\n",
    "$$\n",
    "|| A ||_F = \\sqrt{\\textrm{trace}(A A^*)} = \\sqrt{ \\sum_{1 \\le i\\le m \\atop 1 \\le j\\le n}|A_{ij}|^2 }\n",
    "$$\n",
    "\n",
    "with $A^*$ the adjoint matrix (or the transpose matrix if we are in R)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 1]\n",
      " [2 3]]\n",
      "ǁAǁ =  3.872983346207417\n"
     ]
    }
   ],
   "source": [
    "A = np.array([[1, 1], [2, 3]])\n",
    "print(A)\n",
    "print(\"ǁAǁ = \", np.linalg.norm(A))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "The **subordinate norm** is induced by the vector norm:\n",
    "\n",
    "$$\n",
    "||B||_n = \\sup_{\\bf v} \\frac{||B\\, {\\bf v}||_n}{||\\textbf{v}||_n} = \\sup_{\\textbf{v} \\, t.q. ||\\textbf{v}||_n = 1} ||B\\, {\\bf v}||_n = \\sup_{\\textbf{v} \\, t.q. ||\\textbf{v}||_n \\le 1} ||B\\, {\\bf v}||_n\n",
    "$$\n",
    "\n",
    "This is the default norm used in this course."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ǁAǁ₂ =  3.8643284505408246\n"
     ]
    }
   ],
   "source": [
    "print(\"ǁAǁ₂ = \", np.linalg.norm(A,2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "lang": "en"
   },
   "source": [
    "### Properties\n",
    "\n",
    "In our case, where the arrival space and the departure space are $\\mathbb{R}^n$ or $\\mathbb{C}^n$, norms have the following properties:\n",
    "    \n",
    "$$\n",
    "\\begin{array}{l}\n",
    "|| A B || \\le ||A|| \\; ||B|| \\\\\n",
    "|| A {\\bf v} || \\le ||A|| \\; ||{\\bf v}||\n",
    "\\end{array}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ]
}