-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchapter2.html
1915 lines (1880 loc) · 137 KB
/
chapter2.html
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
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Pré-requis — Apprentissage-Automatisé 1.0.0-beta0 documentation</title>
<link rel="stylesheet" href="_static/material-design-lite-1.3.0/material.blue-deep_orange.min.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_materialdesign_theme.css" type="text/css" />
<link rel="stylesheet" href="_static/fontawesome/all.css" type="text/css" />
<link rel="stylesheet" href="_static/fonts.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="_static/basic.css" />
<link rel="stylesheet" type="text/css" href="_static/d2l.css" />
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/d2l.js"></script>
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<link rel="shortcut icon" href="_static/favicon.jpeg"/>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Apprentissage Supervisé" href="chapter3.html" />
<link rel="prev" title="Introduction Générale à l’Apprentissage Automatique" href="chapter1.html" />
</head>
<body>
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--fixed-drawer"><header class="mdl-layout__header mdl-layout__header--waterfall ">
<div class="mdl-layout__header-row">
<nav class="mdl-navigation breadcrumb">
<a class="mdl-navigation__link is-active">Pré-requis</a>
</nav>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<form class="form-inline pull-sm-right" action="search.html" method="get">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable mdl-textfield--floating-label mdl-textfield--align-right">
<label id="quick-search-icon" class="mdl-button mdl-js-button mdl-button--icon" for="waterfall-exp">
<i class="material-icons">search</i>
</label>
<div class="mdl-textfield__expandable-holder">
<input class="mdl-textfield__input" type="text" name="q" id="waterfall-exp" placeholder="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</div>
</div>
<div class="mdl-tooltip" data-mdl-for="quick-search-icon">
Quick search
</div>
</form>
<a id="button-show-source"
class="mdl-button mdl-js-button mdl-button--icon"
href="_sources/chapter2.rst.txt" rel="nofollow">
<i class="material-icons">code</i>
</a>
<div class="mdl-tooltip" data-mdl-for="button-show-source">
Show Source
</div>
</nav>
</div>
<div class="mdl-layout__header-row header-links">
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="https://github.com/IVIA-AF/ivia-af.github.io/raw/main/Apprentissage-Automatisé.pdf">
<i class="fas fa-file-pdf"></i>
PDF
</a>
</nav>
</div>
</header><header class="mdl-layout__drawer">
<!-- Title -->
<span class="mdl-layout-title">
<a class="title" href="index.html">
<span class="title-text">
Apprentissage-Automatisé
</span>
</a>
</span>
<div class="globaltoc">
<span class="mdl-layout-title toc">Table Of Contents</span>
<nav class="mdl-navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="chapter1.html">Introduction Générale à l’Apprentissage Automatique</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Pré-requis</a></li>
<li class="toctree-l1"><a class="reference internal" href="chapter3.html">Apprentissage Supervisé</a></li>
<li class="toctree-l1"><a class="reference internal" href="bibliography.html">Bibliography</a></li>
</ul>
</nav>
</div>
</header>
<main class="mdl-layout__content" tabIndex="0">
<script type="text/javascript" src="_static/sphinx_materialdesign_theme.js "></script>
<header class="mdl-layout__drawer">
<!-- Title -->
<span class="mdl-layout-title">
<a class="title" href="index.html">
<span class="title-text">
Apprentissage-Automatisé
</span>
</a>
</span>
<div class="globaltoc">
<span class="mdl-layout-title toc">Table Of Contents</span>
<nav class="mdl-navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="chapter1.html">Introduction Générale à l’Apprentissage Automatique</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Pré-requis</a></li>
<li class="toctree-l1"><a class="reference internal" href="chapter3.html">Apprentissage Supervisé</a></li>
<li class="toctree-l1"><a class="reference internal" href="bibliography.html">Bibliography</a></li>
</ul>
</nav>
</div>
</header>
<div class="document">
<div class="page-content" role="main">
<div class="section" id="pre-requis">
<h1>Pré-requis<a class="headerlink" href="#pre-requis" title="Permalink to this heading">¶</a></h1>
<p>Python est le langage de programmation préféré des Data Scientistes. Ils
ont besoin d’un langage facile à utiliser, avec une disponibilité
décente des bibliothèques et une grande communauté. Les projets ayant
des communautés inactives sont généralement moins susceptibles de mettre
à jour leurs plates-formes. Mais alors, pourquoi Python est populaire en
Data Science ?</p>
<p>Python est connu depuis longtemps comme un langage de programmation
simple à maîtriser, du point de vue de la syntaxe. Python possède
également une communauté active et un vaste choix de bibliothèques et de
ressources. Comme résultat, vous disposez d’une plate-forme de
programmation qui est logique d’utiliser avec les technologies
émergentes telles que l’apprentissage automatique (Machine Learning) et
la Data Science.</p>
<div class="section" id="langage-python-et-ses-librairies">
<h2>Langage Python et ses Librairies<a class="headerlink" href="#langage-python-et-ses-librairies" title="Permalink to this heading">¶</a></h2>
<p>Python est un langage de programmation puissant et facile à apprendre.
Il dispose de structures de données de haut niveau et permet une
approche simple mais efficace de la programmation orientée objet. Parce
que sa syntaxe est élégante, que son typage est dynamique et qu’il est
interprété, Python est un langage idéal pour l’écriture de scripts quand
on fait de l’apprentissage automatique et le développement rapide
d’applications dans de nombreux domaines et sur la plupart des
plate-formes.</p>
<div class="section" id="installation-de-python-et-anaconda">
<h3>Installation de Python et Anaconda<a class="headerlink" href="#installation-de-python-et-anaconda" title="Permalink to this heading">¶</a></h3>
<p>L’installation de Python peut-être un vrai challenge. Déjà il faut se
décider entre les versions 2.X et 3.X du langage, par la suite, choisir
les librairies nécessaires (ainsi que les versions compatibles) pour
faire de l’apprentissage automatique (Machine Learning); sans oublier
les subtilités liées aux différents Systèmes d’exploitation (Windows,
Linux, Mac…) qui peuvent rendre l’installation encore plus
<em>“douloureuse”</em>.</p>
<p>Dans cette partie nous allons installer pas à pas un environnement de
développement Python en utilisant Anaconda[^1]. A l’issue de cette
partie, nous aurons un environnement de développement fonctionnel avec
les librairies (packages) nécessaires pour faire de l’apprentissage
automatique (Machine Learning).</p>
<p><strong>Qu’est ce que Anaconda ?</strong></p>
<p>L’installation d’un environnement Python complet peut-être assez
complexe. Déjà, il faut télécharger Python et l’installer, puis
télécharger une à une les librairies (packages) dont on a besoin.
Parfois, le nombre de ces librairies peut-être grand. Par ailleurs, il
faut s’assurer de la compatibilité entre les versions des différents
packages qu’on a à télécharger. <em>Bref, ce n’est pas amusant</em>!</p>
<p>Alors Anaconda est une distribution Python. À son installation, Anaconda
installera Python ainsi qu’une multitude de packages dont vous pouvez
consulter la
<a class="reference external" href="https://docs.anaconda.com/anaconda/packages/pkg-docs/#Python-3-7">liste</a>.
Cela nous évite de nous ruer dans les problèmes d’incompatibilités entre
les différents packages. Finalement, Anaconda propose un outil de
gestion de packages appelé Conda. Ce dernier permettra de mettre à jour
et installer facilement les librairies dont on aura besoin pour nos
développements.</p>
<p><strong>Téléchargement et Installation de Anaconda</strong></p>
<p><strong>Note</strong>: Les instructions qui suivent ont été testées sur Linux/Debian.
Le même processus d’installation pourra s’appliquer pour les autres
systèmes d’exploitation.</p>
<p>Pour installer Anaconda sur votre ordinateur, vous allez vous rendre sur
le <a class="reference external" href="http://docs.anaconda.com/anaconda/navigator/">site officiel</a>
depuis lequel l’on va télécharger directement la dernière version
d’Anaconda. Prenez la version du binaire qu’il vous faut :</p>
<ul class="simple">
<li><p>Choisissez le système d’exploitation cible (Linux, Windows, Mac,
etc…)</p></li>
<li><p>Sélectionnez la version 3.X (à l’heure de l’écriture de ce document,
c’est la version 3.8 qui est proposée, surtout pensez à toujours
installer la version la plus récente de Python), compatible (64 bits
ou 32 bits) avec l’architecture de votre ordinateur.</p></li>
</ul>
<p>Après le téléchargement, si vous êtes sur Windows, alors rien de bien
compliqué double cliquez sur le fichier exécutable et suivez les
instructions classique d’installation d’un logiciel sur Windows.</p>
<p>Si par contre vous êtes sur Linux, alors suivez les instructions qui
suivent:</p>
<ul class="simple">
<li><p>Ouvrez votre terminal et rassurez vous que votre chemin accès est
celui dans lequel se trouve votre fichier d’installation.</p></li>
<li><p>Exécutez la commande: $ bash Anaconda3-2020.02-Linux-x86_64.sh,
rassurez vous du nom du fichier d’installation, il peut changer selon
la version que vous choisissez.</p></li>
</ul>
<p>Après que l’installation se soit déroulée normalement, éditez le fichier
caché <strong>.bashrc</strong> pour ajouter le chemin d’accès à Anaconda. Pour cela
exécutez les commandes suivantes:</p>
<ul class="simple">
<li><p>$ cd ~</p></li>
<li><p>$ gedit .bashrc</p></li>
<li><p>Ajoutez cette commande à la dernière ligne du fichier que vous venez
d’ouvrir</p></li>
<li><p>export PATH= ~/anaconda3/bin:$PATH</p></li>
</ul>
<p>Maintenant que c’est fait, enregistrez le fichier et fermez-le. Puis
exécutez les commandes suivantes</p>
<ul class="simple">
<li><p>$ conda init</p></li>
<li><p>$ Python</p></li>
</ul>
<p>Pour ce qui est de l’installation sur Mac, veuillez suivre la procédure
d’installation dans la <a class="reference external" href="https://docs.anaconda.com/anaconda/install/mac-os/">documentation
d’Anaconda</a>.</p>
<p>Il existe une distribution appelée
<a class="reference external" href="https://docs.conda.io/en/latest/miniconda.html">Miniconda</a> qui est
un programme d’installation minimal gratuit pour conda. Il s’agit d’une
petite version bootstrap d’Anaconda qui inclut uniquement conda, Python,
les packages dont ils dépendent, et un petit nombre d’autres packages
utiles.</p>
<p>Terminons cette partie en nous familiarisant avec quelques notions de la
programmation Python.</p>
<p><strong>Première utilisation de Anaconda</strong></p>
<p>La distribution Anaconda propose deux moyens d’accéder à ses fonctions:
soit de manière graphique avec Anaconda-Navigator, soit en ligne de
commande (depuis Anaconda Prompt sur Windows, ou un terminal pour Linux
ou MacOS). Sous Windows ou MacOs, démarrez Anaconda-Navigator dans le
menu des programmes. Sous Linux, dans un terminal, tapez la commande : $
anaconda-navigator (cette commande est aussi disponible dans le prompt
de Windows). Anaconda-Navigator propose différents services (déjà
installés, ou à installer). Son onglet Home permet de lancer le service
désiré. Les principaux services à utiliser pour développer des
programmes Python sont :</p>
<ul class="simple">
<li><p>Spyder</p></li>
<li><p>IDE Python</p></li>
<li><p>Jupyter notebook et jupyter lab : permet de panacher des cellules de
commandes Python (code) et des cellules de texte (Markdown).</p></li>
</ul>
<p>Pour la prise en main de Python nous allons utiliser jupyter lab.</p>
</div>
<div class="section" id="prise-en-main-de-python">
<h3>Prise en main de Python<a class="headerlink" href="#prise-en-main-de-python" title="Permalink to this heading">¶</a></h3>
<p>Nous avons préparé un notebook qui nous permettra d’aller de zèro à demi
Héros en Python. Le notebook se trouve
<a class="reference external" href="https://colab.research.google.com/drive/1zILtNrCmPDFyQQ1Ev1H4jeHx7FuyEZ27?usp=sharing">ici</a>.</p>
<div class="section" id="python-pour-les-debutants-notions-de-bases-du-python">
<h4>Python pour les debutants : Notions de bases du python<a class="headerlink" href="#python-pour-les-debutants-notions-de-bases-du-python" title="Permalink to this heading">¶</a></h4>
<div class="section" id="les-nombres-avec-python">
<h5>Les nombres avec Python!<a class="headerlink" href="#les-nombres-avec-python" title="Permalink to this heading">¶</a></h5>
<p>Dans cette partie, nous allons tout apprendre comment utiliser les
nombres sur Python.</p>
<p>Nous allons couvrir les points suivants :</p>
<ol class="arabic simple">
<li><p>Les types de nombres sur Python</p></li>
<li><p>Arithmetique de base sur les nombres</p></li>
<li><p>Différences entre Python 2 et 3</p></li>
<li><p>Assignation d’objets dans Python</p></li>
</ol>
</div>
<div class="section" id="les-types-de-nombres">
<h5>Les types de nombres<a class="headerlink" href="#les-types-de-nombres" title="Permalink to this heading">¶</a></h5>
<p>Python a plusieurs “types” de nombres. Nous nous occuperons
principalement des entiers (integers) et des nombres à virgule flottante
(float).</p>
<p>Le type entier (integer) représente des nombres entiers, positifs ou
negatifs. Par exemple: 7 et -1 sont des integers.</p>
<p>Le type flottant (float) de Python est facile à identifier parce que les
nombres sont représentés avec la partie décimal (Attention, ici les
nombre decimaux sont representer avec un point et non la virgule comme
habituellement en langue française), ou alors avec le signe exponentiels
(reprensenter par <strong>e</strong>) pour représenter les puissances de 10. Par
exemple, 2.0 et -2.1 sont des nombres de type flottant. 2e3 ( 2 fois 10
à la puissance 3) est aussi un nombre de type flottant en Python.</p>
<p>Voici un tableau des deux types que nous manipulerons le plus dans ce
cours:</p>
<span id="table-nombre"></span><table class="docutils align-default" id="id1">
<caption><span class="caption-number">Table 1 </span><span class="caption-text">Les types de nomber en Python.</span><a class="headerlink" href="#id1" title="Permalink to this table">¶</a></caption>
<colgroup>
<col style="width: 44%" />
<col style="width: 56%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Exemples</p></th>
<th class="head"><p>Type</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>1, 4, -2, 100</p></td>
<td><p>Integers</p></td>
</tr>
<tr class="row-odd"><td><p>1.4, 0.3, -0.5, 2e2, 3e2</p></td>
<td><p>Floating-point numbers (float)</p></td>
</tr>
</tbody>
</table>
<p>Voyons maintenant, quelques examples d’arithmétique simples que l’on
peux appliquer sur ses elements.</p>
<p>Arithmétique</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Addition de 1 et 3 = 4</span>
<span class="mi">1</span><span class="o">+</span><span class="mi">3</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Soustraction de 1 dans 3 = 2</span>
<span class="mi">3</span><span class="o">-</span><span class="mi">1</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Multiplication de 2 par 2 = 4</span>
<span class="mi">2</span><span class="o">*</span><span class="mi">2</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Division de 5 par 2 = 2.5 (remaquez qu'on a la un flottant)</span>
<span class="mi">5</span><span class="o">/</span><span class="mi">2</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">2.5</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Puissances. 2 a la puissances 3 = 8</span>
<span class="mi">2</span><span class="o">**</span><span class="mi">3</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">8</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1">#la racine carree peut se calculer de la même manière = 2.0</span>
<span class="mi">4</span><span class="o">**</span><span class="mf">0.5</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">2.0</span>
</pre></div>
</div>
</div>
<div class="section" id="ordre-de-priorite">
<h5>Ordre de priorite<a class="headerlink" href="#ordre-de-priorite" title="Permalink to this heading">¶</a></h5>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Voyons quel ordre de priorite python fais sur les operteurs</span>
<span class="mi">2</span> <span class="o">+</span> <span class="mi">10</span> <span class="o">*</span> <span class="mi">10</span> <span class="o">+</span> <span class="mi">3</span> <span class="c1"># avec ceci nous obtenons un resultats errone = 105</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">105</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Avec des parenthèse nous pouvons garder le contrôle de ces priorités</span>
<span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">10</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="mi">10</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">156</span>
</pre></div>
</div>
</div>
<div class="section" id="les-variables">
<h5>Les variables<a class="headerlink" href="#les-variables" title="Permalink to this heading">¶</a></h5>
<p>Maintenant que nous savons comment utiliser python en mode calculette,
nous pouvons créer des variables et leur assigner des valeurs comme des
nombres. Notons que l’utilisation des variables sur python est un tout
petit peu different que ce qui ce passe dans d’autre langage de
programmation. Contrairement a d’autre language, python utilise une
technique de typage faible. Les variables ne sont pas declarees a
l’avance avant l’untilisation.</p>
<p>Il suffit d’un simple signe égal = pour assigner un nom à une variable.
Voyons quelques exemples pour détailler la façon de faire.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Créons un objet nommé "x" et "y" et nous leur assignons la valeur 5 et .2 respectivement</span>
<span class="n">x</span> <span class="o">=</span> <span class="mi">5</span> <span class="c1"># ici la variable x est de type integer</span>
<span class="n">y</span> <span class="o">=</span> <span class="mf">.2</span> <span class="c1"># ici la variable y est de type flottant (notons que 0.2 peut aussi s'ecrire .2 tout simplement)</span>
</pre></div>
</div>
<p>Maintenant, nous pouvons appeler <em>x</em> or <em>y</em> dans un script Python qui
les traitera comme le nombre 5 ou .2 respectivement</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># additionner des objets</span>
<span class="n">x</span><span class="o">+</span><span class="n">y</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">5.2</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Ré-assignation</span>
<span class="n">x</span> <span class="o">=</span> <span class="mi">10</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Vérification</span>
<span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Nous utilisons x pour assigner x de nouveau</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">x</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Vérification</span>
<span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">20</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Incrementation par 1 (on peux aussi incrementer avec n'importe quel nombre)</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">+</span><span class="mi">1</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">21</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1">#Autre syntaxe pour incrementer une variable</span>
<span class="n">x</span> <span class="o">+=</span> <span class="mi">1</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">22</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1">#Decrementation par 1</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span> <span class="o">-</span><span class="mi">1</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">21</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1">#Autre syntaxe pour decrementer une variable</span>
<span class="n">x</span> <span class="o">-=</span> <span class="mi">1</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">20</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1">#Nous pouvons aussi multiplier l'ancienne valeur de x par un quelconque nombre.</span>
<span class="n">x</span> <span class="o">*=</span><span class="mi">2</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">40</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1">#Nous pouvons aussi diviser l'ancienne valeur de x par un quelconque nombre.</span>
<span class="n">x</span> <span class="o">/=</span><span class="mi">2</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">x</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">20.0</span>
</pre></div>
</div>
<p>NB: Toutes les operations que nous venons de voir s’applique aussi sur
les flottants</p>
<p><strong>Tout de meme, voici quelques règles à respecter pour créer un nom de
variable :</strong></p>
<ol class="arabic simple">
<li><p>Les noms ne doivent pas commencer par un nombre.</p></li>
<li><p>Pas d’espace dans les noms, utilisez _ à la place</p></li>
<li><p>Interdit d’utiliser les symboles suivants : ’”,<>/?|()!@#$%^&*~-+</p></li>
<li><p>C’est une bonne pratique (PEP8) de mettre les noms en minuscules</p></li>
</ol>
<p>Les noms de variables permettent de conserver et manipuler plusieurs
valeurs de façon simple avec Python.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Utilisez toujours des noms explicites pour mieux suivre ce que fait votre code !</span>
<span class="n">prix_vente</span> <span class="o">=</span> <span class="mi">280</span>
<span class="n">prix_unitaire</span> <span class="o">=</span> <span class="mi">150</span>
<span class="n">benefice</span> <span class="o">=</span> <span class="n">prix_vente</span> <span class="o">-</span> <span class="n">prix_unitaire</span>
</pre></div>
</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Visualiser le benefice !</span>
<span class="n">benefice</span>
</pre></div>
</div>
<div class="output highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">130</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="section" id="les-bases-mathematiques-pour-lapprentissage-automatique">
<h2>Les Bases Mathématiques pour l’Apprentissage Automatique<a class="headerlink" href="#les-bases-mathematiques-pour-lapprentissage-automatique" title="Permalink to this heading">¶</a></h2>
<p>Dans cette section, nous allons présenter les notions mathématiques
essentielles à l’apprentissage automatique (machine learning). Nous
n’aborderons pas les théories complexes des mathématiques afin de
permettre aux débutants (en mathématiques) ou mêmes les personnes hors
du domaine mais intéressées à l’apprentissage automatique de pouvoir en
profiter.</p>
<div class="section" id="algebre-lineaire-et-analyse">
<h3>Algèbre linéaire et Analyse<a class="headerlink" href="#algebre-lineaire-et-analyse" title="Permalink to this heading">¶</a></h3>
<p><strong>Définition d’espaces vectoriels.</strong> Un espace vectoriel est un triplet
<span class="math notranslate nohighlight">\((V, +, *)\)</span> formé d’un ensemble <span class="math notranslate nohighlight">\(V\)</span> muni de deux lois,</p>
<div class="math notranslate nohighlight" id="equation-chapter2-0">
<span class="eqno">(1)<a class="headerlink" href="#equation-chapter2-0" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
+:\quad & V\times V \longrightarrow{V}\\
&(u,v)\mapsto u+v \\
\text{et} \qquad \qquad\\
*:\quad &\mathbb{K}\times V \longrightarrow{V}, \text{ avec $\mathbb{K}$ un corps commutatif}\\
&(\lambda,v)\mapsto \lambda * v=\lambda v\end{aligned}\end{split}\]</div>
<p>qui vérifient:</p>
<ol class="arabic simple">
<li><p><span class="math notranslate nohighlight">\(\text{ associativité de } + : \forall\ u,v, w \in V, \quad (u+v)+w=u+(v+w)\)</span></p></li>
<li><p><span class="math notranslate nohighlight">\(\text{ commutativité de } + : \forall\ u,v\in V,\quad u+v=v+u\)</span></p></li>
<li><p><span class="math notranslate nohighlight">\(\text{ existence d'élément neutre pour } + : \exists~ e \in V : \forall\ u \in V, \quad u+e=e+u=u\)</span></p></li>
<li><p><span class="math notranslate nohighlight">\(\text{ existence d'élément opposé pour } + : \forall \ u \in V, \exists ~ v \in V :u+v=v+u=0. \text{ On note } v=-u \text{ et } v \text{ est appelé l'opposé de } u\)</span></p></li>
<li><p><span class="math notranslate nohighlight">\(\text{ existence de l'unité pour } * : \exists~ e \in \mathbb{K} \text{ tel que } \forall\ u\in V,\quad e*u=u\)</span></p></li>
<li><p><span class="math notranslate nohighlight">\(\text{ associativité de } * : \forall\ (\lambda_1, \lambda_2, u) \in \mathbb{K} \times \mathbb{K}\times V,\quad (\lambda_1 \lambda_2)* u =\lambda_1*(\lambda_2 * u)\)</span></p></li>
<li><p><span class="math notranslate nohighlight">\(\text{ somme de vecteurs (distributivité de * sur +)} : \forall\ (\lambda, u, v) \in \mathbb{K}\times V\times V, \quad\lambda*(u+v)=\lambda * u+\lambda * v\)</span></p></li>
<li><p>:
<span class="math notranslate nohighlight">\(\forall\ (\lambda_1, \lambda_2, u) \in \mathbb{K} \times \mathbb{K}\times V,\quad (\lambda_1+\lambda_2) * u=\lambda_1 * u +\lambda_2 * u.\)</span></p></li>
</ol>
<div class="line-block">
<div class="line"><strong>Remarque 1:</strong> Les éléments de <span class="math notranslate nohighlight">\(V\)</span> sont appelés des
<strong>vecteurs</strong>, ceux de <span class="math notranslate nohighlight">\(\mathbb{K}\)</span> sont appelés des
<strong>scalaires</strong> et l’élément neutre pour <span class="math notranslate nohighlight">\(+\)</span> est appelé <strong>vecteur
nul</strong>. Finalement, <span class="math notranslate nohighlight">\(V\)</span> est appelé <span class="math notranslate nohighlight">\(\mathbb{K}\)</span>-espace
vectoriel ou espace vectoriel sur <span class="math notranslate nohighlight">\(\mathbb{K}\)</span>.</div>
<div class="line"><strong>Base d’un espace vectoriel.</strong> Soit <span class="math notranslate nohighlight">\(V\)</span> un
<span class="math notranslate nohighlight">\(\mathbb{K}\)</span>-espace vectoriel. Une famille de vecteurs</div>
<div class="line"><span class="math notranslate nohighlight">\(\mathcal{B}=\big\{b_1, b_2, \dots, b_n\big\}\)</span> est appelée base
de <span class="math notranslate nohighlight">\(V\)</span> si les deux propriétés suivantes sont satisfaites:</div>
</div>
<ul class="simple">
<li><p><span class="math notranslate nohighlight">\(\forall\ u \in V, \exists~ c_1, \dots, c_n \in \mathbb{K}\)</span>
tels que <span class="math notranslate nohighlight">\(\displaystyle u = \sum_{i=1}^{n}c_i b_i\)</span>
(On dit que <span class="math notranslate nohighlight">\(\mathcal{B}\)</span> est
<span class="math notranslate nohighlight">\(\textbf{une famille génératrice}\)</span> de <span class="math notranslate nohighlight">\(V\)</span>).</p></li>
<li><p><span class="math notranslate nohighlight">\(\displaystyle \forall\ \lambda_1, \dots, \lambda_n \in \mathbb{K}, \quad\sum_{i=1}^{n}\lambda_i b_i=0\Longrightarrow \lambda_i = 0 \quad\forall\ i\)</span>.
(On dit que les éléments de <span class="math notranslate nohighlight">\(\mathcal{B}\)</span> sont <em>linéairement
indépendants</em>).</p></li>
</ul>
<div class="line-block">
<div class="line">Lorsque <span class="math notranslate nohighlight">\(\displaystyle u = \sum_{i=1}^{n}c_i b_i\)</span>, on dit que
<span class="math notranslate nohighlight">\(c_1, \dots, c_n\)</span> sont les coordonnées de <span class="math notranslate nohighlight">\(u\)</span> dans la base
<span class="math notranslate nohighlight">\(\mathcal{B}\)</span>. Si de plus aucune confusion n’est à craindre, on
peut écrire:</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-1">
<span class="eqno">(2)<a class="headerlink" href="#equation-chapter2-1" title="Permalink to this equation">¶</a></span>\[\begin{split}\mathbf{u}=\begin{bmatrix}
c_1\\c_2\\ \vdots\\ c_n
\end{bmatrix}.\end{split}\]</div>
<p><strong>Définition.</strong> Le nombre d’éléments dans une base d’un espace
vectoriel est appelé <strong>dimension</strong> de l’espace vectoriel.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><strong>NB:</strong> Un espace vectoriel ne peut être vide (il contient toujours le
vecteur nul). L’<strong>espace vectoriel nul</strong> <span class="math notranslate nohighlight">\(\{0\}\)</span> n’a pas de
base et est <strong>de dimension nulle</strong>. Tout <strong>espace vectoriel non nul</strong>
de dimension finie admet une infinité de bases mais sa <strong>dimension est
unique</strong>.</div>
<div class="line"><strong>Exemples d’espaces vectoriels</strong>: Pour tous <span class="math notranslate nohighlight">\(n,m\ge1\)</span>,
l’ensemble des matrices <span class="math notranslate nohighlight">\(\mathcal{M}_{nm}\)</span> à coefficients réels
et l’ensemble <span class="math notranslate nohighlight">\(\mathbb{R}^n\)</span> sont des <span class="math notranslate nohighlight">\(\mathbb{R}\)</span>-espace
vectoriels. En effet, il est très facile de vérifier que nos exemples
satisfont les huit propriétés énoncées plus haut. Dans le cas
particulier <span class="math notranslate nohighlight">\(V=\mathbb{R}^n\)</span>, toute famille d’exactement
<span class="math notranslate nohighlight">\(n\)</span> vecteurs linéairement indépendants en est une base. En
revanche, toute famille de moins de <span class="math notranslate nohighlight">\(n\)</span> vecteurs ou qui contient
plus que <span class="math notranslate nohighlight">\(n\)</span> vecteurs ne peut être une base de
<span class="math notranslate nohighlight">\(\mathbb{R}^n\)</span>.</div>
</div>
<p><strong>Matrices</strong>: Soit <span class="math notranslate nohighlight">\(\mathbb{K}\)</span> un corps commutatif. Une matrice
en mathématiques à valeurs dans <span class="math notranslate nohighlight">\(\mathbb{K}\)</span> est un tableau de
nombres, où chaque nombre est un élément de <span class="math notranslate nohighlight">\(\mathbb{K}\)</span>. Chaque
ligne d’une telle matrice est un vecteur (élément d’un
<span class="math notranslate nohighlight">\(\mathbb{K}\)</span>-espace vectoriel). Une matrice est de la forme:</p>
<div class="math notranslate nohighlight" id="equation-chapter2-2">
<span class="eqno">(3)<a class="headerlink" href="#equation-chapter2-2" title="Permalink to this equation">¶</a></span>\[\begin{split}\mathbf{M}=\begin{bmatrix}
a_{11} &a_{12} \dots a_{1n}\\
a_{21} &a_{22} \dots a_{2n}\\
\vdots\\
a_{m1}& a_{m2} \dots a_{mn}
\end{bmatrix}.\end{split}\]</div>
<p>On note aussi
<span class="math notranslate nohighlight">\(\mathbf{M}=\big{(}a_{ij}\big{)}_{1\le i\le m, 1\le j\le n}\)</span>.</p>
<div class="line-block">
<div class="line">La matrice ci-dessus est carrée si <span class="math notranslate nohighlight">\(m=n\)</span>. Dans ce cas, la suite
<span class="math notranslate nohighlight">\([a_{11}, a_{22}, \dots, a_{mm}]\)</span> est appelée <strong>diagonale</strong> de
<span class="math notranslate nohighlight">\(M\)</span>. Si tous les coefficients hors de la diagonale sont zéro, on
dit que la matrice est diagonale. Une matrice avec tous ses
coefficients nuls est dite matrice <strong>nulle</strong>.</div>
<div class="line"><strong>Produit de matrices.</strong> Soient
<span class="math notranslate nohighlight">\(\mathbf{A}=\big{(}a_{ij}\big{)}_{1\le i\le m, 1\le j\le n}, \mathbf{B}=\big{(}b_{ij}\big{)}_{1\le i\le n, 1\le j\le q}\)</span>
deux matrices.</div>
<div class="line">On définit le produit de <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> par <span class="math notranslate nohighlight">\(\mathbf{B}\)</span> et
on note <span class="math notranslate nohighlight">\(\mathbf{A}\times \mathbf{B}\)</span> ou simplement
<span class="math notranslate nohighlight">\(\mathbf{A}\mathbf{B}\)</span>, la matrice <span class="math notranslate nohighlight">\(M\)</span> définie par:</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-3">
<span class="eqno">(4)<a class="headerlink" href="#equation-chapter2-3" title="Permalink to this equation">¶</a></span>\[\begin{aligned}
\mathbf{M}_{ij} = \sum_{\ell=1}^{n}a_{i\ell}b_{\ell j}, \text{ pour tout } i \text{ et } j.\end{aligned}\]</div>
<p><strong>Important.</strong></p>
</div></blockquote>
<ul class="simple">
<li><p>Le produit <span class="math notranslate nohighlight">\(\mathbf{AB}\)</span> est possible si et seulement si le
nombre de colonnes de <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est égal au nombre de lignes
de <span class="math notranslate nohighlight">\(\mathbf{B}\)</span>.</p></li>
<li><p>Dans ce cas, <span class="math notranslate nohighlight">\(\mathbf{AB}\)</span> a le même nombre de lignes que
<span class="math notranslate nohighlight">\(\mathbf{A}\)</span> et le même nombre de colonnes que
<span class="math notranslate nohighlight">\(\mathbf{B}\)</span>.</p></li>
<li><p>Un autre point important à noter est que le produit matriciel n’est
pas commutatif (<span class="math notranslate nohighlight">\(\mathbf{AB}\)</span> n’est pas toujours égal à
<span class="math notranslate nohighlight">\(\mathbf{BA}\)</span>).</p></li>
</ul>
<p><strong>Exemple.</strong> Soient les matrices <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> et
<span class="math notranslate nohighlight">\(\mathbf{B}\)</span> définies par:</p>
<div class="math notranslate nohighlight" id="equation-chapter2-4">
<span class="eqno">(5)<a class="headerlink" href="#equation-chapter2-4" title="Permalink to this equation">¶</a></span>\[\begin{split}\mathbf{A} = \begin{bmatrix}
2 & -3 & 0\\
5 &11 & 5\\
1& 2 & 3
\end{bmatrix}, \quad \mathbf{B} = \begin{bmatrix}
1 & 3\\
-5 &1\\
1 & 2
\end{bmatrix},
\mathbf{A}+\mathbf{B} = \begin{bmatrix}
1 & 3\\
-5 &1\\
1 & 2
\end{bmatrix}\end{split}\]</div>
<p>Le nombre de colonnes de la matrice <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est égal au
nombre de lignes de la matrice <span class="math notranslate nohighlight">\(\mathbf{B}\)</span>.</p>
<div class="math notranslate nohighlight" id="equation-chapter2-5">
<span class="eqno">(6)<a class="headerlink" href="#equation-chapter2-5" title="Permalink to this equation">¶</a></span>\[\begin{split}\mathbf{AB} = \begin{bmatrix}
2\times1+(-3)\times(-5)+0\times1 & 2\times3+(-3)\times1+0\times2\\
5\times1+11\times(-5)+5\times1 &5\times3+11\times1+5\times2\\
1\times1+2\times(-5)+3\times1& 1\times3+2\times1+3\times2
\end{bmatrix} = \begin{bmatrix}
17 & 3\\
-45 &33\\
-6 & 11
\end{bmatrix}.\end{split}\]</div>
<p>Le produit <span class="math notranslate nohighlight">\(\mathbf{BA}\)</span> n’est cependant pas possible.</p>
<div class="line-block">
<div class="line"><strong>Somme de matrices et multiplication d’une matrice par un scalaire.</strong></div>
<div class="line">La somme de matrices et multiplication d’une matrice par un scalaire
se font coefficients par coefficients.</div>
<div class="line">Avec les matrice <span class="math notranslate nohighlight">\(\mathbf{A}, \mathbf{B}\)</span> de l’exemple
précédent, et
<span class="math notranslate nohighlight">\(\mathbf{C}=\begin{bmatrix} -2 & -7 & 3\\ 5 &10 & 5\\ 12& 9 & 3 \end{bmatrix}\)</span>,
on a:</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-6">
<span class="eqno">(7)<a class="headerlink" href="#equation-chapter2-6" title="Permalink to this equation">¶</a></span>\[\begin{split}\mathbf{A}+ \mathbf{C} = \begin{bmatrix}
2+(-2) & -3+(-7) & 0+3\\
5+5 &11+10 & 5+5\\
1+12& 2+9 & 3+3
\end{bmatrix}=\begin{bmatrix}
0 & -10 & 3\\
10 &21 & 10\\
13& 11 & 6
\end{bmatrix}, \text{ et pour tout } \lambda \in \mathbb{R}, \quad
\lambda \mathbf{B} = \begin{bmatrix}
\lambda & 3 \lambda\\
-5 \lambda & \lambda\\
\lambda & 2\lambda
\end{bmatrix}.\end{split}\]</div>
</div></blockquote>
<div class="line-block">
<div class="line"><strong>NB:</strong> La somme de matrice n’est définie que pour des matrices de
même taille.</div>
<div class="line"><strong>Déterminant d’une matrice.</strong></div>
</div>
<p>Soit <span class="math notranslate nohighlight">\(\mathbf{A}=(a_{ij})_{1\le i\le n, 1\le j\le n}\)</span> une matrice
carrée d’ordre <span class="math notranslate nohighlight">\(n\)</span>. Soit <span class="math notranslate nohighlight">\(\mathbf{A}_{i,j}\)</span> la sous-matrice
de <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> obtenue en supprimant la ligne <span class="math notranslate nohighlight">\(i\)</span> et la
colonne <span class="math notranslate nohighlight">\(j\)</span> de <span class="math notranslate nohighlight">\(\mathbf{A}\)</span>. On appelle <strong>déterminant</strong> (au
développement suivant la ligne <span class="math notranslate nohighlight">\(i\)</span>) de <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> et on
note <span class="math notranslate nohighlight">\(\operatorname{det}(\mathbf{A})\)</span>, le nombre</p>
<div class="math notranslate nohighlight" id="equation-chapter2-7">
<span class="eqno">(8)<a class="headerlink" href="#equation-chapter2-7" title="Permalink to this equation">¶</a></span>\[\begin{aligned}
\operatorname{det}(\mathbf{A}) = \sum_{j=1}^{n}a_{ij}(-1)^{i+j}\operatorname{det}(\mathbf{A}_{i,j}),\end{aligned}\]</div>
<p>avec le déterminant d’une matrice carrée de taille <span class="math notranslate nohighlight">\(2\times 2\)</span>
donné par:</p>
<div class="math notranslate nohighlight" id="equation-chapter2-8">
<span class="eqno">(9)<a class="headerlink" href="#equation-chapter2-8" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
\operatorname{det} \left(\begin{bmatrix}
a & b\\
c & d\\
\end{bmatrix}\right) = ad-bc.\end{aligned}\end{split}\]</div>
<div class="line-block">
<div class="line"><strong>NB:</strong> Le développement suivant toutes les lignes donne le même
résultat.</div>
<div class="line">Le déterminant d’une matrice a une deuxième formulation dite de
<a class="reference external" href="https://fr.wikipedia.org/wiki/Formule_de_Leibniz#D">Leibniz</a> que
nous n’introduisons pas dans ce document.</div>
<div class="line"><strong>Inverse d’une matrice.</strong> Soit <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> une matrice carrée
d’ordre <span class="math notranslate nohighlight">\(n\)</span>. <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est <strong>inversible</strong> s’il existe
une autre matrice notée <span class="math notranslate nohighlight">\(\mathbf{A}^{-1}\)</span> telle que
<span class="math notranslate nohighlight">\(\mathbf{A}\mathbf{A}^{-1}=\mathbf{A}^{-1}\mathbf{A}=\mathbf{I}_n\)</span>,
où <span class="math notranslate nohighlight">\(\mathbf{I}_n\)</span> est la matrice identité de taille
<span class="math notranslate nohighlight">\(n\times n\)</span>.</div>
<div class="line">Les matrices, leurs inverses et les opérations sur les matrices sont
d’une importance capitale dans l’apprentissage automatique.</div>
<div class="line"><strong>Vecteurs propres, valeurs propres d’une matrice.</strong></div>
<div class="line">Soient <span class="math notranslate nohighlight">\(E\)</span> un espace vectoriel et <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> une
matrice. Un vecteur <span class="math notranslate nohighlight">\(\mathbf{v}\in E\)</span> est dit <strong>vecteur propre</strong>
de <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> si <span class="math notranslate nohighlight">\(\mathbf{v}\neq 0\)</span> et il existe un
scalaire <span class="math notranslate nohighlight">\(\lambda\)</span> tel que
<span class="math notranslate nohighlight">\(\mathbf{A}\mathbf{v}=\lambda \mathbf{v}\)</span>. Dans ce cas, on dit
que <span class="math notranslate nohighlight">\(\lambda\)</span> est la <strong>valeur propre</strong> associée au vecteur
propre <span class="math notranslate nohighlight">\(\mathbf{v}\)</span>.</div>
</div>
<div class="line-block">
<div class="line"><strong>Applications linéaires et changement de base d’espaces vectoriels.</strong></div>
<div class="line">Soient <span class="math notranslate nohighlight">\((E, \mathcal{B}),\ (F, \mathcal{G})\)</span> deux
<span class="math notranslate nohighlight">\(\mathbb{K}\)</span>-espace vectoriels, chacun muni d’une base et
<span class="math notranslate nohighlight">\(f:\ E \rightarrow F\)</span> une application.</div>
<div class="line">On dit que <span class="math notranslate nohighlight">\(f\)</span> est <strong>linéaire</strong> si les propriétés suivantes sont
satisfaites:</div>
</div>
<ol class="arabic simple">
<li><p>Pour tous <span class="math notranslate nohighlight">\(\mathbf{u}, \mathbf{v}\in E\)</span>,
<span class="math notranslate nohighlight">\(f(\mathbf{u}+\mathbf{v})=f(\mathbf{u})+f(\mathbf{v})\)</span>.</p></li>
<li><p>Pour tout <span class="math notranslate nohighlight">\((\lambda, \mathbf{u}) \in \mathbb{K}\times E\)</span>,
<span class="math notranslate nohighlight">\(f(\lambda \mathbf{u})=\lambda f(\mathbf{u})\)</span>.</p></li>
</ol>
<div class="line-block">
<div class="line">On suppose que <span class="math notranslate nohighlight">\(\mathcal{B}=\{e_1, e_2, \dots, e_n\}\)</span> et
<span class="math notranslate nohighlight">\(\mathcal{G}=\{e'_1, e'_2, \dots, e'_m\}\)</span>.</div>
<div class="line">De manière équivalente, <span class="math notranslate nohighlight">\(f\)</span> est linéaire s’il existe une matrice
<span class="math notranslate nohighlight">\(\mathbf{A}\)</span> telle que pour tout
<span class="math notranslate nohighlight">\(\mathbf{x}\in E, \quad f(x)=\mathbf{A}\mathbf{x}\)</span>.</div>
<div class="line">Dans ce cas, la matrice <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> que l’on note
<span class="math notranslate nohighlight">\(Mat_{\mathcal{B},\mathcal{G}}(f)\)</span> est appelée matrice
(représentative) de l’application linéaire <span class="math notranslate nohighlight">\(f\)</span> dans le couple de
coordonnées <span class="math notranslate nohighlight">\((\mathcal{B},\mathcal{G})\)</span>.</div>
<div class="line">La matrice <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est unique et de taille
<span class="math notranslate nohighlight">\(m\times n\)</span> (notez la permutation <em>dimension de l’espace
d’arrivée puis dimension de l’espace de départ dans la taille de la
matrice</em>). De plus, la colonne <span class="math notranslate nohighlight">\(j\)</span> de la matrice
<span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est constituée des coordonnées de <span class="math notranslate nohighlight">\(f(e_j)\)</span>
dans la base <span class="math notranslate nohighlight">\(\mathcal{G}\)</span> de <span class="math notranslate nohighlight">\(F\)</span>. Lorsque <span class="math notranslate nohighlight">\(E=F\)</span>,
l’application linéaire <span class="math notranslate nohighlight">\(f\)</span> est appelée <strong>endomorphisme</strong> de
<span class="math notranslate nohighlight">\(E\)</span> et on écrit simplement <span class="math notranslate nohighlight">\(Mat_{\mathcal{B}}(f)\)</span> au lieu
de <span class="math notranslate nohighlight">\(Mat_{\mathcal{B},\mathcal{G}}(f)\)</span>.</div>
</div>
<div class="line-block">
<div class="line"><strong>Définition.</strong> Soient <span class="math notranslate nohighlight">\(E\)</span> un espace vectoriel de dimension
finie et, <span class="math notranslate nohighlight">\(\mathcal{B}\)</span> et <span class="math notranslate nohighlight">\(\mathcal{C}\)</span>, deux bases de
<span class="math notranslate nohighlight">\(E\)</span>. On appelle <strong>matrice de passage</strong> de la base
<span class="math notranslate nohighlight">\(\mathcal{B}\)</span> à la base <span class="math notranslate nohighlight">\(\mathcal{C}\)</span> la matrice de
l’application identité</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-9">
<span class="eqno">(10)<a class="headerlink" href="#equation-chapter2-9" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
id_E: \quad &(E, \mathcal{C})\rightarrow (E, \mathcal{B}):\\
& x \mapsto x\quad .\end{aligned}\end{split}\]</div>
<p>Cette matrice est notée <span class="math notranslate nohighlight">\(P_{\mathcal{B}}^{\mathcal{C}}\)</span> et on
a
<span class="math notranslate nohighlight">\(P_{\mathcal{B}}^{\mathcal{C}}:=Mat_{\mathcal{C},\mathcal{B}}(id_E)\)</span>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><strong>Note:</strong> Si
<span class="math notranslate nohighlight">\(\mathbf{x}=\begin{bmatrix} x_1\\x_2\\ \vdots\\ x_n \end{bmatrix}\)</span>
est un vecteur de <span class="math notranslate nohighlight">\(E\)</span> exprimé dans la base <span class="math notranslate nohighlight">\(\mathcal{B}\)</span>,
alors l’expression de <span class="math notranslate nohighlight">\(\mathbf{x}\)</span> dans la base
<span class="math notranslate nohighlight">\(\mathcal{C}\)</span> est donnée par
<span class="math notranslate nohighlight">\(\begin{bmatrix} x'_1\\x'_2\\ \vdots\\ x'_n \end{bmatrix}=(P_{\mathcal{B}}^{\mathcal{C}})^{-1}\mathbf{x}=P_{\mathcal{C}}^{\mathcal{B}}\mathbf{x}\)</span>.</div>
<div class="line"><strong>Exemple.</strong> Si <span class="math notranslate nohighlight">\(E=\mathbb{R}^3\)</span> avec ses deux bases</div>
</div>
<div class="line-block">
<div class="line"><br /></div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-10">
<span class="eqno">(11)<a class="headerlink" href="#equation-chapter2-10" title="Permalink to this equation">¶</a></span>\[\begin{split}\mathcal{B}=\left(
\begin{bmatrix}
1\\0\\0
\end{bmatrix},\begin{bmatrix}
0\\1\\0
\end{bmatrix},\begin{bmatrix}
0\\0\\1
\end{bmatrix}
\right) \text{ et } \mathcal{C}=\left(
\begin{bmatrix}
-1\\2\\3
\end{bmatrix},\begin{bmatrix}
0\\1\\5
\end{bmatrix},\begin{bmatrix}
0\\0\\1
\end{bmatrix}
\right),\end{split}\]</div>
<p>on a
<span class="math notranslate nohighlight">\(P_{\mathcal{B}}^{\mathcal{C}} = \begin{bmatrix} -1&0&0\\ 2&1&0\\ 3&5&1 \end{bmatrix}\)</span>
(c’est-à-dire qu’on exprime les vecteurs de <span class="math notranslate nohighlight">\(\mathcal{C}\)</span> dans
<span class="math notranslate nohighlight">\(\mathcal{B}\)</span> pour former
<span class="math notranslate nohighlight">\(P_{\mathcal{B}}^{\mathcal{C}}\)</span>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><strong>Formule du changement de base pour une application linéaire.</strong></div>
<div class="line">Soient <span class="math notranslate nohighlight">\(E\)</span> une application linéaire et, <span class="math notranslate nohighlight">\(\mathcal{B}\)</span> et
<span class="math notranslate nohighlight">\(\mathcal{C}\)</span>, deux bases de <span class="math notranslate nohighlight">\(E\)</span>. Alors</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-11">
<span class="eqno">(12)<a class="headerlink" href="#equation-chapter2-11" title="Permalink to this equation">¶</a></span>\[Mat_{\mathcal{C}}(f)=P_{\mathcal{C}}^{\mathcal{B}} Mat_{\mathcal{B}}(f)P_{\mathcal{B}}^{\mathcal{C}},\]</div>
<p>ou encore</p>
<div class="math notranslate nohighlight" id="equation-chapter2-12">
<span class="eqno">(13)<a class="headerlink" href="#equation-chapter2-12" title="Permalink to this equation">¶</a></span>\[Mat_{\mathcal{C}}(f)=(P_{\mathcal{B}}^{\mathcal{C}})^{-1} Mat_{\mathcal{B}}(f)P_{\mathcal{B}}^{\mathcal{C}}.\]</div>
</div></blockquote>
<div class="line-block">
<div class="line"><strong>Diagonalisation et décomposition en valeurs singulières.</strong></div>
<div class="line"><strong>Diagonalisation.</strong> Soit <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> une matrice carrée à
coefficients dans
<span class="math notranslate nohighlight">\(\mathbb{K}=\mathbb{R} \text{ ou } \mathbb{C}\)</span>. On dit que
<span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est <strong>diagonalisable</strong> s’il existe une matrice
inversible <span class="math notranslate nohighlight">\(\mathbf{P}\)</span> et une matrice diagonale
<span class="math notranslate nohighlight">\(\mathbf{D}\)</span> telles que
<span class="math notranslate nohighlight">\(\mathbf{A} = \mathbf{P}\mathbf{D}\mathbf{P}^{-1}\)</span>. On dit aussi
que <span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est similaire à <span class="math notranslate nohighlight">\(\mathbf{D}\)</span>.</div>
<div class="line"><strong>Important.</strong> Soient <span class="math notranslate nohighlight">\(E\)</span> un espace vectoriel de dimension finie
et <span class="math notranslate nohighlight">\(f\)</span> un endomorphisme de <span class="math notranslate nohighlight">\(E\)</span> de matrice représentative
(dans une base <span class="math notranslate nohighlight">\(\mathcal{B}\)</span> de <span class="math notranslate nohighlight">\(E\)</span>) diagonalisable
<span class="math notranslate nohighlight">\(\mathbf{A}=\mathbf{P}\mathbf{D}\mathbf{P}^{-1}\)</span>. On rappelle
que les colonnes de <span class="math notranslate nohighlight">\(\mathbf{P}\)</span> sont les vecteurs propres de
<span class="math notranslate nohighlight">\(\mathbf{A}\)</span>. Alors ces colonnes (dans leur ordre) constituent
une base de <span class="math notranslate nohighlight">\(E\)</span>, et dans cette base, la matrice
<span class="math notranslate nohighlight">\(\mathbf{A}\)</span> est représentée par la matrice diagonale
<span class="math notranslate nohighlight">\(\mathbf{D}\)</span>. En d’autres termes, si <span class="math notranslate nohighlight">\(\mathcal{C}\)</span> est la
base des vecteurs propres de <span class="math notranslate nohighlight">\(\mathbf{A}\)</span>, alors
<span class="math notranslate nohighlight">\(Mat_{\mathcal{C}}(f)=\mathbf{D}\)</span>. Enfin, la matrice
<span class="math notranslate nohighlight">\(\mathbf{D}\)</span> est constituée des valeurs propres de
<span class="math notranslate nohighlight">\(\mathbf{A}\)</span> et le processus de calcul de <span class="math notranslate nohighlight">\(\mathbf{P}\)</span> et
<span class="math notranslate nohighlight">\(\mathbf{D}\)</span> est appelé <strong>diagonalisation</strong>.</div>
<div class="line"><strong>Décomposition en valeurs singulières.</strong></div>
<div class="line">Soit <span class="math notranslate nohighlight">\(\mathbf{M}\)</span> une matrice de taille <span class="math notranslate nohighlight">\(m\times n\)</span> et à
coefficients dans
<span class="math notranslate nohighlight">\(\mathbb{K}=\mathbb{R} \text{ ou } \mathbb{C}\)</span>. Alors
<span class="math notranslate nohighlight">\(\mathbf{M}\)</span> admet une factorisation de la forme
<span class="math notranslate nohighlight">\(\mathbf{M}=\mathbf{U}\mathbf{\Sigma} \mathbf{V}^*\)</span>, où $$</div>
</div>
<ul>
<li><div class="line-block">
<div class="line"><span class="math notranslate nohighlight">\(\mathbf{U}\)</span> est une matrice unitaire (sur
<span class="math notranslate nohighlight">\(\mathbb{K}\)</span>) de taille <span class="math notranslate nohighlight">\(m\times m\)</span>.</div>
</div>
</li>
<li><div class="line-block">
<div class="line"><span class="math notranslate nohighlight">\(\mathbf{V}^*\)</span> est l’adjoint (conjugué de la transposée) de
<span class="math notranslate nohighlight">\(\mathbf{V}\)</span>, matrice unitaire (sur <span class="math notranslate nohighlight">\(\mathbb{K}\)</span>) de
taille <span class="math notranslate nohighlight">\(n\times n\)</span></div>
</div>
</li>
<li><p><span class="math notranslate nohighlight">\(\mathbf{\Sigma}\)</span> est une matrice de taille <span class="math notranslate nohighlight">\(m\times n\)</span>
dont les coefficients diagonaux sont les valeurs singulières de
<span class="math notranslate nohighlight">\(\mathbf{M}\)</span>, i.e, les racines carrées des valeurs propres de
<span class="math notranslate nohighlight">\(\mathbf{M}^*\mathbf{M}\)</span> et tous les autres coefficients sont
nuls.</p></li>
</ul>
<p>Cette factorisation est appelée <strong>la décomposition en valeurs
singulières</strong> de <span class="math notranslate nohighlight">\(\mathbf{M}\)</span>. <strong>Important.</strong> Si la matrice
<span class="math notranslate nohighlight">\(\mathbf{M}\)</span> est de rang <span class="math notranslate nohighlight">\(r\)</span>, alors</p>
<ul>
<li><div class="line-block">
<div class="line">les <span class="math notranslate nohighlight">\(r\)</span> premières colonnes de <span class="math notranslate nohighlight">\(\mathbf{U}\)</span> sont les
vecteurs singuliers à gauche de <span class="math notranslate nohighlight">\(\mathbf{M}\)</span></div>
</div>
</li>
<li><p>les <span class="math notranslate nohighlight">\(r\)</span> premières colonnes de <span class="math notranslate nohighlight">\(\mathbf{V}\)</span> sont les
vecteurs singuliers à droite de <span class="math notranslate nohighlight">\(\mathbf{M}\)</span></p></li>
<li><p>les <span class="math notranslate nohighlight">\(r\)</span> premiers coefficients strictement positifs de la
diagonale de <span class="math notranslate nohighlight">\(\mathbf{\Sigma}\)</span> sont les valeurs singulières de
<span class="math notranslate nohighlight">\(\mathbf{M}\)</span> et tous les autres coefficients sont nuls.</p></li>
</ul>
<div class="line-block">
<div class="line"><strong>Produit scalaire et normes vectorielles.</strong> Soit <span class="math notranslate nohighlight">\(V\)</span> un espace
vectoriel sur <span class="math notranslate nohighlight">\(\mathbb{R}\)</span>.</div>
<div class="line">On appelle produit scalaire sur <span class="math notranslate nohighlight">\(V\)</span> toute application</div>
</div>
<div class="math notranslate nohighlight" id="equation-chapter2-13">
<span class="eqno">(14)<a class="headerlink" href="#equation-chapter2-13" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
\big{<}.,.\big{>}:\quad &V\times V\rightarrow{\mathbb{R}}\\
&(\mathbf{u},\mathbf{v})\mapsto \big{<}\mathbf{u},\mathbf{v}\big{>}, \end{aligned}\end{split}\]</div>
<p>telle que,
<span class="math notranslate nohighlight">\(\forall ( \lambda_1, \lambda_2, \mathbf{u}, \mathbf{v}, \mathbf{w}) \in \mathbb{R}\times\mathbb{R}\times V\times V \times V,\)</span></p>
<ul class="simple">
<li><p><span class="math notranslate nohighlight">\(\langle\mathbf{u}, \mathbf{v}\rangle = \langle\mathbf{v}, \mathbf{u}\rangle\)</span>(symétrie)</p></li>
<li><ol class="arabic simple">
<li><p><span class="math notranslate nohighlight">\(\langle\lambda_1 \mathbf{u}+\lambda_2 \mathbf{v}, \mathbf{w}\rangle = \lambda_1\langle \mathbf{u},\mathbf{w}\rangle +\lambda_2\langle \mathbf{v},\mathbf{w}\rangle\)</span>
(linéarité à gauche)</p></li>
<li><p><span class="math notranslate nohighlight">\(\langle\mathbf{u}, \lambda_1 \mathbf{v}+\lambda_2 \mathbf{w}\rangle = \lambda_1\langle \mathbf{u},\mathbf{v}\rangle +\lambda_2\langle \mathbf{u},\mathbf{w}\rangle\)</span>
(linéarité à droite)</p></li>
</ol>
</li>
<li><p><span class="math notranslate nohighlight">\(\langle\mathbf{u}, \mathbf{u}\rangle \geq 0 \qquad\)</span> (positive)</p></li>
<li><p><span class="math notranslate nohighlight">\(\langle\mathbf{u}, \mathbf{u}\rangle = 0 \implies \mathbf{u}=0 \qquad\)</span>
(définie)</p></li>
</ul>
<div class="math notranslate nohighlight" id="equation-chapter2-14">
<span class="eqno">(15)<a class="headerlink" href="#equation-chapter2-14" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
\|.\|: \quad&V\rightarrow{\mathbb{R_{+}}}\\
&\mathbf{v}\mapsto \|\mathbf{v}\|\end{aligned}\end{split}\]</div>
<div class="line-block">
<div class="line"><span class="math notranslate nohighlight">\(V\)</span>
<span class="math notranslate nohighlight">\(\forall\ (\lambda, \mathbf{u}, \mathbf{v})\in \mathbb{R}\times V\times V\)</span></div>
</div>
<ul class="simple">
<li><p><span class="math notranslate nohighlight">\(\|\lambda\mathbf{u}\| = |\lambda| \times \|\mathbf{u}\|\)</span></p></li>
<li><p><span class="math notranslate nohighlight">\(\|\mathbf{u} + \mathbf{v} \| \leq \|\mathbf{u}\| + \|\mathbf{u}\| + \|v\|\)</span>(inégalité
triangulaire)</p></li>
</ul>
<p><strong>Remarque 2</strong> Si <span class="math notranslate nohighlight">\(\big{<}.,.\big{>}\)</span> est un produit scalaire sur
<span class="math notranslate nohighlight">\(V\)</span>, alors <span class="math notranslate nohighlight">\(\big{<}.,.\big{>}\)</span> induit une norme sur
<span class="math notranslate nohighlight">\(V\)</span>. En effet,</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-15">
<span class="eqno">(16)<a class="headerlink" href="#equation-chapter2-15" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
\|.\|_{\big{<}.,.\big{>}}:\quad&V\rightarrow{\mathbb{R_{+}}}\\
& \mathbf{u}\mapsto \|\mathbf{u}\|=\sqrt{\big{<}\mathbf{u},\mathbf{u}\big{>}}\end{aligned}\end{split}\]</div>
</div></blockquote>
<div class="line-block">
<div class="line"><strong>Exemples de normes et produits scalaires.</strong></div>
<div class="line">Prenons <span class="math notranslate nohighlight">\(V=\mathbb{R}^n\)</span>.</div>
<div class="line"><span class="math notranslate nohighlight">\(\bullet\)</span> Les applications</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-16">
<span class="eqno">(17)<a class="headerlink" href="#equation-chapter2-16" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
\rho:\quad &V\times V\rightarrow{\mathbb{R}}\\
&(\mathbf{u},\mathbf{v})\mapsto \sum_{i=1}^{n}u_iv_i ,\end{aligned}\end{split}\]</div>
</div></blockquote>
<div class="line-block">
<div class="line">et</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-17">
<span class="eqno">(18)<a class="headerlink" href="#equation-chapter2-17" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
\mu:\quad &V\rightarrow{\mathbb{R}_+}\\
&\mathbf{u}\mapsto \sqrt{\sum_{i=1}^{n}u_i^2},\end{aligned}\end{split}\]</div>
<p>sont respectivement un produit scalaire et une norme sur <span class="math notranslate nohighlight">\(V\)</span>.
Il faut remarquer que
<span class="math notranslate nohighlight">\(\forall\ \mathbf{u} \in V, \quad \mu(\mathbf{u})=\sqrt{\rho(\mathbf{u},\mathbf{u})}\)</span>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><span class="math notranslate nohighlight">\(\bullet\)</span> Pour tout <span class="math notranslate nohighlight">\(p\in \mathbb{N}^*\)</span>, l’application</div>
</div>
<blockquote>
<div><div class="math notranslate nohighlight" id="equation-chapter2-18">
<span class="eqno">(19)<a class="headerlink" href="#equation-chapter2-18" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{aligned}
\mu_p:\quad &V\rightarrow{\mathbb{R}_+}\\