a

2999a commited on
Commit
7a4a84e
·
verified ·
1 Parent(s): 5effc80

Upload via hfc (batch)

Browse files

Uploaded using hfc tool

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +8 -0
  2. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/05-Resumen.html +0 -0
  3. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Lecturas recomendadas.txt +1 -0
  4. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Producto EscalarVectores Conceptos y Propiedades Básicas.mp4 +3 -0
  5. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Producto EscalarVectores Conceptos y Propiedades Básicas.vtt +883 -0
  6. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Resumen.html +0 -0
  7. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-producto_escalar_383fadd8-6e92-4690-aefe-72a7454fa87a.ipynb +472 -0
  8. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Lecturas recomendadas.txt +2 -0
  9. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Operaciones con Escalares y Vectores en Python usando NumPy.mp4 +3 -0
  10. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Operaciones con Escalares y Vectores en Python usando NumPy.vtt +883 -0
  11. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Resumen.html +0 -0
  12. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-producto_escalar_ca62b4c4-85e7-449a-8a01-424da3f688a7.ipynb +472 -0
  13. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Lecturas recomendadas.txt +1 -0
  14. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Producto Interno de Vectores Definición y Propiedades.mp4 +3 -0
  15. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Producto Interno de Vectores Definición y Propiedades.vtt +712 -0
  16. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Resumen.html +0 -0
  17. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-producto_interno_a8f30484-9414-46fd-849b-c4125cd68a19.ipynb +447 -0
  18. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Lecturas recomendadas.txt +1 -0
  19. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Producto Interno de Vectores en Python con NumPy.mp4 +3 -0
  20. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Producto Interno de Vectores en Python con NumPy.vtt +604 -0
  21. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Resumen.html +0 -0
  22. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-producto_interno_554a11a7-c20a-4a1c-99e8-4408610d53ae.ipynb +447 -0
  23. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Análisis de Sentimientos de Tweets con Vectores de Palabras.mp4 +3 -0
  24. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Análisis de Sentimientos de Tweets con Vectores de Palabras.vtt +787 -0
  25. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Lecturas recomendadas.txt +1 -0
  26. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Resumen.html +0 -0
  27. a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-producto_interno_d76312cb-c13c-4a95-9c40-827332ec9fef.ipynb +447 -0
  28. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-16-18-am_814169ee-b3bd-4e99-aa84-2fba65f26816.png +0 -0
  29. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-17-04-am_8975d699-1c37-4b6b-a9f7-f8c2b86e0c8e.png +0 -0
  30. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-17-04-am_af62d54c-3dc7-42ee-b203-dbbc6f8bbdd8.png +0 -0
  31. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-17-04-am_d85e6d28-607e-4064-b558-a9bad63631b8.png +0 -0
  32. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Funciones Lineales Transformación de Vectores en Escalares.mp4 +3 -0
  33. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Funciones Lineales Transformación de Vectores en Escalares.vtt +607 -0
  34. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Lecturas recomendadas.txt +1 -0
  35. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Resumen.html +0 -0
  36. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_1_ca9b4768-2259-46e4-8050-1f11fcb161f2.png +0 -0
  37. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_2_a7a8105b-6058-423e-83cf-1a120fa9dbea.png +0 -0
  38. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_t1_a1432d51-f125-4847-b35a-aece8c65e623.png +0 -0
  39. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_t2_40750924-caa5-49c7-ba5d-2d82e4ed6b3c.png +0 -0
  40. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-funciones_lineales_c6d37f3c-958c-4696-be10-f62382807f2c.ipynb +603 -0
  41. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Funciones Lineales y Propiedades de Superposición.mp4 +3 -0
  42. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Funciones Lineales y Propiedades de Superposición.vtt +700 -0
  43. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Lecturas recomendadas.txt +1 -0
  44. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Resumen.html +0 -0
  45. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_1_e9705b8d-df25-4f93-9a4b-0290357a6c0c.png +0 -0
  46. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_2_869e4304-cce7-43be-9ed0-d36af00c8797.png +0 -0
  47. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_t1_9abd2d3c-38bc-4596-9bc7-7cb2b4b0d72e.png +0 -0
  48. a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_t2_5f9fbb8a-3b72-4513-b759-b5d63f6b3590.png +0 -0
  49. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-funciones_lineales_d6135d0f-fc5c-405c-b74f-b88766a8ce07.ipynb +603 -0
  50. a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/03-Teoremas y Corolarios en Funciones Lineales.mp4 +3 -0
.gitattributes CHANGED
@@ -575,3 +575,11 @@ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:s
575
  a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/03-Modelo[[:space:]]RGB[[:space:]]y[[:space:]]su[[:space:]]implementación[[:space:]]en[[:space:]]Python.mp4 filter=lfs diff=lfs merge=lfs -text
576
  a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/04-Adición[[:space:]]de[[:space:]]Vectores[[:space:]]Conceptos[[:space:]]y[[:space:]]Propiedades[[:space:]]Básicas.mp4 filter=lfs diff=lfs merge=lfs -text
577
  a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/05-Suma[[:space:]]de[[:space:]]Vectores[[:space:]]en[[:space:]]Python[[:space:]]con[[:space:]]NumPy.mp4 filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
575
  a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/03-Modelo[[:space:]]RGB[[:space:]]y[[:space:]]su[[:space:]]implementación[[:space:]]en[[:space:]]Python.mp4 filter=lfs diff=lfs merge=lfs -text
576
  a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/04-Adición[[:space:]]de[[:space:]]Vectores[[:space:]]Conceptos[[:space:]]y[[:space:]]Propiedades[[:space:]]Básicas.mp4 filter=lfs diff=lfs merge=lfs -text
577
  a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/05-Suma[[:space:]]de[[:space:]]Vectores[[:space:]]en[[:space:]]Python[[:space:]]con[[:space:]]NumPy.mp4 filter=lfs diff=lfs merge=lfs -text
578
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/06-Producto[[:space:]]EscalarVectores[[:space:]]Conceptos[[:space:]]y[[:space:]]Propiedades[[:space:]]Básicas.mp4 filter=lfs diff=lfs merge=lfs -text
579
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/07-Operaciones[[:space:]]con[[:space:]]Escalares[[:space:]]y[[:space:]]Vectores[[:space:]]en[[:space:]]Python[[:space:]]usando[[:space:]]NumPy.mp4 filter=lfs diff=lfs merge=lfs -text
580
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/08-Producto[[:space:]]Interno[[:space:]]de[[:space:]]Vectores[[:space:]]Definición[[:space:]]y[[:space:]]Propiedades.mp4 filter=lfs diff=lfs merge=lfs -text
581
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/09-Producto[[:space:]]Interno[[:space:]]de[[:space:]]Vectores[[:space:]]en[[:space:]]Python[[:space:]]con[[:space:]]NumPy.mp4 filter=lfs diff=lfs merge=lfs -text
582
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/02-Vectores/10-Análisis[[:space:]]de[[:space:]]Sentimientos[[:space:]]de[[:space:]]Tweets[[:space:]]con[[:space:]]Vectores[[:space:]]de[[:space:]]Palabras.mp4 filter=lfs diff=lfs merge=lfs -text
583
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/01-Funciones[[:space:]]Lineales[[:space:]]Transformación[[:space:]]de[[:space:]]Vectores[[:space:]]en[[:space:]]Escalares.mp4 filter=lfs diff=lfs merge=lfs -text
584
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/02-Funciones[[:space:]]Lineales[[:space:]]y[[:space:]]Propiedades[[:space:]]de[[:space:]]Superposición.mp4 filter=lfs diff=lfs merge=lfs -text
585
+ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/03-Teoremas[[:space:]]y[[:space:]]Corolarios[[:space:]]en[[:space:]]Funciones[[:space:]]Lineales.mp4 filter=lfs diff=lfs merge=lfs -text
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/05-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://colab.research.google.com/drive/1uF1QvMQBR9B-UPPUKg8d4DVuZNROqUA_?usp=sharing
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Producto EscalarVectores Conceptos y Propiedades Básicas.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:69267f4e501e1dd6c0f7f691293c3b5d98da9d582ede0e28e05b28692c8eeafc
3
+ size 156539143
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Producto EscalarVectores Conceptos y Propiedades Básicas.vtt ADDED
@@ -0,0 +1,883 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.120 --> 00:00:05.759
4
+ Hola, te doy la bienvenida de nuevo. Quizá
5
+
6
+ 00:00:05.759 --> 00:00:08.100
7
+ no te das cuenta, pero ya hemos avanzado
8
+
9
+ 00:00:08.160 --> 00:00:10.960
10
+ una gran parte de este camino. Lo que
11
+
12
+ 00:00:10.960 --> 00:00:14.705
13
+ veremos hoy es el producto entre escalares y
14
+
15
+ 00:00:14.705 --> 00:00:18.305
16
+ vectores. Antes ya vimos una operación entre vectores,
17
+
18
+ 00:00:18.305 --> 00:00:20.625
19
+ que era la suma. En este vamos a
20
+
21
+ 00:00:20.625 --> 00:00:23.904
22
+ ver cómo podemos relacionar los escalares y los
23
+
24
+ 00:00:23.904 --> 00:00:26.510
25
+ vectores. Vamos a hacer un poco de memoria,
26
+
27
+ 00:00:26.810 --> 00:00:29.130
28
+ revisitemos los conceptos o lo que hemos visto
29
+
30
+ 00:00:29.130 --> 00:00:32.090
31
+ rápidamente. Vimos lo que era un vector y
32
+
33
+ 00:00:32.090 --> 00:00:34.890
34
+ vimos también lo que era un escalar. Dijimos
35
+
36
+ 00:00:34.890 --> 00:00:36.650
37
+ que un vector era una lista finita de
38
+
39
+ 00:00:36.650 --> 00:00:42.045
40
+ coeficientes o una lista finita de elementos, mientras
41
+
42
+ 00:00:42.045 --> 00:00:44.524
43
+ que el escalar se refería un a un
44
+
45
+ 00:00:44.524 --> 00:00:48.045
46
+ único elemento, a un único número. También vimos
47
+
48
+ 00:00:48.045 --> 00:00:51.425
49
+ que los escalares son elementos de los campos
50
+
51
+ 00:00:51.805 --> 00:00:55.150
52
+ escalares, de los campos, y vimos que los
53
+
54
+ 00:00:55.150 --> 00:01:00.250
55
+ vectores son elementos de los espacios vectoriales. Vimos
56
+
57
+ 00:01:00.750 --> 00:01:04.430
58
+ cómo operar entre dos elementos de un espacio
59
+
60
+ 00:01:04.430 --> 00:01:07.115
61
+ vectorial, la suma entre vectores, por ejemplo, y
62
+
63
+ 00:01:07.115 --> 00:01:10.575
64
+ de misma manera vimos el modelo auditivo RGB.
65
+
66
+ 00:01:11.195 --> 00:01:13.295
67
+ Ahora vamos a ir un poco más allá.
68
+
69
+ 00:01:14.715 --> 00:01:17.515
70
+ Vamos a ver cómo tomar un elemento del
71
+
72
+ 00:01:17.515 --> 00:01:19.674
73
+ campo escalar y vamos a ver cómo tomar
74
+
75
+ 00:01:19.674 --> 00:01:22.870
76
+ un elemento del espacio vectorial y combinarlos. De
77
+
78
+ 00:01:22.870 --> 00:01:25.590
79
+ igual manera, vamos a ver más adelante cuál
80
+
81
+ 00:01:25.590 --> 00:01:29.590
82
+ es la interpretación geométrica de todo esto. Sin
83
+
84
+ 00:01:29.590 --> 00:01:33.510
85
+ más, vamos a la computadora. Este notebook es
86
+
87
+ 00:01:33.510 --> 00:01:36.315
88
+ un nuevo notebook, no te preocupes para nada,
89
+
90
+ 00:01:36.395 --> 00:01:38.395
91
+ lo vas a tener disponible siempre y vas
92
+
93
+ 00:01:38.395 --> 00:01:40.975
94
+ a poder consultarlo siempre que lo quieras consultar.
95
+
96
+ 00:01:42.075 --> 00:01:46.715
97
+ Así bien, vamos a empezar definiendo lo que
98
+
99
+ 00:01:46.715 --> 00:01:49.740
100
+ va a ser la multiplicación escalar vector. En
101
+
102
+ 00:01:49.740 --> 00:01:53.209
103
+ este caso, simplemente tomemos un vector, un n
104
+
105
+ 00:01:53.209 --> 00:01:56.678
106
+ vector b cualquiera, es decir, un vector de
107
+
108
+ 00:01:56.678 --> 00:02:01.020
109
+ RNY alfa un escalar del campo de los
110
+
111
+ 00:02:01.020 --> 00:02:05.365
112
+ reales, y definamos, a su vez, el vector
113
+
114
+ 00:02:05.424 --> 00:02:09.425
115
+ x como la multiplicación de el escalar alfa
116
+
117
+ 00:02:09.425 --> 00:02:14.145
118
+ por el vector b. Si recordamos de las
119
+
120
+ 00:02:14.145 --> 00:02:18.659
121
+ clases pasadas, nosotros hablamos de notación y dijimos
122
+
123
+ 00:02:18.659 --> 00:02:21.060
124
+ que en algunos casos íbamos a reservar el
125
+
126
+ 00:02:21.060 --> 00:02:24.500
127
+ uso de letras griegas para escalares. Este es
128
+
129
+ 00:02:24.500 --> 00:02:29.215
130
+ el caso. Ahora, ¿cómo se ven los elementos
131
+
132
+ 00:02:29.215 --> 00:02:34.015
133
+ de x? Como alfa es un escalar y
134
+
135
+ 00:02:34.015 --> 00:02:36.975
136
+ b es un n vector, la combinación de
137
+
138
+ 00:02:36.975 --> 00:02:39.135
139
+ alfa y b nos tiene que dar un
140
+
141
+ 00:02:39.135 --> 00:02:42.030
142
+ n vector, es decir, alfa por beta nos
143
+
144
+ 00:02:42.030 --> 00:02:44.270
145
+ da un n vector, y ese vector, en
146
+
147
+ 00:02:44.270 --> 00:02:47.310
148
+ este caso, será el vector x. ¿Cómo se
149
+
150
+ 00:02:47.310 --> 00:02:51.470
151
+ ve entrada por entrada? Bueno, alfa por b
152
+
153
+ 00:02:51.470 --> 00:02:54.444
154
+ no es más que alfa por este vector,
155
+
156
+ 00:02:54.505 --> 00:02:57.385
157
+ que es exactamente el b, v cero, v
158
+
159
+ 00:02:57.385 --> 00:03:00.745
160
+ uno, hasta b n menos uno. Recordemos que
161
+
162
+ 00:03:00.745 --> 00:03:02.905
163
+ como tiene dimensión n, es decir, es un
164
+
165
+ 00:03:02.905 --> 00:03:08.180
166
+ n vector, las entradas corren de desde el
167
+
168
+ 00:03:08.180 --> 00:03:11.459
169
+ cero hasta el n menos uno. ¿Y cómo
170
+
171
+ 00:03:11.459 --> 00:03:13.780
172
+ se verán las entradas de x? Pues simplemente
173
+
174
+ 00:03:13.780 --> 00:03:17.159
175
+ será la primera entrada alfa por b cero,
176
+
177
+ 00:03:17.700 --> 00:03:20.345
178
+ alfa por b cero, la segunda entrada de
179
+
180
+ 00:03:20.345 --> 00:03:23.224
181
+ x será alfa por b uno, la tercera
182
+
183
+ 00:03:23.224 --> 00:03:25.644
184
+ será alfa por b dos, y la enésima
185
+
186
+ 00:03:26.185 --> 00:03:28.605
187
+ entrada será alfa por b n menos uno.
188
+
189
+ 00:03:30.025 --> 00:03:33.004
190
+ Como ejemplo concreto, pensemos en el vector b
191
+
192
+ 00:03:33.144 --> 00:03:37.010
193
+ igual a cero coma uno coma menos dos
194
+
195
+ 00:03:37.010 --> 00:03:39.570
196
+ punto tres, y pensemos que alfa es igual
197
+
198
+ 00:03:39.570 --> 00:03:43.410
199
+ al menos uno punto uno. Entonces, si nosotros
200
+
201
+ 00:03:43.410 --> 00:03:47.010
202
+ multiplicamos entrada por entrada, deberíamos de obtener este
203
+
204
+ 00:03:47.010 --> 00:03:53.118
205
+ vector de aquí, vamos a comprobarlo. Ahora, en
206
+
207
+ 00:03:53.118 --> 00:03:57.545
208
+ Python podemos hacer operaciones entre escalares sin necesidad
209
+
210
+ 00:03:57.545 --> 00:04:00.285
211
+ de llamar a NumPy, entonces vamos a corroborar
212
+
213
+ 00:04:00.665 --> 00:04:03.705
214
+ entrada por entrada. Sabemos que la primera entrada
215
+
216
+ 00:04:03.705 --> 00:04:05.920
217
+ debería de ser cero, que es este número
218
+
219
+ 00:04:05.920 --> 00:04:10.320
220
+ de aquí, por menos uno punto uno, que
221
+
222
+ 00:04:10.320 --> 00:04:13.060
223
+ es nuestro escalar, y eso nos da efectivamente
224
+
225
+ 00:04:13.600 --> 00:04:16.640
226
+ cero. Para fines prácticos, el menos cero o
227
+
228
+ 00:04:16.640 --> 00:04:20.014
229
+ el cero será el cero simplemente. El menos
230
+
231
+ 00:04:20.014 --> 00:04:22.735
232
+ aparece aquí como una representación de los números
233
+
234
+ 00:04:22.735 --> 00:04:25.215
235
+ dentro de Python, pero no te preocupes, cero
236
+
237
+ 00:04:25.215 --> 00:04:27.775
238
+ y menos cero juegan el mismo papel. En
239
+
240
+ 00:04:27.775 --> 00:04:30.835
241
+ la realidad no existe el menos cero, simplemente
242
+
243
+ 00:04:31.055 --> 00:04:35.780
244
+ existe el cero. Ahora veamos la siguiente entrada
245
+
246
+ 00:04:35.780 --> 00:04:37.780
247
+ que es el uno, uno por menos uno
248
+
249
+ 00:04:37.780 --> 00:04:40.100
250
+ punto uno nos debería de dar exactamente menos
251
+
252
+ 00:04:40.100 --> 00:04:43.220
253
+ uno punto uno, y justamente es esta entrada
254
+
255
+ 00:04:43.220 --> 00:04:46.979
256
+ de acá. Y por último tenemos esta entrada
257
+
258
+ 00:04:46.979 --> 00:04:51.205
259
+ que es menos dos punto cincuenta y tres.
260
+
261
+ 00:04:51.205 --> 00:04:54.485
262
+ Veamos que esto sale de multiplicar menos dos
263
+
264
+ 00:04:54.485 --> 00:04:57.525
265
+ punto tres por menos uno punto uno. Menos
266
+
267
+ 00:04:57.525 --> 00:05:00.345
268
+ dos punto tres, nos falta acá un menos,
269
+
270
+ 00:05:00.730 --> 00:05:03.530
271
+ por menos uno punto tres, y exactamente nos
272
+
273
+ 00:05:03.530 --> 00:05:06.490
274
+ da dos punto cincuenta y tres. Te invito
275
+
276
+ 00:05:06.490 --> 00:05:09.050
277
+ a que pienses en Python como tu herramienta,
278
+
279
+ 00:05:09.050 --> 00:05:12.730
280
+ como tu calculadora, como tu forma de sumar,
281
+
282
+ 00:05:12.730 --> 00:05:15.170
283
+ para que te empieces a familiarizar más y
284
+
285
+ 00:05:15.170 --> 00:05:18.195
286
+ empieces a soltar los dedos, como a veces
287
+
288
+ 00:05:18.195 --> 00:05:21.555
289
+ decimos en matemáticas soltar las manos escribiendo, en
290
+
291
+ 00:05:21.555 --> 00:05:25.655
292
+ Python se hará soltar los dedos programando. Ahora,
293
+
294
+ 00:05:26.115 --> 00:05:28.675
295
+ vamos a ver qué propiedades cumple el producto
296
+
297
+ 00:05:28.675 --> 00:05:35.140
298
+ escalar vector. Consideremos dos vectores cualesquiera XYYY también
299
+
300
+ 00:05:35.140 --> 00:05:39.640
301
+ consideremos dos escalares cualesquiera alfa y beta, ¿vale?
302
+
303
+ 00:05:40.740 --> 00:05:44.440
304
+ Recordemos aquí que XYY ambos son n vectores.
305
+
306
+ 00:05:45.544 --> 00:05:47.544
307
+ Ahora, una de las propiedades que va a
308
+
309
+ 00:05:47.544 --> 00:05:50.185
310
+ cumplir la multiplicación de un escalar por un
311
+
312
+ 00:05:50.185 --> 00:05:53.065
313
+ vector es la conmutatividad. Si la recordamos de
314
+
315
+ 00:05:53.065 --> 00:05:56.264
316
+ operaciones pasadas como la suma, sabíamos que si
317
+
318
+ 00:05:56.264 --> 00:05:58.860
319
+ sumamos un vector x más un vector y,
320
+
321
+ 00:05:59.020 --> 00:06:01.020
322
+ era exactamente lo mismo que sumar el vector
323
+
324
+ 00:06:01.020 --> 00:06:03.340
325
+ y más un vector x. En el caso
326
+
327
+ 00:06:03.340 --> 00:06:06.300
328
+ de la conmutatividad de un escalar vector, de
329
+
330
+ 00:06:06.300 --> 00:06:08.479
331
+ una de un producto escalar por un vector,
332
+
333
+ 00:06:08.620 --> 00:06:12.300
334
+ tenemos que alfa por x es igual que
335
+
336
+ 00:06:12.300 --> 00:06:15.845
337
+ x por alfa. En el caso de la
338
+
339
+ 00:06:15.845 --> 00:06:23.385
340
+ asociatividad, tenemos que beta por alfa por x
341
+
342
+ 00:06:23.445 --> 00:06:26.185
343
+ va a ser exactamente lo mismo que beta
344
+
345
+ 00:06:26.565 --> 00:06:30.140
346
+ alfa veces x. Una cosa interesante es que
347
+
348
+ 00:06:30.140 --> 00:06:32.700
349
+ esto de aquí lo podemos leer como alfa
350
+
351
+ 00:06:32.700 --> 00:06:35.120
352
+ veces x, y más adelante en la interpretación
353
+
354
+ 00:06:35.580 --> 00:06:39.420
355
+ geométrica veremos por qué. Ahora, la sociatividad es
356
+
357
+ 00:06:39.420 --> 00:06:41.580
358
+ una propiedad muy interesante porque nos dice que
359
+
360
+ 00:06:41.580 --> 00:06:46.354
361
+ da lo mismo que multipliquemos beta por alfa
362
+
363
+ 00:06:46.354 --> 00:06:49.074
364
+ veces x, que si multiplicamos beta y alfa
365
+
366
+ 00:06:49.074 --> 00:06:51.395
367
+ al mismo tiempo, y después el resultado lo
368
+
369
+ 00:06:51.395 --> 00:06:55.875
370
+ multiplicamos por x. Ahora, está la propiedad de
371
+
372
+ 00:06:55.875 --> 00:06:58.995
373
+ la distribución y tenemos distribución sobre una suma
374
+
375
+ 00:06:58.995 --> 00:07:01.610
376
+ escalar y tenemos una distribución sobre una suma
377
+
378
+ 00:07:01.610 --> 00:07:03.530
379
+ de vectores. En el caso de la suma
380
+
381
+ 00:07:03.530 --> 00:07:06.250
382
+ escalar, consideremos la suma de los escalares alfa
383
+
384
+ 00:07:06.250 --> 00:07:08.690
385
+ más beta. En el caso de los escalares
386
+
387
+ 00:07:08.690 --> 00:07:12.090
388
+ alfa más beta, el resultado será multiplicado a
389
+
390
+ 00:07:12.090 --> 00:07:15.615
391
+ x, pero notemos que en este caso podemos
392
+
393
+ 00:07:16.155 --> 00:07:19.195
394
+ expresar esta operación de aquí como alfa veces
395
+
396
+ 00:07:19.195 --> 00:07:24.235
397
+ x más beta veces x, ¿vale? Entonces da
398
+
399
+ 00:07:24.235 --> 00:07:26.555
400
+ lo mismo si sumamos los escalares y después
401
+
402
+ 00:07:26.555 --> 00:07:31.330
403
+ se lo multiplicamos AX0 bien si sumamos alfa
404
+
405
+ 00:07:31.330 --> 00:07:33.350
406
+ veces x, es decir, la multiplicación del escalar
407
+
408
+ 00:07:34.130 --> 00:07:36.850
409
+ alfa por el vector x, y después le
410
+
411
+ 00:07:36.850 --> 00:07:42.475
412
+ sumamos beta por el escalar x. Ahora, por
413
+
414
+ 00:07:42.475 --> 00:07:45.355
415
+ propiedades de la conmutatividad de la suma, esto
416
+
417
+ 00:07:45.355 --> 00:07:49.215
418
+ lo podemos escribir también como beta por x
419
+
420
+ 00:07:49.715 --> 00:07:55.130
421
+ más alfa por XYA su vez, esto lo
422
+
423
+ 00:07:55.130 --> 00:08:01.450
424
+ podemos expresar como x por alfa más beta,
425
+
426
+ 00:08:01.450 --> 00:08:03.790
427
+ lo cual cumple la propiedad de la conmutatividad
428
+
429
+ 00:08:04.090 --> 00:08:07.770
430
+ también. Entonces, alfa más beta por x es
431
+
432
+ 00:08:07.770 --> 00:08:11.305
433
+ exactamente igual que x por alfa más beta.
434
+
435
+ 00:08:12.805 --> 00:08:15.764
436
+ Por último, veamos la distribución sobre una suma
437
+
438
+ 00:08:15.764 --> 00:08:19.604
439
+ de vectores. Consideramos que tenemos este escalar alfa
440
+
441
+ 00:08:19.604 --> 00:08:22.260
442
+ y estamos sumando los vectores x más y.
443
+
444
+ 00:08:22.340 --> 00:08:24.660
445
+ Por eso, cuando definimos a los vectores x
446
+
447
+ 00:08:24.660 --> 00:08:26.420
448
+ más y, era importante que los dos fueran
449
+
450
+ 00:08:26.420 --> 00:08:29.780
451
+ n vectores. Recordemos que no podemos sumar vectores
452
+
453
+ 00:08:29.780 --> 00:08:32.179
454
+ de diferente dimensión, tienen que ser de la
455
+
456
+ 00:08:32.179 --> 00:08:36.085
457
+ misma dimensión para poder sumarlos. Ahora bien, consideremos
458
+
459
+ 00:08:36.385 --> 00:08:39.424
460
+ alfa por x más y. Alfa por x
461
+
462
+ 00:08:39.424 --> 00:08:42.145
463
+ más y, es decir, sumarlos y después a
464
+
465
+ 00:08:42.145 --> 00:08:45.505
466
+ la suma de estos vectores multiplicarles alfa, es
467
+
468
+ 00:08:45.505 --> 00:08:50.145
469
+ exactamente igual que x que alfa por x
470
+
471
+ 00:08:50.145 --> 00:08:53.190
472
+ más alfa por y, es decir, que la
473
+
474
+ 00:08:53.190 --> 00:08:56.630
475
+ suma de la multiplicación de los escalares de
476
+
477
+ 00:08:56.630 --> 00:09:01.269
478
+ manera individual por los vectores, ¿vale? Más adelante
479
+
480
+ 00:09:01.269 --> 00:09:06.385
481
+ comprobaremos que esto se cumple también computacionalmente. Ahora
482
+
483
+ 00:09:06.385 --> 00:09:09.905
484
+ vamos a algunas consideraciones. En esas consideraciones vamos
485
+
486
+ 00:09:09.905 --> 00:09:14.545
487
+ a ver una forma particular de multiplicación de
488
+
489
+ 00:09:14.545 --> 00:09:17.665
490
+ escalares por vectores. La primera que vamos a
491
+
492
+ 00:09:17.665 --> 00:09:20.829
493
+ ver se llama combinación lineal o combinaciones lineales
494
+
495
+ 00:09:20.829 --> 00:09:23.389
496
+ en plural, y en este caso vamos a
497
+
498
+ 00:09:23.389 --> 00:09:26.670
499
+ considerar m vectores. A estos m vectores les
500
+
501
+ 00:09:26.670 --> 00:09:29.389
502
+ vamos a llamar a cero, a uno, hasta
503
+
504
+ 00:09:29.389 --> 00:09:33.230
505
+ el vector a m menos uno. Y estos
506
+
507
+ 00:09:33.230 --> 00:09:37.125
508
+ m vectores, estos m vectores son n vectores,
509
+
510
+ 00:09:37.125 --> 00:09:40.524
511
+ es decir, tenemos m vectores, m cantidad de
512
+
513
+ 00:09:40.524 --> 00:09:42.925
514
+ vectores, y cada uno de estos vectores es
515
+
516
+ 00:09:42.925 --> 00:09:48.225
517
+ un n vector. Y consideremos también que tenemos
518
+
519
+ 00:09:48.524 --> 00:09:51.860
520
+ n escalares que van desde beta cero hasta
521
+
522
+ 00:09:51.860 --> 00:09:56.580
523
+ beta m menos uno. Con estos escalares y
524
+
525
+ 00:09:56.580 --> 00:10:00.279
526
+ estos vectores podemos definir el siguiente n vector.
527
+
528
+ 00:10:00.900 --> 00:10:03.620
529
+ Recordemos que si estamos sumando dos n vectores,
530
+
531
+ 00:10:03.620 --> 00:10:05.925
532
+ el resultado es un n vector, y si
533
+
534
+ 00:10:06.465 --> 00:10:09.825
535
+ multiplicamos escalares por ese n vector, nos va
536
+
537
+ 00:10:09.825 --> 00:10:12.705
538
+ a dar otra vez un n vector. Entonces,
539
+
540
+ 00:10:12.705 --> 00:10:16.625
541
+ definimos por eso este n vector, en donde
542
+
543
+ 00:10:16.625 --> 00:10:19.505
544
+ el escalar beta cero se va a multiplicar
545
+
546
+ 00:10:19.505 --> 00:10:23.649
547
+ con el vector a cero. El escalar beta
548
+
549
+ 00:10:23.649 --> 00:10:25.810
550
+ uno se va a multiplicar con el vector
551
+
552
+ 00:10:25.810 --> 00:10:30.310
553
+ a uno, y así hasta el escalar beta
554
+
555
+ 00:10:30.370 --> 00:10:32.209
556
+ m menos uno, que se va a multiplicar
557
+
558
+ 00:10:32.209 --> 00:10:35.055
559
+ con el vector a m menos uno. A
560
+
561
+ 00:10:35.055 --> 00:10:38.535
562
+ este vector se le llama una combinación lineal
563
+
564
+ 00:10:38.535 --> 00:10:41.535
565
+ y es una combinación lineal de los vectores
566
+
567
+ 00:10:41.535 --> 00:10:44.735
568
+ a cero hasta am menos uno, y a
569
+
570
+ 00:10:44.735 --> 00:10:47.650
571
+ los escalares de la combinación lineal se le
572
+
573
+ 00:10:47.650 --> 00:10:50.930
574
+ llaman coeficientes de la combinación lineal, es decir,
575
+
576
+ 00:10:50.930 --> 00:10:54.290
577
+ los coeficientes de esta combinación lineal son los
578
+
579
+ 00:10:54.290 --> 00:10:57.010
580
+ escalares b cero, p uno, hasta el b
581
+
582
+ 00:10:57.010 --> 00:11:01.345
583
+ m menos uno. Hay combinaciones lineales que son
584
+
585
+ 00:11:01.345 --> 00:11:04.485
586
+ especiales y, además, las combinaciones lineales nos permiten
587
+
588
+ 00:11:04.625 --> 00:11:08.705
589
+ expresar cosas de formas importantes. Por ejemplo, nosotros
590
+
591
+ 00:11:08.705 --> 00:11:11.905
592
+ tenemos una combinación lineal especial y es la
593
+
594
+ 00:11:11.905 --> 00:11:15.110
595
+ combinación lineal de vectores unitarios, Y en la
596
+
597
+ 00:11:15.110 --> 00:11:17.690
598
+ realidad es que va a ser posible expresar
599
+
600
+ 00:11:17.830 --> 00:11:22.390
601
+ cualquier vector b, cualquier nvector b, como combinación
602
+
603
+ 00:11:22.390 --> 00:11:26.070
604
+ lineal de los vectores unitarios estándar. Consideremos entonces
605
+
606
+ 00:11:26.070 --> 00:11:29.285
607
+ que tenemos el vector b. Este vector tiene
608
+
609
+ 00:11:29.285 --> 00:11:31.365
610
+ entradas de cero, v uno, v dos, v
611
+
612
+ 00:11:31.365 --> 00:11:33.285
613
+ tres, hasta v n menos uno, porque es
614
+
615
+ 00:11:33.285 --> 00:11:37.145
616
+ un n vector. Aquí podemos considerar y llamar
617
+
618
+ 00:11:37.525 --> 00:11:40.725
619
+ entonces a los vectores unitarios d a los
620
+
621
+ 00:11:40.725 --> 00:11:45.410
622
+ n vectores unitarios. Entonces, si recordamos cómo son
623
+
624
+ 00:11:45.410 --> 00:11:49.990
625
+ los vectores unitarios, son aquellos vectores e, I,
626
+
627
+ 00:11:50.450 --> 00:11:52.850
628
+ en donde la única entrada que no es
629
+
630
+ 00:11:52.850 --> 00:11:56.770
631
+ cero es la iésima, y la iésima es
632
+
633
+ 00:11:56.770 --> 00:11:59.995
634
+ igual a uno. En este caso, vamos a
635
+
636
+ 00:11:59.995 --> 00:12:03.615
637
+ poder expresar al vector b como la suma
638
+
639
+ 00:12:04.074 --> 00:12:07.274
640
+ de estos coeficientes b cero, que son los
641
+
642
+ 00:12:07.274 --> 00:12:12.740
643
+ del vector, por el vector unitario correspondiente a
644
+
645
+ 00:12:12.740 --> 00:12:15.880
646
+ esa entrada, es decir, b cero lo multiplicaremos
647
+
648
+ 00:12:16.260 --> 00:12:18.660
649
+ por el vector unitario e cero, que es
650
+
651
+ 00:12:18.660 --> 00:12:22.020
652
+ aquel en donde la primer entrada es igual
653
+
654
+ 00:12:22.020 --> 00:12:24.375
655
+ a uno y las demás son cero. B
656
+
657
+ 00:12:24.375 --> 00:12:26.715
658
+ uno lo vamos a multiplicar por el vector
659
+
660
+ 00:12:27.175 --> 00:12:29.255
661
+ unitario uno o el e uno, en donde
662
+
663
+ 00:12:29.255 --> 00:12:30.935
664
+ la segunda entrada es un uno y todas
665
+
666
+ 00:12:30.935 --> 00:12:33.735
667
+ las demás son cero, y así hasta el
668
+
669
+ 00:12:33.735 --> 00:12:38.535
670
+ enésimo vector unitario e n menos uno por
671
+
672
+ 00:12:38.535 --> 00:12:44.310
673
+ el enésimo coeficiente b n menos uno, que
674
+
675
+ 00:12:44.310 --> 00:12:47.130
676
+ es la enésima entrada de este vector b.
677
+
678
+ 00:12:48.870 --> 00:12:51.450
679
+ Ahora, vamos a poner un ejemplo de esto.
680
+
681
+ 00:12:52.595 --> 00:12:58.514
682
+ Consideremos el vector uno menos uno cero. Esto
683
+
684
+ 00:12:58.514 --> 00:13:03.154
685
+ lo podemos expresar en término de las de
686
+
687
+ 00:13:03.154 --> 00:13:07.190
688
+ los vectores unitarios, de los tres vectores unitarios,
689
+
690
+ 00:13:07.650 --> 00:13:10.610
691
+ que sería el uno cero cero, el cero
692
+
693
+ 00:13:10.610 --> 00:13:13.970
694
+ uno cero y el cero cero uno. ¿Cómo
695
+
696
+ 00:13:13.970 --> 00:13:17.770
697
+ lo podemos expresar? Bueno, para la primera entrada
698
+
699
+ 00:13:17.850 --> 00:13:21.495
700
+ nosotros multiplicaremos el escalar uno, y entonces uno
701
+
702
+ 00:13:21.495 --> 00:13:24.454
703
+ por uno cero cero nos da exactamente esta
704
+
705
+ 00:13:24.454 --> 00:13:28.135
706
+ entrada de aquí. En el caso del cero
707
+
708
+ 00:13:28.135 --> 00:13:31.415
709
+ uno cero, lo multiplicaremos por un menos uno,
710
+
711
+ 00:13:31.415 --> 00:13:36.029
712
+ y eso significará que cuando sumemos este más
713
+
714
+ 00:13:36.029 --> 00:13:42.350
715
+ este nos dará el uno menos uno por
716
+
717
+ 00:13:42.350 --> 00:13:46.690
718
+ menos uno por uno, y un cero. Ahora,
719
+
720
+ 00:13:46.995 --> 00:13:51.395
721
+ para el último de los vectores unitarios, lo
722
+
723
+ 00:13:51.395 --> 00:13:54.595
724
+ multiplicaremos por un cero, y esto nos dará
725
+
726
+ 00:13:54.595 --> 00:13:57.555
727
+ un cero exactamente aquí, así que cuando sumemos
728
+
729
+ 00:13:57.555 --> 00:14:00.675
730
+ los tres, nos dará el vector uno menos
731
+
732
+ 00:14:00.675 --> 00:14:05.360
733
+ uno cero. Te invito a que compruebes que
734
+
735
+ 00:14:05.360 --> 00:14:08.480
736
+ esto se cumple de manera efectiva haciendo esta
737
+
738
+ 00:14:08.480 --> 00:14:12.320
739
+ operación a mano. Ahora, hay una cosa muy
740
+
741
+ 00:14:12.320 --> 00:14:14.320
742
+ importante, y es que hay que denotar que
743
+
744
+ 00:14:14.320 --> 00:14:17.425
745
+ para un espacio vectorial de dimensión n, es
746
+
747
+ 00:14:17.425 --> 00:14:20.645
748
+ decir, donde viven n vectores, vamos a tener
749
+
750
+ 00:14:20.785 --> 00:14:24.465
751
+ n vectores unitarios e uno. Es decir, para
752
+
753
+ 00:14:24.465 --> 00:14:30.215
754
+ el espacio vectorial de dimensión dos, el r
755
+
756
+ 00:14:30.215 --> 00:14:33.750
757
+ dos, por ejemplo, tendremos, en donde viven dos
758
+
759
+ 00:14:33.750 --> 00:14:37.509
760
+ vectores, tenemos dos vectores unitarios, el cero, el
761
+
762
+ 00:14:37.509 --> 00:14:39.350
763
+ e cero y el e uno. En el
764
+
765
+ 00:14:39.350 --> 00:14:41.990
766
+ caso de r tres o un espacio vectorial
767
+
768
+ 00:14:41.990 --> 00:14:45.715
769
+ de dimensión tres, tendremos tres vectores unitarios, el
770
+
771
+ 00:14:45.715 --> 00:14:47.735
772
+ e cero, el e uno y el e
773
+
774
+ 00:14:47.795 --> 00:14:51.575
775
+ dos, y así hasta espacios vectoriales de dimensión
776
+
777
+ 00:14:51.955 --> 00:14:55.235
778
+ n, donde tendremos bases e cero, e uno,
779
+
780
+ 00:14:55.235 --> 00:15:00.709
781
+ e dos hasta n menos uno. Si no
782
+
783
+ 00:15:00.709 --> 00:15:03.589
784
+ recuerdas la construcción de estos vectores unitarios, te
785
+
786
+ 00:15:03.589 --> 00:15:06.310
787
+ invito a que repases las clases anteriores, ya
788
+
789
+ 00:15:06.310 --> 00:15:08.870
790
+ que vimos una forma sencilla y fácil de
791
+
792
+ 00:15:08.870 --> 00:15:13.385
793
+ poder construirlos. Ahora, vamos a ver algunas combinaciones
794
+
795
+ 00:15:14.085 --> 00:15:17.445
796
+ lineales especiales. Algunas de esas combinaciones serán, por
797
+
798
+ 00:15:17.445 --> 00:15:20.645
799
+ ejemplo, aquellas en donde los coeficientes de la
800
+
801
+ 00:15:20.645 --> 00:15:23.925
802
+ combinación lineal, todos los coeficientes sean igual a
803
+
804
+ 00:15:23.925 --> 00:15:27.290
805
+ uno. Eso quiere decir que simplemente estaremos hablando
806
+
807
+ 00:15:27.290 --> 00:15:30.330
808
+ de una suma de vectores. Es decir, si
809
+
810
+ 00:15:30.330 --> 00:15:33.530
811
+ en esta combinación lineal, beta cero, beta uno,
812
+
813
+ 00:15:33.530 --> 00:15:35.690
814
+ beta dos, hasta beta m menos uno son
815
+
816
+ 00:15:35.690 --> 00:15:38.865
817
+ igual a uno, simplemente estaríamos sumando los vectores
818
+
819
+ 00:15:39.085 --> 00:15:40.765
820
+ a cero, a uno, hasta el a m
821
+
822
+ 00:15:40.765 --> 00:15:43.165
823
+ menos uno, es decir, una suma normal de
824
+
825
+ 00:15:43.165 --> 00:15:52.070
826
+ vectores. Ahora bien, si todos nuestros coeficientes son
827
+
828
+ 00:15:52.070 --> 00:15:56.230
829
+ igual a uno entre m, beta cero, beta
830
+
831
+ 00:15:56.230 --> 00:15:58.310
832
+ uno, hasta beta m menos uno igual a
833
+
834
+ 00:15:58.310 --> 00:16:01.110
835
+ uno entre m, a esta combinación lineal se
836
+
837
+ 00:16:01.110 --> 00:16:07.178
838
+ le llamará promedio de vectores. Y, en cambio,
839
+
840
+ 00:16:07.265 --> 00:16:10.785
841
+ si nuestros coeficientes suman uno, es decir, b
842
+
843
+ 00:16:10.785 --> 00:16:13.185
844
+ cero más b uno más b dos hasta
845
+
846
+ 00:16:13.185 --> 00:16:15.445
847
+ el b m menos uno nos da un
848
+
849
+ 00:16:15.585 --> 00:16:18.464
850
+ uno, entonces a esta combinación lineal le llamaremos
851
+
852
+ 00:16:18.464 --> 00:16:22.519
853
+ combinación afín, y cuando los coeficientes b y
854
+
855
+ 00:16:22.519 --> 00:16:26.360
856
+ sean todos no negativos, es decir, todos estos
857
+
858
+ 00:16:26.360 --> 00:16:28.360
859
+ b cero, b uno, hasta el b m
860
+
861
+ 00:16:28.360 --> 00:16:32.220
862
+ menos uno, sean positivos, entonces la combinación lineal
863
+
864
+ 00:16:32.755 --> 00:16:36.035
865
+ será una mezcla, una combinación convexa o un
866
+
867
+ 00:16:36.035 --> 00:16:40.355
868
+ promedio pesado, esos nombres son intercambiables. Muy bien,
869
+
870
+ 00:16:40.355 --> 00:16:44.115
871
+ hasta aquí llegó esta clase. La próxima clase
872
+
873
+ 00:16:44.115 --> 00:16:47.879
874
+ será una clase práctica y una clase geométrica,
875
+
876
+ 00:16:47.939 --> 00:16:50.679
877
+ una clase ilustrativa, de cómo se ve la
878
+
879
+ 00:16:50.979 --> 00:16:54.499
880
+ multiplicación de escalar por las por vectores. Te
881
+
882
+ 00:16:54.499 --> 00:16:55.879
883
+ espero en la próxima clase.
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/06-producto_escalar_383fadd8-6e92-4690-aefe-72a7454fa87a.ipynb ADDED
@@ -0,0 +1,472 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# 3. Producto por un escalar o multiplicación escalar-vector."
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "Otra operación es el *producto por un escalar* o *multiplicación escalar-vector* en la cual un vector es multiplicado por un escalar. La operación se hace elemento a elemento. Sea $\\vec{v}$ un vector de $\\mathbb{R}^{n}$ y $\\alpha \\in \\mathbb{R}$. Si $\\vec{x} = \\alpha \\vec{v}$ entonces:\n",
15
+ "$$\n",
16
+ "\\vec{x} = \\alpha \\vec{v} = \\alpha\\begin{bmatrix}v_{0}\\\\ v_{1}\\\\ \\vdots \\\\ v_{n-1}\\end{bmatrix} = \\begin{bmatrix}\\alpha \\cdot v_{0}\\\\ \\alpha \\cdot v_{1}\\\\ \\vdots \\\\ \\alpha \\cdot v_{n-1}\\end{bmatrix}\n",
17
+ "$$"
18
+ ]
19
+ },
20
+ {
21
+ "cell_type": "markdown",
22
+ "metadata": {},
23
+ "source": [
24
+ "Por ejemplo, si $\\vec{v} = (0,1,-2.3)$ y $\\alpha = -1.1$ entonces $\\alpha \\vec{v} = (0,-1.1,2.53)$"
25
+ ]
26
+ },
27
+ {
28
+ "cell_type": "markdown",
29
+ "metadata": {},
30
+ "source": [
31
+ "## 3.1 Propiedades del producto por un escalar-vector"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "markdown",
36
+ "metadata": {},
37
+ "source": [
38
+ "Sean $\\vec{x},\\vec{y}$ dos vectores y $\\alpha, \\beta$ dos escalares cualquiera. Las propiedades que cumple el producto escalar-vector son las siguientes:\n",
39
+ "* Conmutatividad: $\\alpha \\vec{x} = \\vec{x}\\alpha $\n",
40
+ "\n",
41
+ "* Asociatividad: $(\\beta \\alpha)\\vec{x} = \\beta (\\alpha\\vec{x})$\n",
42
+ "\n",
43
+ "* Distribución sobre suma escalar: $(\\alpha + \\beta)\\vec{x} = \\alpha \\vec{x} + \\beta\\vec{x} =\\beta\\vec{x} + \\alpha\\vec{x} = \\vec{x}(\\alpha + \\beta) $\n",
44
+ "\n",
45
+ "* Distribución sobre suma de vectores: $\\alpha (\\vec{x}+\\vec{y}) = \\alpha\\vec{x} + \\alpha\\vec{y}$"
46
+ ]
47
+ },
48
+ {
49
+ "cell_type": "markdown",
50
+ "metadata": {},
51
+ "source": [
52
+ "## 3.2 Algunas consideraciones"
53
+ ]
54
+ },
55
+ {
56
+ "cell_type": "markdown",
57
+ "metadata": {},
58
+ "source": [
59
+ "**Combinaciones lineales**. Sean $\\vec{a}_{0},\\vec{a}_{1},\\dots,\\vec{a}_{m-1}$ $n$-vectores y $\\beta_{0},\\beta_{1},\\dots,\\beta_{m-1}$ escalares entonces podemos definir el siguiente $n$-vector:\n",
60
+ "\n",
61
+ "$$\n",
62
+ "\\beta_{0}\\vec{a}_{0}+\\beta_{1}\\vec{a}_{1}+\\cdots+\\beta_{m-1}\\vec{a}_{m-1}\n",
63
+ "$$\n",
64
+ "\n",
65
+ "Es llamado una *combinación lineal* de los vectores $\\vec{a}_{0},\\vec{a}_{1},\\dots,\\vec{a}_{m-1}$. Los escalares $\\beta_{0},\\beta_{1},\\dots,\\beta_{m-1}$ son llamados los *coeficientes* de la combinación lineal."
66
+ ]
67
+ },
68
+ {
69
+ "cell_type": "markdown",
70
+ "metadata": {},
71
+ "source": [
72
+ " "
73
+ ]
74
+ },
75
+ {
76
+ "cell_type": "markdown",
77
+ "metadata": {},
78
+ "source": [
79
+ "**Combinaciones lineales de vectores unitarios**. Es posible escribir cualquier $\\vec{b}$ $n$-vector como combinación lineal de los vectores unitarios estándar:\n",
80
+ "\n",
81
+ "$$\n",
82
+ "\\vec{b} = b_{0}\\hat{e}_{0}+b_{1}\\hat{e}_{1} + \\cdots +b_{n-1}\\hat{e}_{n-1}\n",
83
+ "$$\n",
84
+ "\n",
85
+ "Con $b_{i}$ escalares y $\\hat{e}_{i}$ el i-ésimo vector unitario. Un ejemplo específico sería:\n",
86
+ "\n",
87
+ "$$\n",
88
+ "\\begin{bmatrix}1\\\\ -1\\\\ 0\\end{bmatrix} = (1)\\begin{bmatrix}1\\\\ 0\\\\ 0\\end{bmatrix} + (-1)\\begin{bmatrix}0\\\\ 1\\\\ 0\\end{bmatrix} + (0)\\begin{bmatrix}0\\\\ 0\\\\ 1\\end{bmatrix}\n",
89
+ "$$\n",
90
+ "\n",
91
+ "Como nota final aquí, notemos que si el espacio vectorial es de dimensión $n$ entonces tiene $n$ vectores unitarios $\\hat{e}_{i}$\n"
92
+ ]
93
+ },
94
+ {
95
+ "cell_type": "markdown",
96
+ "metadata": {},
97
+ "source": [
98
+ " "
99
+ ]
100
+ },
101
+ {
102
+ "cell_type": "markdown",
103
+ "metadata": {},
104
+ "source": [
105
+ "**Combinaciones lineales especiales**. Algunas combinaciones de $n$-vectores $\\vec{a}_{0},\\vec{a}_{1},\\dots,\\vec{a}_{m-1}$ tienen nombres especiales. Por ejemplo, si los coeficientes de la combinación lineal son tales que $\\beta_{0}=\\beta_{1}=\\cdots=\\beta_{m-1} = 1$ entonces simplemente es una suma de vectores. Si en cambio $\\beta_{0}=\\beta_{1}=\\cdots=\\beta_{m-1} = 1/m$ entonces la combinación lineal se llama el *promedio de vectores*. \n",
106
+ "Cuando $\\beta_{0}+\\beta_{1}+\\cdots+\\beta_{m-1}=1$ entonces la combinación lineal se llama *combinación afín*, cuando los coeficientes $\\beta_{i}$ son no-negativos entonces la combinación lineal es llamada una *mezcla*, *combinación convexa* o un *promedio pesado*."
107
+ ]
108
+ },
109
+ {
110
+ "cell_type": "markdown",
111
+ "metadata": {},
112
+ "source": [
113
+ "## 3.3 Producto por un escalar-vector en Python"
114
+ ]
115
+ },
116
+ {
117
+ "cell_type": "markdown",
118
+ "metadata": {},
119
+ "source": [
120
+ "Desde la clase pasada introducimos Numpy para manejo de vectores. Una de las fortunas de usar numpy sobre listas es la simpleta de este tipo de operaciones. Realizar esta operación será tan sencillo como usar el operador $*$. "
121
+ ]
122
+ },
123
+ {
124
+ "cell_type": "markdown",
125
+ "metadata": {},
126
+ "source": [
127
+ "Partamos del vector $\\vec{x}= (1,-1,1)$ y del escalar $a = 3.1$ entonces, realicemos las operaciones $a\\vec{x}$ y $\\vec{x}a$"
128
+ ]
129
+ },
130
+ {
131
+ "cell_type": "code",
132
+ "execution_count": 18,
133
+ "metadata": {},
134
+ "outputs": [],
135
+ "source": [
136
+ "import numpy as np #primero importamos numpy"
137
+ ]
138
+ },
139
+ {
140
+ "cell_type": "code",
141
+ "execution_count": 19,
142
+ "metadata": {},
143
+ "outputs": [],
144
+ "source": [
145
+ "x = np.array([1,-1,1]) #declaramos el vector x\n",
146
+ "\n",
147
+ "a = 3.1 #declaramos el escalar a"
148
+ ]
149
+ },
150
+ {
151
+ "cell_type": "code",
152
+ "execution_count": 20,
153
+ "metadata": {},
154
+ "outputs": [
155
+ {
156
+ "name": "stdout",
157
+ "output_type": "stream",
158
+ "text": [
159
+ "ax es [ 3.1 -3.1 3.1]\n"
160
+ ]
161
+ }
162
+ ],
163
+ "source": [
164
+ "print('ax es',a*x)"
165
+ ]
166
+ },
167
+ {
168
+ "cell_type": "code",
169
+ "execution_count": 21,
170
+ "metadata": {},
171
+ "outputs": [
172
+ {
173
+ "name": "stdout",
174
+ "output_type": "stream",
175
+ "text": [
176
+ "xa es [ 3.1 -3.1 3.1]\n"
177
+ ]
178
+ }
179
+ ],
180
+ "source": [
181
+ "print('xa es',x*a)"
182
+ ]
183
+ },
184
+ {
185
+ "cell_type": "code",
186
+ "execution_count": 9,
187
+ "metadata": {},
188
+ "outputs": [],
189
+ "source": [
190
+ "b = -a"
191
+ ]
192
+ },
193
+ {
194
+ "cell_type": "code",
195
+ "execution_count": 22,
196
+ "metadata": {},
197
+ "outputs": [
198
+ {
199
+ "name": "stdout",
200
+ "output_type": "stream",
201
+ "text": [
202
+ "(b+a)x es [ 0. -0. 0.]\n"
203
+ ]
204
+ }
205
+ ],
206
+ "source": [
207
+ "print('(b+a)x es',(b+a)*x)"
208
+ ]
209
+ },
210
+ {
211
+ "cell_type": "code",
212
+ "execution_count": 23,
213
+ "metadata": {},
214
+ "outputs": [
215
+ {
216
+ "name": "stdout",
217
+ "output_type": "stream",
218
+ "text": [
219
+ "xa+xb es [0. 0. 0.]\n"
220
+ ]
221
+ }
222
+ ],
223
+ "source": [
224
+ "print('xa+xb es',b*x+ x*a)"
225
+ ]
226
+ },
227
+ {
228
+ "cell_type": "markdown",
229
+ "metadata": {},
230
+ "source": [
231
+ "Ahora un ejecio más $\\vec{v} = (1,1)$. Si consideramos a = -1, b = 2, c = 0.1"
232
+ ]
233
+ },
234
+ {
235
+ "cell_type": "code",
236
+ "execution_count": 24,
237
+ "metadata": {},
238
+ "outputs": [],
239
+ "source": [
240
+ "v = np.array([1,1])\n",
241
+ "a = -1\n",
242
+ "b = 2\n",
243
+ "c = 0.1"
244
+ ]
245
+ },
246
+ {
247
+ "cell_type": "code",
248
+ "execution_count": 25,
249
+ "metadata": {},
250
+ "outputs": [
251
+ {
252
+ "data": {
253
+ "text/plain": [
254
+ "array([-1, -1])"
255
+ ]
256
+ },
257
+ "execution_count": 25,
258
+ "metadata": {},
259
+ "output_type": "execute_result"
260
+ }
261
+ ],
262
+ "source": [
263
+ "v*a"
264
+ ]
265
+ },
266
+ {
267
+ "cell_type": "code",
268
+ "execution_count": 26,
269
+ "metadata": {},
270
+ "outputs": [
271
+ {
272
+ "data": {
273
+ "text/plain": [
274
+ "array([2, 2])"
275
+ ]
276
+ },
277
+ "execution_count": 26,
278
+ "metadata": {},
279
+ "output_type": "execute_result"
280
+ }
281
+ ],
282
+ "source": [
283
+ "v*b"
284
+ ]
285
+ },
286
+ {
287
+ "cell_type": "code",
288
+ "execution_count": 28,
289
+ "metadata": {},
290
+ "outputs": [
291
+ {
292
+ "data": {
293
+ "text/plain": [
294
+ "array([0.1, 0.1])"
295
+ ]
296
+ },
297
+ "execution_count": 28,
298
+ "metadata": {},
299
+ "output_type": "execute_result"
300
+ }
301
+ ],
302
+ "source": [
303
+ "v*c"
304
+ ]
305
+ },
306
+ {
307
+ "cell_type": "markdown",
308
+ "metadata": {},
309
+ "source": [
310
+ "## 3.3 Ejercicios"
311
+ ]
312
+ },
313
+ {
314
+ "cell_type": "markdown",
315
+ "metadata": {},
316
+ "source": [
317
+ "**Problema 1**. Escribe TODOS los vectores unitarios estándar de $\\mathbb{R}^{4}$. *Hint:* son cuatro. "
318
+ ]
319
+ },
320
+ {
321
+ "cell_type": "markdown",
322
+ "metadata": {},
323
+ "source": [
324
+ "**Problema 2**. Escribe tres combinaciones lineales de vectores en $\\mathbb{R}^{3}$ para expresar el vector $[1,1,1]$."
325
+ ]
326
+ },
327
+ {
328
+ "cell_type": "markdown",
329
+ "metadata": {},
330
+ "source": [
331
+ "**Problema 3.** Escribe tres combinaciones afines con vectores de $\\mathbb{R}^{3}$ donde $\\beta_{0}\\neq\\beta_{1}\\neq\\beta_{2}$ pero que se cumpla que $\\beta_{0}+\\beta_{1}+\\beta_{2}=1$. *HINT*: Si no se te ocurre ninguna combinación para los coeficientes la ecuación $\\beta_{0}+\\beta_{1}+\\beta_{2}=1$ tiene infinitas soluciones, puedes hacer un programa para encontrar tres. "
332
+ ]
333
+ },
334
+ {
335
+ "cell_type": "code",
336
+ "execution_count": 31,
337
+ "metadata": {},
338
+ "outputs": [],
339
+ "source": [
340
+ "a = np.linspace(0,5,1000)"
341
+ ]
342
+ },
343
+ {
344
+ "cell_type": "code",
345
+ "execution_count": 32,
346
+ "metadata": {},
347
+ "outputs": [
348
+ {
349
+ "data": {
350
+ "text/plain": [
351
+ "0.005005005005005005"
352
+ ]
353
+ },
354
+ "execution_count": 32,
355
+ "metadata": {},
356
+ "output_type": "execute_result"
357
+ }
358
+ ],
359
+ "source": [
360
+ "a[1]-a[0]"
361
+ ]
362
+ },
363
+ {
364
+ "cell_type": "code",
365
+ "execution_count": 33,
366
+ "metadata": {},
367
+ "outputs": [
368
+ {
369
+ "data": {
370
+ "text/plain": [
371
+ "0.005005005005005005"
372
+ ]
373
+ },
374
+ "execution_count": 33,
375
+ "metadata": {},
376
+ "output_type": "execute_result"
377
+ }
378
+ ],
379
+ "source": [
380
+ "a[2]-a[1]"
381
+ ]
382
+ },
383
+ {
384
+ "cell_type": "code",
385
+ "execution_count": 34,
386
+ "metadata": {},
387
+ "outputs": [
388
+ {
389
+ "data": {
390
+ "text/plain": [
391
+ "0.005005005005005003"
392
+ ]
393
+ },
394
+ "execution_count": 34,
395
+ "metadata": {},
396
+ "output_type": "execute_result"
397
+ }
398
+ ],
399
+ "source": [
400
+ "a[999]-a[998]"
401
+ ]
402
+ },
403
+ {
404
+ "cell_type": "code",
405
+ "execution_count": 35,
406
+ "metadata": {},
407
+ "outputs": [
408
+ {
409
+ "data": {
410
+ "text/plain": [
411
+ "0.0"
412
+ ]
413
+ },
414
+ "execution_count": 35,
415
+ "metadata": {},
416
+ "output_type": "execute_result"
417
+ }
418
+ ],
419
+ "source": [
420
+ "a[0]"
421
+ ]
422
+ },
423
+ {
424
+ "cell_type": "code",
425
+ "execution_count": 36,
426
+ "metadata": {},
427
+ "outputs": [
428
+ {
429
+ "data": {
430
+ "text/plain": [
431
+ "5.0"
432
+ ]
433
+ },
434
+ "execution_count": 36,
435
+ "metadata": {},
436
+ "output_type": "execute_result"
437
+ }
438
+ ],
439
+ "source": [
440
+ "a[999]"
441
+ ]
442
+ },
443
+ {
444
+ "cell_type": "code",
445
+ "execution_count": null,
446
+ "metadata": {},
447
+ "outputs": [],
448
+ "source": []
449
+ }
450
+ ],
451
+ "metadata": {
452
+ "kernelspec": {
453
+ "display_name": "Python 3",
454
+ "language": "python",
455
+ "name": "python3"
456
+ },
457
+ "language_info": {
458
+ "codemirror_mode": {
459
+ "name": "ipython",
460
+ "version": 3
461
+ },
462
+ "file_extension": ".py",
463
+ "mimetype": "text/x-python",
464
+ "name": "python",
465
+ "nbconvert_exporter": "python",
466
+ "pygments_lexer": "ipython3",
467
+ "version": "3.7.3"
468
+ }
469
+ },
470
+ "nbformat": 4,
471
+ "nbformat_minor": 4
472
+ }
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Lecturas recomendadas.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ https://geogebra.org/calculator
2
+ https://colab.research.google.com/drive/1uF1QvMQBR9B-UPPUKg8d4DVuZNROqUA_?usp=sharing
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Operaciones con Escalares y Vectores en Python usando NumPy.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:222647ee6ecca2b5541add87fa30960d05381916508c3f0930cca4a2855bd8ce
3
+ size 182945717
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Operaciones con Escalares y Vectores en Python usando NumPy.vtt ADDED
@@ -0,0 +1,883 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.360 --> 00:00:05.600
4
+ Te doy la bienvenida de nuevo. La clase
5
+
6
+ 00:00:05.600 --> 00:00:09.280
7
+ pasada, lo que vimos fue cómo operar, vimos
8
+
9
+ 00:00:09.280 --> 00:00:13.325
10
+ algebraicamente cómo operar entre escalares y vectores. En
11
+
12
+ 00:00:13.325 --> 00:00:16.765
13
+ esta clase vamos a ver cómo se puede
14
+
15
+ 00:00:16.765 --> 00:00:19.404
16
+ realizar esta operación en Python, vamos a comprobar
17
+
18
+ 00:00:19.404 --> 00:00:21.564
19
+ algunas de las propiedades y, de igual manera,
20
+
21
+ 00:00:21.564 --> 00:00:26.445
22
+ vamos a ver qué significa geométricamente, visualmente, operar
23
+
24
+ 00:00:26.445 --> 00:00:30.849
25
+ escalares. Sin más, vamos a la computadora. Ahora,
26
+
27
+ 00:00:30.910 --> 00:00:33.649
28
+ nosotros ya vimos en clases pasadas cómo introducir
29
+
30
+ 00:00:33.710 --> 00:00:37.949
31
+ NumPy nos permite introducir también estos elementos llamados
32
+
33
+ 00:00:37.949 --> 00:00:41.230
34
+ NumPyArray, y los NumPyArray ya vimos que se
35
+
36
+ 00:00:41.230 --> 00:00:45.395
37
+ comportan un poco como vectores, como los vectores
38
+
39
+ 00:00:45.395 --> 00:00:48.115
40
+ algebraicos que hemos venido manejando. La una de
41
+
42
+ 00:00:48.115 --> 00:00:50.115
43
+ las ventajas muy grandes o de las más
44
+
45
+ 00:00:50.115 --> 00:00:53.475
46
+ grandes de utilizar NumPy sobre utilizar listas es
47
+
48
+ 00:00:53.475 --> 00:00:57.400
49
+ que para realizar la operación de producto por
50
+
51
+ 00:00:57.400 --> 00:01:01.400
52
+ un escalar vector en Python, simplemente tendríamos que
53
+
54
+ 00:01:01.400 --> 00:01:05.319
55
+ utilizar este operador. Ahora, vamos a ver qué
56
+
57
+ 00:01:05.319 --> 00:01:07.660
58
+ pasa si nosotros en lugar de utilizar NumPy
59
+
60
+ 00:01:07.880 --> 00:01:11.445
61
+ utilizamos una lista, ¿de acuerdo? Por ejemplo, si
62
+
63
+ 00:01:11.445 --> 00:01:14.244
64
+ nosotros declaramos a un vector a igual a
65
+
66
+ 00:01:14.244 --> 00:01:18.965
67
+ la lista uno coma dos coma tres, si
68
+
69
+ 00:01:18.965 --> 00:01:21.924
70
+ yo lo multiplico No, más sencillo, uno uno
71
+
72
+ 00:01:21.924 --> 00:01:26.960
73
+ uno. Si nosotros multiplicáramos esta lista por tres,
74
+
75
+ 00:01:27.740 --> 00:01:30.800
76
+ debería de quedarnos el vector tres tres tres.
77
+
78
+ 00:01:31.020 --> 00:01:33.180
79
+ Veamos qué es lo que pasa. A por
80
+
81
+ 00:01:33.180 --> 00:01:37.440
82
+ tres nos da este vector gigante, ¿por qué?
83
+
84
+ 00:01:37.740 --> 00:01:40.220
85
+ Bueno, lo que hace este operador con las
86
+
87
+ 00:01:40.220 --> 00:01:43.685
88
+ listas es que esta lista la multiplica este
89
+
90
+ 00:01:43.685 --> 00:01:46.085
91
+ número de veces, pero no la multiplica entrada
92
+
93
+ 00:01:46.085 --> 00:01:50.325
94
+ por entrada, sino multiplica esa lista en una
95
+
96
+ 00:01:50.325 --> 00:01:53.625
97
+ lista más grande y luego se concatena. Es
98
+
99
+ 00:01:53.685 --> 00:01:57.380
100
+ decir, toma esta primer lista, la plasma aquí
101
+
102
+ 00:01:57.380 --> 00:01:59.880
103
+ y cumple que esta se repita tres veces,
104
+
105
+ 00:01:59.939 --> 00:02:04.119
106
+ una, dos y tres, y después las concatena.
107
+
108
+ 00:02:04.340 --> 00:02:06.659
109
+ Hay una suma aquí entre listas y nos
110
+
111
+ 00:02:06.659 --> 00:02:12.564
112
+ queda exactamente este vector, ¿vale? Ahora, nosotros no
113
+
114
+ 00:02:12.564 --> 00:02:15.204
115
+ quisiéramos eso, quisiéramos que nos tocara tres tres
116
+
117
+ 00:02:15.204 --> 00:02:17.284
118
+ tres en lugar de tener este gran vector,
119
+
120
+ 00:02:17.284 --> 00:02:19.224
121
+ que es más como un stack de vectores.
122
+
123
+ 00:02:19.605 --> 00:02:21.284
124
+ Vamos a ver cómo lo haríamos con un
125
+
126
+ 00:02:21.284 --> 00:02:27.980
127
+ pay. Ahora, vamos a partir de este vector,
128
+
129
+ 00:02:27.980 --> 00:02:31.100
130
+ del uno coma menos uno coma uno, y
131
+
132
+ 00:02:31.100 --> 00:02:33.660
133
+ vamos a partir también del escalar a igual
134
+
135
+ 00:02:33.660 --> 00:02:36.140
136
+ a tres punto uno. Vamos a realizar las
137
+
138
+ 00:02:36.140 --> 00:02:39.360
139
+ operaciones x por AYA por x para comprobar
140
+
141
+ 00:02:39.605 --> 00:02:42.564
142
+ que se cumple la conmutatividad. De igual manera,
143
+
144
+ 00:02:42.564 --> 00:02:46.245
145
+ vamos a comprobar la distribución sobre la suma
146
+
147
+ 00:02:46.245 --> 00:02:48.724
148
+ de escalares y la distribución sobre la suma
149
+
150
+ 00:02:48.724 --> 00:02:53.939
151
+ de vectores. Entonces, primero empecemos importando numpy. Luego,
152
+
153
+ 00:02:53.939 --> 00:02:56.900
154
+ aquí vamos a declarar nuestro vector x, como
155
+
156
+ 00:02:56.900 --> 00:02:59.700
157
+ está acá arriba, y vamos a declarar también
158
+
159
+ 00:02:59.700 --> 00:03:06.019
160
+ nuestro escalar a. Ahora, veamos, vamos a multiplicar
161
+
162
+ 00:03:06.019 --> 00:03:09.135
163
+ a por x simplemente, y esto nos da
164
+
165
+ 00:03:09.515 --> 00:03:12.155
166
+ exactamente lo que nosotros estaríamos buscando, que es
167
+
168
+ 00:03:12.155 --> 00:03:14.315
169
+ multiplicar tres punto uno por uno, que nos
170
+
171
+ 00:03:14.315 --> 00:03:16.635
172
+ da tres punto uno, tres punto uno por
173
+
174
+ 00:03:16.635 --> 00:03:18.555
175
+ menos uno, que nos daría menos tres punto
176
+
177
+ 00:03:18.555 --> 00:03:20.235
178
+ uno, y tres punto uno por uno otra
179
+
180
+ 00:03:20.235 --> 00:03:22.860
181
+ vez, que nos daría tres punto uno. Es
182
+
183
+ 00:03:22.959 --> 00:03:25.959
184
+ exactamente el resultado que tenemos aquí. Vamos a
185
+
186
+ 00:03:25.959 --> 00:03:28.680
187
+ hacerlo ahora x por a, es decir, al
188
+
189
+ 00:03:28.680 --> 00:03:32.280
190
+ revés. Aquí multiplicamos a por x, acabamos de
191
+
192
+ 00:03:32.280 --> 00:03:36.045
193
+ multiplicar x por a, y nos da exactamente
194
+
195
+ 00:03:36.265 --> 00:03:38.985
196
+ el mismo resultado. Eso quiere decir que la
197
+
198
+ 00:03:38.985 --> 00:03:43.145
199
+ operación sí está conmutando, ya la comprobamos. Ahora,
200
+
201
+ 00:03:43.145 --> 00:03:46.105
202
+ vamos a aclarar un nuevo escalar, ese nuevo
203
+
204
+ 00:03:46.105 --> 00:03:48.265
205
+ escalar va a ser b igual a menos
206
+
207
+ 00:03:48.265 --> 00:03:52.450
208
+ a. Entonces, si nosotros realizamos la suma de
209
+
210
+ 00:03:52.450 --> 00:03:54.530
211
+ b más a, sabemos que nos debería de
212
+
213
+ 00:03:54.530 --> 00:03:57.090
214
+ dar cero, y si eso lo multiplicamos por
215
+
216
+ 00:03:57.090 --> 00:03:59.750
217
+ x, eso nos debería de dar el vector
218
+
219
+ 00:03:59.810 --> 00:04:04.415
220
+ cero. Vamos a hacerlo. Y vemos que, efectivamente,
221
+
222
+ 00:04:04.474 --> 00:04:06.635
223
+ el vector que se nos arroja es el
224
+
225
+ 00:04:06.635 --> 00:04:10.474
226
+ vector cero. Recuerden que, como lo mencioné en
227
+
228
+ 00:04:10.474 --> 00:04:13.435
229
+ clases pasadas, menos cero o cero para fines
230
+
231
+ 00:04:13.435 --> 00:04:15.870
232
+ prácticos va a ser lo mismo para nosotros,
233
+
234
+ 00:04:15.870 --> 00:04:17.709
235
+ y es que este menos viene de la
236
+
237
+ 00:04:17.709 --> 00:04:22.510
238
+ representación que tenemos en Python. Ahora, como vimos
239
+
240
+ 00:04:22.510 --> 00:04:24.350
241
+ una de las propiedades acá arriba en la
242
+
243
+ 00:04:24.350 --> 00:04:28.510
244
+ distribución sobre los escalares, daría lo mismo sumarlos
245
+
246
+ 00:04:28.510 --> 00:04:32.565
247
+ y después multiplicarlos, que primero multiplicarlo y después
248
+
249
+ 00:04:32.565 --> 00:04:34.745
250
+ sumarlos. Vamos a ver que esto se cumpla.
251
+
252
+ 00:04:35.205 --> 00:04:38.565
253
+ Entonces, aquí hicimos b más a por x.
254
+
255
+ 00:04:38.565 --> 00:04:39.925
256
+ Lo que vamos a hacer aquí va a
257
+
258
+ 00:04:39.925 --> 00:04:42.425
259
+ ser x por a más x por b,
260
+
261
+ 00:04:43.640 --> 00:04:47.000
262
+ como lo tenemos aquí, y nos daremos cuenta
263
+
264
+ 00:04:47.000 --> 00:04:49.340
265
+ que, en efecto, nos da el vector cero.
266
+
267
+ 00:04:49.720 --> 00:04:52.060
268
+ Entonces, eso quiere decir que así se distribuye
269
+
270
+ 00:04:52.200 --> 00:04:54.380
271
+ sobre la suma. Vamos a hacer un ejercicio
272
+
273
+ 00:04:55.000 --> 00:04:57.885
274
+ más, pero vamos a considerar un dos vector.
275
+
276
+ 00:04:59.945 --> 00:05:06.605
277
+ Consideremos el dos vector, veamos, el dos vector,
278
+
279
+ 00:05:07.770 --> 00:05:18.349
280
+ vamos a llamarle b, igual al dos coma,
281
+
282
+ 00:05:18.569 --> 00:05:22.865
283
+ al uno coma uno, por ejemplo. Sí, muy
284
+
285
+ 00:05:22.865 --> 00:05:28.165
286
+ buen vector, excelente vector. Ahora, si nosotros consideramos
287
+
288
+ 00:05:30.225 --> 00:05:34.785
289
+ un escalar a igual a menos uno, un
290
+
291
+ 00:05:34.785 --> 00:05:41.840
292
+ escalar b igual a dos, y un escalar
293
+
294
+ 00:05:42.380 --> 00:05:46.620
295
+ c igual a cero punto uno van a
296
+
297
+ 00:05:46.620 --> 00:05:50.240
298
+ tener resultados totalmente distintos si nosotros lo multiplicamos
299
+
300
+ 00:05:50.460 --> 00:05:53.915
301
+ por este vector. Pero ¿qué tan distintos? Bien,
302
+
303
+ 00:05:53.915 --> 00:05:56.655
304
+ vamos a declarar primero esos vectores aquí abajo.
305
+
306
+ 00:05:57.195 --> 00:06:04.475
307
+ Declaremos b igual a nuestro numpy array n
308
+
309
+ 00:06:04.475 --> 00:06:08.030
310
+ p dot array, paréntesis, y declaramos como si
311
+
312
+ 00:06:08.030 --> 00:06:11.010
313
+ fuera una lista uno coma uno. Ya declaramos
314
+
315
+ 00:06:11.070 --> 00:06:13.630
316
+ nuestro vector, y de una vez declaremos también
317
+
318
+ 00:06:13.630 --> 00:06:17.169
319
+ nuestros escalares, a igual a menos uno, b
320
+
321
+ 00:06:20.435 --> 00:06:26.355
322
+ igual a dos, y c igual a cero
323
+
324
+ 00:06:26.355 --> 00:06:29.955
325
+ punto uno. ¿Qué es lo que va a
326
+
327
+ 00:06:29.955 --> 00:06:34.300
328
+ pasar si yo multiplico b por ABYC? Bueno,
329
+
330
+ 00:06:34.300 --> 00:06:39.660
331
+ algebraicamente simplemente es esto, nos da menos uno
332
+
333
+ 00:06:39.660 --> 00:06:45.039
334
+ y menos uno en las dos entradas. B
335
+
336
+ 00:06:45.259 --> 00:06:47.740
337
+ por b nos da dos y dos en
338
+
339
+ 00:06:47.740 --> 00:06:56.905
340
+ las entradas, YCB por c, una disculpa aquí
341
+
342
+ 00:06:56.905 --> 00:07:00.365
343
+ para mí, cero punto uno cero punto uno.
344
+
345
+ 00:07:02.840 --> 00:07:07.159
346
+ ¿Qué significa esto geométricamente? Porque sí, los vectores
347
+
348
+ 00:07:07.159 --> 00:07:10.460
349
+ tienen una interpretación geométrica, así que vamos ahí.
350
+
351
+ 00:07:10.919 --> 00:07:13.659
352
+ Los invito a que visiten este sitio, Geogebra
353
+
354
+ 00:07:13.719 --> 00:07:17.715
355
+ dot org calculator, y en este sitio nosotros
356
+
357
+ 00:07:17.715 --> 00:07:21.955
358
+ vamos a poder acceder a poder ver vectores
359
+
360
+ 00:07:21.955 --> 00:07:24.515
361
+ o dos vectores, es decir, vectores en el
362
+
363
+ 00:07:24.515 --> 00:07:26.455
364
+ plano, a eso se le llama el plano.
365
+
366
+ 00:07:26.595 --> 00:07:29.949
367
+ Vamos a aclarar nuestro vector inicial. Lo declaramos
368
+
369
+ 00:07:29.949 --> 00:07:33.750
370
+ metiendo vector uno coma uno, y ahí está
371
+
372
+ 00:07:33.750 --> 00:07:37.130
373
+ nuestro vector inicial, ¿lo podemos ver? Los vectores
374
+
375
+ 00:07:37.190 --> 00:07:39.849
376
+ los podemos representar dentro del plano como flechas
377
+
378
+ 00:07:39.870 --> 00:07:42.470
379
+ y tienen algo que se llama sentido, es
380
+
381
+ 00:07:42.470 --> 00:07:44.995
382
+ decir, apuntan hacia un lado, tienen algo que
383
+
384
+ 00:07:44.995 --> 00:07:49.495
385
+ se llama magnitud, que es exactamente esto. Ahora,
386
+
387
+ 00:07:50.275 --> 00:07:51.634
388
+ ¿qué es qué es lo que mide la
389
+
390
+ 00:07:51.634 --> 00:07:54.755
391
+ flecha a la magnitud? Ahora, nosotros hace ratito
392
+
393
+ 00:07:54.755 --> 00:07:58.675
394
+ multiplicándolo llegamos a dos resultados distintos. ¿Cuáles fueron
395
+
396
+ 00:07:58.675 --> 00:08:03.920
397
+ esos resultados? Bueno, regresemos a nuestro notebook. Si
398
+
399
+ 00:08:03.920 --> 00:08:08.400
400
+ nosotros lo multiplicábamos por menos uno, por a,
401
+
402
+ 00:08:08.400 --> 00:08:11.360
403
+ lo que teníamos era este nuevo vector, el
404
+
405
+ 00:08:11.360 --> 00:08:13.375
406
+ menos uno coma menos uno. ¿Cómo se ve
407
+
408
+ 00:08:13.375 --> 00:08:22.235
409
+ ese vector? Bueno, ponemos vector menos uno coma
410
+
411
+ 00:08:22.235 --> 00:08:26.075
412
+ menos uno. Fíjense que algo muy curioso es
413
+
414
+ 00:08:26.075 --> 00:08:28.820
415
+ que, en lugar de que el sentido sea
416
+
417
+ 00:08:28.820 --> 00:08:32.919
418
+ este, se cambia totalmente el sentido, es decir,
419
+
420
+ 00:08:33.299 --> 00:08:37.460
421
+ multiplicar por un escalar negativo cambia el sentido
422
+
423
+ 00:08:37.460 --> 00:08:40.765
424
+ del vector. Si nosotros lo multiplicáramos a este
425
+
426
+ 00:08:40.765 --> 00:08:43.245
427
+ vector b, el menos uno menos uno, nuevamente
428
+
429
+ 00:08:43.245 --> 00:08:46.765
430
+ por menos uno, nos daría al vector en
431
+
432
+ 00:08:46.765 --> 00:08:49.645
433
+ esta dirección, es decir, nos regresaría el vector
434
+
435
+ 00:08:49.645 --> 00:08:54.385
436
+ u, ¿vale? Vamos a desaparecer este vector. Ahora,
437
+
438
+ 00:08:55.150 --> 00:08:57.710
439
+ ¿qué pasa con el vector b? El vector
440
+
441
+ 00:08:57.710 --> 00:09:00.830
442
+ b era el vector dos y nos daba
443
+
444
+ 00:09:00.830 --> 00:09:03.070
445
+ el vector, no, el escalar dos, y nos
446
+
447
+ 00:09:03.070 --> 00:09:06.270
448
+ daba el vector dos coma dos. Entonces, veamos
449
+
450
+ 00:09:06.270 --> 00:09:10.050
451
+ cómo se ve ese. Vector dos coma dos.
452
+
453
+ 00:09:10.245 --> 00:09:15.305
454
+ Fíjense que, en este caso, el vector b
455
+
456
+ 00:09:15.605 --> 00:09:18.565
457
+ es dos veces la magnitud que tenía el
458
+
459
+ 00:09:18.565 --> 00:09:22.404
460
+ vector u. Está en el mismo sentido, tiene
461
+
462
+ 00:09:22.404 --> 00:09:27.670
463
+ la misma dirección, pero tiene una magnitud mucho
464
+
465
+ 00:09:27.670 --> 00:09:30.949
466
+ mayor, tiene un tamaño mucho más grande, es
467
+
468
+ 00:09:30.949 --> 00:09:36.870
469
+ decir, que multiplicarlo por un escalar positivo lo
470
+
471
+ 00:09:36.870 --> 00:09:41.945
472
+ hace más grande. Regresando, multiplicarlo por un vector
473
+
474
+ 00:09:41.945 --> 00:09:44.825
475
+ negativo le va a cambiar el sentido. Pero
476
+
477
+ 00:09:44.825 --> 00:09:47.865
478
+ ¿qué pasa ahora si nosotros, regresamos al vector
479
+
480
+ 00:09:47.865 --> 00:09:50.505
481
+ que teníamos originalmente, el uno coma uno, si
482
+
483
+ 00:09:50.505 --> 00:09:53.885
484
+ nosotros lo multiplicamos por este número de aquí,
485
+
486
+ 00:09:54.449 --> 00:09:58.529
487
+ cero punto uno. Bueno, pues eso nos daba
488
+
489
+ 00:09:58.529 --> 00:10:00.930
490
+ el vector cero punto uno coma cero punto
491
+
492
+ 00:10:00.930 --> 00:10:08.255
493
+ uno. Vamos a declararlo aquí. Cero punto uno
494
+
495
+ 00:10:08.255 --> 00:10:12.415
496
+ coma cero punto uno. ¿Qué es lo que
497
+
498
+ 00:10:12.415 --> 00:10:16.015
499
+ pasó? Bueno, obtuvimos este vector, que es un
500
+
501
+ 00:10:16.015 --> 00:10:18.755
502
+ vector súper pequeño. Fíjense que lo que hicimos
503
+
504
+ 00:10:18.895 --> 00:10:22.730
505
+ fue encoger el vector original. Nuestro vector original
506
+
507
+ 00:10:22.950 --> 00:10:29.190
508
+ es muchísimo más grande. Entonces, básicamente, lo que
509
+
510
+ 00:10:29.190 --> 00:10:32.390
511
+ tenemos es que, si nosotros multiplicamos a nuestro
512
+
513
+ 00:10:32.390 --> 00:10:35.270
514
+ vector por un número positivo, si el número
515
+
516
+ 00:10:35.270 --> 00:10:37.755
517
+ es mayor que uno, entonces lo que nos
518
+
519
+ 00:10:37.755 --> 00:10:41.835
520
+ va a causar es hacer la magnitud mucho
521
+
522
+ 00:10:41.835 --> 00:10:48.714
523
+ más grande de nuestro vector, digamos, amplificar. Si
524
+
525
+ 00:10:48.714 --> 00:10:52.150
526
+ nuestro escalar es menor que uno, pero sigue
527
+
528
+ 00:10:52.150 --> 00:10:57.830
529
+ siendo positivo, lo que va a hacer es
530
+
531
+ 00:10:57.830 --> 00:11:01.290
532
+ hacerlo más pequeño, podríamos decir encogerlo o comprimirlo.
533
+
534
+ 00:11:02.150 --> 00:11:07.165
535
+ Lo vemos acá. Y si nuestro vector es
536
+
537
+ 00:11:07.165 --> 00:11:10.285
538
+ menor que cero, es decir, negativo, lo que
539
+
540
+ 00:11:10.285 --> 00:11:14.845
541
+ hace es que le cambia la dirección, le
542
+
543
+ 00:11:14.845 --> 00:11:19.779
544
+ cambia el sentido. Ahora bien, ¿qué pasa si
545
+
546
+ 00:11:19.779 --> 00:11:23.160
547
+ nosotros lo multiplicamos, pero que sea un vector
548
+
549
+ 00:11:24.260 --> 00:11:28.200
550
+ menor que menos uno, pero que sea negativo?
551
+
552
+ 00:11:31.384 --> 00:11:33.865
553
+ Es decir, mayor que menos uno, menor que
554
+
555
+ 00:11:33.865 --> 00:11:37.384
556
+ cero. Por ejemplo, consideramos que lo multiplicamos por
557
+
558
+ 00:11:37.384 --> 00:11:39.625
559
+ menos cero punto uno, esto nos daría el
560
+
561
+ 00:11:39.625 --> 00:11:42.185
562
+ vector menos cero punto uno menos cero punto
563
+
564
+ 00:11:42.185 --> 00:11:45.464
565
+ uno. Vamos a ver cómo se ve este
566
+
567
+ 00:11:45.464 --> 00:11:49.840
568
+ vector. Y fíjense que si tenemos este vector
569
+
570
+ 00:11:49.840 --> 00:11:53.220
571
+ original o ese vector original lo multiplicado por
572
+
573
+ 00:11:53.760 --> 00:11:58.420
574
+ el menos cero punto uno, nos da exactamente
575
+
576
+ 00:11:58.560 --> 00:12:01.435
577
+ lo mismo que en el caso positivo, simplemente
578
+
579
+ 00:12:01.575 --> 00:12:05.895
580
+ se encogió nuestro vector, miren. Partimos de nuestro
581
+
582
+ 00:12:05.895 --> 00:12:11.895
583
+ vector u, lo multiplicamos por menos uno y
584
+
585
+ 00:12:11.895 --> 00:12:15.095
586
+ nos da este vector encogido a, pero en
587
+
588
+ 00:12:15.095 --> 00:12:18.990
589
+ sentido contrario. Esta es la noción que tenemos
590
+
591
+ 00:12:18.990 --> 00:12:23.170
592
+ que tener geométricamente cuando operamos escalares con vectores.
593
+
594
+ 00:12:23.630 --> 00:12:27.709
595
+ Los vectores van a sufrir una magnificación, es
596
+
597
+ 00:12:27.709 --> 00:12:32.145
598
+ decir, se van a hacer más grandes, su
599
+
600
+ 00:12:32.145 --> 00:12:35.445
601
+ magnitud va a cambiar, van a también hacerse
602
+
603
+ 00:12:36.305 --> 00:12:40.545
604
+ más pequeños si los multiplicamos por escalares entre
605
+
606
+ 00:12:40.545 --> 00:12:43.905
607
+ menos uno y uno. Si son negativos, hay
608
+
609
+ 00:12:43.905 --> 00:12:47.050
610
+ que recordar que se van a hacer, se
611
+
612
+ 00:12:47.050 --> 00:12:50.089
613
+ va a cambiar el sentido y, además, si
614
+
615
+ 00:12:50.089 --> 00:12:52.250
616
+ es negativo y es mayor que uno, cambia
617
+
618
+ 00:12:52.250 --> 00:12:55.610
619
+ el sentido y lo magnifica, pero en el
620
+
621
+ 00:12:55.610 --> 00:12:58.889
622
+ sentido contrario. Es decir, si lo multiplicáramos por
623
+
624
+ 00:12:58.889 --> 00:13:04.065
625
+ menos dos, en lugar de dos, este vector
626
+
627
+ 00:13:04.605 --> 00:13:07.645
628
+ w ya no apuntaría hacia acá, sino apuntaría
629
+
630
+ 00:13:07.645 --> 00:13:11.345
631
+ en la dirección opuesta. Por ejemplo, menos dos,
632
+
633
+ 00:13:14.940 --> 00:13:20.700
634
+ menos dos y menos dos. Entonces, ese era
635
+
636
+ 00:13:20.700 --> 00:13:23.980
637
+ nuestro vector original y la magnitud de esta
638
+
639
+ 00:13:23.980 --> 00:13:26.634
640
+ es del doble, pero ahora está en la
641
+
642
+ 00:13:26.634 --> 00:13:32.654
643
+ dirección opuesta. Apunta en la dirección opuesta. Perfecto,
644
+
645
+ 00:13:32.954 --> 00:13:36.254
646
+ regresemos a nuestro notebook. Para terminar esta clase,
647
+
648
+ 00:13:36.714 --> 00:13:41.610
649
+ me gustaría que realizaras esos ejercicios. Primero, escribe
650
+
651
+ 00:13:41.610 --> 00:13:44.550
652
+ todos los vectores unitarios estándar de r cuatro.
653
+
654
+ 00:13:45.090 --> 00:13:51.010
655
+ Nosotros acá dijimos que un espacio vectorial de
656
+
657
+ 00:13:51.010 --> 00:13:55.670
658
+ dimensión n tenía hasta n vectores unitarios estándar.
659
+
660
+ 00:13:56.335 --> 00:13:58.654
661
+ Tú vas a tener que construirlos para un
662
+
663
+ 00:13:58.654 --> 00:14:01.935
664
+ espacio de dimensión cuatro. El gint es que
665
+
666
+ 00:14:01.935 --> 00:14:04.495
667
+ son cuatro y, además, te puedes basar en
668
+
669
+ 00:14:04.495 --> 00:14:07.375
670
+ la construcción que ya habíamos hecho para los
671
+
672
+ 00:14:07.375 --> 00:14:10.195
673
+ de r tres, que son estos de aquí.
674
+
675
+ 00:14:13.860 --> 00:14:18.040
676
+ Ahora bien, escribe tres combinaciones lineales también de
677
+
678
+ 00:14:18.100 --> 00:14:20.420
679
+ vectores, ahora en r tres, no en r
680
+
681
+ 00:14:20.420 --> 00:14:23.380
682
+ cuatro, para poder expresar al vector uno coma
683
+
684
+ 00:14:23.380 --> 00:14:27.555
685
+ uno coma uno. Si recordamos, acá vimos una
686
+
687
+ 00:14:27.555 --> 00:14:31.714
688
+ combinación para poder expresar a este vector en
689
+
690
+ 00:14:31.714 --> 00:14:34.935
691
+ término de los vectores unitarios, pero la combinación
692
+
693
+ 00:14:35.235 --> 00:14:37.795
694
+ lineal no necesariamente tiene que ser en término
695
+
696
+ 00:14:37.795 --> 00:14:41.210
697
+ de los vectores unitarios. Una, la más sencilla,
698
+
699
+ 00:14:41.210 --> 00:14:43.690
700
+ sería en función de las de los vectores
701
+
702
+ 00:14:43.690 --> 00:14:48.570
703
+ unitarios. Pero el reto aquí es que escribas
704
+
705
+ 00:14:48.570 --> 00:14:54.005
706
+ tres combinaciones. Por último, uno de los problemas
707
+
708
+ 00:14:54.144 --> 00:14:58.404
709
+ será que escribas tres combinaciones afines con vectores
710
+
711
+ 00:14:58.545 --> 00:15:01.105
712
+ de r tres, donde b cero, b uno
713
+
714
+ 00:15:01.105 --> 00:15:04.545
715
+ y b dos sean distintos, pero que se
716
+
717
+ 00:15:04.545 --> 00:15:07.010
718
+ cumpla que la suma de ellos, b cero
719
+
720
+ 00:15:07.010 --> 00:15:09.090
721
+ más b uno más b dos sea igual
722
+
723
+ 00:15:09.090 --> 00:15:11.410
724
+ a uno. Un hind será que si no
725
+
726
+ 00:15:11.410 --> 00:15:14.530
727
+ se te ocurre ninguna combinación de coeficientes que
728
+
729
+ 00:15:14.530 --> 00:15:17.970
730
+ te dé un uno, esta ecuación realmente tiene
731
+
732
+ 00:15:17.970 --> 00:15:21.735
733
+ infinitas soluciones, y una forma de poder acceder
734
+
735
+ 00:15:21.735 --> 00:15:23.895
736
+ a ellas es a través de un programa,
737
+
738
+ 00:15:23.895 --> 00:15:26.135
739
+ es que hagas un programa. Voy a hacer
740
+
741
+ 00:15:26.135 --> 00:15:29.735
742
+ un ejemplo en r dos, o bueno, buscando
743
+
744
+ 00:15:29.735 --> 00:15:32.455
745
+ nada más resolverla para b cero más b
746
+
747
+ 00:15:32.455 --> 00:15:36.920
748
+ uno igual a uno. El agente que te
749
+
750
+ 00:15:36.920 --> 00:15:39.800
751
+ voy a dar es utilizar esta función, se
752
+
753
+ 00:15:39.800 --> 00:15:44.680
754
+ llama n p linkspace. Nosotros le damos un
755
+
756
+ 00:15:44.680 --> 00:15:49.365
757
+ punto de partida, un punto final, y además
758
+
759
+ 00:15:49.365 --> 00:15:53.524
760
+ le decimos cuántos elementos queremos. Lo que va
761
+
762
+ 00:15:53.524 --> 00:15:56.264
763
+ a hacer va a ser partir la distancia
764
+
765
+ 00:15:57.204 --> 00:15:59.445
766
+ entre el cero y el cinco en mil
767
+
768
+ 00:15:59.445 --> 00:16:02.567
769
+ cachos, en donde el cacho cero y el
770
+
771
+ 00:16:02.567 --> 00:16:05.081
772
+ cacho uno van a estar separados a la
773
+
774
+ 00:16:05.081 --> 00:16:08.290
775
+ misma distancia. Veamos los elementos. Si nosotros ejecutamos
776
+
777
+ 00:16:08.430 --> 00:16:12.510
778
+ esta instrucción, veamos que nos arroja mil elementos,
779
+
780
+ 00:16:12.510 --> 00:16:15.334
781
+ un vector con mil elementos, y que son
782
+
783
+ 00:16:15.475 --> 00:16:20.274
784
+ exactamente los números del cero al cinco. Si
785
+
786
+ 00:16:20.274 --> 00:16:24.935
787
+ nosotros le calculamos su longitud, nos daremos cuenta
788
+
789
+ 00:16:25.394 --> 00:16:28.980
790
+ que la longitud es exactamente mil. Ahora, voy
791
+
792
+ 00:16:28.980 --> 00:16:32.340
793
+ a asignar este vector a una variable, digamos
794
+
795
+ 00:16:32.340 --> 00:16:37.560
796
+ a. Notemos que este vector cumple que a
797
+
798
+ 00:16:38.420 --> 00:16:43.214
799
+ cero, que es la primera entrada, restada de
800
+
801
+ 00:16:43.214 --> 00:16:49.135
802
+ la entrada a uno, es simplemente cero punto
803
+
804
+ 00:16:49.135 --> 00:16:52.195
805
+ cero cinco. Veamos qué pasa con la entrada
806
+
807
+ 00:16:52.255 --> 00:17:02.110
808
+ siguiente. A la entrada tres menos la entrada
809
+
810
+ 00:17:02.410 --> 00:17:07.369
811
+ dos. Nos da exactamente el mismo número, es
812
+
813
+ 00:17:07.369 --> 00:17:11.205
814
+ decir, todos los elementos de esta de este
815
+
816
+ 00:17:11.585 --> 00:17:15.765
817
+ vector cumplen que están separados o distan exactamente
818
+
819
+ 00:17:16.305 --> 00:17:19.105
820
+ este número, ¿vale? Y lo mismo lo podemos
821
+
822
+ 00:17:19.105 --> 00:17:21.744
823
+ hacer con los dos últimos. Sabemos que la
824
+
825
+ 00:17:21.744 --> 00:17:25.150
826
+ longitud del vector es mil, entonces, como el
827
+
828
+ 00:17:25.150 --> 00:17:28.430
829
+ índice va desde cero hasta n menos uno,
830
+
831
+ 00:17:28.430 --> 00:17:31.390
832
+ nuestros índices irían de cero hasta novecientos noventa
833
+
834
+ 00:17:31.390 --> 00:17:36.050
835
+ y nueve. Entonces, a novecientos noventa y nueve
836
+
837
+ 00:17:38.975 --> 00:17:42.674
838
+ menos el novecientos noventa y ocho, nos da
839
+
840
+ 00:17:43.054 --> 00:17:46.095
841
+ casi el mismo número. Estas variaciones tan pequeñas
842
+
843
+ 00:17:46.095 --> 00:17:48.735
844
+ son normales, pero si nos fijamos en los
845
+
846
+ 00:17:48.735 --> 00:17:52.540
847
+ tres primeros dígitos como dígitos significativos, es exactamente
848
+
849
+ 00:17:52.919 --> 00:17:55.400
850
+ la misma diferencia. Y es que, a veces,
851
+
852
+ 00:17:55.400 --> 00:17:57.880
853
+ por la precisión, no se puede partir todos
854
+
855
+ 00:17:57.880 --> 00:18:01.880
856
+ los cachos a esta precisión en el mismo
857
+
858
+ 00:18:01.880 --> 00:18:07.020
859
+ tamaño. Sin embargo, son considerablemente iguales los cachos.
860
+
861
+ 00:18:09.105 --> 00:18:12.065
862
+ Y una cosa más, si nosotros llamamos al
863
+
864
+ 00:18:12.065 --> 00:18:14.645
865
+ a cero, este debería de ser el cero,
866
+
867
+ 00:18:14.705 --> 00:18:18.465
868
+ y si nosotros llamamos al a novecientos noventa
869
+
870
+ 00:18:18.465 --> 00:18:21.365
871
+ y nueve, este debería ser el cinco exactamente.
872
+
873
+ 00:18:23.520 --> 00:18:29.120
874
+ Entonces, tu reto será utilizar esta función para
875
+
876
+ 00:18:29.120 --> 00:18:33.760
877
+ poder encontrar una solución a esta ecuación. Eso
878
+
879
+ 00:18:33.760 --> 00:18:35.679
880
+ es todo por mi parte. Nos vemos en
881
+
882
+ 00:18:35.679 --> 00:18:36.740
883
+ la próxima clase.
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/07-producto_escalar_ca62b4c4-85e7-449a-8a01-424da3f688a7.ipynb ADDED
@@ -0,0 +1,472 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# 3. Producto por un escalar o multiplicación escalar-vector."
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "Otra operación es el *producto por un escalar* o *multiplicación escalar-vector* en la cual un vector es multiplicado por un escalar. La operación se hace elemento a elemento. Sea $\\vec{v}$ un vector de $\\mathbb{R}^{n}$ y $\\alpha \\in \\mathbb{R}$. Si $\\vec{x} = \\alpha \\vec{v}$ entonces:\n",
15
+ "$$\n",
16
+ "\\vec{x} = \\alpha \\vec{v} = \\alpha\\begin{bmatrix}v_{0}\\\\ v_{1}\\\\ \\vdots \\\\ v_{n-1}\\end{bmatrix} = \\begin{bmatrix}\\alpha \\cdot v_{0}\\\\ \\alpha \\cdot v_{1}\\\\ \\vdots \\\\ \\alpha \\cdot v_{n-1}\\end{bmatrix}\n",
17
+ "$$"
18
+ ]
19
+ },
20
+ {
21
+ "cell_type": "markdown",
22
+ "metadata": {},
23
+ "source": [
24
+ "Por ejemplo, si $\\vec{v} = (0,1,-2.3)$ y $\\alpha = -1.1$ entonces $\\alpha \\vec{v} = (0,-1.1,2.53)$"
25
+ ]
26
+ },
27
+ {
28
+ "cell_type": "markdown",
29
+ "metadata": {},
30
+ "source": [
31
+ "## 3.1 Propiedades del producto por un escalar-vector"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "markdown",
36
+ "metadata": {},
37
+ "source": [
38
+ "Sean $\\vec{x},\\vec{y}$ dos vectores y $\\alpha, \\beta$ dos escalares cualquiera. Las propiedades que cumple el producto escalar-vector son las siguientes:\n",
39
+ "* Conmutatividad: $\\alpha \\vec{x} = \\vec{x}\\alpha $\n",
40
+ "\n",
41
+ "* Asociatividad: $(\\beta \\alpha)\\vec{x} = \\beta (\\alpha\\vec{x})$\n",
42
+ "\n",
43
+ "* Distribución sobre suma escalar: $(\\alpha + \\beta)\\vec{x} = \\alpha \\vec{x} + \\beta\\vec{x} =\\beta\\vec{x} + \\alpha\\vec{x} = \\vec{x}(\\alpha + \\beta) $\n",
44
+ "\n",
45
+ "* Distribución sobre suma de vectores: $\\alpha (\\vec{x}+\\vec{y}) = \\alpha\\vec{x} + \\alpha\\vec{y}$"
46
+ ]
47
+ },
48
+ {
49
+ "cell_type": "markdown",
50
+ "metadata": {},
51
+ "source": [
52
+ "## 3.2 Algunas consideraciones"
53
+ ]
54
+ },
55
+ {
56
+ "cell_type": "markdown",
57
+ "metadata": {},
58
+ "source": [
59
+ "**Combinaciones lineales**. Sean $\\vec{a}_{0},\\vec{a}_{1},\\dots,\\vec{a}_{m-1}$ $n$-vectores y $\\beta_{0},\\beta_{1},\\dots,\\beta_{m-1}$ escalares entonces podemos definir el siguiente $n$-vector:\n",
60
+ "\n",
61
+ "$$\n",
62
+ "\\beta_{0}\\vec{a}_{0}+\\beta_{1}\\vec{a}_{1}+\\cdots+\\beta_{m-1}\\vec{a}_{m-1}\n",
63
+ "$$\n",
64
+ "\n",
65
+ "Es llamado una *combinación lineal* de los vectores $\\vec{a}_{0},\\vec{a}_{1},\\dots,\\vec{a}_{m-1}$. Los escalares $\\beta_{0},\\beta_{1},\\dots,\\beta_{m-1}$ son llamados los *coeficientes* de la combinación lineal."
66
+ ]
67
+ },
68
+ {
69
+ "cell_type": "markdown",
70
+ "metadata": {},
71
+ "source": [
72
+ " "
73
+ ]
74
+ },
75
+ {
76
+ "cell_type": "markdown",
77
+ "metadata": {},
78
+ "source": [
79
+ "**Combinaciones lineales de vectores unitarios**. Es posible escribir cualquier $\\vec{b}$ $n$-vector como combinación lineal de los vectores unitarios estándar:\n",
80
+ "\n",
81
+ "$$\n",
82
+ "\\vec{b} = b_{0}\\hat{e}_{0}+b_{1}\\hat{e}_{1} + \\cdots +b_{n-1}\\hat{e}_{n-1}\n",
83
+ "$$\n",
84
+ "\n",
85
+ "Con $b_{i}$ escalares y $\\hat{e}_{i}$ el i-ésimo vector unitario. Un ejemplo específico sería:\n",
86
+ "\n",
87
+ "$$\n",
88
+ "\\begin{bmatrix}1\\\\ -1\\\\ 0\\end{bmatrix} = (1)\\begin{bmatrix}1\\\\ 0\\\\ 0\\end{bmatrix} + (-1)\\begin{bmatrix}0\\\\ 1\\\\ 0\\end{bmatrix} + (0)\\begin{bmatrix}0\\\\ 0\\\\ 1\\end{bmatrix}\n",
89
+ "$$\n",
90
+ "\n",
91
+ "Como nota final aquí, notemos que si el espacio vectorial es de dimensión $n$ entonces tiene $n$ vectores unitarios $\\hat{e}_{i}$\n"
92
+ ]
93
+ },
94
+ {
95
+ "cell_type": "markdown",
96
+ "metadata": {},
97
+ "source": [
98
+ " "
99
+ ]
100
+ },
101
+ {
102
+ "cell_type": "markdown",
103
+ "metadata": {},
104
+ "source": [
105
+ "**Combinaciones lineales especiales**. Algunas combinaciones de $n$-vectores $\\vec{a}_{0},\\vec{a}_{1},\\dots,\\vec{a}_{m-1}$ tienen nombres especiales. Por ejemplo, si los coeficientes de la combinación lineal son tales que $\\beta_{0}=\\beta_{1}=\\cdots=\\beta_{m-1} = 1$ entonces simplemente es una suma de vectores. Si en cambio $\\beta_{0}=\\beta_{1}=\\cdots=\\beta_{m-1} = 1/m$ entonces la combinación lineal se llama el *promedio de vectores*. \n",
106
+ "Cuando $\\beta_{0}+\\beta_{1}+\\cdots+\\beta_{m-1}=1$ entonces la combinación lineal se llama *combinación afín*, cuando los coeficientes $\\beta_{i}$ son no-negativos entonces la combinación lineal es llamada una *mezcla*, *combinación convexa* o un *promedio pesado*."
107
+ ]
108
+ },
109
+ {
110
+ "cell_type": "markdown",
111
+ "metadata": {},
112
+ "source": [
113
+ "## 3.3 Producto por un escalar-vector en Python"
114
+ ]
115
+ },
116
+ {
117
+ "cell_type": "markdown",
118
+ "metadata": {},
119
+ "source": [
120
+ "Desde la clase pasada introducimos Numpy para manejo de vectores. Una de las fortunas de usar numpy sobre listas es la simpleta de este tipo de operaciones. Realizar esta operación será tan sencillo como usar el operador $*$. "
121
+ ]
122
+ },
123
+ {
124
+ "cell_type": "markdown",
125
+ "metadata": {},
126
+ "source": [
127
+ "Partamos del vector $\\vec{x}= (1,-1,1)$ y del escalar $a = 3.1$ entonces, realicemos las operaciones $a\\vec{x}$ y $\\vec{x}a$"
128
+ ]
129
+ },
130
+ {
131
+ "cell_type": "code",
132
+ "execution_count": 18,
133
+ "metadata": {},
134
+ "outputs": [],
135
+ "source": [
136
+ "import numpy as np #primero importamos numpy"
137
+ ]
138
+ },
139
+ {
140
+ "cell_type": "code",
141
+ "execution_count": 19,
142
+ "metadata": {},
143
+ "outputs": [],
144
+ "source": [
145
+ "x = np.array([1,-1,1]) #declaramos el vector x\n",
146
+ "\n",
147
+ "a = 3.1 #declaramos el escalar a"
148
+ ]
149
+ },
150
+ {
151
+ "cell_type": "code",
152
+ "execution_count": 20,
153
+ "metadata": {},
154
+ "outputs": [
155
+ {
156
+ "name": "stdout",
157
+ "output_type": "stream",
158
+ "text": [
159
+ "ax es [ 3.1 -3.1 3.1]\n"
160
+ ]
161
+ }
162
+ ],
163
+ "source": [
164
+ "print('ax es',a*x)"
165
+ ]
166
+ },
167
+ {
168
+ "cell_type": "code",
169
+ "execution_count": 21,
170
+ "metadata": {},
171
+ "outputs": [
172
+ {
173
+ "name": "stdout",
174
+ "output_type": "stream",
175
+ "text": [
176
+ "xa es [ 3.1 -3.1 3.1]\n"
177
+ ]
178
+ }
179
+ ],
180
+ "source": [
181
+ "print('xa es',x*a)"
182
+ ]
183
+ },
184
+ {
185
+ "cell_type": "code",
186
+ "execution_count": 9,
187
+ "metadata": {},
188
+ "outputs": [],
189
+ "source": [
190
+ "b = -a"
191
+ ]
192
+ },
193
+ {
194
+ "cell_type": "code",
195
+ "execution_count": 22,
196
+ "metadata": {},
197
+ "outputs": [
198
+ {
199
+ "name": "stdout",
200
+ "output_type": "stream",
201
+ "text": [
202
+ "(b+a)x es [ 0. -0. 0.]\n"
203
+ ]
204
+ }
205
+ ],
206
+ "source": [
207
+ "print('(b+a)x es',(b+a)*x)"
208
+ ]
209
+ },
210
+ {
211
+ "cell_type": "code",
212
+ "execution_count": 23,
213
+ "metadata": {},
214
+ "outputs": [
215
+ {
216
+ "name": "stdout",
217
+ "output_type": "stream",
218
+ "text": [
219
+ "xa+xb es [0. 0. 0.]\n"
220
+ ]
221
+ }
222
+ ],
223
+ "source": [
224
+ "print('xa+xb es',b*x+ x*a)"
225
+ ]
226
+ },
227
+ {
228
+ "cell_type": "markdown",
229
+ "metadata": {},
230
+ "source": [
231
+ "Ahora un ejecio más $\\vec{v} = (1,1)$. Si consideramos a = -1, b = 2, c = 0.1"
232
+ ]
233
+ },
234
+ {
235
+ "cell_type": "code",
236
+ "execution_count": 24,
237
+ "metadata": {},
238
+ "outputs": [],
239
+ "source": [
240
+ "v = np.array([1,1])\n",
241
+ "a = -1\n",
242
+ "b = 2\n",
243
+ "c = 0.1"
244
+ ]
245
+ },
246
+ {
247
+ "cell_type": "code",
248
+ "execution_count": 25,
249
+ "metadata": {},
250
+ "outputs": [
251
+ {
252
+ "data": {
253
+ "text/plain": [
254
+ "array([-1, -1])"
255
+ ]
256
+ },
257
+ "execution_count": 25,
258
+ "metadata": {},
259
+ "output_type": "execute_result"
260
+ }
261
+ ],
262
+ "source": [
263
+ "v*a"
264
+ ]
265
+ },
266
+ {
267
+ "cell_type": "code",
268
+ "execution_count": 26,
269
+ "metadata": {},
270
+ "outputs": [
271
+ {
272
+ "data": {
273
+ "text/plain": [
274
+ "array([2, 2])"
275
+ ]
276
+ },
277
+ "execution_count": 26,
278
+ "metadata": {},
279
+ "output_type": "execute_result"
280
+ }
281
+ ],
282
+ "source": [
283
+ "v*b"
284
+ ]
285
+ },
286
+ {
287
+ "cell_type": "code",
288
+ "execution_count": 28,
289
+ "metadata": {},
290
+ "outputs": [
291
+ {
292
+ "data": {
293
+ "text/plain": [
294
+ "array([0.1, 0.1])"
295
+ ]
296
+ },
297
+ "execution_count": 28,
298
+ "metadata": {},
299
+ "output_type": "execute_result"
300
+ }
301
+ ],
302
+ "source": [
303
+ "v*c"
304
+ ]
305
+ },
306
+ {
307
+ "cell_type": "markdown",
308
+ "metadata": {},
309
+ "source": [
310
+ "## 3.3 Ejercicios"
311
+ ]
312
+ },
313
+ {
314
+ "cell_type": "markdown",
315
+ "metadata": {},
316
+ "source": [
317
+ "**Problema 1**. Escribe TODOS los vectores unitarios estándar de $\\mathbb{R}^{4}$. *Hint:* son cuatro. "
318
+ ]
319
+ },
320
+ {
321
+ "cell_type": "markdown",
322
+ "metadata": {},
323
+ "source": [
324
+ "**Problema 2**. Escribe tres combinaciones lineales de vectores en $\\mathbb{R}^{3}$ para expresar el vector $[1,1,1]$."
325
+ ]
326
+ },
327
+ {
328
+ "cell_type": "markdown",
329
+ "metadata": {},
330
+ "source": [
331
+ "**Problema 3.** Escribe tres combinaciones afines con vectores de $\\mathbb{R}^{3}$ donde $\\beta_{0}\\neq\\beta_{1}\\neq\\beta_{2}$ pero que se cumpla que $\\beta_{0}+\\beta_{1}+\\beta_{2}=1$. *HINT*: Si no se te ocurre ninguna combinación para los coeficientes la ecuación $\\beta_{0}+\\beta_{1}+\\beta_{2}=1$ tiene infinitas soluciones, puedes hacer un programa para encontrar tres. "
332
+ ]
333
+ },
334
+ {
335
+ "cell_type": "code",
336
+ "execution_count": 31,
337
+ "metadata": {},
338
+ "outputs": [],
339
+ "source": [
340
+ "a = np.linspace(0,5,1000)"
341
+ ]
342
+ },
343
+ {
344
+ "cell_type": "code",
345
+ "execution_count": 32,
346
+ "metadata": {},
347
+ "outputs": [
348
+ {
349
+ "data": {
350
+ "text/plain": [
351
+ "0.005005005005005005"
352
+ ]
353
+ },
354
+ "execution_count": 32,
355
+ "metadata": {},
356
+ "output_type": "execute_result"
357
+ }
358
+ ],
359
+ "source": [
360
+ "a[1]-a[0]"
361
+ ]
362
+ },
363
+ {
364
+ "cell_type": "code",
365
+ "execution_count": 33,
366
+ "metadata": {},
367
+ "outputs": [
368
+ {
369
+ "data": {
370
+ "text/plain": [
371
+ "0.005005005005005005"
372
+ ]
373
+ },
374
+ "execution_count": 33,
375
+ "metadata": {},
376
+ "output_type": "execute_result"
377
+ }
378
+ ],
379
+ "source": [
380
+ "a[2]-a[1]"
381
+ ]
382
+ },
383
+ {
384
+ "cell_type": "code",
385
+ "execution_count": 34,
386
+ "metadata": {},
387
+ "outputs": [
388
+ {
389
+ "data": {
390
+ "text/plain": [
391
+ "0.005005005005005003"
392
+ ]
393
+ },
394
+ "execution_count": 34,
395
+ "metadata": {},
396
+ "output_type": "execute_result"
397
+ }
398
+ ],
399
+ "source": [
400
+ "a[999]-a[998]"
401
+ ]
402
+ },
403
+ {
404
+ "cell_type": "code",
405
+ "execution_count": 35,
406
+ "metadata": {},
407
+ "outputs": [
408
+ {
409
+ "data": {
410
+ "text/plain": [
411
+ "0.0"
412
+ ]
413
+ },
414
+ "execution_count": 35,
415
+ "metadata": {},
416
+ "output_type": "execute_result"
417
+ }
418
+ ],
419
+ "source": [
420
+ "a[0]"
421
+ ]
422
+ },
423
+ {
424
+ "cell_type": "code",
425
+ "execution_count": 36,
426
+ "metadata": {},
427
+ "outputs": [
428
+ {
429
+ "data": {
430
+ "text/plain": [
431
+ "5.0"
432
+ ]
433
+ },
434
+ "execution_count": 36,
435
+ "metadata": {},
436
+ "output_type": "execute_result"
437
+ }
438
+ ],
439
+ "source": [
440
+ "a[999]"
441
+ ]
442
+ },
443
+ {
444
+ "cell_type": "code",
445
+ "execution_count": null,
446
+ "metadata": {},
447
+ "outputs": [],
448
+ "source": []
449
+ }
450
+ ],
451
+ "metadata": {
452
+ "kernelspec": {
453
+ "display_name": "Python 3",
454
+ "language": "python",
455
+ "name": "python3"
456
+ },
457
+ "language_info": {
458
+ "codemirror_mode": {
459
+ "name": "ipython",
460
+ "version": 3
461
+ },
462
+ "file_extension": ".py",
463
+ "mimetype": "text/x-python",
464
+ "name": "python",
465
+ "nbconvert_exporter": "python",
466
+ "pygments_lexer": "ipython3",
467
+ "version": "3.7.3"
468
+ }
469
+ },
470
+ "nbformat": 4,
471
+ "nbformat_minor": 4
472
+ }
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://colab.research.google.com/drive/1zLgEfmILRmfGXpHHsH5e6gYc9kM7qT5S?usp=sharing
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Producto Interno de Vectores Definición y Propiedades.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cd4581b5df4a5a13cb4ebd082774ab547bc2005fae5c247e23706365a9f94d81
3
+ size 121998230
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Producto Interno de Vectores Definición y Propiedades.vtt ADDED
@@ -0,0 +1,712 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.439 --> 00:00:05.359
4
+ Te doy la bienvenida de nuevo. Esta es
5
+
6
+ 00:00:05.359 --> 00:00:08.100
7
+ la clase de producto interno. El producto interno
8
+
9
+ 00:00:08.160 --> 00:00:12.340
10
+ es una operación especial entre vectores. Ya vimos
11
+
12
+ 00:00:12.639 --> 00:00:15.219
13
+ operaciones entre vectores, como la suma de vectores,
14
+
15
+ 00:00:15.315 --> 00:00:18.195
16
+ y también ya vimos operaciones entre escalares y
17
+
18
+ 00:00:18.195 --> 00:00:20.435
19
+ vectores, el producto escalar y vector. Lo vimos
20
+
21
+ 00:00:20.435 --> 00:00:22.994
22
+ la clase pasada. Te invito a que si
23
+
24
+ 00:00:22.994 --> 00:00:26.355
25
+ has tenido algún problema o has tenido dudas
26
+
27
+ 00:00:26.355 --> 00:00:28.733
28
+ respecto al contenido que hemos visto, lo dejes
29
+
30
+ 00:00:28.733 --> 00:00:31.080
31
+ en los comentarios y tanto la comunidad de
32
+
33
+ 00:00:31.080 --> 00:00:33.320
34
+ Platzi como yo estaremos al pendiente para poder
35
+
36
+ 00:00:33.320 --> 00:00:37.480
37
+ responderte tus dudas. Ahora, sin más, te voy
38
+
39
+ 00:00:37.480 --> 00:00:40.520
40
+ a presentar esta nueva operación. Vamos a la
41
+
42
+ 00:00:40.520 --> 00:00:44.585
43
+ computadora. Este es el notebook de producto interno
44
+
45
+ 00:00:44.585 --> 00:00:46.985
46
+ y, como siempre, no te preocupes, este notebook
47
+
48
+ 00:00:46.985 --> 00:00:48.505
49
+ va a estar disponible para que tú lo
50
+
51
+ 00:00:48.505 --> 00:00:52.825
52
+ consultes. Ahora bien, a este le llamamos producto
53
+
54
+ 00:00:52.825 --> 00:00:56.265
55
+ interno o producto interno estándar, o simplemente producto
56
+
57
+ 00:00:56.265 --> 00:00:59.410
58
+ punto, a la operación entre dos n vectores,
59
+
60
+ 00:00:59.630 --> 00:01:01.550
61
+ recuerden que tienen que ser los dos n
62
+
63
+ 00:01:01.550 --> 00:01:04.430
64
+ vectores, y que vamos a definir como el
65
+
66
+ 00:01:04.430 --> 00:01:07.310
67
+ siguiente escalar. La notación para el producto punto
68
+
69
+ 00:01:07.310 --> 00:01:11.305
70
+ pueden ser esta clase de corchetes o simplemente
71
+
72
+ 00:01:11.305 --> 00:01:14.985
73
+ un punto en medio, y se define como
74
+
75
+ 00:01:14.985 --> 00:01:17.965
76
+ la suma de la multiplicación de sus entradas
77
+
78
+ 00:01:18.505 --> 00:01:22.345
79
+ entrada por entrada. Es decir, el producto punto
80
+
81
+ 00:01:22.345 --> 00:01:25.990
82
+ o el producto interno entre AYB es a
83
+
84
+ 00:01:25.990 --> 00:01:28.710
85
+ cero por b cero más a uno por
86
+
87
+ 00:01:28.710 --> 00:01:30.890
88
+ b uno más a dos por b dos
89
+
90
+ 00:01:31.110 --> 00:01:33.270
91
+ más a tres por b tres más an
92
+
93
+ 00:01:33.270 --> 00:01:37.825
94
+ por b n. Esto se denota matemáticamente como
95
+
96
+ 00:01:37.825 --> 00:01:41.104
97
+ la suma desde I igual a cero hasta
98
+
99
+ 00:01:41.104 --> 00:01:43.665
100
+ n menos uno de a I por b
101
+
102
+ 00:01:43.665 --> 00:01:47.765
103
+ I. Simplemente, lo que esto denota es que
104
+
105
+ 00:01:47.825 --> 00:01:50.865
106
+ este índice, el I, va a correr desde
107
+
108
+ 00:01:50.865 --> 00:01:54.180
109
+ cero hasta n menos uno, porque son n
110
+
111
+ 00:01:54.180 --> 00:01:57.000
112
+ vectores, y además que vas a multiplicar a
113
+
114
+ 00:01:57.000 --> 00:02:00.759
115
+ los elementos AYB, los AIY los b I,
116
+
117
+ 00:02:00.979 --> 00:02:03.940
118
+ que de ese índice los vas a sumar
119
+
120
+ 00:02:03.940 --> 00:02:06.180
121
+ hasta el n menos uno, es decir, toda
122
+
123
+ 00:02:06.180 --> 00:02:09.394
124
+ esta operación de aquí la podemos comprimir en
125
+
126
+ 00:02:09.394 --> 00:02:15.315
127
+ este simple anotación de aquí. Por ejemplo, si
128
+
129
+ 00:02:15.315 --> 00:02:17.474
130
+ a es igual al vector uno coma dos
131
+
132
+ 00:02:17.474 --> 00:02:19.635
133
+ coma tres y b es igual al vector
134
+
135
+ 00:02:19.635 --> 00:02:22.530
136
+ cuatro coma cinco coma seis, entonces, tendemos que
137
+
138
+ 00:02:22.530 --> 00:02:27.330
139
+ el producto punto será simplemente a punto b,
140
+
141
+ 00:02:27.330 --> 00:02:30.770
142
+ uno coma dos coma tres punto cuatro coma
143
+
144
+ 00:02:30.770 --> 00:02:33.510
145
+ cinco coma seis igual a uno por cuatro,
146
+
147
+ 00:02:33.810 --> 00:02:38.485
148
+ uno por cuatro, dos por cinco, más dos
149
+
150
+ 00:02:38.485 --> 00:02:41.444
151
+ por cinco, más tres por seis, más tres
152
+
153
+ 00:02:41.444 --> 00:02:44.405
154
+ por seis. Y esto nos da aquí, esto
155
+
156
+ 00:02:44.405 --> 00:02:47.525
157
+ de aquí son cuatro, esto de aquí nos
158
+
159
+ 00:02:47.525 --> 00:02:51.100
160
+ da un diez, y esto de aquí nos
161
+
162
+ 00:02:51.100 --> 00:02:55.340
163
+ da un dieciocho, y eso es simplemente treinta
164
+
165
+ 00:02:55.340 --> 00:02:58.540
166
+ y dos. Entonces, el producto punto de a
167
+
168
+ 00:02:58.540 --> 00:03:01.280
169
+ por b nos da treinta y dos. Notemos
170
+
171
+ 00:03:01.420 --> 00:03:04.625
172
+ otra vez y esto es muy importante. Otras
173
+
174
+ 00:03:05.005 --> 00:03:07.505
175
+ operaciones entre vectores que habíamos visto, la suma,
176
+
177
+ 00:03:07.725 --> 00:03:10.045
178
+ nos daba un n vector, si sumábamos dos
179
+
180
+ 00:03:10.045 --> 00:03:12.605
181
+ n vectores, nos daba un n vector. En
182
+
183
+ 00:03:12.605 --> 00:03:15.165
184
+ el caso del producto de escalar vector, también
185
+
186
+ 00:03:15.165 --> 00:03:17.565
187
+ nos daba un n vector, multiplicar un escalar
188
+
189
+ 00:03:17.565 --> 00:03:20.069
190
+ por un n vector nos daba un n
191
+
192
+ 00:03:20.069 --> 00:03:23.670
193
+ vector. En este caso, el producto punto de
194
+
195
+ 00:03:23.670 --> 00:03:26.069
196
+ dos n vectores nos va a dar un
197
+
198
+ 00:03:26.069 --> 00:03:28.310
199
+ número, nos va a dar un escalar. Es
200
+
201
+ 00:03:28.310 --> 00:03:30.230
202
+ por eso que a esto se le refiere
203
+
204
+ 00:03:30.230 --> 00:03:35.205
205
+ también como el producto escalar. Bien, hasta este
206
+
207
+ 00:03:35.205 --> 00:03:38.085
208
+ momento tenemos que, a este momento tenemos que
209
+
210
+ 00:03:38.085 --> 00:03:41.465
211
+ hacer una nueva definición o una nueva revisión
212
+
213
+ 00:03:41.525 --> 00:03:45.060
214
+ de notación. Y es que para nosotros jugar
215
+
216
+ 00:03:45.060 --> 00:03:47.620
217
+ o hablar de vectores columna, es decir, vectores
218
+
219
+ 00:03:47.620 --> 00:03:50.260
220
+ en esta representación, o vectores en la forma
221
+
222
+ 00:03:50.260 --> 00:03:52.740
223
+ de un renglón, como esta representación de aquí,
224
+
225
+ 00:03:52.740 --> 00:03:55.540
226
+ era lo mismo. A partir de este momento,
227
+
228
+ 00:03:55.540 --> 00:03:57.585
229
+ vamos a definir el estándar de un vector
230
+
231
+ 00:03:57.665 --> 00:04:00.625
232
+ como un vector columna, es decir, siempre que
233
+
234
+ 00:04:00.625 --> 00:04:03.025
235
+ nos refiramos a un n vector a, hay
236
+
237
+ 00:04:03.025 --> 00:04:05.445
238
+ que pensar al vector en forma de columna.
239
+
240
+ 00:04:07.425 --> 00:04:09.825
241
+ Y esto nos va a permitir hablar de
242
+
243
+ 00:04:09.825 --> 00:04:13.550
244
+ la operación de transposición. Una cosa muy importante
245
+
246
+ 00:04:13.550 --> 00:04:15.090
247
+ es que antes de hablar de la transposición,
248
+
249
+ 00:04:15.709 --> 00:04:17.709
250
+ va a dar lo mismo si nosotros le
251
+
252
+ 00:04:17.709 --> 00:04:22.930
253
+ ponemos paréntesis cuadrados, paréntesis normales o corchetes. Estaremos
254
+
255
+ 00:04:22.990 --> 00:04:27.074
256
+ hablando siempre de vectores columna. La forma de
257
+
258
+ 00:04:27.074 --> 00:04:29.074
259
+ los paréntesis, de lo que nos delimite la
260
+
261
+ 00:04:29.074 --> 00:04:31.715
262
+ lista, no nos va a cambiar para nada
263
+
264
+ 00:04:31.715 --> 00:04:34.275
265
+ de qué tipo de elemento estemos hablando. Ahora
266
+
267
+ 00:04:34.275 --> 00:04:37.715
268
+ bien, regresando a la transposición, tomemos el vector
269
+
270
+ 00:04:37.715 --> 00:04:39.715
271
+ a, es decir, este vector que tenemos aquí
272
+
273
+ 00:04:39.715 --> 00:04:42.620
274
+ arriba, y el vector transpuesto o la transposición
275
+
276
+ 00:04:42.920 --> 00:04:45.240
277
+ del vector a lo vamos a denotar como
278
+
279
+ 00:04:45.240 --> 00:04:49.080
280
+ a con este índice arriba t, este es
281
+
282
+ 00:04:49.080 --> 00:04:52.280
283
+ súper índice. Y esto se lee como a
284
+
285
+ 00:04:52.280 --> 00:04:55.025
286
+ transpuesto, y a transpuesto se ve como viene
287
+
288
+ 00:04:55.025 --> 00:04:58.085
289
+ aquí. A transpuesto es igual a este vector,
290
+
291
+ 00:04:58.465 --> 00:05:00.625
292
+ con la t arriba también, porque estamos indicando
293
+
294
+ 00:05:00.625 --> 00:05:04.164
295
+ la la operación de transposición, y esto es
296
+
297
+ 00:05:04.305 --> 00:05:08.350
298
+ simplemente el vector renglón. Es decir, transponer un
299
+
300
+ 00:05:08.350 --> 00:05:11.970
301
+ vector columna nos da un vector renglón, ¿vale?
302
+
303
+ 00:05:12.510 --> 00:05:14.350
304
+ Y hay algo muy interesante, y es que
305
+
306
+ 00:05:14.350 --> 00:05:16.669
307
+ la transposición de la transposición nos da el
308
+
309
+ 00:05:16.669 --> 00:05:19.970
310
+ vector original. Esto lo podemos obtener de nuevo.
311
+
312
+ 00:05:20.375 --> 00:05:23.675
313
+ A traspuesta traspuesta es igual a a traspuesta
314
+
315
+ 00:05:24.055 --> 00:05:28.215
316
+ traspuesta, que es igual a este renglón, sabemos
317
+
318
+ 00:05:28.215 --> 00:05:31.115
319
+ que lo de aquí adentro es este renglón,
320
+
321
+ 00:05:31.895 --> 00:05:34.710
322
+ y si nosotros transponemos este renglón, lo que
323
+
324
+ 00:05:34.710 --> 00:05:36.570
325
+ nos va a dar es un vector columna,
326
+
327
+ 00:05:36.870 --> 00:05:39.510
328
+ es decir, transponer un renglón nos da una
329
+
330
+ 00:05:39.510 --> 00:05:41.750
331
+ columna y, trasponer una columna, nos da un
332
+
333
+ 00:05:41.750 --> 00:05:45.750
334
+ renglón. Notemos que en esta operación no modificamos
335
+
336
+ 00:05:45.750 --> 00:05:48.884
337
+ para nada a los elementos de a, simplemente
338
+
339
+ 00:05:48.944 --> 00:05:52.324
340
+ se va a modificar, por una forma simplificada
341
+
342
+ 00:05:52.384 --> 00:05:55.985
343
+ de decirlo, su representación, es decir, estaríamos hablando
344
+
345
+ 00:05:55.985 --> 00:05:58.224
346
+ de una columna o estaríamos hablando de un
347
+
348
+ 00:05:58.224 --> 00:06:05.330
349
+ renglón. Así pues, vamos a considerar con el
350
+
351
+ 00:06:05.330 --> 00:06:09.330
352
+ ejemplo anterior dos vectores AYBY vamos a definir
353
+
354
+ 00:06:09.330 --> 00:06:14.985
355
+ la operación a traspuesta b como a traspuesto
356
+
357
+ 00:06:15.285 --> 00:06:18.165
358
+ b igual a este vector renglón, ya vimos
359
+
360
+ 00:06:18.165 --> 00:06:21.845
361
+ que a traspuesto era este de aquí, y
362
+
363
+ 00:06:21.845 --> 00:06:25.170
364
+ bit es simplemente este vector de aquí. Nosotros
365
+
366
+ 00:06:25.170 --> 00:06:27.010
367
+ dijimos desde acá que el estándar iba a
368
+
369
+ 00:06:27.010 --> 00:06:31.090
370
+ ser pensar en vectores columna. Ahora bien, esto
371
+
372
+ 00:06:31.090 --> 00:06:33.010
373
+ que sucede aquí es lo que se llama
374
+
375
+ 00:06:33.010 --> 00:06:36.370
376
+ la ley del caratazo. Imagina que tienes este
377
+
378
+ 00:06:36.370 --> 00:06:39.215
379
+ abrazo aquí y tienes el otro brazo aquí,
380
+
381
+ 00:06:39.435 --> 00:06:41.695
382
+ entonces vas a cambiar la posición del brazo.
383
+
384
+ 00:06:41.995 --> 00:06:44.255
385
+ La ley del caratazo es algo muy sencillo,
386
+
387
+ 00:06:44.555 --> 00:06:46.955
388
+ vas a empezar con un vector renglón y
389
+
390
+ 00:06:46.955 --> 00:06:49.294
391
+ lo vas a multiplicar por un vector columna.
392
+
393
+ 00:06:49.770 --> 00:06:52.650
394
+ Es decir, cada uno de estos elementos del
395
+
396
+ 00:06:52.650 --> 00:06:55.050
397
+ renglón lo vas a multiplicar por cada uno
398
+
399
+ 00:06:55.050 --> 00:06:57.450
400
+ de los elementos de este vector columna y
401
+
402
+ 00:06:57.450 --> 00:07:00.490
403
+ adivina cuál va a ser el resultado. Un
404
+
405
+ 00:07:00.490 --> 00:07:05.645
406
+ escalar. Regresemos a la computadora. Ahora bien, esto
407
+
408
+ 00:07:05.645 --> 00:07:08.685
409
+ quiere decir que tomemos el a, y el
410
+
411
+ 00:07:08.685 --> 00:07:10.945
412
+ a lo vamos a multiplicar por el b
413
+
414
+ 00:07:11.245 --> 00:07:13.745
415
+ cero, a cero por b cero, aquí está.
416
+
417
+ 00:07:14.044 --> 00:07:15.645
418
+ Y a eso le vamos a sumar el
419
+
420
+ 00:07:15.645 --> 00:07:17.665
421
+ a uno por el b uno, aquí está,
422
+
423
+ 00:07:17.805 --> 00:07:19.099
424
+ y a eso le vamos a sumar el
425
+
426
+ 00:07:19.099 --> 00:07:21.140
427
+ a dos por el b dos, y así
428
+
429
+ 00:07:21.140 --> 00:07:23.460
430
+ hasta el enésimo elemento, que sería el a
431
+
432
+ 00:07:23.460 --> 00:07:25.620
433
+ n por el b n, que es esta
434
+
435
+ 00:07:25.620 --> 00:07:28.340
436
+ suma de aquí. Y otra vez, esto lo
437
+
438
+ 00:07:28.340 --> 00:07:32.995
439
+ podemos denotar con esta anotación de aquí. Ahora
440
+
441
+ 00:07:33.535 --> 00:07:36.895
442
+ bien, esto de aquí coincide exactamente con la
443
+
444
+ 00:07:36.895 --> 00:07:41.475
445
+ definición que nosotros dimos de producto punto. Entonces,
446
+
447
+ 00:07:41.775 --> 00:07:44.095
448
+ otra forma de poder representar el producto punto
449
+
450
+ 00:07:44.095 --> 00:07:47.750
451
+ entre vectores será esta, un vector transpuesto por
452
+
453
+ 00:07:47.750 --> 00:07:51.370
454
+ un vector. Es justamente lo que mencionamos aquí.
455
+
456
+ 00:07:52.790 --> 00:07:56.550
457
+ El producto interno denotado así, con un producto
458
+
459
+ 00:07:56.550 --> 00:07:59.365
460
+ medio, o como la multiplicación de dos vectores
461
+
462
+ 00:07:59.365 --> 00:08:03.205
463
+ de esta forma, es exactamente lo mismo, es
464
+
465
+ 00:08:03.205 --> 00:08:09.205
466
+ la multiplicación de sus elementos y la suma
467
+
468
+ 00:08:09.205 --> 00:08:12.245
469
+ de estos, que es exactamente eso lo que
470
+
471
+ 00:08:12.245 --> 00:08:16.389
472
+ nos dice. Ahora bien, vamos a ver algunas
473
+
474
+ 00:08:16.389 --> 00:08:20.870
475
+ propiedades del producto interno. Vamos a definir AAYB
476
+
477
+ 00:08:20.870 --> 00:08:23.030
478
+ dos n vectores cualesquiera y a alfa un
479
+
480
+ 00:08:23.030 --> 00:08:26.710
481
+ escalar cualquiera. Sabemos que el producto interno entre
482
+
483
+ 00:08:26.710 --> 00:08:31.545
484
+ AYB va a cumplir las siguientes propiedades. Este
485
+
486
+ 00:08:31.545 --> 00:08:34.905
487
+ también cumple la conmutatividad, pero hay que tener
488
+
489
+ 00:08:34.905 --> 00:08:39.065
490
+ mucho cuidado. En este caso, la conmutatividad se
491
+
492
+ 00:08:39.065 --> 00:08:41.870
493
+ da de esta forma, a traspuesto b es
494
+
495
+ 00:08:41.870 --> 00:08:45.070
496
+ igual, sabemos, por este de aquí arriba, a
497
+
498
+ 00:08:45.070 --> 00:08:48.450
499
+ la suma de la multiplicación de los elementos
500
+
501
+ 00:08:49.709 --> 00:08:51.950
502
+ de la de las de los coeficientes, de
503
+
504
+ 00:08:51.950 --> 00:08:54.910
505
+ las entradas individuales de AYB, es decir, los
506
+
507
+ 00:08:54.910 --> 00:08:57.765
508
+ AIY los b I. Ahora, sabemos que estos
509
+
510
+ 00:08:57.765 --> 00:09:00.405
511
+ de aquí son escalares y la multiplicación entre
512
+
513
+ 00:09:00.405 --> 00:09:03.365
514
+ escalares siempre conmuta, es decir, a I por
515
+
516
+ 00:09:03.365 --> 00:09:04.965
517
+ b I es lo mismo que b I
518
+
519
+ 00:09:04.965 --> 00:09:08.745
520
+ por a I. Usando ese hecho podemos escribir
521
+
522
+ 00:09:09.045 --> 00:09:12.120
523
+ esta relación de aquí también. Entonces, da lo
524
+
525
+ 00:09:12.120 --> 00:09:15.660
526
+ mismo si multiplicamos a I por BIY sumamos
527
+
528
+ 00:09:16.120 --> 00:09:18.620
529
+ los a I por los BI0 si sumamos
530
+
531
+ 00:09:18.760 --> 00:09:22.600
532
+ los b I por los AIY esto de
533
+
534
+ 00:09:22.600 --> 00:09:25.660
535
+ aquí es exactamente la representación de b traspuesta
536
+
537
+ 00:09:25.880 --> 00:09:28.995
538
+ por a. Entonces conmuta de la siguiente forma,
539
+
540
+ 00:09:29.055 --> 00:09:31.215
541
+ a traspuesta por b es igual a b
542
+
543
+ 00:09:31.215 --> 00:09:36.415
544
+ traspuesta por a. Ahora, viene la asociatividad con
545
+
546
+ 00:09:36.415 --> 00:09:41.730
547
+ multiplicación escalar. En esta asociatividad nosotros tenemos que
548
+
549
+ 00:09:41.870 --> 00:09:44.910
550
+ a por alfa por a sabemos que esto
551
+
552
+ 00:09:44.910 --> 00:09:48.750
553
+ es un n vector, entonces transponemos toda esta
554
+
555
+ 00:09:48.750 --> 00:09:50.510
556
+ operación de aquí porque este es un n
557
+
558
+ 00:09:50.510 --> 00:09:53.310
559
+ vector, y este n vector lo multiplicamos por
560
+
561
+ 00:09:53.310 --> 00:09:56.535
562
+ b. Lo que nos dice la asociatividad con
563
+
564
+ 00:09:56.535 --> 00:10:00.475
565
+ la multiplicación escalar es que da lo mismo
566
+
567
+ 00:10:01.335 --> 00:10:04.855
568
+ que multipliquemos primero este escalar, es decir, que
569
+
570
+ 00:10:04.855 --> 00:10:09.079
571
+ escalemos este vector, y después lo transpongamos y
572
+
573
+ 00:10:09.079 --> 00:10:12.040
574
+ después lo multipliquemos por b, que si hacemos
575
+
576
+ 00:10:12.040 --> 00:10:15.959
577
+ la multiplicación a traspuesta por b y después
578
+
579
+ 00:10:15.959 --> 00:10:21.565
580
+ lo escalamos por el escalar alfa. Una forma
581
+
582
+ 00:10:21.565 --> 00:10:24.445
583
+ de decirlo, y que también se suele utilizar,
584
+
585
+ 00:10:24.445 --> 00:10:29.185
586
+ es que el escalar saca escalares, la transposición
587
+
588
+ 00:10:29.644 --> 00:10:32.785
589
+ saca escalares. Ahora, vamos a ver la distribución
590
+
591
+ 00:10:32.925 --> 00:10:36.170
592
+ en la adición de vectores. Notemos que si
593
+
594
+ 00:10:36.170 --> 00:10:38.850
595
+ sumamos AYB, esto nos va a dar un
596
+
597
+ 00:10:38.850 --> 00:10:41.570
598
+ n vector, y todo este n vector lo
599
+
600
+ 00:10:41.570 --> 00:10:46.470
601
+ podemos transponer. Y toda esa transposición la multiplicamos
602
+
603
+ 00:10:46.850 --> 00:10:49.654
604
+ por c, y eso nos daría un escalar,
605
+
606
+ 00:10:50.915 --> 00:10:54.115
607
+ donde tanto c como b como a son
608
+
609
+ 00:10:54.115 --> 00:10:58.375
610
+ n vectores. Así bien, lo que la distribución
611
+
612
+ 00:10:58.514 --> 00:11:00.274
613
+ en la adición de vectores nos dice es
614
+
615
+ 00:11:00.274 --> 00:11:03.410
616
+ que da lo mismo sumarlo y después transponerlo
617
+
618
+ 00:11:03.410 --> 00:11:07.650
619
+ y después multiplicarlo por c, que si sumamos
620
+
621
+ 00:11:07.650 --> 00:11:10.130
622
+ la multiplicación de la transposición de a por
623
+
624
+ 00:11:10.130 --> 00:11:12.930
625
+ c y la de la transposición de b
626
+
627
+ 00:11:12.930 --> 00:11:16.705
628
+ por c. Esto será exactamente lo mismo. Hasta
629
+
630
+ 00:11:16.705 --> 00:11:19.665
631
+ aquí llega esta clase. Hay que hacer un
632
+
633
+ 00:11:19.665 --> 00:11:21.505
634
+ pequeño recap de lo que hemos visto hasta
635
+
636
+ 00:11:21.505 --> 00:11:24.145
637
+ ahora. Hasta el momento ya vimos tres tipos
638
+
639
+ 00:11:24.145 --> 00:11:26.705
640
+ de operaciones con los vectores súper importantes, que
641
+
642
+ 00:11:26.705 --> 00:11:30.020
643
+ es la suma de vectores, la multiplicación de
644
+
645
+ 00:11:30.020 --> 00:11:33.380
646
+ escalares por vectores, y ahora vimos esta nueva
647
+
648
+ 00:11:33.380 --> 00:11:36.520
649
+ operación entre vectores que se denomina producto escalar.
650
+
651
+ 00:11:37.220 --> 00:11:41.800
652
+ Solamente para recapitular, la operación suma entre vectores
653
+
654
+ 00:11:42.735 --> 00:11:45.135
655
+ nos daba un vector más, es decir, si
656
+
657
+ 00:11:45.135 --> 00:11:48.175
658
+ sumábamos dos n vectores, lo que obteníamos como
659
+
660
+ 00:11:48.175 --> 00:11:50.815
661
+ respuesta era un n vector. En el caso
662
+
663
+ 00:11:50.815 --> 00:11:52.735
664
+ de la multiplicación de un escalar por un
665
+
666
+ 00:11:52.735 --> 00:11:55.455
667
+ n vector, sabíamos que nos daba también un
668
+
669
+ 00:11:55.455 --> 00:11:57.839
670
+ escalar, y como vimos, lo que hace multiplicarlo
671
+
672
+ 00:11:58.060 --> 00:12:00.000
673
+ por un escalar es que lo puede magnificar,
674
+
675
+ 00:12:00.220 --> 00:12:04.000
676
+ es decir, crece su magnitud, lo puede también
677
+
678
+ 00:12:04.220 --> 00:12:07.740
679
+ achicar, puede hacer que su magnitud decrezca y,
680
+
681
+ 00:12:07.740 --> 00:12:10.905
682
+ de igual manera, le puede cambiar su sentido,
683
+
684
+ 00:12:10.905 --> 00:12:14.025
685
+ es decir, puede apuntar en el sentido contrario,
686
+
687
+ 00:12:14.025 --> 00:12:17.565
688
+ y lo puede magnificar o lo puede encoger
689
+
690
+ 00:12:17.625 --> 00:12:23.625
691
+ en el sentido contrario. El producto interno lo
692
+
693
+ 00:12:23.625 --> 00:12:26.860
694
+ que nos dará, entonces, será un escalar, es
695
+
696
+ 00:12:26.860 --> 00:12:30.540
697
+ decir, tomará dos n vectores, los juntará y
698
+
699
+ 00:12:30.540 --> 00:12:34.380
700
+ nos dará un número. Esa es la diferencia
701
+
702
+ 00:12:34.380 --> 00:12:36.540
703
+ entre las tres operaciones que hemos visto hasta
704
+
705
+ 00:12:36.540 --> 00:12:39.933
706
+ ahora. Nos vemos en la próxima clase, en
707
+
708
+ 00:12:39.933 --> 00:12:42.893
709
+ donde veremos algunas consideraciones y cómo realizar estas
710
+
711
+ 00:12:42.893 --> 00:12:45.633
712
+ operaciones en Python. Nos vemos allá.
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/08-producto_interno_a8f30484-9414-46fd-849b-c4125cd68a19.ipynb ADDED
@@ -0,0 +1,447 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# 4. Producto Interno"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "El *producto interno* (estándar) o simplemente *producto punto* de dos $n$-vectores $\\vec{a},\\vec{b}$ se define como el escalar:\n",
15
+ "\n",
16
+ "$$\n",
17
+ "<\\vec{a},\\vec{b}> = \\vec{a} \\cdot \\vec{b} = a_{0}b_{0}+a_{1}b_{1}+\\cdots+a_{n-1}b_{n-1} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}\n",
18
+ "$$\n",
19
+ "\n",
20
+ "Que es simplemente la suma del producto de sus entradas."
21
+ ]
22
+ },
23
+ {
24
+ "cell_type": "markdown",
25
+ "metadata": {},
26
+ "source": [
27
+ "Por ejemplo, si $\\vec{a}=(1,2,3)$ y $\\vec{b}=(4,5,6)$ entonces el producto punto será:\n",
28
+ "\n",
29
+ "$$\n",
30
+ "\\vec{a}\\cdot\\vec{b} = (1,2,3)\\cdot (4,5,6) = 1\\cdot 4+2\\cdot 5 + 3\\cdot 6 = 4+10+18=32\n",
31
+ "$$"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "markdown",
36
+ "metadata": {},
37
+ "source": [
38
+ "Hasta ahora trabajamos de forma indiferente con *vectores columna* y *vectores renglón*, a partir de este momento **el estándar serán los vectores columna** entonces simpre que hablemos de un vector, dígamos $\\vec{a}$ entonces estaremos hablando del vector columna:\n",
39
+ "\n",
40
+ "$$\n",
41
+ "\\vec{a} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}\n",
42
+ "$$\n",
43
+ "\n",
44
+ "Esto también nos permite introducir una nueva operación: **la transposición**. Retomemos el vector $\\vec{a}$, denotaremos como $\\vec{a}^{T}$ al vector transpuesto de $\\vec{a}$:\n",
45
+ "\n",
46
+ "$$\n",
47
+ "\\vec{a}^{T} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}^{T} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}]\n",
48
+ "$$\n",
49
+ "\n",
50
+ "La operación de transposición nos permite cambiar de vectores columna a vectores renglón sin modificar al vector que se transponga. Notemos que es posible poder transponer un vector transpuesto_\n",
51
+ "\n",
52
+ "$$\n",
53
+ "\\left(\\vec{a}^{T}\\right)^{T} = \\left(\\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}^{T}\\right)^{T} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}]^{T} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix} = \\vec{a}\n",
54
+ "$$"
55
+ ]
56
+ },
57
+ {
58
+ "cell_type": "markdown",
59
+ "metadata": {},
60
+ "source": [
61
+ "Así pues, consideremos el ejemplo anterior de los vectores $\\vec{a}$ y $\\vec{b}$. Definimos la operación $\\vec{a}^{T}\\vec{b}$ como:\n",
62
+ "\n",
63
+ "$$\n",
64
+ "\\vec{a}^{T}\\; \\vec{b} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}] \\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{n-1}\\end{bmatrix} = a_{0}b_{0} + a_{1}b_{1} + \\cdots + a_{n-1}b_{n-1} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}\n",
65
+ "$$\n",
66
+ "\n",
67
+ "Lo cual coincide con la definición del producto interno. Así pues $<\\vec{a},\\vec{b}> = \\vec{a}\\cdot \\vec{b} = \\vec{a}^{T} \\;\\vec{b} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}$"
68
+ ]
69
+ },
70
+ {
71
+ "cell_type": "markdown",
72
+ "metadata": {},
73
+ "source": [
74
+ "## 4.1 Propiedades del producto interno"
75
+ ]
76
+ },
77
+ {
78
+ "cell_type": "markdown",
79
+ "metadata": {},
80
+ "source": [
81
+ "Sean $\\vec{a},\\vec{b}$ dos $n$-vectores y $\\alpha$ un escalar. El producto interno entre $\\vec{a}$ y $\\vec{b}$ cumple las siguientes propiedades:\n",
82
+ "\n",
83
+ "* Conmutatividad: $\\vec{a}^{T}\\vec{b} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i} = \\displaystyle\\sum_{i=0}^{n-1} b_{i}a_{i} = \\vec{b}^{T}\\vec{a}$\n",
84
+ "\n",
85
+ "* Asociatividad con multiplicación escalar: $\\left(\\alpha \\vec{a}\\right)^{T}\\vec{b} = \\alpha\\left(\\vec{a}^{T}\\vec{b}\\right)$\n",
86
+ "\n",
87
+ "* Distribución en la adición de vectores: $\\left(\\vec{a} + \\vec{b}\\right)^{T}\\vec{c} = \\vec{a}^{T}\\vec{c} + \\vec{b}^{T}\\vec{c}$"
88
+ ]
89
+ },
90
+ {
91
+ "cell_type": "markdown",
92
+ "metadata": {},
93
+ "source": [
94
+ "## 4.2 Consideraciones adicionales"
95
+ ]
96
+ },
97
+ {
98
+ "cell_type": "markdown",
99
+ "metadata": {},
100
+ "source": [
101
+ "**Proyección**. Si $\\vec{a}$ es un $n$-vector entonces $\\hat{e}_{i}^{T}\\vec{a} = a_{i}$"
102
+ ]
103
+ },
104
+ {
105
+ "cell_type": "markdown",
106
+ "metadata": {},
107
+ "source": [
108
+ "**Suma de elementos de un vector.** $\\mathbf{1}^{T}a = a_{0}+a_{1}+\\cdots+a_{n-1}$ "
109
+ ]
110
+ },
111
+ {
112
+ "cell_type": "markdown",
113
+ "metadata": {},
114
+ "source": [
115
+ "**Promedio de entradas de un vector.** $(\\mathbf{1}/n)^{T}\\vec{a} = (a_{0}+a_{1}+\\cdots+a_{n-1})/n$"
116
+ ]
117
+ },
118
+ {
119
+ "cell_type": "markdown",
120
+ "metadata": {},
121
+ "source": [
122
+ "**Suma de cuadrados de un vector.** $\\vec{a}^{T} \\;\\vec{a} = a_{0}^{2}+a_{1}^{2}+\\cdots+a_{n-1}^{2}$"
123
+ ]
124
+ },
125
+ {
126
+ "cell_type": "markdown",
127
+ "metadata": {},
128
+ "source": [
129
+ "**Producto interno de bloques de vectores**. Sean $\\vec{a},\\vec{b}$ $k$-vectores formados por concatenar los $n$-vectores $a_{i},b_{i}$:\n",
130
+ "\n",
131
+ "$$\n",
132
+ "\\vec{a}=\\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{k-1}\\end{bmatrix},\\qquad \\vec{b}=\\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{k-1}\\end{bmatrix}\n",
133
+ "$$\n",
134
+ "\n",
135
+ "Entonces el producto punto entre estos vectores va como:\n",
136
+ "\n",
137
+ "$$\n",
138
+ "\\vec{a}^{T} \\vec{b} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{k-1}]\\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{k-1}\\end{bmatrix} = a_{0}^{T}b_{0}+a_{1}^{T}b_{1} + \\cdots + a_{k-1}^{T}b_{k-1}\n",
139
+ "$$"
140
+ ]
141
+ },
142
+ {
143
+ "cell_type": "markdown",
144
+ "metadata": {},
145
+ "source": [
146
+ "## 4.3 Producto interno en Python. "
147
+ ]
148
+ },
149
+ {
150
+ "cell_type": "code",
151
+ "execution_count": 1,
152
+ "metadata": {},
153
+ "outputs": [],
154
+ "source": [
155
+ "import numpy as np"
156
+ ]
157
+ },
158
+ {
159
+ "cell_type": "markdown",
160
+ "metadata": {},
161
+ "source": [
162
+ "Sean $\\vec{a},\\vec{b}$ vectores en $\\mathbb{R}^{4}$. Diremos que los vectores son **ortogonales** o **perpendiculares** si $\\vec{a}\\cdot \\vec{b}= 0$\n",
163
+ "\n",
164
+ "Consideremos entonces $\\vec{a}=\\hat{e}_{0}$ y $\\vec{b} = \\hat{e}_{2}$. Vamos a realizar el producto punto en Python"
165
+ ]
166
+ },
167
+ {
168
+ "cell_type": "code",
169
+ "execution_count": 3,
170
+ "metadata": {},
171
+ "outputs": [],
172
+ "source": [
173
+ "a = np.array([1,0,0,0]) #declaramos el vector e_1\n",
174
+ "\n",
175
+ "b = np.array([0,0,1,0]) #declaramos el vector e_2"
176
+ ]
177
+ },
178
+ {
179
+ "cell_type": "markdown",
180
+ "metadata": {},
181
+ "source": [
182
+ "Para realizar el producto punto llamaremos a la función *numpy.dot*"
183
+ ]
184
+ },
185
+ {
186
+ "cell_type": "code",
187
+ "execution_count": 16,
188
+ "metadata": {},
189
+ "outputs": [
190
+ {
191
+ "name": "stdout",
192
+ "output_type": "stream",
193
+ "text": [
194
+ "<a,b> = 0\n"
195
+ ]
196
+ }
197
+ ],
198
+ "source": [
199
+ "print('<a,b> =',np.dot(a,b))"
200
+ ]
201
+ },
202
+ {
203
+ "cell_type": "markdown",
204
+ "metadata": {},
205
+ "source": [
206
+ "De igual manera también podemos usar el operador $@$"
207
+ ]
208
+ },
209
+ {
210
+ "cell_type": "code",
211
+ "execution_count": 21,
212
+ "metadata": {},
213
+ "outputs": [
214
+ {
215
+ "name": "stdout",
216
+ "output_type": "stream",
217
+ "text": [
218
+ "<a,b> = 0\n"
219
+ ]
220
+ }
221
+ ],
222
+ "source": [
223
+ "print('<a,b> =',a.T@b)"
224
+ ]
225
+ },
226
+ {
227
+ "cell_type": "markdown",
228
+ "metadata": {},
229
+ "source": [
230
+ " "
231
+ ]
232
+ },
233
+ {
234
+ "cell_type": "markdown",
235
+ "metadata": {},
236
+ "source": [
237
+ "**Evaluación de polinomios**. Un polinomio de grado $n-1$ se puede expresar como $p(x) = c_{0} + c_{1}x + c_{2}x^{2} + \\cdots + c_{n-1}x^{n-1}$. Si consideramos los $n$-vectores $\\vec{c},\\vec{x}$ tales que:\n",
238
+ "\n",
239
+ "$$\n",
240
+ "\\vec{c} = \\begin{bmatrix}c_{0}\\\\ c_{1}\\\\ \\vdots \\\\ c_{n-1}\\end{bmatrix},\\qquad \\vec{x}(x) = \\begin{bmatrix}x^{0}\\\\ x^{1}\\\\ \\vdots \\\\ x^{n-1}\\end{bmatrix}\n",
241
+ "$$\n",
242
+ "\n",
243
+ "Así pues, usando estos vectores es posible expresar $p(x) = \\vec{c}^{T}\\vec{x}(x)$. Un ejemplo más concreto sería $p(x)=1+2x$, usando los vectores:\n",
244
+ "\n",
245
+ "$$\n",
246
+ "\\vec{c} = \\begin{bmatrix}1\\\\ 2 \\end{bmatrix}, \\qquad \\vec{x}(x) = \\begin{bmatrix}1\\\\ x \\end{bmatrix}\n",
247
+ "$$\n",
248
+ "\n",
249
+ "Entonces podemos escribir:\n",
250
+ "$$\n",
251
+ "p(x) = \\vec{c}^{T}\\vec{x}(x) = [1 \\; 2] \\begin{bmatrix}1\\\\ x \\end{bmatrix} = 1\\cdot 1 + 2\\cdot x = 1 + 2x\n",
252
+ "$$"
253
+ ]
254
+ },
255
+ {
256
+ "cell_type": "markdown",
257
+ "metadata": {},
258
+ "source": [
259
+ "Así pues en Python podemos escribir el polinomio como:"
260
+ ]
261
+ },
262
+ {
263
+ "cell_type": "code",
264
+ "execution_count": 2,
265
+ "metadata": {},
266
+ "outputs": [],
267
+ "source": [
268
+ "def p(x):\n",
269
+ " return np.array([1,2])@np.array([1,x])"
270
+ ]
271
+ },
272
+ {
273
+ "cell_type": "code",
274
+ "execution_count": 5,
275
+ "metadata": {},
276
+ "outputs": [
277
+ {
278
+ "name": "stdout",
279
+ "output_type": "stream",
280
+ "text": [
281
+ "p(0) = 1\n",
282
+ "p(1) = 3\n",
283
+ "p(2) = 5\n"
284
+ ]
285
+ }
286
+ ],
287
+ "source": [
288
+ "print('p(0) = ',p(0))\n",
289
+ "print('p(1) = ',p(1))\n",
290
+ "print('p(2) = ',p(2))"
291
+ ]
292
+ },
293
+ {
294
+ "cell_type": "markdown",
295
+ "metadata": {},
296
+ "source": [
297
+ "## 4.4 Ejercicios."
298
+ ]
299
+ },
300
+ {
301
+ "cell_type": "markdown",
302
+ "metadata": {},
303
+ "source": [
304
+ "**Problema 1: Análisis de sentimientos de tweets.** Vamos a crear un máquina que pueda decirnos qué tan positivo, neutral o negativo son una serie de respuestas de twitter. \n",
305
+ "Las respuestas son:\n",
306
+ "> Gran mexicano y excelente en su área, su muerte es una enorme perdida y debería ser luto nacional!!!\n",
307
+ "\n",
308
+ "> Vaya señora que bueno que se asesora por alguien inteligente no por el ignorante del Gatt.\n",
309
+ "\n",
310
+ "> Se me ocurre y sin ver todos los videos de Plazti que me informéis por dónde empiezo. Entiendo que os tendría que decir quién soy y que quiero, vamos conocerme para asesorarme bien.\n",
311
+ "Un saludo\n",
312
+ "\n",
313
+ "> Soy docente universitario, estoy intentando preparar mis clases en modo platzi bien didáctico, (le llamo modo noticiero), descargue una plataforma gratuita de grabación y transmisión de vídeo, se llama Obs estudio!bueno la sigo remando con sus funciones pero sé que saldrá algo!"
314
+ ]
315
+ },
316
+ {
317
+ "cell_type": "code",
318
+ "execution_count": 7,
319
+ "metadata": {},
320
+ "outputs": [],
321
+ "source": [
322
+ "a = \"Gran mexicano y excelente en su área, su muerte es una enorme perdida y debería ser luto nacional!!!\"\n",
323
+ "a = a.replace(\"!\",\"\").replace(\",\",\"\").split(\" \")"
324
+ ]
325
+ },
326
+ {
327
+ "cell_type": "code",
328
+ "execution_count": 8,
329
+ "metadata": {},
330
+ "outputs": [
331
+ {
332
+ "data": {
333
+ "text/plain": [
334
+ "['Gran',\n",
335
+ " 'mexicano',\n",
336
+ " 'y',\n",
337
+ " 'excelente',\n",
338
+ " 'en',\n",
339
+ " 'su',\n",
340
+ " 'área',\n",
341
+ " 'su',\n",
342
+ " 'muerte',\n",
343
+ " 'es',\n",
344
+ " 'una',\n",
345
+ " 'enorme',\n",
346
+ " 'perdida',\n",
347
+ " 'y',\n",
348
+ " 'debería',\n",
349
+ " 'ser',\n",
350
+ " 'luto',\n",
351
+ " 'nacional']"
352
+ ]
353
+ },
354
+ "execution_count": 8,
355
+ "metadata": {},
356
+ "output_type": "execute_result"
357
+ }
358
+ ],
359
+ "source": [
360
+ "a"
361
+ ]
362
+ },
363
+ {
364
+ "cell_type": "code",
365
+ "execution_count": 9,
366
+ "metadata": {},
367
+ "outputs": [
368
+ {
369
+ "name": "stdout",
370
+ "output_type": "stream",
371
+ "text": [
372
+ "Sí\n"
373
+ ]
374
+ }
375
+ ],
376
+ "source": [
377
+ "if 'muerte' in a:\n",
378
+ " print(\"Sí\")"
379
+ ]
380
+ },
381
+ {
382
+ "cell_type": "markdown",
383
+ "metadata": {},
384
+ "source": [
385
+ "Ahora bien, no podemos sacar toda la información de los textos sino vamos a buscar cadenas (strings) específicas. Así pues vamos a construir una función de Python que cuente la cantidad de veces que aparece cierta cadena. Como ejemplo, supongamos que las palabras que vamos a contar son *muerte*, *pérdida*, *luto*, *excelente*,*gran* y *positivo*, y además esto lo queremos expresar como vector en orden respectivo, así pues el primer comentario lo podemos expresar como el siguiente vector:\n",
386
+ "$$\n",
387
+ "\\vec{w} = \\begin{bmatrix}1\\\\ 1 \\\\ 1\\\\ 1\\\\ 1 \\\\0 \\end{bmatrix}\n",
388
+ "$$\n",
389
+ "Ahora, vamos a crear otra función en la que tendremos el vector con entradas de cantidad de palabras positivas, negativas y neutras. Siguiendo con el ejemplo vamos a sumar un uno a la primer entrada si aparece alguna de las siguientes palabras *excelente*,*gran* y *positivo*, un uno en la segunda por cada vez que aparezca la palabra *pérdida* y un uno a la última entrada si aparecen las palabras *muerte* y *luto*. Así pues, el primer twett lo podemos representar como:\n",
390
+ "\n",
391
+ "$$\n",
392
+ "\\vec{s} = \\begin{bmatrix} 2 \\\\ 1 \\\\2 \\end{bmatrix}\n",
393
+ "$$\n",
394
+ "\n",
395
+ "Ahora, para ver la *calidad* del resultado que tendremos para un twett conviene calcular el promedio de las entradas de un vector de palabras\n",
396
+ "$$avg(\\vec{w}) = (\\mathbf{1}/n)^{T}\\vec{w}$$\n",
397
+ "Y después calcularás el promedio del sentimiento de cada tweet $avg(\\vec{s})$ y de igual manera el *score sentimental* que se define como \n",
398
+ "$$score(\\vec{s}) = [1\\; 0\\; -1] \\begin{bmatrix} s_{0} \\\\ s_{1} \\\\s_{2} \\end{bmatrix}$$"
399
+ ]
400
+ },
401
+ {
402
+ "cell_type": "markdown",
403
+ "metadata": {},
404
+ "source": [
405
+ "Leyendo los tuits decide el conjunto mínimo de palabras que vas a contar en todos los tuits, solamente deberás hacer una función para contar palabras para todos los tuits, no hagas un función por enunciado. Según tu esquema reponde lo siguiente:\n",
406
+ "\n",
407
+ "* ¿Qué tuit es más positivo?\n",
408
+ "\n",
409
+ "* ¿Qué tuit es más negativo?\n",
410
+ "\n",
411
+ "* ¿Cuál es tu calidad promedio?\n",
412
+ "\n",
413
+ "* ¿Cómo interpretas $avg(\\vec{s})$ y $score(\\vec{s})$?\n",
414
+ "\n",
415
+ "* ¿Cómo relacionas la calidad con $score(\\vec{s})$ y $avg(\\vec{s})$?"
416
+ ]
417
+ },
418
+ {
419
+ "cell_type": "code",
420
+ "execution_count": null,
421
+ "metadata": {},
422
+ "outputs": [],
423
+ "source": []
424
+ }
425
+ ],
426
+ "metadata": {
427
+ "kernelspec": {
428
+ "display_name": "Python 3",
429
+ "language": "python",
430
+ "name": "python3"
431
+ },
432
+ "language_info": {
433
+ "codemirror_mode": {
434
+ "name": "ipython",
435
+ "version": 3
436
+ },
437
+ "file_extension": ".py",
438
+ "mimetype": "text/x-python",
439
+ "name": "python",
440
+ "nbconvert_exporter": "python",
441
+ "pygments_lexer": "ipython3",
442
+ "version": "3.7.3"
443
+ }
444
+ },
445
+ "nbformat": 4,
446
+ "nbformat_minor": 4
447
+ }
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://colab.research.google.com/drive/1zLgEfmILRmfGXpHHsH5e6gYc9kM7qT5S?usp=sharing
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Producto Interno de Vectores en Python con NumPy.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2c432aba0dacd891b93d54e99ab58804e292e23b2746088018d16717886712ce
3
+ size 114255941
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Producto Interno de Vectores en Python con NumPy.vtt ADDED
@@ -0,0 +1,604 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.120 --> 00:00:05.120
4
+ Te doy la bienvenida de nuevo. En la
5
+
6
+ 00:00:05.120 --> 00:00:07.919
7
+ clase pasada, lo que vimos fue un breve
8
+
9
+ 00:00:07.919 --> 00:00:10.400
10
+ repaso de otras operaciones que hemos visto entre
11
+
12
+ 00:00:10.400 --> 00:00:13.245
13
+ vectores y escalares, y también vimos e introdujimos
14
+
15
+ 00:00:13.465 --> 00:00:17.225
16
+ una nueva operación, se llama producto interno. Vimos
17
+
18
+ 00:00:17.225 --> 00:00:19.465
19
+ cómo se realiza de manera algebraica y realizamos
20
+
21
+ 00:00:19.465 --> 00:00:21.865
22
+ algunos ejercicios a mano. Te invito a que
23
+
24
+ 00:00:21.865 --> 00:00:24.345
25
+ ahora lo hagamos y aprendamos a hacerlo en
26
+
27
+ 00:00:24.345 --> 00:00:27.890
28
+ Python. Sin más, vamos a la computadora. Ahora,
29
+
30
+ 00:00:28.270 --> 00:00:31.869
31
+ antes de llegar a las operaciones en Python,
32
+
33
+ 00:00:31.869 --> 00:00:34.110
34
+ el producto interno en Python, vamos a ver
35
+
36
+ 00:00:34.110 --> 00:00:38.290
37
+ algunas consideraciones adicionales. Fíjense que si nosotros tenemos
38
+
39
+ 00:00:38.350 --> 00:00:40.430
40
+ a como un n vector y hacemos la
41
+
42
+ 00:00:40.430 --> 00:00:44.495
43
+ multiplicación de el vector unitario estándar e I
44
+
45
+ 00:00:44.495 --> 00:00:47.875
46
+ traspuesto por a, esto nos da la componente
47
+
48
+ 00:00:48.015 --> 00:00:50.175
49
+ a I del vector a. A esto le
50
+
51
+ 00:00:50.175 --> 00:00:54.170
52
+ vamos a llamar una proyección. Es decir, solamente
53
+
54
+ 00:00:54.170 --> 00:00:57.949
55
+ estamos viendo la iésima componente de este vector
56
+
57
+ 00:00:58.329 --> 00:01:02.570
58
+ y, como siempre, nos da un escalar. También
59
+
60
+ 00:01:02.570 --> 00:01:04.729
61
+ vamos a ver que podemos expresar la suma
62
+
63
+ 00:01:04.729 --> 00:01:06.729
64
+ de los elementos de un vector como la
65
+
66
+ 00:01:06.729 --> 00:01:11.505
67
+ multiplicación de vectores, es decir, si tomamos el
68
+
69
+ 00:01:11.505 --> 00:01:14.865
70
+ vector uno, el n vector uno y lo
71
+
72
+ 00:01:14.865 --> 00:01:18.645
73
+ transponemos, y tenemos a este n vector a,
74
+
75
+ 00:01:19.104 --> 00:01:21.985
76
+ esto va a ser simplemente la suma de
77
+
78
+ 00:01:21.985 --> 00:01:25.110
79
+ las componentes del vector a, es decir, a
80
+
81
+ 00:01:25.110 --> 00:01:27.270
82
+ cero, a uno, a dos, a tres, a
83
+
84
+ 00:01:27.270 --> 00:01:30.950
85
+ n. Te invito a que realices esta operación
86
+
87
+ 00:01:30.950 --> 00:01:33.190
88
+ a mano y de manera explícita, al igual
89
+
90
+ 00:01:33.190 --> 00:01:36.710
91
+ que esta, para que compruebes que el resultado
92
+
93
+ 00:01:36.710 --> 00:01:42.015
94
+ es correcto. De igual manera, si nosotros tomamos
95
+
96
+ 00:01:42.075 --> 00:01:45.435
97
+ el vector uno y lo multiplicamos por el
98
+
99
+ 00:01:45.435 --> 00:01:50.820
100
+ escalar uno sobre n, y además esto lo
101
+
102
+ 00:01:50.820 --> 00:01:53.720
103
+ transponemos y lo multiplicamos por el vector a,
104
+
105
+ 00:01:54.180 --> 00:01:58.360
106
+ vamos a obtener el promedio de las entradas
107
+
108
+ 00:01:58.500 --> 00:02:01.060
109
+ de un vector, o el promedio de un
110
+
111
+ 00:02:01.060 --> 00:02:04.035
112
+ vector. Esta operación ya la habíamos visto antes,
113
+
114
+ 00:02:04.035 --> 00:02:06.455
115
+ pero es bueno recordarle y volverla a introducir
116
+
117
+ 00:02:06.515 --> 00:02:11.315
118
+ aquí. También, la suma de los cuadrados de
119
+
120
+ 00:02:11.315 --> 00:02:15.075
121
+ un vector se puede expresar como el producto
122
+
123
+ 00:02:15.075 --> 00:02:18.375
124
+ interno. En este caso, notemos que a traspuesta
125
+
126
+ 00:02:18.835 --> 00:02:21.770
127
+ por a es igual a a cuadrada más
128
+
129
+ 00:02:21.770 --> 00:02:24.910
130
+ a uno al cuadrado más a dos cuadrado
131
+
132
+ 00:02:25.370 --> 00:02:27.690
133
+ más a tres cuadrado, y así hasta el
134
+
135
+ 00:02:27.690 --> 00:02:30.810
136
+ a n menos uno al cuadrado. Te invito
137
+
138
+ 00:02:30.810 --> 00:02:33.790
139
+ a que realices todas estas operaciones a mano
140
+
141
+ 00:02:34.305 --> 00:02:37.185
142
+ con vectores, digamos, en r tres y que
143
+
144
+ 00:02:37.185 --> 00:02:41.265
145
+ puedas verificar que esto es cierto. También otra
146
+
147
+ 00:02:41.265 --> 00:02:42.944
148
+ cosa muy interna que en el futuro nos
149
+
150
+ 00:02:42.944 --> 00:02:46.144
151
+ servirá es el producto interno entre bloques de
152
+
153
+ 00:02:46.144 --> 00:02:50.530
154
+ vectores. Si recordamos, nosotros teníamos la definición de
155
+
156
+ 00:02:50.530 --> 00:02:54.050
157
+ bloques de vectores como n vectores, cuyos elementos
158
+
159
+ 00:02:54.050 --> 00:02:59.170
160
+ eran k vectores. Entonces, consideremos AYBK vectores formados
161
+
162
+ 00:02:59.170 --> 00:03:03.254
163
+ al concatenar los n vectores AIYBI. Vamos a
164
+
165
+ 00:03:03.635 --> 00:03:08.915
166
+ considerar que son, como son k vectores, KAIYKBI
167
+
168
+ 00:03:08.915 --> 00:03:13.875
169
+ vectores. Entonces, a es un k vector y
170
+
171
+ 00:03:13.875 --> 00:03:16.674
172
+ cada una de sus entradas aquí es un
173
+
174
+ 00:03:16.674 --> 00:03:19.349
175
+ n vector. Tenemos el n vector a cero,
176
+
177
+ 00:03:19.349 --> 00:03:21.430
178
+ el n vector a uno, así hasta el
179
+
180
+ 00:03:21.430 --> 00:03:25.590
181
+ n vector k menos uno. De igual manera,
182
+
183
+ 00:03:25.590 --> 00:03:28.870
184
+ con b. Tenemos el vector el n vector
185
+
186
+ 00:03:28.870 --> 00:03:30.709
187
+ b cero en el n vector b uno
188
+
189
+ 00:03:30.709 --> 00:03:33.209
190
+ hasta el n vector b k menos uno.
191
+
192
+ 00:03:33.375 --> 00:03:38.035
193
+ AYB son k vectores, mientras que los coeficientes
194
+
195
+ 00:03:38.335 --> 00:03:42.975
196
+ de aquí son en realidad n vectores. Así,
197
+
198
+ 00:03:42.975 --> 00:03:46.815
199
+ pues, el producto punto entre estos vectores lo
200
+
201
+ 00:03:46.815 --> 00:03:50.459
202
+ podemos denotar como a traspuesta por b, como
203
+
204
+ 00:03:50.459 --> 00:03:53.260
205
+ hemos visto hasta ahora, que es simplemente este
206
+
207
+ 00:03:53.260 --> 00:03:57.120
208
+ vector renglón por este vector columna. Sin embargo,
209
+
210
+ 00:03:58.219 --> 00:04:02.334
211
+ esto nos da como resultado este de aquí
212
+
213
+ 00:04:02.474 --> 00:04:07.674
214
+ transpuesto por este de aquí normal. Te invito
215
+
216
+ 00:04:07.674 --> 00:04:10.415
217
+ a que llegues a este resultado, sin embargo,
218
+
219
+ 00:04:10.474 --> 00:04:16.810
220
+ este resultado es cierto. Entonces, el producto interno
221
+
222
+ 00:04:17.589 --> 00:04:20.950
223
+ entre dos bloques de vectores será igual a
224
+
225
+ 00:04:20.950 --> 00:04:24.550
226
+ la suma de los productos internos entrada por
227
+
228
+ 00:04:24.550 --> 00:04:28.544
229
+ entrada de los vectores que componen a esos
230
+
231
+ 00:04:30.205 --> 00:04:36.604
232
+ a esos bloques de vectores. Ahora bien, vamos
233
+
234
+ 00:04:36.604 --> 00:04:38.444
235
+ a entrar de lleno con el producto interno
236
+
237
+ 00:04:38.444 --> 00:04:41.245
238
+ en Python. Para eso primero vamos a importar
239
+
240
+ 00:04:41.245 --> 00:04:45.849
241
+ numpy. Después, vamos a aclarar AYB dos vectores
242
+
243
+ 00:04:45.849 --> 00:04:49.050
244
+ en r cuatro. Algo muy importante o una
245
+
246
+ 00:04:49.050 --> 00:04:51.849
247
+ propiedad importante es que diremos que estos vectores
248
+
249
+ 00:04:51.849 --> 00:04:56.694
250
+ son ortogonales o perpendiculares si el producto interno
251
+
252
+ 00:04:56.835 --> 00:05:02.294
253
+ de AYB es cero. Así, pues, consideremos entonces
254
+
255
+ 00:05:02.754 --> 00:05:05.315
256
+ a a igual a e cero YAB igual
257
+
258
+ 00:05:05.315 --> 00:05:08.880
259
+ a e dos, dentro de r cuatro, realicemos
260
+
261
+ 00:05:08.940 --> 00:05:12.000
262
+ el producto punto de esos vectores en Python.
263
+
264
+ 00:05:12.860 --> 00:05:16.060
265
+ Estos vectores ya los conocemos porque se quedaron
266
+
267
+ 00:05:16.060 --> 00:05:19.740
268
+ como ejercicio hace dos clases. Si no, de
269
+
270
+ 00:05:19.740 --> 00:05:22.325
271
+ todas maneras lo recuerdo, el vector e uno
272
+
273
+ 00:05:22.325 --> 00:05:24.725
274
+ es el vector uno coma cero coma cero
275
+
276
+ 00:05:24.725 --> 00:05:26.965
277
+ coma cero, y el vector e dos será
278
+
279
+ 00:05:26.965 --> 00:05:29.605
280
+ el vector cero coma cero coma uno coma
281
+
282
+ 00:05:29.605 --> 00:05:38.290
283
+ cero. Si nosotros realizamos el producto punto, lo
284
+
285
+ 00:05:38.290 --> 00:05:41.370
286
+ podemos realizar a mano, nos daremos cuenta que
287
+
288
+ 00:05:41.370 --> 00:05:44.770
289
+ este de aquí nos dará cero, ya que
290
+
291
+ 00:05:44.770 --> 00:05:48.450
292
+ uno por cero es cero, más cero por
293
+
294
+ 00:05:48.450 --> 00:05:50.844
295
+ cero, que es cero, Cero por cero, que
296
+
297
+ 00:05:50.844 --> 00:05:52.525
298
+ es cero, más cero por cero, que es
299
+
300
+ 00:05:52.525 --> 00:05:56.365
301
+ cero. Entonces, este producto punto, el producto punto
302
+
303
+ 00:05:56.365 --> 00:05:57.805
304
+ entre e uno y e dos, o en
305
+
306
+ 00:05:57.805 --> 00:05:59.965
307
+ este caso AYB, nos debería de durar un
308
+
309
+ 00:05:59.965 --> 00:06:03.164
310
+ cero. Ahora, la forma de realizar el producto
311
+
312
+ 00:06:03.164 --> 00:06:07.389
313
+ punto entre AYB en numpy se llama con
314
+
315
+ 00:06:07.389 --> 00:06:14.690
316
+ la función numpy dot. Entonces llamaremos print, el
317
+
318
+ 00:06:14.910 --> 00:06:17.355
319
+ producto punto de AYB igual, y esta es
320
+
321
+ 00:06:17.355 --> 00:06:20.895
322
+ la operación que hacemos, n p dot AYB.
323
+
324
+ 00:06:20.955 --> 00:06:22.955
325
+ Si te das cuenta, no hay necesidad de
326
+
327
+ 00:06:22.955 --> 00:06:25.215
328
+ transponer, no hay necesidad de hacer ninguna operación
329
+
330
+ 00:06:25.995 --> 00:06:30.790
331
+ adicional, simplemente llamamos n p punto dot a
332
+
333
+ 00:06:30.790 --> 00:06:33.270
334
+ coma b, y nos da el resultado que
335
+
336
+ 00:06:33.270 --> 00:06:37.990
337
+ estábamos esperando. De igual manera, cuando estemos hablando
338
+
339
+ 00:06:37.990 --> 00:06:40.490
340
+ de vectores y en el futuro de matrices,
341
+
342
+ 00:06:41.030 --> 00:06:45.074
343
+ podemos utilizar el operador arroba. Este operador dentro
344
+
345
+ 00:06:45.074 --> 00:06:48.995
346
+ de NumPy o entre entre elementos de NumPy
347
+
348
+ 00:06:48.995 --> 00:06:52.354
349
+ sean matrices o sean vectores, representa para ellos
350
+
351
+ 00:06:52.354 --> 00:06:56.835
352
+ la multiplicación. Y entonces, si nosotros agarramos dos
353
+
354
+ 00:06:56.835 --> 00:07:00.930
355
+ vectores, en este caso, el vector a y
356
+
357
+ 00:07:00.930 --> 00:07:03.330
358
+ el vector b, y además al vector a
359
+
360
+ 00:07:03.330 --> 00:07:08.449
361
+ lo transponemos, nos daremos cuenta que el producto
362
+
363
+ 00:07:08.449 --> 00:07:12.605
364
+ punto es simplemente cero, y es que esta
365
+
366
+ 00:07:12.905 --> 00:07:14.845
367
+ representación que tenemos de aquí es la multiplicación
368
+
369
+ 00:07:15.145 --> 00:07:18.665
370
+ entre vectores, exactamente esta que hemos estado viendo
371
+
372
+ 00:07:18.665 --> 00:07:23.785
373
+ acá. Ahora bien, vamos a poner un ejemplo
374
+
375
+ 00:07:23.785 --> 00:07:27.380
376
+ más claro. Un polinomio de grado n menos
377
+
378
+ 00:07:27.380 --> 00:07:30.760
379
+ uno se puede expresar como esta combinación lineal,
380
+
381
+ 00:07:33.860 --> 00:07:39.080
382
+ donde los c ceros son constantes ya dadas
383
+
384
+ 00:07:40.005 --> 00:07:46.805
385
+ y los x son el número que estamos
386
+
387
+ 00:07:46.805 --> 00:07:52.264
388
+ introduciendo. Por ejemplo, si este fuera un cero,
389
+
390
+ 00:07:53.150 --> 00:07:56.349
391
+ este de aquí sería cero por c uno,
392
+
393
+ 00:07:56.349 --> 00:07:59.710
394
+ cero por c dos, cero por c n
395
+
396
+ 00:07:59.710 --> 00:08:03.330
397
+ menos uno, y nos daría únicamente c cero.
398
+
399
+ 00:08:04.990 --> 00:08:09.685
400
+ Ahora, si consideramos dos n vectores CYX, tales
401
+
402
+ 00:08:09.685 --> 00:08:14.005
403
+ que esos n vectores son c cero, c
404
+
405
+ 00:08:14.005 --> 00:08:16.824
406
+ uno, c dos, hasta c n menos uno,
407
+
408
+ 00:08:17.044 --> 00:08:21.625
409
+ y consideramos también un vector función, más adelante
410
+
411
+ 00:08:22.085 --> 00:08:24.370
412
+ veremos cómo definir estos de manera correcta, pero
413
+
414
+ 00:08:24.370 --> 00:08:26.530
415
+ simplemente lo que nosotros le vamos a meter
416
+
417
+ 00:08:26.530 --> 00:08:29.330
418
+ a este vector es un número. Si le
419
+
420
+ 00:08:29.330 --> 00:08:31.570
421
+ ponemos un cero, por ejemplo, aquí sería cero
422
+
423
+ 00:08:31.570 --> 00:08:34.929
424
+ a la cero, que es un cero. Cero
425
+
426
+ 00:08:34.929 --> 00:08:37.169
427
+ a la uno, que es un cero, y
428
+
429
+ 00:08:37.169 --> 00:08:39.010
430
+ cero a la n menos uno, que nos
431
+
432
+ 00:08:39.010 --> 00:08:43.145
433
+ dará un cero. Entonces, en ese caso, si
434
+
435
+ 00:08:43.145 --> 00:08:46.425
436
+ nosotros ponemos un uno, nos dará c uno
437
+
438
+ 00:08:46.425 --> 00:08:50.665
439
+ a la cero, que es Ese te lo
440
+
441
+ 00:08:50.665 --> 00:08:53.225
442
+ dejo a ti. Uno a la uno, que
443
+
444
+ 00:08:53.225 --> 00:08:55.540
445
+ es uno, y uno a la n menos
446
+
447
+ 00:08:55.540 --> 00:09:00.180
448
+ uno, que será uno también, y así podemos
449
+
450
+ 00:09:00.180 --> 00:09:11.345
451
+ seguirlo haciendo. Ahora bien, usando estos vectores, el
452
+
453
+ 00:09:11.345 --> 00:09:15.584
454
+ vector c y el vector XDX, va a
455
+
456
+ 00:09:15.584 --> 00:09:20.520
457
+ ser posible expresar este polinomio de aquí como
458
+
459
+ 00:09:20.580 --> 00:09:24.820
460
+ esta multiplicación de vectores de acá. Si ponemos
461
+
462
+ 00:09:24.820 --> 00:09:28.280
463
+ un ejemplo más concreto o mucho más tangible,
464
+
465
+ 00:09:28.820 --> 00:09:31.780
466
+ lo podríamos poner como el polinomio uno más
467
+
468
+ 00:09:31.780 --> 00:09:37.065
469
+ dos x. Usando los vectores c igual a
470
+
471
+ 00:09:37.065 --> 00:09:39.785
472
+ uno dos y x de x igual a
473
+
474
+ 00:09:39.785 --> 00:09:46.125
475
+ uno x. Y así podemos escribir p igual
476
+
477
+ 00:09:46.340 --> 00:09:49.640
478
+ a c traspuesta por XDX, que es igual
479
+
480
+ 00:09:49.700 --> 00:09:53.140
481
+ al uno dos, por el uno x, y
482
+
483
+ 00:09:53.140 --> 00:09:55.060
484
+ esto es igual a uno por uno, que
485
+
486
+ 00:09:55.060 --> 00:09:57.780
487
+ es uno por uno, más dos por x,
488
+
489
+ 00:09:57.780 --> 00:10:00.065
490
+ dos por x. Y esto nos da uno
491
+
492
+ 00:10:00.065 --> 00:10:03.285
493
+ más dos x, que es exactamente nuestro polinomio.
494
+
495
+ 00:10:03.345 --> 00:10:08.964
496
+ Ahora, vamos a definir este polinomio en Python.
497
+
498
+ 00:10:09.345 --> 00:10:12.305
499
+ ¿Cómo lo haríamos? Vamos a definir la función
500
+
501
+ 00:10:12.305 --> 00:10:14.404
502
+ pdx y lo que nos va a regresar
503
+
504
+ 00:10:14.730 --> 00:10:18.510
505
+ va a ser el array n p uno
506
+
507
+ 00:10:18.570 --> 00:10:22.190
508
+ coma dos, que es este de aquí, multiplicado
509
+
510
+ 00:10:23.690 --> 00:10:28.810
511
+ por el array uno coma x, que es
512
+
513
+ 00:10:28.810 --> 00:10:32.725
514
+ este de aquí. Y ahora, si nosotros evaluamos
515
+
516
+ 00:10:33.425 --> 00:10:36.225
517
+ este polinomio en cero, por ejemplo, evaluándolo en
518
+
519
+ 00:10:36.225 --> 00:10:39.904
520
+ cero sabemos que cero por dos x, esto
521
+
522
+ 00:10:39.904 --> 00:10:41.524
523
+ de aquí nos va a dar un cero
524
+
525
+ 00:10:41.584 --> 00:10:47.240
526
+ y nos daría un uno. Entonces, evaluando p
527
+
528
+ 00:10:47.240 --> 00:10:50.520
529
+ en cero nos debería de dar uno, y
530
+
531
+ 00:10:50.520 --> 00:10:54.620
532
+ aquí está exactamente. Y no hicimos esta función,
533
+
534
+ 00:10:54.680 --> 00:10:57.980
535
+ sino hicimos esta multiplicación de vectores de acá.
536
+
537
+ 00:10:58.465 --> 00:11:02.225
538
+ Ahora, vamos a ver qué nos daría evaluarlo
539
+
540
+ 00:11:02.225 --> 00:11:06.225
541
+ en el uno. Si nosotros evaluamos en el
542
+
543
+ 00:11:06.225 --> 00:11:09.425
544
+ uno, veamos de la fórmula de aquí, tenemos
545
+
546
+ 00:11:09.425 --> 00:11:12.645
547
+ uno más dos por uno, que sería tres.
548
+
549
+ 00:11:13.140 --> 00:11:16.020
550
+ Entonces, esto, p de uno, nos estaría dando
551
+
552
+ 00:11:16.020 --> 00:11:19.220
553
+ tres, y ya tenemos que p cero es
554
+
555
+ 00:11:19.220 --> 00:11:22.360
556
+ uno, y que p en uno es tres.
557
+
558
+ 00:11:22.820 --> 00:11:27.485
559
+ Veamos un ejemplo más. Evaluémoslo en dos. Vamos
560
+
561
+ 00:11:27.485 --> 00:11:29.084
562
+ a ver qué pasa en esta fórmula si
563
+
564
+ 00:11:29.084 --> 00:11:31.985
565
+ yo lo pongo el dos aquí. Eso significaría
566
+
567
+ 00:11:32.445 --> 00:11:34.785
568
+ que nos quedaría un dos por dos aquí,
569
+
570
+ 00:11:34.925 --> 00:11:37.245
571
+ que sería un cuatro, y sumado a un
572
+
573
+ 00:11:37.245 --> 00:11:40.125
574
+ uno nos daría un cinco. Entonces, p de
575
+
576
+ 00:11:40.125 --> 00:11:45.620
577
+ dos sería cinco, y exactamente nos da este
578
+
579
+ 00:11:45.620 --> 00:11:49.480
580
+ resultado. Entonces, como vemos, es posible poder expresar
581
+
582
+ 00:11:49.940 --> 00:11:56.095
583
+ estos polinomios utilizando esta clase de vectores en
584
+
585
+ 00:11:56.095 --> 00:12:01.315
586
+ forma de una multiplicación de esos vectores. Aquí
587
+
588
+ 00:12:02.255 --> 00:12:06.495
589
+ llega esta clase. Ahora, la próxima clase vamos
590
+
591
+ 00:12:06.495 --> 00:12:09.589
592
+ a hacer el primer miniproyecto. Este primer miniproyecto
593
+
594
+ 00:12:09.890 --> 00:12:12.450
595
+ consistirá en hacer un modelo muy sencillo de
596
+
597
+ 00:12:12.450 --> 00:12:16.450
598
+ análisis de sentimientos sobre algunos tweets. Espero que
599
+
600
+ 00:12:16.450 --> 00:12:19.010
601
+ estés igual de emocionado que yo. Nos vemos
602
+
603
+ 00:12:19.010 --> 00:12:19.510
604
+ allá.
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/09-producto_interno_554a11a7-c20a-4a1c-99e8-4408610d53ae.ipynb ADDED
@@ -0,0 +1,447 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# 4. Producto Interno"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "El *producto interno* (estándar) o simplemente *producto punto* de dos $n$-vectores $\\vec{a},\\vec{b}$ se define como el escalar:\n",
15
+ "\n",
16
+ "$$\n",
17
+ "<\\vec{a},\\vec{b}> = \\vec{a} \\cdot \\vec{b} = a_{0}b_{0}+a_{1}b_{1}+\\cdots+a_{n-1}b_{n-1} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}\n",
18
+ "$$\n",
19
+ "\n",
20
+ "Que es simplemente la suma del producto de sus entradas."
21
+ ]
22
+ },
23
+ {
24
+ "cell_type": "markdown",
25
+ "metadata": {},
26
+ "source": [
27
+ "Por ejemplo, si $\\vec{a}=(1,2,3)$ y $\\vec{b}=(4,5,6)$ entonces el producto punto será:\n",
28
+ "\n",
29
+ "$$\n",
30
+ "\\vec{a}\\cdot\\vec{b} = (1,2,3)\\cdot (4,5,6) = 1\\cdot 4+2\\cdot 5 + 3\\cdot 6 = 4+10+18=32\n",
31
+ "$$"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "markdown",
36
+ "metadata": {},
37
+ "source": [
38
+ "Hasta ahora trabajamos de forma indiferente con *vectores columna* y *vectores renglón*, a partir de este momento **el estándar serán los vectores columna** entonces simpre que hablemos de un vector, dígamos $\\vec{a}$ entonces estaremos hablando del vector columna:\n",
39
+ "\n",
40
+ "$$\n",
41
+ "\\vec{a} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}\n",
42
+ "$$\n",
43
+ "\n",
44
+ "Esto también nos permite introducir una nueva operación: **la transposición**. Retomemos el vector $\\vec{a}$, denotaremos como $\\vec{a}^{T}$ al vector transpuesto de $\\vec{a}$:\n",
45
+ "\n",
46
+ "$$\n",
47
+ "\\vec{a}^{T} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}^{T} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}]\n",
48
+ "$$\n",
49
+ "\n",
50
+ "La operación de transposición nos permite cambiar de vectores columna a vectores renglón sin modificar al vector que se transponga. Notemos que es posible poder transponer un vector transpuesto_\n",
51
+ "\n",
52
+ "$$\n",
53
+ "\\left(\\vec{a}^{T}\\right)^{T} = \\left(\\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}^{T}\\right)^{T} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}]^{T} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix} = \\vec{a}\n",
54
+ "$$"
55
+ ]
56
+ },
57
+ {
58
+ "cell_type": "markdown",
59
+ "metadata": {},
60
+ "source": [
61
+ "Así pues, consideremos el ejemplo anterior de los vectores $\\vec{a}$ y $\\vec{b}$. Definimos la operación $\\vec{a}^{T}\\vec{b}$ como:\n",
62
+ "\n",
63
+ "$$\n",
64
+ "\\vec{a}^{T}\\; \\vec{b} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}] \\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{n-1}\\end{bmatrix} = a_{0}b_{0} + a_{1}b_{1} + \\cdots + a_{n-1}b_{n-1} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}\n",
65
+ "$$\n",
66
+ "\n",
67
+ "Lo cual coincide con la definición del producto interno. Así pues $<\\vec{a},\\vec{b}> = \\vec{a}\\cdot \\vec{b} = \\vec{a}^{T} \\;\\vec{b} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}$"
68
+ ]
69
+ },
70
+ {
71
+ "cell_type": "markdown",
72
+ "metadata": {},
73
+ "source": [
74
+ "## 4.1 Propiedades del producto interno"
75
+ ]
76
+ },
77
+ {
78
+ "cell_type": "markdown",
79
+ "metadata": {},
80
+ "source": [
81
+ "Sean $\\vec{a},\\vec{b}$ dos $n$-vectores y $\\alpha$ un escalar. El producto interno entre $\\vec{a}$ y $\\vec{b}$ cumple las siguientes propiedades:\n",
82
+ "\n",
83
+ "* Conmutatividad: $\\vec{a}^{T}\\vec{b} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i} = \\displaystyle\\sum_{i=0}^{n-1} b_{i}a_{i} = \\vec{b}^{T}\\vec{a}$\n",
84
+ "\n",
85
+ "* Asociatividad con multiplicación escalar: $\\left(\\alpha \\vec{a}\\right)^{T}\\vec{b} = \\alpha\\left(\\vec{a}^{T}\\vec{b}\\right)$\n",
86
+ "\n",
87
+ "* Distribución en la adición de vectores: $\\left(\\vec{a} + \\vec{b}\\right)^{T}\\vec{c} = \\vec{a}^{T}\\vec{c} + \\vec{b}^{T}\\vec{c}$"
88
+ ]
89
+ },
90
+ {
91
+ "cell_type": "markdown",
92
+ "metadata": {},
93
+ "source": [
94
+ "## 4.2 Consideraciones adicionales"
95
+ ]
96
+ },
97
+ {
98
+ "cell_type": "markdown",
99
+ "metadata": {},
100
+ "source": [
101
+ "**Proyección**. Si $\\vec{a}$ es un $n$-vector entonces $\\hat{e}_{i}^{T}\\vec{a} = a_{i}$"
102
+ ]
103
+ },
104
+ {
105
+ "cell_type": "markdown",
106
+ "metadata": {},
107
+ "source": [
108
+ "**Suma de elementos de un vector.** $\\mathbf{1}^{T}a = a_{0}+a_{1}+\\cdots+a_{n-1}$ "
109
+ ]
110
+ },
111
+ {
112
+ "cell_type": "markdown",
113
+ "metadata": {},
114
+ "source": [
115
+ "**Promedio de entradas de un vector.** $(\\mathbf{1}/n)^{T}\\vec{a} = (a_{0}+a_{1}+\\cdots+a_{n-1})/n$"
116
+ ]
117
+ },
118
+ {
119
+ "cell_type": "markdown",
120
+ "metadata": {},
121
+ "source": [
122
+ "**Suma de cuadrados de un vector.** $\\vec{a}^{T} \\;\\vec{a} = a_{0}^{2}+a_{1}^{2}+\\cdots+a_{n-1}^{2}$"
123
+ ]
124
+ },
125
+ {
126
+ "cell_type": "markdown",
127
+ "metadata": {},
128
+ "source": [
129
+ "**Producto interno de bloques de vectores**. Sean $\\vec{a},\\vec{b}$ $k$-vectores formados por concatenar los $n$-vectores $a_{i},b_{i}$:\n",
130
+ "\n",
131
+ "$$\n",
132
+ "\\vec{a}=\\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{k-1}\\end{bmatrix},\\qquad \\vec{b}=\\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{k-1}\\end{bmatrix}\n",
133
+ "$$\n",
134
+ "\n",
135
+ "Entonces el producto punto entre estos vectores va como:\n",
136
+ "\n",
137
+ "$$\n",
138
+ "\\vec{a}^{T} \\vec{b} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{k-1}]\\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{k-1}\\end{bmatrix} = a_{0}^{T}b_{0}+a_{1}^{T}b_{1} + \\cdots + a_{k-1}^{T}b_{k-1}\n",
139
+ "$$"
140
+ ]
141
+ },
142
+ {
143
+ "cell_type": "markdown",
144
+ "metadata": {},
145
+ "source": [
146
+ "## 4.3 Producto interno en Python. "
147
+ ]
148
+ },
149
+ {
150
+ "cell_type": "code",
151
+ "execution_count": 1,
152
+ "metadata": {},
153
+ "outputs": [],
154
+ "source": [
155
+ "import numpy as np"
156
+ ]
157
+ },
158
+ {
159
+ "cell_type": "markdown",
160
+ "metadata": {},
161
+ "source": [
162
+ "Sean $\\vec{a},\\vec{b}$ vectores en $\\mathbb{R}^{4}$. Diremos que los vectores son **ortogonales** o **perpendiculares** si $\\vec{a}\\cdot \\vec{b}= 0$\n",
163
+ "\n",
164
+ "Consideremos entonces $\\vec{a}=\\hat{e}_{0}$ y $\\vec{b} = \\hat{e}_{2}$. Vamos a realizar el producto punto en Python"
165
+ ]
166
+ },
167
+ {
168
+ "cell_type": "code",
169
+ "execution_count": 3,
170
+ "metadata": {},
171
+ "outputs": [],
172
+ "source": [
173
+ "a = np.array([1,0,0,0]) #declaramos el vector e_1\n",
174
+ "\n",
175
+ "b = np.array([0,0,1,0]) #declaramos el vector e_2"
176
+ ]
177
+ },
178
+ {
179
+ "cell_type": "markdown",
180
+ "metadata": {},
181
+ "source": [
182
+ "Para realizar el producto punto llamaremos a la función *numpy.dot*"
183
+ ]
184
+ },
185
+ {
186
+ "cell_type": "code",
187
+ "execution_count": 16,
188
+ "metadata": {},
189
+ "outputs": [
190
+ {
191
+ "name": "stdout",
192
+ "output_type": "stream",
193
+ "text": [
194
+ "<a,b> = 0\n"
195
+ ]
196
+ }
197
+ ],
198
+ "source": [
199
+ "print('<a,b> =',np.dot(a,b))"
200
+ ]
201
+ },
202
+ {
203
+ "cell_type": "markdown",
204
+ "metadata": {},
205
+ "source": [
206
+ "De igual manera también podemos usar el operador $@$"
207
+ ]
208
+ },
209
+ {
210
+ "cell_type": "code",
211
+ "execution_count": 21,
212
+ "metadata": {},
213
+ "outputs": [
214
+ {
215
+ "name": "stdout",
216
+ "output_type": "stream",
217
+ "text": [
218
+ "<a,b> = 0\n"
219
+ ]
220
+ }
221
+ ],
222
+ "source": [
223
+ "print('<a,b> =',a.T@b)"
224
+ ]
225
+ },
226
+ {
227
+ "cell_type": "markdown",
228
+ "metadata": {},
229
+ "source": [
230
+ " "
231
+ ]
232
+ },
233
+ {
234
+ "cell_type": "markdown",
235
+ "metadata": {},
236
+ "source": [
237
+ "**Evaluación de polinomios**. Un polinomio de grado $n-1$ se puede expresar como $p(x) = c_{0} + c_{1}x + c_{2}x^{2} + \\cdots + c_{n-1}x^{n-1}$. Si consideramos los $n$-vectores $\\vec{c},\\vec{x}$ tales que:\n",
238
+ "\n",
239
+ "$$\n",
240
+ "\\vec{c} = \\begin{bmatrix}c_{0}\\\\ c_{1}\\\\ \\vdots \\\\ c_{n-1}\\end{bmatrix},\\qquad \\vec{x}(x) = \\begin{bmatrix}x^{0}\\\\ x^{1}\\\\ \\vdots \\\\ x^{n-1}\\end{bmatrix}\n",
241
+ "$$\n",
242
+ "\n",
243
+ "Así pues, usando estos vectores es posible expresar $p(x) = \\vec{c}^{T}\\vec{x}(x)$. Un ejemplo más concreto sería $p(x)=1+2x$, usando los vectores:\n",
244
+ "\n",
245
+ "$$\n",
246
+ "\\vec{c} = \\begin{bmatrix}1\\\\ 2 \\end{bmatrix}, \\qquad \\vec{x}(x) = \\begin{bmatrix}1\\\\ x \\end{bmatrix}\n",
247
+ "$$\n",
248
+ "\n",
249
+ "Entonces podemos escribir:\n",
250
+ "$$\n",
251
+ "p(x) = \\vec{c}^{T}\\vec{x}(x) = [1 \\; 2] \\begin{bmatrix}1\\\\ x \\end{bmatrix} = 1\\cdot 1 + 2\\cdot x = 1 + 2x\n",
252
+ "$$"
253
+ ]
254
+ },
255
+ {
256
+ "cell_type": "markdown",
257
+ "metadata": {},
258
+ "source": [
259
+ "Así pues en Python podemos escribir el polinomio como:"
260
+ ]
261
+ },
262
+ {
263
+ "cell_type": "code",
264
+ "execution_count": 2,
265
+ "metadata": {},
266
+ "outputs": [],
267
+ "source": [
268
+ "def p(x):\n",
269
+ " return np.array([1,2])@np.array([1,x])"
270
+ ]
271
+ },
272
+ {
273
+ "cell_type": "code",
274
+ "execution_count": 5,
275
+ "metadata": {},
276
+ "outputs": [
277
+ {
278
+ "name": "stdout",
279
+ "output_type": "stream",
280
+ "text": [
281
+ "p(0) = 1\n",
282
+ "p(1) = 3\n",
283
+ "p(2) = 5\n"
284
+ ]
285
+ }
286
+ ],
287
+ "source": [
288
+ "print('p(0) = ',p(0))\n",
289
+ "print('p(1) = ',p(1))\n",
290
+ "print('p(2) = ',p(2))"
291
+ ]
292
+ },
293
+ {
294
+ "cell_type": "markdown",
295
+ "metadata": {},
296
+ "source": [
297
+ "## 4.4 Ejercicios."
298
+ ]
299
+ },
300
+ {
301
+ "cell_type": "markdown",
302
+ "metadata": {},
303
+ "source": [
304
+ "**Problema 1: Análisis de sentimientos de tweets.** Vamos a crear un máquina que pueda decirnos qué tan positivo, neutral o negativo son una serie de respuestas de twitter. \n",
305
+ "Las respuestas son:\n",
306
+ "> Gran mexicano y excelente en su área, su muerte es una enorme perdida y debería ser luto nacional!!!\n",
307
+ "\n",
308
+ "> Vaya señora que bueno que se asesora por alguien inteligente no por el ignorante del Gatt.\n",
309
+ "\n",
310
+ "> Se me ocurre y sin ver todos los videos de Plazti que me informéis por dónde empiezo. Entiendo que os tendría que decir quién soy y que quiero, vamos conocerme para asesorarme bien.\n",
311
+ "Un saludo\n",
312
+ "\n",
313
+ "> Soy docente universitario, estoy intentando preparar mis clases en modo platzi bien didáctico, (le llamo modo noticiero), descargue una plataforma gratuita de grabación y transmisión de vídeo, se llama Obs estudio!bueno la sigo remando con sus funciones pero sé que saldrá algo!"
314
+ ]
315
+ },
316
+ {
317
+ "cell_type": "code",
318
+ "execution_count": 7,
319
+ "metadata": {},
320
+ "outputs": [],
321
+ "source": [
322
+ "a = \"Gran mexicano y excelente en su área, su muerte es una enorme perdida y debería ser luto nacional!!!\"\n",
323
+ "a = a.replace(\"!\",\"\").replace(\",\",\"\").split(\" \")"
324
+ ]
325
+ },
326
+ {
327
+ "cell_type": "code",
328
+ "execution_count": 8,
329
+ "metadata": {},
330
+ "outputs": [
331
+ {
332
+ "data": {
333
+ "text/plain": [
334
+ "['Gran',\n",
335
+ " 'mexicano',\n",
336
+ " 'y',\n",
337
+ " 'excelente',\n",
338
+ " 'en',\n",
339
+ " 'su',\n",
340
+ " 'área',\n",
341
+ " 'su',\n",
342
+ " 'muerte',\n",
343
+ " 'es',\n",
344
+ " 'una',\n",
345
+ " 'enorme',\n",
346
+ " 'perdida',\n",
347
+ " 'y',\n",
348
+ " 'debería',\n",
349
+ " 'ser',\n",
350
+ " 'luto',\n",
351
+ " 'nacional']"
352
+ ]
353
+ },
354
+ "execution_count": 8,
355
+ "metadata": {},
356
+ "output_type": "execute_result"
357
+ }
358
+ ],
359
+ "source": [
360
+ "a"
361
+ ]
362
+ },
363
+ {
364
+ "cell_type": "code",
365
+ "execution_count": 9,
366
+ "metadata": {},
367
+ "outputs": [
368
+ {
369
+ "name": "stdout",
370
+ "output_type": "stream",
371
+ "text": [
372
+ "Sí\n"
373
+ ]
374
+ }
375
+ ],
376
+ "source": [
377
+ "if 'muerte' in a:\n",
378
+ " print(\"Sí\")"
379
+ ]
380
+ },
381
+ {
382
+ "cell_type": "markdown",
383
+ "metadata": {},
384
+ "source": [
385
+ "Ahora bien, no podemos sacar toda la información de los textos sino vamos a buscar cadenas (strings) específicas. Así pues vamos a construir una función de Python que cuente la cantidad de veces que aparece cierta cadena. Como ejemplo, supongamos que las palabras que vamos a contar son *muerte*, *pérdida*, *luto*, *excelente*,*gran* y *positivo*, y además esto lo queremos expresar como vector en orden respectivo, así pues el primer comentario lo podemos expresar como el siguiente vector:\n",
386
+ "$$\n",
387
+ "\\vec{w} = \\begin{bmatrix}1\\\\ 1 \\\\ 1\\\\ 1\\\\ 1 \\\\0 \\end{bmatrix}\n",
388
+ "$$\n",
389
+ "Ahora, vamos a crear otra función en la que tendremos el vector con entradas de cantidad de palabras positivas, negativas y neutras. Siguiendo con el ejemplo vamos a sumar un uno a la primer entrada si aparece alguna de las siguientes palabras *excelente*,*gran* y *positivo*, un uno en la segunda por cada vez que aparezca la palabra *pérdida* y un uno a la última entrada si aparecen las palabras *muerte* y *luto*. Así pues, el primer twett lo podemos representar como:\n",
390
+ "\n",
391
+ "$$\n",
392
+ "\\vec{s} = \\begin{bmatrix} 2 \\\\ 1 \\\\2 \\end{bmatrix}\n",
393
+ "$$\n",
394
+ "\n",
395
+ "Ahora, para ver la *calidad* del resultado que tendremos para un twett conviene calcular el promedio de las entradas de un vector de palabras\n",
396
+ "$$avg(\\vec{w}) = (\\mathbf{1}/n)^{T}\\vec{w}$$\n",
397
+ "Y después calcularás el promedio del sentimiento de cada tweet $avg(\\vec{s})$ y de igual manera el *score sentimental* que se define como \n",
398
+ "$$score(\\vec{s}) = [1\\; 0\\; -1] \\begin{bmatrix} s_{0} \\\\ s_{1} \\\\s_{2} \\end{bmatrix}$$"
399
+ ]
400
+ },
401
+ {
402
+ "cell_type": "markdown",
403
+ "metadata": {},
404
+ "source": [
405
+ "Leyendo los tuits decide el conjunto mínimo de palabras que vas a contar en todos los tuits, solamente deberás hacer una función para contar palabras para todos los tuits, no hagas un función por enunciado. Según tu esquema reponde lo siguiente:\n",
406
+ "\n",
407
+ "* ¿Qué tuit es más positivo?\n",
408
+ "\n",
409
+ "* ¿Qué tuit es más negativo?\n",
410
+ "\n",
411
+ "* ¿Cuál es tu calidad promedio?\n",
412
+ "\n",
413
+ "* ¿Cómo interpretas $avg(\\vec{s})$ y $score(\\vec{s})$?\n",
414
+ "\n",
415
+ "* ¿Cómo relacionas la calidad con $score(\\vec{s})$ y $avg(\\vec{s})$?"
416
+ ]
417
+ },
418
+ {
419
+ "cell_type": "code",
420
+ "execution_count": null,
421
+ "metadata": {},
422
+ "outputs": [],
423
+ "source": []
424
+ }
425
+ ],
426
+ "metadata": {
427
+ "kernelspec": {
428
+ "display_name": "Python 3",
429
+ "language": "python",
430
+ "name": "python3"
431
+ },
432
+ "language_info": {
433
+ "codemirror_mode": {
434
+ "name": "ipython",
435
+ "version": 3
436
+ },
437
+ "file_extension": ".py",
438
+ "mimetype": "text/x-python",
439
+ "name": "python",
440
+ "nbconvert_exporter": "python",
441
+ "pygments_lexer": "ipython3",
442
+ "version": "3.7.3"
443
+ }
444
+ },
445
+ "nbformat": 4,
446
+ "nbformat_minor": 4
447
+ }
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Análisis de Sentimientos de Tweets con Vectores de Palabras.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0201a390f7fb810abbee5722892a354e88e69b41f15119ce0c983477abbb8c68
3
+ size 142527775
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Análisis de Sentimientos de Tweets con Vectores de Palabras.vtt ADDED
@@ -0,0 +1,787 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.439 --> 00:00:07.520
4
+ Hola, te doy la bienvenida de nuevo. Estoy
5
+
6
+ 00:00:07.520 --> 00:00:10.719
7
+ muy emocionado de que estés aquí. El camino
8
+
9
+ 00:00:10.719 --> 00:00:13.840
10
+ fue largo y es un poco más largo
11
+
12
+ 00:00:13.840 --> 00:00:16.785
13
+ todavía, pero en esta clase vas a ver
14
+
15
+ 00:00:16.785 --> 00:00:18.785
16
+ lo que tienes ahora ya y de lo
17
+
18
+ 00:00:18.785 --> 00:00:21.605
19
+ que eres capaz de hacer con las habilidades
20
+
21
+ 00:00:21.665 --> 00:00:25.345
22
+ que has adquirido hasta ahora. Lo que vamos
23
+
24
+ 00:00:25.345 --> 00:00:27.205
25
+ a hacer va a ser una pequeña máquina
26
+
27
+ 00:00:27.585 --> 00:00:32.440
28
+ de análisis de sentimiento de unos tweets. No
29
+
30
+ 00:00:32.440 --> 00:00:35.320
31
+ vamos a hacer procesamiento de lenguaje natural, vamos
32
+
33
+ 00:00:35.320 --> 00:00:37.240
34
+ a hacer algo más rústico, algo un poco
35
+
36
+ 00:00:37.240 --> 00:00:39.980
37
+ más sencillo, en donde vamos a extraer características
38
+
39
+ 00:00:40.280 --> 00:00:42.680
40
+ de los enunciados y a esas las vamos
41
+
42
+ 00:00:42.680 --> 00:00:45.525
43
+ a calificar como positivas o negativas, y al
44
+
45
+ 00:00:45.525 --> 00:00:47.985
46
+ final nos va a dar eso, un score
47
+
48
+ 00:00:48.125 --> 00:00:50.625
49
+ de qué tan positivo o negativo es el
50
+
51
+ 00:00:50.645 --> 00:00:52.765
52
+ sentimiento, al mismo tiempo de que vamos a
53
+
54
+ 00:00:52.765 --> 00:00:57.725
55
+ analizar la calidad de de nuestro análisis. Sin
56
+
57
+ 00:00:57.725 --> 00:01:03.680
58
+ más, vamos al notebook. El problema que vamos
59
+
60
+ 00:01:03.680 --> 00:01:05.920
61
+ a tratar ahora es el análisis de sentimientos
62
+
63
+ 00:01:05.920 --> 00:01:07.280
64
+ de tweets. Lo que vamos a hacer va
65
+
66
+ 00:01:07.280 --> 00:01:08.960
67
+ a ser crear una pequeña máquina que puede
68
+
69
+ 00:01:08.960 --> 00:01:11.520
70
+ decirnos qué tan positivo, neutral o negativo son
71
+
72
+ 00:01:11.520 --> 00:01:14.125
73
+ una serie de respuestas de Twitter. Las respuestas
74
+
75
+ 00:01:14.125 --> 00:01:16.145
76
+ de Twitter que vamos a analizar son estas.
77
+
78
+ 00:01:16.365 --> 00:01:18.605
79
+ Gran mexicano y excelente en su área, su
80
+
81
+ 00:01:18.605 --> 00:01:20.685
82
+ muerte es una enorme pérdida y breve salud
83
+
84
+ 00:01:20.685 --> 00:01:24.045
85
+ nacional. Vaya señora, qué bueno que se asesora
86
+
87
+ 00:01:24.045 --> 00:01:26.605
88
+ por alguien inteligente, no por el ignorante del
89
+
90
+ 00:01:26.605 --> 00:01:29.490
91
+ gato. Se me ocurre, y sin ver todos
92
+
93
+ 00:01:29.490 --> 00:01:31.810
94
+ los videos de Platzi, que me informéis por
95
+
96
+ 00:01:31.810 --> 00:01:34.610
97
+ dónde empiezo. Entiendo que os tendría que decir
98
+
99
+ 00:01:34.610 --> 00:01:37.510
100
+ quién soy y qué quiero. Vamos a conocerme
101
+
102
+ 00:01:37.970 --> 00:01:42.095
103
+ para asesorarme bien. Un saludo. Soy docente universitario,
104
+
105
+ 00:01:42.635 --> 00:01:45.115
106
+ estoy intentando preparar mis clases en modo platzi
107
+
108
+ 00:01:45.115 --> 00:01:48.555
109
+ bien didáctico, le llamo modo noticiero. Descargué una
110
+
111
+ 00:01:48.555 --> 00:01:51.595
112
+ plataforma gratuita de grabación y transmisiones de video,
113
+
114
+ 00:01:51.595 --> 00:01:55.750
115
+ se llama OBS Studio. Bueno, la sigo remando
116
+
117
+ 00:01:55.970 --> 00:01:58.630
118
+ con sus funciones, pero sé que saldrá algo.
119
+
120
+ 00:02:00.850 --> 00:02:03.110
121
+ De estos hay cosas que me gustaría señalar,
122
+
123
+ 00:02:03.570 --> 00:02:05.970
124
+ por ejemplo, no se abre ni se cierran
125
+
126
+ 00:02:05.970 --> 00:02:08.925
127
+ símbolos de exclamación, tampoco hay un punto que
128
+
129
+ 00:02:08.925 --> 00:02:11.945
130
+ nos determine en dónde se acaba la oración.
131
+
132
+ 00:02:12.285 --> 00:02:15.085
133
+ En este, por ejemplo, no hay ningún símbolo
134
+
135
+ 00:02:15.085 --> 00:02:19.085
136
+ de puntuación. En este de aquí se están
137
+
138
+ 00:02:19.085 --> 00:02:22.820
139
+ utilizando formas verbales o conjugaciones que no utilizamos
140
+
141
+ 00:02:22.820 --> 00:02:30.420
142
+ regularmente en Latinoamérica, como informéis y os. De
143
+
144
+ 00:02:30.420 --> 00:02:33.560
145
+ igual manera, no hay un punto al final,
146
+
147
+ 00:02:34.175 --> 00:02:36.195
148
+ además de que hay una serie de puntos,
149
+
150
+ 00:02:37.375 --> 00:02:40.115
151
+ y en la esta última, por ejemplo, aquí,
152
+
153
+ 00:02:40.255 --> 00:02:43.455
154
+ no hay un espacio, además de que no
155
+
156
+ 00:02:43.455 --> 00:02:45.535
157
+ está bien la apertura de este símbolo de
158
+
159
+ 00:02:45.535 --> 00:02:49.250
160
+ exclamación. También tenemos la introducción de paréntesis y
161
+
162
+ 00:02:49.250 --> 00:02:54.690
163
+ comas. Ahora, lo que vamos a hacer no
164
+
165
+ 00:02:54.690 --> 00:02:57.030
166
+ es sacar toda la información de los textos,
167
+
168
+ 00:02:57.490 --> 00:03:01.715
169
+ sino vamos a buscar cadenas específicas. Vamos a
170
+
171
+ 00:03:01.715 --> 00:03:04.755
172
+ pensar cada uno de esos enunciados como una
173
+
174
+ 00:03:04.755 --> 00:03:07.575
175
+ cadena y vamos a sacar características de ellas.
176
+
177
+ 00:03:08.035 --> 00:03:11.815
178
+ Por ejemplo, supongamos que del primer enunciado nosotros
179
+
180
+ 00:03:11.875 --> 00:03:16.090
181
+ queremos extraer información, pero solamente las palabras que
182
+
183
+ 00:03:16.090 --> 00:03:20.170
184
+ nos interesan son muerte, pérdida, luto, excelente gran,
185
+
186
+ 00:03:20.170 --> 00:03:24.730
187
+ positivo, y además esto lo queremos expresar como
188
+
189
+ 00:03:24.730 --> 00:03:30.485
190
+ un vector en orden respectivo. ¿Cómo vamos a
191
+
192
+ 00:03:30.485 --> 00:03:34.325
193
+ hacer esto? Bueno, primero, vamos a tomar cada
194
+
195
+ 00:03:34.325 --> 00:03:39.765
196
+ uno de estos elementos como una cadena. Este,
197
+
198
+ 00:03:39.765 --> 00:03:49.049
199
+ por ejemplo. Ahora, podemos eliminar algunos elementos, como
200
+
201
+ 00:03:49.430 --> 00:03:55.269
202
+ los símbolos de exclamación y las comas, usando
203
+
204
+ 00:03:55.269 --> 00:03:59.785
205
+ la función replace. Lo que queremos eliminar es
206
+
207
+ 00:03:59.785 --> 00:04:02.345
208
+ este y lo vamos a reemplazar con un
209
+
210
+ 00:04:02.345 --> 00:04:06.105
211
+ vacío. De igual manera, queremos reemplazar las comas
212
+
213
+ 00:04:06.105 --> 00:04:10.285
214
+ que hayan quedado y las vamos a reemplazar
215
+
216
+ 00:04:10.425 --> 00:04:14.380
217
+ con un vacío. Por último, vamos a partir
218
+
219
+ 00:04:14.380 --> 00:04:16.899
220
+ este enunciado usando la función split y nos
221
+
222
+ 00:04:16.899 --> 00:04:18.660
223
+ va a crear un vector de todas las
224
+
225
+ 00:04:18.660 --> 00:04:21.700
226
+ palabras, y lo vamos a partir por los
227
+
228
+ 00:04:21.700 --> 00:04:28.485
229
+ espacios. Ejecutamos la celda y veamos el resultado
230
+
231
+ 00:04:28.485 --> 00:04:31.625
232
+ que obtenemos. Como vemos, haya es un vector
233
+
234
+ 00:04:32.245 --> 00:04:36.885
235
+ de todas las palabras que están en este
236
+
237
+ 00:04:36.885 --> 00:04:39.925
238
+ enunciado, y además ya no hay comas ni
239
+
240
+ 00:04:39.925 --> 00:04:43.520
241
+ hay signos de exclamación. En el caso de
242
+
243
+ 00:04:43.740 --> 00:04:48.479
244
+ este, tendrías que introducir algo para poder lidiar
245
+
246
+ 00:04:48.780 --> 00:04:53.900
247
+ justamente con este espacio, por ejemplo. Ahora, lo
248
+
249
+ 00:04:53.900 --> 00:04:56.719
250
+ que vamos a hacer es buscar esas palabras
251
+
252
+ 00:04:58.545 --> 00:05:01.825
253
+ aquí, y si esas palabras están aquí, en
254
+
255
+ 00:05:01.825 --> 00:05:05.825
256
+ este vector w los vamos a denotar como
257
+
258
+ 00:05:05.825 --> 00:05:08.465
259
+ el número de veces que estas aparezca. Es
260
+
261
+ 00:05:08.465 --> 00:05:12.965
262
+ decir, si muerte apareciera una vez en este,
263
+
264
+ 00:05:13.710 --> 00:05:16.690
265
+ vamos a poner un uno. Podríamos hacer eso,
266
+
267
+ 00:05:18.030 --> 00:05:27.705
268
+ entonces podríamos hacer if muerte. In a, entonces,
269
+
270
+ 00:05:27.705 --> 00:05:33.225
271
+ vamos a imprimir aquí un sí. Sí, sí
272
+
273
+ 00:05:33.225 --> 00:05:37.465
274
+ está. Entonces, aquí iría un uno. Ahora, aquí
275
+
276
+ 00:05:37.465 --> 00:05:39.705
277
+ no nos tiene que poner únicamente un uno,
278
+
279
+ 00:05:39.705 --> 00:05:42.660
280
+ si aparece una vez, debería aparecer un uno.
281
+
282
+ 00:05:42.660 --> 00:05:45.440
283
+ Si aparece dos veces, debería aparecer un dos.
284
+
285
+ 00:05:45.500 --> 00:05:47.660
286
+ Un tres, tres veces, y así de manera
287
+
288
+ 00:05:47.660 --> 00:05:51.580
289
+ consecutiva. Si muerde esta, entonces, aquí va un
290
+
291
+ 00:05:51.580 --> 00:05:53.835
292
+ se suma un uno a esta primera entrada.
293
+
294
+ 00:05:54.074 --> 00:05:56.155
295
+ Si perdí de esta, se suma un uno
296
+
297
+ 00:05:56.155 --> 00:05:58.315
298
+ a esta entrada a la segunda, bruto a
299
+
300
+ 00:05:58.315 --> 00:06:00.715
301
+ la tercera, excelente a la cuarta, gran a
302
+
303
+ 00:06:00.715 --> 00:06:05.275
304
+ la quinta y positivo a la sexta. Vamos
305
+
306
+ 00:06:05.275 --> 00:06:07.115
307
+ a ver un dibujo para poder entender esto
308
+
309
+ 00:06:07.115 --> 00:06:10.260
310
+ de mejor manera. Vamos a hacer un ejemplo
311
+
312
+ 00:06:10.260 --> 00:06:13.320
313
+ mucho más pequeño. Vamos a suponer que nosotros
314
+
315
+ 00:06:14.100 --> 00:06:17.940
316
+ estamos extrayendo la letra y, y además, las
317
+
318
+ 00:06:17.940 --> 00:06:22.625
319
+ palabras mexicano y excelente. Como vemos, la letra
320
+
321
+ 00:06:22.625 --> 00:06:26.245
322
+ y está una vez aquí y también está
323
+
324
+ 00:06:26.305 --> 00:06:29.505
325
+ una vez aquí, por eso la contribución de
326
+
327
+ 00:06:29.505 --> 00:06:32.465
328
+ esta y de esta nos da un dos
329
+
330
+ 00:06:32.465 --> 00:06:35.190
331
+ a la primera entrada, porque en la primera
332
+
333
+ 00:06:35.190 --> 00:06:37.830
334
+ entrada estamos denotando la cantidad de veces que
335
+
336
+ 00:06:37.830 --> 00:06:40.790
337
+ aparece la letra y. En la segunda entrada
338
+
339
+ 00:06:40.790 --> 00:06:42.710
340
+ vamos a denotar la cantidad de veces que
341
+
342
+ 00:06:42.710 --> 00:06:45.510
343
+ aparece la palabra mexicano, y en todo este
344
+
345
+ 00:06:45.510 --> 00:06:49.350
346
+ enunciado solamente aparece una vez, entonces va un
347
+
348
+ 00:06:49.350 --> 00:06:53.165
349
+ uno. En el caso de la palabra excelente,
350
+
351
+ 00:06:53.165 --> 00:06:55.905
352
+ como también la queremos contar aquí, queremos denotarla
353
+
354
+ 00:06:55.965 --> 00:06:59.485
355
+ en este vector, solamente aparece una vez. Por
356
+
357
+ 00:06:59.485 --> 00:07:03.120
358
+ ello, solamente se le cuenta una vez. Ahora,
359
+
360
+ 00:07:03.180 --> 00:07:05.820
361
+ si en lugar de eso quisiéramos extraer la
362
+
363
+ 00:07:05.820 --> 00:07:10.080
364
+ cantidad de veces que aparece la letra l,
365
+
366
+ 00:07:11.500 --> 00:07:13.900
367
+ aquí la letra y, aquí la letra l
368
+
369
+ 00:07:13.900 --> 00:07:18.815
370
+ y aquí la palabra excelente, el vector que
371
+
372
+ 00:07:18.815 --> 00:07:22.095
373
+ tendremos es el siguiente. La y ya vimos
374
+
375
+ 00:07:22.095 --> 00:07:24.655
376
+ que aparece dos veces. En el caso de
377
+
378
+ 00:07:24.655 --> 00:07:28.755
379
+ la l está una vez aquí, y está
380
+
381
+ 00:07:28.895 --> 00:07:32.905
382
+ otra vez acá, y otra vez acá. Entonces,
383
+
384
+ 00:07:32.977 --> 00:07:35.480
385
+ aquí vendría un tres en lugar de un
386
+
387
+ 00:07:35.480 --> 00:07:43.580
388
+ uno. Tres. Y la letra excelente sigue apareciendo
389
+
390
+ 00:07:44.280 --> 00:07:46.625
391
+ solamente una vez, entonces, por eso solo está
392
+
393
+ 00:07:46.625 --> 00:07:49.105
394
+ una vez aquí. La realidad es que nos
395
+
396
+ 00:07:49.105 --> 00:07:52.465
397
+ conviene empezar a analizar, en lugar de letras,
398
+
399
+ 00:07:52.465 --> 00:07:56.145
400
+ palabras, porque las palabras tienen muchísimo más contexto
401
+
402
+ 00:07:56.145 --> 00:08:00.910
403
+ que estar analizando letras individuales. Regresemos al notebook.
404
+
405
+ 00:08:05.930 --> 00:08:09.370
406
+ Ahora, ya que entendimos cómo construir nuestro vector
407
+
408
+ 00:08:09.370 --> 00:08:12.384
409
+ de conteo de palabras, nuestro vector w, vamos
410
+
411
+ 00:08:12.384 --> 00:08:15.685
412
+ a construir un nuevo vector. Este nuevo vector
413
+
414
+ 00:08:15.745 --> 00:08:18.705
415
+ será el vector de sentimientos, en donde en
416
+
417
+ 00:08:18.705 --> 00:08:21.604
418
+ la primera entrada estará la cantidad de palabras
419
+
420
+ 00:08:21.664 --> 00:08:24.465
421
+ positivas que hay, en la segunda la cantidad
422
+
423
+ 00:08:24.465 --> 00:08:26.460
424
+ de palabras neutras que hay, y en la
425
+
426
+ 00:08:26.460 --> 00:08:28.740
427
+ tercera, la cantidad de palabras negativas que hay.
428
+
429
+ 00:08:28.740 --> 00:08:33.280
430
+ Por ejemplo, si nosotros decimos que las palabras
431
+
432
+ 00:08:33.500 --> 00:08:37.740
433
+ excelente, gran y positivo son palabras positivas, al
434
+
435
+ 00:08:37.740 --> 00:08:42.115
436
+ igual que pérdida, una palabra neutra, y muerte
437
+
438
+ 00:08:42.115 --> 00:08:46.595
439
+ y luto, palabras negativas, el primer tweet, este
440
+
441
+ 00:08:46.595 --> 00:08:51.955
442
+ de aquí, lo podríamos representar como este vector
443
+
444
+ 00:08:51.955 --> 00:08:55.710
445
+ de aquí. Entonces, vamos a dibujar un poco
446
+
447
+ 00:08:55.710 --> 00:09:03.870
448
+ para entenderlo mejor. Si nosotros suponemos que la
449
+
450
+ 00:09:03.870 --> 00:09:09.685
451
+ aparición de la palabra gran mexicano excelente y
452
+
453
+ 00:09:09.685 --> 00:09:14.805
454
+ nacional son palabras positivas, entonces tendríamos en la
455
+
456
+ 00:09:14.805 --> 00:09:18.885
457
+ primera entrada un uno más un dos más
458
+
459
+ 00:09:18.885 --> 00:09:22.585
460
+ un tres más un cuatro. Entonces estas palabras
461
+
462
+ 00:09:22.725 --> 00:09:25.709
463
+ aportan hacia un cuatro en la primera entrada.
464
+
465
+ 00:09:25.709 --> 00:09:30.110
466
+ En la segunda entrada podríamos empezar a contar
467
+
468
+ 00:09:30.110 --> 00:09:38.175
469
+ las palabras pérdida y la palabra enorme. Entonces,
470
+
471
+ 00:09:38.175 --> 00:09:40.735
472
+ fíjense que no estamos dando el contexto de
473
+
474
+ 00:09:40.735 --> 00:09:44.334
475
+ pérdida y enorme, simplemente estamos buscando que sea
476
+
477
+ 00:09:44.334 --> 00:09:47.375
478
+ la palabra enorme y pérdida. Nosotros sabemos que
479
+
480
+ 00:09:47.375 --> 00:09:52.710
481
+ esta combinación de palabras puede denotar algo negativo,
482
+
483
+ 00:09:52.710 --> 00:09:55.290
484
+ sin embargo, vamos a pensar que de manera
485
+
486
+ 00:09:55.430 --> 00:09:58.730
487
+ individual son palabras neutras, entonces estas dos aportan
488
+
489
+ 00:09:58.870 --> 00:10:02.535
490
+ un dos aquí. Y por último, vamos a
491
+
492
+ 00:10:02.535 --> 00:10:05.574
493
+ pensar que las palabras muerte y luto son
494
+
495
+ 00:10:05.574 --> 00:10:09.495
496
+ palabras negativas, entonces estas están aportando un dos
497
+
498
+ 00:10:09.495 --> 00:10:12.694
499
+ aquí. Así tenemos representado en un vector de
500
+
501
+ 00:10:12.694 --> 00:10:18.030
502
+ sentimientos todo este enunciado. Regresemos al notebook. Ahora
503
+
504
+ 00:10:18.030 --> 00:10:21.070
505
+ bien, ya que ya entendimos cómo construir nuestros
506
+
507
+ 00:10:21.070 --> 00:10:23.810
508
+ vectores de palabras y nuestros vectores de sentimientos,
509
+
510
+ 00:10:24.190 --> 00:10:26.270
511
+ lo que hay que hacer ahora es analizar
512
+
513
+ 00:10:26.270 --> 00:10:29.550
514
+ la calidad del resultado que tenemos. Para eso,
515
+
516
+ 00:10:29.550 --> 00:10:31.945
517
+ lo que vamos a hacer va a ser
518
+
519
+ 00:10:31.945 --> 00:10:35.065
520
+ tomar el vector w y calcular el promedio
521
+
522
+ 00:10:35.065 --> 00:10:40.925
523
+ del vector w. Pensémoslo así, si nuestro vector
524
+
525
+ 00:10:41.305 --> 00:10:43.225
526
+ w es un n vector y todas las
527
+
528
+ 00:10:43.225 --> 00:10:47.400
529
+ entradas son uno, la suma sería n, entonces
530
+
531
+ 00:10:47.400 --> 00:10:52.360
532
+ el promedio sería uno. En el caso de
533
+
534
+ 00:10:52.360 --> 00:10:55.320
535
+ que sea menor que uno, este número de
536
+
537
+ 00:10:55.320 --> 00:10:59.915
538
+ aquí sería menor que uno. Podría ser cero
539
+
540
+ 00:10:59.915 --> 00:11:02.875
541
+ punto nueve, cero punto ocho, cero punto siete,
542
+
543
+ 00:11:02.875 --> 00:11:06.714
544
+ cero punto tres. Y eso nos daría la
545
+
546
+ 00:11:06.714 --> 00:11:10.495
547
+ calidad de palabras o la cantidad de palabras
548
+
549
+ 00:11:10.940 --> 00:11:14.140
550
+ que están apareciendo de nuestro análisis o de
551
+
552
+ 00:11:14.140 --> 00:11:16.880
553
+ las palabras que nos interesan en los enunciados.
554
+
555
+ 00:11:18.860 --> 00:11:23.120
556
+ Ahora bien, si hay muchas palabras y coinciden
557
+
558
+ 00:11:23.339 --> 00:11:27.145
559
+ muchas veces, este promedio sería mayor que uno.
560
+
561
+ 00:11:27.685 --> 00:11:29.705
562
+ Si es mayor que uno, nos está indicando
563
+
564
+ 00:11:29.765 --> 00:11:33.365
565
+ que tenemos suficiencia de palabras. En el uno
566
+
567
+ 00:11:33.365 --> 00:11:36.325
568
+ también nos indicaría un buen resultado. Si es
569
+
570
+ 00:11:36.325 --> 00:11:39.225
571
+ menor que uno, es I mayor que cero
572
+
573
+ 00:11:39.285 --> 00:11:41.800
574
+ punto cinco nos está indicando que es un
575
+
576
+ 00:11:41.800 --> 00:11:45.000
577
+ resultado del que podríamos tener alguna incertidumbre, y
578
+
579
+ 00:11:45.000 --> 00:11:47.400
580
+ la calidad de ese resultado, así le vamos
581
+
582
+ 00:11:47.400 --> 00:11:49.400
583
+ a llamar a esa medida, se hará este
584
+
585
+ 00:11:49.400 --> 00:11:52.300
586
+ promedio, y si es menor que cero punto
587
+
588
+ 00:11:52.600 --> 00:11:54.440
589
+ cinco, vamos a decir que la calidad es
590
+
591
+ 00:11:54.440 --> 00:11:57.394
592
+ mala. Es decir, que ni siquiera la mitad
593
+
594
+ 00:11:57.394 --> 00:12:00.695
595
+ de las palabras que queríamos analizar estaban apareciendo
596
+
597
+ 00:12:00.755 --> 00:12:03.074
598
+ en los enunciados o en el enunciado que
599
+
600
+ 00:12:03.074 --> 00:12:08.774
601
+ analizamos. Ahora bien, después de calcular el promedio
602
+
603
+ 00:12:10.130 --> 00:12:13.010
604
+ de cada uno de esos tweets que nos
605
+
606
+ 00:12:13.010 --> 00:12:17.970
607
+ dará la calidad, vamos a calcular el sentimiento
608
+
609
+ 00:12:17.970 --> 00:12:20.930
610
+ o el score sentimental de cada uno de
611
+
612
+ 00:12:20.930 --> 00:12:24.165
613
+ los enunciados. Para eso vamos a recurrir a
614
+
615
+ 00:12:24.165 --> 00:12:27.205
616
+ la función, a esta relación de aquí score,
617
+
618
+ 00:12:27.205 --> 00:12:29.765
619
+ en donde le vamos a meter nuestro vector
620
+
621
+ 00:12:29.765 --> 00:12:33.525
622
+ de sentimientos s. Notemos que este vector es
623
+
624
+ 00:12:33.525 --> 00:12:36.300
625
+ diferente, al igual que este vector, para cada
626
+
627
+ 00:12:36.300 --> 00:12:40.540
628
+ uno de los enunciados que tenemos aquí. Así,
629
+
630
+ 00:12:40.540 --> 00:12:46.400
631
+ pues, notemos que en el score solamente cuentan
632
+
633
+ 00:12:46.940 --> 00:12:50.524
634
+ la cantidad de puntos que tenemos o de
635
+
636
+ 00:12:50.524 --> 00:12:53.644
637
+ de coincidencias de palabras positivas y la cantidad
638
+
639
+ 00:12:53.644 --> 00:13:00.764
640
+ de palabras negativas. Tu tarea en este proyecto
641
+
642
+ 00:13:00.764 --> 00:13:03.220
643
+ va a ser leer los tweets y encontrar
644
+
645
+ 00:13:03.220 --> 00:13:06.280
646
+ el conjunto mínimo de palabras, es decir, el
647
+
648
+ 00:13:07.300 --> 00:13:09.300
649
+ conjunto que tú vas a poder hacer para
650
+
651
+ 00:13:09.300 --> 00:13:13.140
652
+ construir este vector w que tenga palabras que
653
+
654
+ 00:13:13.140 --> 00:13:16.680
655
+ sean transversales a todos los enunciados, a todas
656
+
657
+ 00:13:16.900 --> 00:13:22.454
658
+ esos tweets. Y al mismo tiempo, deberás de
659
+
660
+ 00:13:22.454 --> 00:13:25.655
661
+ construir solamente una función para construir tanto esta
662
+
663
+ 00:13:25.655 --> 00:13:30.535
664
+ s como esta w. No hay que hacer
665
+
666
+ 00:13:30.535 --> 00:13:32.910
667
+ una función por enunciado, tiene que ser una
668
+
669
+ 00:13:32.910 --> 00:13:37.950
670
+ función general para todos esos tweets. Ahora, según
671
+
672
+ 00:13:37.950 --> 00:13:40.430
673
+ el esquema que tú elijas y que tú
674
+
675
+ 00:13:40.430 --> 00:13:44.190
676
+ escojas, tendrás que responder estas preguntas. ¿Qué tweet
677
+
678
+ 00:13:44.190 --> 00:13:46.750
679
+ es más positivo? ¿Cuál es el tweet más
680
+
681
+ 00:13:46.750 --> 00:13:51.465
682
+ negativo? Cuál es la calidad promedio de tus
683
+
684
+ 00:13:53.125 --> 00:13:56.245
685
+ de tus análisis, notemos que cada uno de
686
+
687
+ 00:13:56.245 --> 00:13:59.225
688
+ estos enunciados va a tener una calidad asociada.
689
+
690
+ 00:13:59.525 --> 00:14:04.070
691
+ Entonces, podemos construir un cuatro vector, y este
692
+
693
+ 00:14:04.070 --> 00:14:08.870
694
+ cuatro vector lo podemos promediar también, sacando el
695
+
696
+ 00:14:08.870 --> 00:14:12.470
697
+ promedio de los promedios, es decir, el promedio
698
+
699
+ 00:14:12.470 --> 00:14:15.670
700
+ de las calidades, obtendremos la calidad promedio de
701
+
702
+ 00:14:15.670 --> 00:14:18.245
703
+ nuestro análisis. Ese es el número que me
704
+
705
+ 00:14:18.245 --> 00:14:21.205
706
+ tendrás que dar. ¿Es una buena calidad? ¿Es
707
+
708
+ 00:14:21.205 --> 00:14:26.805
709
+ una mala calidad? Ahora, ¿cómo interpretas tú el
710
+
711
+ 00:14:26.805 --> 00:14:31.410
712
+ score s? ¿Cómo interpretamos este número de aquí?
713
+
714
+ 00:14:31.889 --> 00:14:35.730
715
+ ¿Y cómo lo interpretaríamos contra el promedio de
716
+
717
+ 00:14:35.730 --> 00:14:39.649
718
+ estas entradas? Recordemos que en el score s
719
+
720
+ 00:14:39.649 --> 00:14:43.250
721
+ solamente cuentan la cantidad de puntos positivos y
722
+
723
+ 00:14:43.250 --> 00:14:47.145
724
+ negativos. Notemos que si solamente tenemos palabras neutras,
725
+
726
+ 00:14:47.285 --> 00:14:50.165
727
+ este score sería cero, mientras que si tenemos
728
+
729
+ 00:14:50.165 --> 00:14:53.365
730
+ un promedio, si estas son cero, el promedio
731
+
732
+ 00:14:53.365 --> 00:14:57.205
733
+ no sería cero, sino sería tres entre este
734
+
735
+ 00:14:57.205 --> 00:15:00.690
736
+ número s uno. ¿Cuál es la diferencia entre
737
+
738
+ 00:15:00.910 --> 00:15:03.410
739
+ el promedio de s y el score s?
740
+
741
+ 00:15:03.790 --> 00:15:08.209
742
+ ¿Cómo los interpretas? Y, por último, ¿cómo relacionas
743
+
744
+ 00:15:08.430 --> 00:15:10.750
745
+ la calidad con tu score y con tu
746
+
747
+ 00:15:10.750 --> 00:15:15.005
748
+ promedio? Es decir, ¿una calidad baja te lleva
749
+
750
+ 00:15:15.005 --> 00:15:17.805
751
+ a un score distinto? ¿Te lleva a un
752
+
753
+ 00:15:17.805 --> 00:15:23.565
754
+ promedio distinto? Te invito también a que juegues
755
+
756
+ 00:15:23.565 --> 00:15:25.665
757
+ con la cantidad de palabras que estás analizando
758
+
759
+ 00:15:25.725 --> 00:15:28.770
760
+ para poder responder la última pregunta. Aquí quita
761
+
762
+ 00:15:28.770 --> 00:15:31.330
763
+ palabras o añade palabras, eso va a hacer
764
+
765
+ 00:15:31.330 --> 00:15:34.050
766
+ que tu calidad suba o baje. ¿Cómo varían
767
+
768
+ 00:15:34.050 --> 00:15:38.290
769
+ esos scores? ¿Tienes algún umbral en el que
770
+
771
+ 00:15:38.290 --> 00:15:42.945
772
+ ya no varían? Te invito a que dejes
773
+
774
+ 00:15:42.945 --> 00:15:47.825
775
+ todas estas respuestas en los comentarios. Esta fue
776
+
777
+ 00:15:47.825 --> 00:15:53.084
778
+ la presentación del primer proyecto. Cualquier duda que
779
+
780
+ 00:15:53.084 --> 00:15:56.045
781
+ tengas, escríbela en los comentarios. Yo estoy ansioso
782
+
783
+ 00:15:56.045 --> 00:15:58.524
784
+ de poder ver sus resultados. Nos vemos la
785
+
786
+ 00:15:58.524 --> 00:15:59.345
787
+ próxima clase.
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://colab.research.google.com/drive/1zLgEfmILRmfGXpHHsH5e6gYc9kM7qT5S?usp=sharing
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducción al Álgebra Lineal Vectores/02-Vectores/10-producto_interno_d76312cb-c13c-4a95-9c40-827332ec9fef.ipynb ADDED
@@ -0,0 +1,447 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# 4. Producto Interno"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "El *producto interno* (estándar) o simplemente *producto punto* de dos $n$-vectores $\\vec{a},\\vec{b}$ se define como el escalar:\n",
15
+ "\n",
16
+ "$$\n",
17
+ "<\\vec{a},\\vec{b}> = \\vec{a} \\cdot \\vec{b} = a_{0}b_{0}+a_{1}b_{1}+\\cdots+a_{n-1}b_{n-1} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}\n",
18
+ "$$\n",
19
+ "\n",
20
+ "Que es simplemente la suma del producto de sus entradas."
21
+ ]
22
+ },
23
+ {
24
+ "cell_type": "markdown",
25
+ "metadata": {},
26
+ "source": [
27
+ "Por ejemplo, si $\\vec{a}=(1,2,3)$ y $\\vec{b}=(4,5,6)$ entonces el producto punto será:\n",
28
+ "\n",
29
+ "$$\n",
30
+ "\\vec{a}\\cdot\\vec{b} = (1,2,3)\\cdot (4,5,6) = 1\\cdot 4+2\\cdot 5 + 3\\cdot 6 = 4+10+18=32\n",
31
+ "$$"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "markdown",
36
+ "metadata": {},
37
+ "source": [
38
+ "Hasta ahora trabajamos de forma indiferente con *vectores columna* y *vectores renglón*, a partir de este momento **el estándar serán los vectores columna** entonces simpre que hablemos de un vector, dígamos $\\vec{a}$ entonces estaremos hablando del vector columna:\n",
39
+ "\n",
40
+ "$$\n",
41
+ "\\vec{a} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}\n",
42
+ "$$\n",
43
+ "\n",
44
+ "Esto también nos permite introducir una nueva operación: **la transposición**. Retomemos el vector $\\vec{a}$, denotaremos como $\\vec{a}^{T}$ al vector transpuesto de $\\vec{a}$:\n",
45
+ "\n",
46
+ "$$\n",
47
+ "\\vec{a}^{T} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}^{T} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}]\n",
48
+ "$$\n",
49
+ "\n",
50
+ "La operación de transposición nos permite cambiar de vectores columna a vectores renglón sin modificar al vector que se transponga. Notemos que es posible poder transponer un vector transpuesto_\n",
51
+ "\n",
52
+ "$$\n",
53
+ "\\left(\\vec{a}^{T}\\right)^{T} = \\left(\\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix}^{T}\\right)^{T} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}]^{T} = \\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{n-1}\\end{bmatrix} = \\vec{a}\n",
54
+ "$$"
55
+ ]
56
+ },
57
+ {
58
+ "cell_type": "markdown",
59
+ "metadata": {},
60
+ "source": [
61
+ "Así pues, consideremos el ejemplo anterior de los vectores $\\vec{a}$ y $\\vec{b}$. Definimos la operación $\\vec{a}^{T}\\vec{b}$ como:\n",
62
+ "\n",
63
+ "$$\n",
64
+ "\\vec{a}^{T}\\; \\vec{b} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{n-1}] \\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{n-1}\\end{bmatrix} = a_{0}b_{0} + a_{1}b_{1} + \\cdots + a_{n-1}b_{n-1} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}\n",
65
+ "$$\n",
66
+ "\n",
67
+ "Lo cual coincide con la definición del producto interno. Así pues $<\\vec{a},\\vec{b}> = \\vec{a}\\cdot \\vec{b} = \\vec{a}^{T} \\;\\vec{b} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i}$"
68
+ ]
69
+ },
70
+ {
71
+ "cell_type": "markdown",
72
+ "metadata": {},
73
+ "source": [
74
+ "## 4.1 Propiedades del producto interno"
75
+ ]
76
+ },
77
+ {
78
+ "cell_type": "markdown",
79
+ "metadata": {},
80
+ "source": [
81
+ "Sean $\\vec{a},\\vec{b}$ dos $n$-vectores y $\\alpha$ un escalar. El producto interno entre $\\vec{a}$ y $\\vec{b}$ cumple las siguientes propiedades:\n",
82
+ "\n",
83
+ "* Conmutatividad: $\\vec{a}^{T}\\vec{b} = \\displaystyle\\sum_{i=0}^{n-1} a_{i}b_{i} = \\displaystyle\\sum_{i=0}^{n-1} b_{i}a_{i} = \\vec{b}^{T}\\vec{a}$\n",
84
+ "\n",
85
+ "* Asociatividad con multiplicación escalar: $\\left(\\alpha \\vec{a}\\right)^{T}\\vec{b} = \\alpha\\left(\\vec{a}^{T}\\vec{b}\\right)$\n",
86
+ "\n",
87
+ "* Distribución en la adición de vectores: $\\left(\\vec{a} + \\vec{b}\\right)^{T}\\vec{c} = \\vec{a}^{T}\\vec{c} + \\vec{b}^{T}\\vec{c}$"
88
+ ]
89
+ },
90
+ {
91
+ "cell_type": "markdown",
92
+ "metadata": {},
93
+ "source": [
94
+ "## 4.2 Consideraciones adicionales"
95
+ ]
96
+ },
97
+ {
98
+ "cell_type": "markdown",
99
+ "metadata": {},
100
+ "source": [
101
+ "**Proyección**. Si $\\vec{a}$ es un $n$-vector entonces $\\hat{e}_{i}^{T}\\vec{a} = a_{i}$"
102
+ ]
103
+ },
104
+ {
105
+ "cell_type": "markdown",
106
+ "metadata": {},
107
+ "source": [
108
+ "**Suma de elementos de un vector.** $\\mathbf{1}^{T}a = a_{0}+a_{1}+\\cdots+a_{n-1}$ "
109
+ ]
110
+ },
111
+ {
112
+ "cell_type": "markdown",
113
+ "metadata": {},
114
+ "source": [
115
+ "**Promedio de entradas de un vector.** $(\\mathbf{1}/n)^{T}\\vec{a} = (a_{0}+a_{1}+\\cdots+a_{n-1})/n$"
116
+ ]
117
+ },
118
+ {
119
+ "cell_type": "markdown",
120
+ "metadata": {},
121
+ "source": [
122
+ "**Suma de cuadrados de un vector.** $\\vec{a}^{T} \\;\\vec{a} = a_{0}^{2}+a_{1}^{2}+\\cdots+a_{n-1}^{2}$"
123
+ ]
124
+ },
125
+ {
126
+ "cell_type": "markdown",
127
+ "metadata": {},
128
+ "source": [
129
+ "**Producto interno de bloques de vectores**. Sean $\\vec{a},\\vec{b}$ $k$-vectores formados por concatenar los $n$-vectores $a_{i},b_{i}$:\n",
130
+ "\n",
131
+ "$$\n",
132
+ "\\vec{a}=\\begin{bmatrix}a_{0}\\\\ a_{1}\\\\ \\vdots \\\\ a_{k-1}\\end{bmatrix},\\qquad \\vec{b}=\\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{k-1}\\end{bmatrix}\n",
133
+ "$$\n",
134
+ "\n",
135
+ "Entonces el producto punto entre estos vectores va como:\n",
136
+ "\n",
137
+ "$$\n",
138
+ "\\vec{a}^{T} \\vec{b} = [a_{0}\\; a_{1}\\; \\cdots \\; a_{k-1}]\\begin{bmatrix}b_{0}\\\\ b_{1}\\\\ \\vdots \\\\ b_{k-1}\\end{bmatrix} = a_{0}^{T}b_{0}+a_{1}^{T}b_{1} + \\cdots + a_{k-1}^{T}b_{k-1}\n",
139
+ "$$"
140
+ ]
141
+ },
142
+ {
143
+ "cell_type": "markdown",
144
+ "metadata": {},
145
+ "source": [
146
+ "## 4.3 Producto interno en Python. "
147
+ ]
148
+ },
149
+ {
150
+ "cell_type": "code",
151
+ "execution_count": 1,
152
+ "metadata": {},
153
+ "outputs": [],
154
+ "source": [
155
+ "import numpy as np"
156
+ ]
157
+ },
158
+ {
159
+ "cell_type": "markdown",
160
+ "metadata": {},
161
+ "source": [
162
+ "Sean $\\vec{a},\\vec{b}$ vectores en $\\mathbb{R}^{4}$. Diremos que los vectores son **ortogonales** o **perpendiculares** si $\\vec{a}\\cdot \\vec{b}= 0$\n",
163
+ "\n",
164
+ "Consideremos entonces $\\vec{a}=\\hat{e}_{0}$ y $\\vec{b} = \\hat{e}_{2}$. Vamos a realizar el producto punto en Python"
165
+ ]
166
+ },
167
+ {
168
+ "cell_type": "code",
169
+ "execution_count": 3,
170
+ "metadata": {},
171
+ "outputs": [],
172
+ "source": [
173
+ "a = np.array([1,0,0,0]) #declaramos el vector e_1\n",
174
+ "\n",
175
+ "b = np.array([0,0,1,0]) #declaramos el vector e_2"
176
+ ]
177
+ },
178
+ {
179
+ "cell_type": "markdown",
180
+ "metadata": {},
181
+ "source": [
182
+ "Para realizar el producto punto llamaremos a la función *numpy.dot*"
183
+ ]
184
+ },
185
+ {
186
+ "cell_type": "code",
187
+ "execution_count": 16,
188
+ "metadata": {},
189
+ "outputs": [
190
+ {
191
+ "name": "stdout",
192
+ "output_type": "stream",
193
+ "text": [
194
+ "<a,b> = 0\n"
195
+ ]
196
+ }
197
+ ],
198
+ "source": [
199
+ "print('<a,b> =',np.dot(a,b))"
200
+ ]
201
+ },
202
+ {
203
+ "cell_type": "markdown",
204
+ "metadata": {},
205
+ "source": [
206
+ "De igual manera también podemos usar el operador $@$"
207
+ ]
208
+ },
209
+ {
210
+ "cell_type": "code",
211
+ "execution_count": 21,
212
+ "metadata": {},
213
+ "outputs": [
214
+ {
215
+ "name": "stdout",
216
+ "output_type": "stream",
217
+ "text": [
218
+ "<a,b> = 0\n"
219
+ ]
220
+ }
221
+ ],
222
+ "source": [
223
+ "print('<a,b> =',a.T@b)"
224
+ ]
225
+ },
226
+ {
227
+ "cell_type": "markdown",
228
+ "metadata": {},
229
+ "source": [
230
+ " "
231
+ ]
232
+ },
233
+ {
234
+ "cell_type": "markdown",
235
+ "metadata": {},
236
+ "source": [
237
+ "**Evaluación de polinomios**. Un polinomio de grado $n-1$ se puede expresar como $p(x) = c_{0} + c_{1}x + c_{2}x^{2} + \\cdots + c_{n-1}x^{n-1}$. Si consideramos los $n$-vectores $\\vec{c},\\vec{x}$ tales que:\n",
238
+ "\n",
239
+ "$$\n",
240
+ "\\vec{c} = \\begin{bmatrix}c_{0}\\\\ c_{1}\\\\ \\vdots \\\\ c_{n-1}\\end{bmatrix},\\qquad \\vec{x}(x) = \\begin{bmatrix}x^{0}\\\\ x^{1}\\\\ \\vdots \\\\ x^{n-1}\\end{bmatrix}\n",
241
+ "$$\n",
242
+ "\n",
243
+ "Así pues, usando estos vectores es posible expresar $p(x) = \\vec{c}^{T}\\vec{x}(x)$. Un ejemplo más concreto sería $p(x)=1+2x$, usando los vectores:\n",
244
+ "\n",
245
+ "$$\n",
246
+ "\\vec{c} = \\begin{bmatrix}1\\\\ 2 \\end{bmatrix}, \\qquad \\vec{x}(x) = \\begin{bmatrix}1\\\\ x \\end{bmatrix}\n",
247
+ "$$\n",
248
+ "\n",
249
+ "Entonces podemos escribir:\n",
250
+ "$$\n",
251
+ "p(x) = \\vec{c}^{T}\\vec{x}(x) = [1 \\; 2] \\begin{bmatrix}1\\\\ x \\end{bmatrix} = 1\\cdot 1 + 2\\cdot x = 1 + 2x\n",
252
+ "$$"
253
+ ]
254
+ },
255
+ {
256
+ "cell_type": "markdown",
257
+ "metadata": {},
258
+ "source": [
259
+ "Así pues en Python podemos escribir el polinomio como:"
260
+ ]
261
+ },
262
+ {
263
+ "cell_type": "code",
264
+ "execution_count": 2,
265
+ "metadata": {},
266
+ "outputs": [],
267
+ "source": [
268
+ "def p(x):\n",
269
+ " return np.array([1,2])@np.array([1,x])"
270
+ ]
271
+ },
272
+ {
273
+ "cell_type": "code",
274
+ "execution_count": 5,
275
+ "metadata": {},
276
+ "outputs": [
277
+ {
278
+ "name": "stdout",
279
+ "output_type": "stream",
280
+ "text": [
281
+ "p(0) = 1\n",
282
+ "p(1) = 3\n",
283
+ "p(2) = 5\n"
284
+ ]
285
+ }
286
+ ],
287
+ "source": [
288
+ "print('p(0) = ',p(0))\n",
289
+ "print('p(1) = ',p(1))\n",
290
+ "print('p(2) = ',p(2))"
291
+ ]
292
+ },
293
+ {
294
+ "cell_type": "markdown",
295
+ "metadata": {},
296
+ "source": [
297
+ "## 4.4 Ejercicios."
298
+ ]
299
+ },
300
+ {
301
+ "cell_type": "markdown",
302
+ "metadata": {},
303
+ "source": [
304
+ "**Problema 1: Análisis de sentimientos de tweets.** Vamos a crear un máquina que pueda decirnos qué tan positivo, neutral o negativo son una serie de respuestas de twitter. \n",
305
+ "Las respuestas son:\n",
306
+ "> Gran mexicano y excelente en su área, su muerte es una enorme perdida y debería ser luto nacional!!!\n",
307
+ "\n",
308
+ "> Vaya señora que bueno que se asesora por alguien inteligente no por el ignorante del Gatt.\n",
309
+ "\n",
310
+ "> Se me ocurre y sin ver todos los videos de Plazti que me informéis por dónde empiezo. Entiendo que os tendría que decir quién soy y que quiero, vamos conocerme para asesorarme bien.\n",
311
+ "Un saludo\n",
312
+ "\n",
313
+ "> Soy docente universitario, estoy intentando preparar mis clases en modo platzi bien didáctico, (le llamo modo noticiero), descargue una plataforma gratuita de grabación y transmisión de vídeo, se llama Obs estudio!bueno la sigo remando con sus funciones pero sé que saldrá algo!"
314
+ ]
315
+ },
316
+ {
317
+ "cell_type": "code",
318
+ "execution_count": 7,
319
+ "metadata": {},
320
+ "outputs": [],
321
+ "source": [
322
+ "a = \"Gran mexicano y excelente en su área, su muerte es una enorme perdida y debería ser luto nacional!!!\"\n",
323
+ "a = a.replace(\"!\",\"\").replace(\",\",\"\").split(\" \")"
324
+ ]
325
+ },
326
+ {
327
+ "cell_type": "code",
328
+ "execution_count": 8,
329
+ "metadata": {},
330
+ "outputs": [
331
+ {
332
+ "data": {
333
+ "text/plain": [
334
+ "['Gran',\n",
335
+ " 'mexicano',\n",
336
+ " 'y',\n",
337
+ " 'excelente',\n",
338
+ " 'en',\n",
339
+ " 'su',\n",
340
+ " 'área',\n",
341
+ " 'su',\n",
342
+ " 'muerte',\n",
343
+ " 'es',\n",
344
+ " 'una',\n",
345
+ " 'enorme',\n",
346
+ " 'perdida',\n",
347
+ " 'y',\n",
348
+ " 'debería',\n",
349
+ " 'ser',\n",
350
+ " 'luto',\n",
351
+ " 'nacional']"
352
+ ]
353
+ },
354
+ "execution_count": 8,
355
+ "metadata": {},
356
+ "output_type": "execute_result"
357
+ }
358
+ ],
359
+ "source": [
360
+ "a"
361
+ ]
362
+ },
363
+ {
364
+ "cell_type": "code",
365
+ "execution_count": 9,
366
+ "metadata": {},
367
+ "outputs": [
368
+ {
369
+ "name": "stdout",
370
+ "output_type": "stream",
371
+ "text": [
372
+ "Sí\n"
373
+ ]
374
+ }
375
+ ],
376
+ "source": [
377
+ "if 'muerte' in a:\n",
378
+ " print(\"Sí\")"
379
+ ]
380
+ },
381
+ {
382
+ "cell_type": "markdown",
383
+ "metadata": {},
384
+ "source": [
385
+ "Ahora bien, no podemos sacar toda la información de los textos sino vamos a buscar cadenas (strings) específicas. Así pues vamos a construir una función de Python que cuente la cantidad de veces que aparece cierta cadena. Como ejemplo, supongamos que las palabras que vamos a contar son *muerte*, *pérdida*, *luto*, *excelente*,*gran* y *positivo*, y además esto lo queremos expresar como vector en orden respectivo, así pues el primer comentario lo podemos expresar como el siguiente vector:\n",
386
+ "$$\n",
387
+ "\\vec{w} = \\begin{bmatrix}1\\\\ 1 \\\\ 1\\\\ 1\\\\ 1 \\\\0 \\end{bmatrix}\n",
388
+ "$$\n",
389
+ "Ahora, vamos a crear otra función en la que tendremos el vector con entradas de cantidad de palabras positivas, negativas y neutras. Siguiendo con el ejemplo vamos a sumar un uno a la primer entrada si aparece alguna de las siguientes palabras *excelente*,*gran* y *positivo*, un uno en la segunda por cada vez que aparezca la palabra *pérdida* y un uno a la última entrada si aparecen las palabras *muerte* y *luto*. Así pues, el primer twett lo podemos representar como:\n",
390
+ "\n",
391
+ "$$\n",
392
+ "\\vec{s} = \\begin{bmatrix} 2 \\\\ 1 \\\\2 \\end{bmatrix}\n",
393
+ "$$\n",
394
+ "\n",
395
+ "Ahora, para ver la *calidad* del resultado que tendremos para un twett conviene calcular el promedio de las entradas de un vector de palabras\n",
396
+ "$$avg(\\vec{w}) = (\\mathbf{1}/n)^{T}\\vec{w}$$\n",
397
+ "Y después calcularás el promedio del sentimiento de cada tweet $avg(\\vec{s})$ y de igual manera el *score sentimental* que se define como \n",
398
+ "$$score(\\vec{s}) = [1\\; 0\\; -1] \\begin{bmatrix} s_{0} \\\\ s_{1} \\\\s_{2} \\end{bmatrix}$$"
399
+ ]
400
+ },
401
+ {
402
+ "cell_type": "markdown",
403
+ "metadata": {},
404
+ "source": [
405
+ "Leyendo los tuits decide el conjunto mínimo de palabras que vas a contar en todos los tuits, solamente deberás hacer una función para contar palabras para todos los tuits, no hagas un función por enunciado. Según tu esquema reponde lo siguiente:\n",
406
+ "\n",
407
+ "* ¿Qué tuit es más positivo?\n",
408
+ "\n",
409
+ "* ¿Qué tuit es más negativo?\n",
410
+ "\n",
411
+ "* ¿Cuál es tu calidad promedio?\n",
412
+ "\n",
413
+ "* ¿Cómo interpretas $avg(\\vec{s})$ y $score(\\vec{s})$?\n",
414
+ "\n",
415
+ "* ¿Cómo relacionas la calidad con $score(\\vec{s})$ y $avg(\\vec{s})$?"
416
+ ]
417
+ },
418
+ {
419
+ "cell_type": "code",
420
+ "execution_count": null,
421
+ "metadata": {},
422
+ "outputs": [],
423
+ "source": []
424
+ }
425
+ ],
426
+ "metadata": {
427
+ "kernelspec": {
428
+ "display_name": "Python 3",
429
+ "language": "python",
430
+ "name": "python3"
431
+ },
432
+ "language_info": {
433
+ "codemirror_mode": {
434
+ "name": "ipython",
435
+ "version": 3
436
+ },
437
+ "file_extension": ".py",
438
+ "mimetype": "text/x-python",
439
+ "name": "python",
440
+ "nbconvert_exporter": "python",
441
+ "pygments_lexer": "ipython3",
442
+ "version": "3.7.3"
443
+ }
444
+ },
445
+ "nbformat": 4,
446
+ "nbformat_minor": 4
447
+ }
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-16-18-am_814169ee-b3bd-4e99-aa84-2fba65f26816.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-17-04-am_8975d699-1c37-4b6b-a9f7-f8c2b86e0c8e.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-17-04-am_af62d54c-3dc7-42ee-b203-dbbc6f8bbdd8.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/02-Vectores/10-screen-shot-2021-02-23-at-7-17-04-am_d85e6d28-607e-4064-b558-a9bad63631b8.png ADDED
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Funciones Lineales Transformación de Vectores en Escalares.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0275abd0271c690501c5554bd6b3b62d90883593e8869cf504c47bab5c00334a
3
+ size 108234493
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Funciones Lineales Transformación de Vectores en Escalares.vtt ADDED
@@ -0,0 +1,607 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.040 --> 00:00:06.080
4
+ Hola, te doy la bienvenida de nuevo. En
5
+
6
+ 00:00:06.080 --> 00:00:08.340
7
+ esta clase vamos a hablar de funciones lineales.
8
+
9
+ 00:00:08.880 --> 00:00:11.780
10
+ En el pasado ya vimos operaciones entre vectores
11
+
12
+ 00:00:12.080 --> 00:00:15.044
13
+ y operaciones entre vectores y escalares. Operaciones entre
14
+
15
+ 00:00:15.044 --> 00:00:18.517
16
+ vectores vimos, por ejemplo, el producto punto y
17
+
18
+ 00:00:18.517 --> 00:00:21.845
19
+ la suma, y operación entre escalar y vector
20
+
21
+ 00:00:21.845 --> 00:00:25.605
22
+ vimos el producto escalar vector. Ahora, vamos a
23
+
24
+ 00:00:25.605 --> 00:00:27.845
25
+ introducir las funciones y vamos a ver cómo
26
+
27
+ 00:00:27.845 --> 00:00:30.930
28
+ las funciones van a tomar vectores y nos
29
+
30
+ 00:00:30.930 --> 00:00:33.910
31
+ van a ayudar a poder transformarlos en escalares.
32
+
33
+ 00:00:34.610 --> 00:00:36.530
34
+ Este es un tipo de funciones y más
35
+
36
+ 00:00:36.530 --> 00:00:39.730
37
+ adelante hablaremos de ellas. Sin más, vamos a
38
+
39
+ 00:00:39.730 --> 00:00:43.890
40
+ la computadora. Ahora, para denotar una función, digamos
41
+
42
+ 00:00:43.890 --> 00:00:45.795
43
+ que la función se va a llamar f,
44
+
45
+ 00:00:45.795 --> 00:00:48.355
46
+ la vamos a denotar como f, una función
47
+
48
+ 00:00:48.355 --> 00:00:51.414
49
+ que va de RNAR. Esto va a significar
50
+
51
+ 00:00:51.954 --> 00:00:55.875
52
+ que el dominio de f es RNY la
53
+
54
+ 00:00:55.875 --> 00:00:58.434
55
+ imagen es r. Lo que esto simplemente nos
56
+
57
+ 00:00:58.434 --> 00:01:00.034
58
+ quiere decir es que va a tomar un
59
+
60
+ 00:01:00.034 --> 00:01:01.830
61
+ n vector y este n vector lo va
62
+
63
+ 00:01:01.830 --> 00:01:04.950
64
+ a convertir en un escalar. Un ejemplo de
65
+
66
+ 00:01:04.950 --> 00:01:07.910
67
+ función o de operación que hace esto, por
68
+
69
+ 00:01:07.910 --> 00:01:10.470
70
+ ejemplo, sería el producto interno, el que vimos
71
+
72
+ 00:01:10.470 --> 00:01:14.470
73
+ en clases anteriores. Ahora, es muy importante que
74
+
75
+ 00:01:14.470 --> 00:01:17.935
76
+ esta función esté denotada de manera explícita. Si
77
+
78
+ 00:01:17.935 --> 00:01:20.415
79
+ no la tenemos denotada de manera explícita, no
80
+
81
+ 00:01:20.415 --> 00:01:22.815
82
+ vamos a poder trabajar con ellas. ¿Cómo se
83
+
84
+ 00:01:22.815 --> 00:01:27.475
85
+ denotaría de manera explícita? Bueno, tendríamos una notación
86
+
87
+ 00:01:27.535 --> 00:01:31.020
88
+ como esta, en donde leemos f de X0F
89
+
90
+ 00:01:31.020 --> 00:01:35.260
91
+ del vector x igual a una expresión. En
92
+
93
+ 00:01:35.260 --> 00:01:38.140
94
+ este caso, aquí tenemos f evaluado en cada
95
+
96
+ 00:01:38.140 --> 00:01:41.473
97
+ una de las componentes del vector, en donde
98
+
99
+ 00:01:41.473 --> 00:01:43.660
100
+ x va a ser un n vector y
101
+
102
+ 00:01:43.660 --> 00:01:46.534
103
+ x sí serán las entradas de este vector
104
+
105
+ 00:01:46.534 --> 00:01:50.634
106
+ x. Algo que es necesario enfatizar es que
107
+
108
+ 00:01:50.775 --> 00:01:53.814
109
+ f es un escalar, entonces le vamos a
110
+
111
+ 00:01:53.814 --> 00:01:55.814
112
+ dar de comer vectores y nos va a
113
+
114
+ 00:01:55.814 --> 00:01:58.730
115
+ arrojar escalares. Vamos a ver un ejemplo o
116
+
117
+ 00:01:58.730 --> 00:02:03.230
118
+ cómo podríamos ejemplificar esto. Este de acá denotará
119
+
120
+ 00:02:03.290 --> 00:02:06.110
121
+ nuestro conjunto dominio y este de acá denotará
122
+
123
+ 00:02:06.250 --> 00:02:08.889
124
+ nuestro conjunto imagen de la función. Lo que
125
+
126
+ 00:02:08.889 --> 00:02:13.465
127
+ hace una función es que agarra los elementos
128
+
129
+ 00:02:13.465 --> 00:02:17.165
130
+ del dominio y los lleva hacia la imagen
131
+
132
+ 00:02:17.185 --> 00:02:20.505
133
+ y, además, los lleva uno a uno. Esto
134
+
135
+ 00:02:20.505 --> 00:02:23.385
136
+ no necesariamente es así, pero vamos a asumir
137
+
138
+ 00:02:23.385 --> 00:02:25.385
139
+ que estas funciones son uno a uno, se
140
+
141
+ 00:02:25.385 --> 00:02:29.760
142
+ llaman funciones biyectivas. Ahora, lo que hace la
143
+
144
+ 00:02:29.760 --> 00:02:32.480
145
+ función es que, en este caso, va a
146
+
147
+ 00:02:32.480 --> 00:02:35.040
148
+ tomar un círculo y este círculo lo va
149
+
150
+ 00:02:35.040 --> 00:02:38.320
151
+ a transformar en un triángulo, y hay que
152
+
153
+ 00:02:38.320 --> 00:02:40.800
154
+ ver que este triángulo no es igual a
155
+
156
+ 00:02:40.800 --> 00:02:43.895
157
+ este triángulo y este círculo no es igual
158
+
159
+ 00:02:43.895 --> 00:02:47.895
160
+ a este círculo. Entonces, siempre que llevemos un
161
+
162
+ 00:02:47.895 --> 00:02:49.915
163
+ elemento, lo va a llevar a un elemento
164
+
165
+ 00:02:50.615 --> 00:02:52.055
166
+ de un elemento de dominio lo va a
167
+
168
+ 00:02:52.055 --> 00:02:54.135
169
+ llevar a un elemento de la imagen y,
170
+
171
+ 00:02:54.135 --> 00:02:57.670
172
+ además, este elemento del dominio va a dar
173
+
174
+ 00:02:57.670 --> 00:03:00.630
175
+ un elemento de la imagen al cual ningún
176
+
177
+ 00:03:00.630 --> 00:03:02.630
178
+ otro de los elementos del dominio va a
179
+
180
+ 00:03:02.630 --> 00:03:05.670
181
+ dar. Esto se llama la correspondencia uno a
182
+
183
+ 00:03:05.670 --> 00:03:10.665
184
+ uno. Ahora, ¿qué es lo que está pasando
185
+
186
+ 00:03:10.665 --> 00:03:13.944
187
+ con nosotros? Es exactamente lo mismo, solamente que,
188
+
189
+ 00:03:13.944 --> 00:03:17.424
190
+ en lugar de tener círculos, tenemos vectores. Entonces,
191
+
192
+ 00:03:17.424 --> 00:03:21.305
193
+ por ejemplo, nosotros tenemos el vector XYA este
194
+
195
+ 00:03:21.305 --> 00:03:26.849
196
+ vector x lo lo transformamos en un escalar
197
+
198
+ 00:03:27.230 --> 00:03:30.750
199
+ x, en un número. ¿Cómo lo hacemos? A
200
+
201
+ 00:03:30.750 --> 00:03:38.215
202
+ través de la función f. Regresamos al notebook.
203
+
204
+ 00:03:40.195 --> 00:03:42.675
205
+ Para describir de manera completa una función f
206
+
207
+ 00:03:42.675 --> 00:03:44.935
208
+ que vaya de r en la r necesitamos
209
+
210
+ 00:03:45.715 --> 00:03:47.715
211
+ saber o especificar cuál va a ser el
212
+
213
+ 00:03:47.715 --> 00:03:53.670
214
+ valor para cualquier vector XRNDXDRN. Eso significará dar
215
+
216
+ 00:03:53.670 --> 00:03:57.930
217
+ una forma explícita de la función. Por ejemplo,
218
+
219
+ 00:03:58.470 --> 00:04:01.670
220
+ tomemos f de r cuatro ARYF va a
221
+
222
+ 00:04:01.670 --> 00:04:04.230
223
+ estar dado por esa expresión de aquí, es
224
+
225
+ 00:04:04.230 --> 00:04:06.545
226
+ decir, va a tomar este vector x, lo
227
+
228
+ 00:04:06.545 --> 00:04:08.485
229
+ que va a hacer esta función es devolvernos
230
+
231
+ 00:04:08.785 --> 00:04:11.345
232
+ la suma de sus componentes. Si vemos hasta
233
+
234
+ 00:04:11.345 --> 00:04:13.905
235
+ x cero, x uno, x dos y x
236
+
237
+ 00:04:13.905 --> 00:04:16.625
238
+ tres, es un cuatro vector y suma las
239
+
240
+ 00:04:16.625 --> 00:04:21.719
241
+ cuatro componentes. Por ejemplo, si nos tomamos el
242
+
243
+ 00:04:21.719 --> 00:04:24.319
244
+ cuatro vector cero, lo que haría es, como
245
+
246
+ 00:04:24.319 --> 00:04:26.479
247
+ todas sus entradas son cero, es sumar cuatro
248
+
249
+ 00:04:26.479 --> 00:04:29.520
250
+ veces cero, cero más cero más cero más
251
+
252
+ 00:04:29.520 --> 00:04:32.505
253
+ cero, y esto nos arroja un cero. Si
254
+
255
+ 00:04:32.505 --> 00:04:36.025
256
+ tomamos el cuatro vector uno coma cero coma
257
+
258
+ 00:04:36.025 --> 00:04:38.985
259
+ cero coma cero, lo que haría sería una
260
+
261
+ 00:04:38.985 --> 00:04:42.185
262
+ contribución de la primera entrada aquí, que es
263
+
264
+ 00:04:42.185 --> 00:04:45.465
265
+ uno, y después las demás un cero, cero,
266
+
267
+ 00:04:45.465 --> 00:04:48.160
268
+ cero, cero, y esto nos da un uno.
269
+
270
+ 00:04:48.780 --> 00:04:51.820
271
+ Ahora, si evaluamos el vector uno coma uno
272
+
273
+ 00:04:51.820 --> 00:04:53.900
274
+ coma uno coma uno, es decir, el uno
275
+
276
+ 00:04:53.900 --> 00:04:58.540
277
+ vector, el uno vector de dimensión cuatro, entonces
278
+
279
+ 00:04:58.540 --> 00:05:01.100
280
+ tenemos que sumaríamos de la primera entrada un
281
+
282
+ 00:05:01.100 --> 00:05:03.155
283
+ uno, de la segunda entrada un uno, de
284
+
285
+ 00:05:03.155 --> 00:05:04.754
286
+ la tercera entrada un uno y de la
287
+
288
+ 00:05:04.754 --> 00:05:07.315
289
+ cuarta entrada un uno. Esto nos da uno
290
+
291
+ 00:05:07.315 --> 00:05:09.235
292
+ más uno más uno más uno, y esto
293
+
294
+ 00:05:09.235 --> 00:05:13.735
295
+ es un cuatro. Ahora, esto es la representación
296
+
297
+ 00:05:13.955 --> 00:05:19.000
298
+ algebraica. ¿Cómo podemos hacer la representación computacional? Vamos
299
+
300
+ 00:05:19.000 --> 00:05:22.060
301
+ a eso. Para eso primero vamos a llamar
302
+
303
+ 00:05:22.920 --> 00:05:30.145
304
+ a nuestra biblioteca de siempre, Numpai. Y después
305
+
306
+ 00:05:30.445 --> 00:05:33.405
307
+ vamos a declarar nuestra función. ¿Cómo vamos a
308
+
309
+ 00:05:33.405 --> 00:05:37.085
310
+ declarar nuestra función? Bueno, tenemos que escribir esta
311
+
312
+ 00:05:37.085 --> 00:05:41.965
313
+ expresión, esta expresión algebraica, tenemos que escribirla de
314
+
315
+ 00:05:41.965 --> 00:05:44.870
316
+ una forma computacional, y la forma de hacerlo
317
+
318
+ 00:05:44.870 --> 00:05:46.730
319
+ va a ser a través de la palabra
320
+
321
+ 00:05:47.030 --> 00:05:51.770
322
+ reservada def. Entonces, definimos def, la función f,
323
+
324
+ 00:05:52.310 --> 00:05:55.430
325
+ que recibe un vector x, ¿y qué nos
326
+
327
+ 00:05:55.430 --> 00:05:59.735
328
+ va a devolver? ¿Qué nos devolvería? Nos devolvería
329
+
330
+ 00:05:59.875 --> 00:06:03.315
331
+ la suma de las componentes del vector, y
332
+
333
+ 00:06:03.315 --> 00:06:06.995
334
+ podemos hacerlo así, de manera explícita, como x
335
+
336
+ 00:06:06.995 --> 00:06:15.350
337
+ cero más x uno más x dos más
338
+
339
+ 00:06:15.570 --> 00:06:25.905
340
+ x tres. Eso está perfecto y está totalmente
341
+
342
+ 00:06:25.965 --> 00:06:29.645
343
+ bien, pero de aquí en adelante podemos empezar
344
+
345
+ 00:06:29.645 --> 00:06:32.065
346
+ y voy a introducir también funciones de NumPy.
347
+
348
+ 00:06:32.445 --> 00:06:34.845
349
+ Y, en este caso, hay una función en
350
+
351
+ 00:06:34.845 --> 00:06:38.390
352
+ NumPy que hace exactamente esto. Lo que hace
353
+
354
+ 00:06:38.390 --> 00:06:42.310
355
+ es n p zoom, llamamos ANP zoom, DXY
356
+
357
+ 00:06:42.310 --> 00:06:44.230
358
+ lo que va a hacer es sumar todas
359
+
360
+ 00:06:44.230 --> 00:06:49.290
361
+ las componentes del vector, exactamente esta función. Ahora,
362
+
363
+ 00:06:49.430 --> 00:06:53.215
364
+ notemos que esta función no necesariamente tiene que
365
+
366
+ 00:06:53.215 --> 00:06:55.375
367
+ ir de r cuatro a r, le podemos
368
+
369
+ 00:06:55.375 --> 00:06:57.695
370
+ dar el vector de cualquier tamaño que sea
371
+
372
+ 00:06:57.695 --> 00:06:59.695
373
+ y lo va a sumar. En particular, vamos
374
+
375
+ 00:06:59.695 --> 00:07:05.810
376
+ a utilizarla con cuatro vectores. Ahora vamos a
377
+
378
+ 00:07:05.810 --> 00:07:09.650
379
+ evaluar esta función en estos puntos de aquí
380
+
381
+ 00:07:09.650 --> 00:07:11.410
382
+ y vamos a corroborar que nos den los
383
+
384
+ 00:07:11.410 --> 00:07:15.090
385
+ resultados adecuados. Vamos a, entonces, a hacer un
386
+
387
+ 00:07:15.090 --> 00:07:22.805
388
+ print de f evaluada en el vector cero.
389
+
390
+ 00:07:23.305 --> 00:07:28.345
391
+ Eso es igual y aquí evaluamos f y
392
+
393
+ 00:07:28.345 --> 00:07:34.960
394
+ declaramos adentro el vector cero. Cero coma cero
395
+
396
+ 00:07:34.960 --> 00:07:38.340
397
+ coma cero coma cero, y nos da exactamente
398
+
399
+ 00:07:38.639 --> 00:07:45.380
400
+ un cero. Vamos a evaluar entonces el vector
401
+
402
+ 00:07:46.000 --> 00:07:49.695
403
+ uno coma cero coma cero coma cero. Uno
404
+
405
+ 00:07:49.695 --> 00:07:53.335
406
+ coma cero coma cero coma cero. Y lo
407
+
408
+ 00:07:53.335 --> 00:07:57.335
409
+ declaramos acá también. Y tenemos que nos da
410
+
411
+ 00:07:57.335 --> 00:08:00.155
412
+ uno, como acá arriba también lo habíamos hecho.
413
+
414
+ 00:08:01.870 --> 00:08:04.350
415
+ Y por último, vamos a evaluar el uno
416
+
417
+ 00:08:04.350 --> 00:08:18.055
418
+ uno uno. Y esto nos da cuatro. Vamos
419
+
420
+ 00:08:18.055 --> 00:08:23.095
421
+ a otro ejemplo. Vamos a considerar g una
422
+
423
+ 00:08:23.095 --> 00:08:25.975
424
+ función que toma tres vectores y los transforma
425
+
426
+ 00:08:25.975 --> 00:08:29.175
427
+ en escalares, y que está definida por esta
428
+
429
+ 00:08:29.175 --> 00:08:32.520
430
+ relación de aquí. G toma el vector x
431
+
432
+ 00:08:32.660 --> 00:08:34.900
433
+ y lo convierte en el escalar x cero,
434
+
435
+ 00:08:34.900 --> 00:08:37.720
436
+ es decir, nos devuelve únicamente la primera entrada.
437
+
438
+ 00:08:38.740 --> 00:08:41.620
439
+ De esta manera, si nosotros evaluamos el tres
440
+
441
+ 00:08:41.620 --> 00:08:44.034
442
+ vector cero, nos daría un cero, ya que
443
+
444
+ 00:08:44.034 --> 00:08:46.035
445
+ la primera entrada es cero, bueno, en realidad
446
+
447
+ 00:08:46.035 --> 00:08:47.715
448
+ todas las entradas son cero en el vector
449
+
450
+ 00:08:47.715 --> 00:08:51.235
451
+ cero. Luego, si tomamos el vector cero coma
452
+
453
+ 00:08:51.235 --> 00:08:53.475
454
+ cero coma uno, que es el tres, este
455
+
456
+ 00:08:53.475 --> 00:08:56.320
457
+ es un tres vector, nos regresará la primera
458
+
459
+ 00:08:56.320 --> 00:08:59.760
460
+ entrada únicamente, que sería cero también. Y si
461
+
462
+ 00:08:59.760 --> 00:09:04.260
463
+ tomamos el vector uno cero cuatro, nos regresaría
464
+
465
+ 00:09:04.480 --> 00:09:07.040
466
+ un uno, ya que nos regresa únicamente la
467
+
468
+ 00:09:07.040 --> 00:09:09.635
469
+ primera entrada. Vamos a ver cómo programar esta
470
+
471
+ 00:09:09.635 --> 00:09:14.967
472
+ función. Entonces, usamos la palabra reservada dev g
473
+
474
+ 00:09:15.411 --> 00:09:18.115
475
+ de x, y vamos a decirle que nos
476
+
477
+ 00:09:18.115 --> 00:09:22.295
478
+ regrese, ahora sí explícitamente, únicamente la componente cero.
479
+
480
+ 00:09:24.030 --> 00:09:30.030
481
+ Y entonces evaluemos estas funciones. Estos estas función
482
+
483
+ 00:09:30.030 --> 00:09:35.550
484
+ estas, bueno, esta función en estos vectores. Por
485
+
486
+ 00:09:35.550 --> 00:09:38.085
487
+ ejemplo, para el vector cero, pues tenemos que
488
+
489
+ 00:09:38.085 --> 00:09:40.725
490
+ esto es simplemente cero, y esa es la
491
+
492
+ 00:09:40.725 --> 00:09:43.605
493
+ función g. Aquí también llamamos a la función
494
+
495
+ 00:09:43.605 --> 00:09:48.165
496
+ g y sabemos que evalúa tres vectores. Uno,
497
+
498
+ 00:09:48.165 --> 00:09:54.699
499
+ dos, tres. Y nos da exactamente cero. Ahora
500
+
501
+ 00:09:54.699 --> 00:09:58.300
502
+ evaluemos en cero coma cero coma uno, y
503
+
504
+ 00:09:58.300 --> 00:10:04.865
505
+ nos debería de dar un cero. Evaluamos de
506
+
507
+ 00:10:04.865 --> 00:10:07.685
508
+ este lado y nos da también un cero.
509
+
510
+ 00:10:08.144 --> 00:10:11.685
511
+ Y, por último, evaluemos la función en el
512
+
513
+ 00:10:12.305 --> 00:10:16.305
514
+ uno coma cero coma cuatro, uno coma cero
515
+
516
+ 00:10:16.305 --> 00:10:19.769
517
+ coma cuatro. Y eso nos debería de dar
518
+
519
+ 00:10:19.769 --> 00:10:24.750
520
+ un uno, uno coma cero coma cuatro. Perfecto,
521
+
522
+ 00:10:24.890 --> 00:10:27.790
523
+ nos da exactamente los resultados que estábamos esperando.
524
+
525
+ 00:10:29.690 --> 00:10:32.915
526
+ Ahora, esas funciones, las que vimos la función
527
+
528
+ 00:10:32.915 --> 00:10:35.895
529
+ f y la función g, tienen nombres especiales.
530
+
531
+ 00:10:36.435 --> 00:10:39.555
532
+ F se llama la función suma y, esencialmente,
533
+
534
+ 00:10:39.555 --> 00:10:41.465
535
+ lo que hace la función suma es que
536
+
537
+ 00:10:41.465 --> 00:10:44.220
538
+ toma tu vector y lo convierte en un
539
+
540
+ 00:10:44.220 --> 00:10:47.680
541
+ escalar por medio de sumar los elementos, las
542
+
543
+ 00:10:47.740 --> 00:10:51.680
544
+ entradas de ese vector. Si tuviéramos la función
545
+
546
+ 00:10:51.740 --> 00:10:54.540
547
+ suma para tres vectores, sumaría x cero más
548
+
549
+ 00:10:54.540 --> 00:10:56.685
550
+ x uno más x dos. Si la tuviéramos
551
+
552
+ 00:10:56.685 --> 00:10:59.405
553
+ para cinco vectores sumaría x cero más x
554
+
555
+ 00:10:59.405 --> 00:11:01.405
556
+ uno más x dos más x tres más
557
+
558
+ 00:11:01.405 --> 00:11:05.245
559
+ x cuatro. Y en el caso de la
560
+
561
+ 00:11:05.245 --> 00:11:07.805
562
+ función g, la función g se llama la
563
+
564
+ 00:11:07.805 --> 00:11:11.560
565
+ proyección sobre x cero y básicamente lo que
566
+
567
+ 00:11:11.560 --> 00:11:14.600
568
+ esto nos da es únicamente la componente x
569
+
570
+ 00:11:14.600 --> 00:11:19.399
571
+ cero. Como vemos, para R tres, para un
572
+
573
+ 00:11:19.399 --> 00:11:23.240
574
+ espacio de dimensión tres, tenemos tres funciones de
575
+
576
+ 00:11:23.240 --> 00:11:26.165
577
+ proyección. Tenemos la proyección sobre el x cero,
578
+
579
+ 00:11:26.165 --> 00:11:28.245
580
+ tenemos la proyección sobre el x uno y
581
+
582
+ 00:11:28.245 --> 00:11:31.205
583
+ tenemos la proyección sobre el x dos. Tenemos
584
+
585
+ 00:11:31.205 --> 00:11:33.625
586
+ el número de proyecciones que sea la dimensión.
587
+
588
+ 00:11:34.005 --> 00:11:36.745
589
+ En el caso de que tengamos un espacio
590
+
591
+ 00:11:36.765 --> 00:11:39.765
592
+ de dimensión dos, tendríamos dos funciones de proyección,
593
+
594
+ 00:11:39.765 --> 00:11:41.340
595
+ la que va sobre x cero y la
596
+
597
+ 00:11:41.340 --> 00:11:43.740
598
+ que va sobre x uno. Hasta aquí llega
599
+
600
+ 00:11:43.740 --> 00:11:46.380
601
+ esta clase. Nos vemos en la próxima. Vamos
602
+
603
+ 00:11:46.380 --> 00:11:50.220
604
+ a seguir con algunas funciones especiales. Nos vemos
605
+
606
+ 00:11:50.220 --> 00:11:50.720
607
+ allá.
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://colab.research.google.com/drive/1uHLHnGyq5fgP917lwwh3JDNhNtr3EZhw?usp=sharing
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_1_ca9b4768-2259-46e4-8050-1f11fcb161f2.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_2_a7a8105b-6058-423e-83cf-1a120fa9dbea.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_t1_a1432d51-f125-4847-b35a-aece8c65e623.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/01-fl_t2_40750924-caa5-49c7-ba5d-2d82e4ed6b3c.png ADDED
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/01-funciones_lineales_c6d37f3c-958c-4696-be10-f62382807f2c.ipynb ADDED
@@ -0,0 +1,603 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# 5. Funciones Lineales"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "La notación $f: \\mathbb{R}^{n}\\to \\mathbb{R}$ significa que $f$ es una función con **dominio** en $\\mathbb{R}^{n}$ e imagen en $\\mathbb{R}$, es decir, que toma un $n$-vector y lo convierte en un escalar. \n",
15
+ "La función puede denotarse como $f\\left(\\mathbf{x}\\right)= f\\left(x_{0},x_{1},\\dots,x_{n-1}\\right)$ donde $\\mathbf{x}\\in \\mathbb{R}^{n}$ y $x_{i}$ son las entradas del vector. \n",
16
+ "\n",
17
+ "Es necesario enfatizar que $f(\\mathbf{x})$ es un escalar. "
18
+ ]
19
+ },
20
+ {
21
+ "cell_type": "markdown",
22
+ "metadata": {},
23
+ "source": [
24
+ "Para describir una función $f: \\mathbb{R}^{n} \\to \\mathbb{R}$ tenemos que especificar el cual es el valor para cualquier vector $\\mathbf{x}\\in\\mathbb{R}^{n}$. Por ejemplo, sea $f: \\mathbb{R}^{4} \\to \\mathbb{R}$ definida por\n",
25
+ "$$\n",
26
+ "f(\\mathbf{x}) = x_{0} + x_{1} + x_{2} + x_{3}\n",
27
+ "$$"
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "markdown",
32
+ "metadata": {},
33
+ "source": [
34
+ "Así pues el valor de cualquier $4$-vector queda bien definido, por ejemplo:\n",
35
+ "\n",
36
+ "* $f(\\mathbf{0}) = 0 + 0+ 0+0 = 0$\n",
37
+ "\n",
38
+ "* $f([1\\; 0\\; 0\\; 0]) = 1+0+0+0 = 1$\n",
39
+ "\n",
40
+ "* $f([1\\; 1\\; 1\\; 1]) = 1+1+1+1 = 4$"
41
+ ]
42
+ },
43
+ {
44
+ "cell_type": "code",
45
+ "execution_count": 15,
46
+ "metadata": {},
47
+ "outputs": [],
48
+ "source": [
49
+ "import numpy as np"
50
+ ]
51
+ },
52
+ {
53
+ "cell_type": "code",
54
+ "execution_count": 16,
55
+ "metadata": {},
56
+ "outputs": [],
57
+ "source": [
58
+ "def f(x):\n",
59
+ " return np.sum(x)"
60
+ ]
61
+ },
62
+ {
63
+ "cell_type": "code",
64
+ "execution_count": 17,
65
+ "metadata": {},
66
+ "outputs": [
67
+ {
68
+ "name": "stdout",
69
+ "output_type": "stream",
70
+ "text": [
71
+ "f(0) = 0\n"
72
+ ]
73
+ }
74
+ ],
75
+ "source": [
76
+ "print('f(0) = ',f(np.array([0,0,0,0])))"
77
+ ]
78
+ },
79
+ {
80
+ "cell_type": "code",
81
+ "execution_count": 18,
82
+ "metadata": {},
83
+ "outputs": [
84
+ {
85
+ "name": "stdout",
86
+ "output_type": "stream",
87
+ "text": [
88
+ "f([1,0,0,0]) = 1\n"
89
+ ]
90
+ }
91
+ ],
92
+ "source": [
93
+ "print('f([1,0,0,0]) = ',f(np.array([1,0,0,0])))"
94
+ ]
95
+ },
96
+ {
97
+ "cell_type": "code",
98
+ "execution_count": 19,
99
+ "metadata": {},
100
+ "outputs": [
101
+ {
102
+ "name": "stdout",
103
+ "output_type": "stream",
104
+ "text": [
105
+ "f([1,1,1,1]) = 4\n"
106
+ ]
107
+ }
108
+ ],
109
+ "source": [
110
+ "print('f([1,1,1,1]) = ',f(np.array([1,1,1,1])))"
111
+ ]
112
+ },
113
+ {
114
+ "cell_type": "markdown",
115
+ "metadata": {},
116
+ "source": [
117
+ "Como otro ejemplo, sea $g: \\mathbb{R}^{3} \\to \\mathbb{R}$ definida por \n",
118
+ "$$\n",
119
+ "g(\\mathbf{x}) = x_{0}\n",
120
+ "$$"
121
+ ]
122
+ },
123
+ {
124
+ "cell_type": "markdown",
125
+ "metadata": {},
126
+ "source": [
127
+ "Tenemos entonces:\n",
128
+ "\n",
129
+ "* $g(\\mathbf{0}) = 0$ \n",
130
+ "\n",
131
+ "* $g([0\\; 0\\; 1]) = 0$\n",
132
+ "\n",
133
+ "* $g([1\\; 0\\; 4]) = 1$"
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "code",
138
+ "execution_count": 20,
139
+ "metadata": {},
140
+ "outputs": [],
141
+ "source": [
142
+ "def g(x):\n",
143
+ " return x[0]"
144
+ ]
145
+ },
146
+ {
147
+ "cell_type": "code",
148
+ "execution_count": 21,
149
+ "metadata": {},
150
+ "outputs": [
151
+ {
152
+ "name": "stdout",
153
+ "output_type": "stream",
154
+ "text": [
155
+ "g(0) = 0\n"
156
+ ]
157
+ }
158
+ ],
159
+ "source": [
160
+ "print('g(0) = ',g(np.array([0,0,0])))"
161
+ ]
162
+ },
163
+ {
164
+ "cell_type": "code",
165
+ "execution_count": 22,
166
+ "metadata": {},
167
+ "outputs": [
168
+ {
169
+ "name": "stdout",
170
+ "output_type": "stream",
171
+ "text": [
172
+ "g([0,0,1]) = 0\n"
173
+ ]
174
+ }
175
+ ],
176
+ "source": [
177
+ "print('g([0,0,1]) = ',g(np.array([0,0,1])))"
178
+ ]
179
+ },
180
+ {
181
+ "cell_type": "code",
182
+ "execution_count": 23,
183
+ "metadata": {},
184
+ "outputs": [
185
+ {
186
+ "name": "stdout",
187
+ "output_type": "stream",
188
+ "text": [
189
+ "g([1,0,4]) = 1\n"
190
+ ]
191
+ }
192
+ ],
193
+ "source": [
194
+ "print('g([1,0,4]) = ',g(np.array([1,0,4])))"
195
+ ]
196
+ },
197
+ {
198
+ "cell_type": "markdown",
199
+ "metadata": {},
200
+ "source": [
201
+ "Podemos notar que en este caso $f(\\mathbf{x})$ corresponde a la _función suma_ y $g(\\mathbf{x})$ a proyección sobre $x_{0}$."
202
+ ]
203
+ },
204
+ {
205
+ "cell_type": "markdown",
206
+ "metadata": {},
207
+ "source": [
208
+ "## 5.1 Algunas funciones"
209
+ ]
210
+ },
211
+ {
212
+ "cell_type": "markdown",
213
+ "metadata": {},
214
+ "source": [
215
+ "**Función producto interno**. Si una función tiene como aurgmentos dos $n$-vectores el dominio de la función se expresará como $\\mathbb{R}^{n}\\times\\mathbb{R}^{n}$. Por ejemplo, sea $f:\\mathbb{R}^{n}\\times\\mathbb{R}^{n} \\to \\mathbb{R}$ definida por:\n",
216
+ "\n",
217
+ "$$\n",
218
+ "f(\\mathbf{a},\\mathbf{b}) = a_{0}b_{0} + a_{1}b_{1} + \\cdots + a_{n-1}b_{n-1}\n",
219
+ "$$"
220
+ ]
221
+ },
222
+ {
223
+ "cell_type": "markdown",
224
+ "metadata": {},
225
+ "source": [
226
+ "Notemos que podemos expresar lo anterior como\n",
227
+ "\n",
228
+ "$$\n",
229
+ "f(\\mathbf{a},\\mathbf{b}) = \\mathbf{a}^{T}\\mathbf{b}\n",
230
+ "$$\n",
231
+ "\n",
232
+ "Esta función recibe el nombre de función producto interno. Si quisieramos dejar fijo un vector, digamos el vector $\\mathbf{a}$ podemos recurrir a la siguiente notación:\n",
233
+ "\n",
234
+ "$$\n",
235
+ "f_{\\mathbf{a}}(\\mathbf{b}) = \\mathbf{a}^{T}\\mathbf{b}\n",
236
+ "$$\n",
237
+ "\n",
238
+ "Esto significará que $\\mathbf{a}$ estará fijo mientras que $\\mathbf{b}$ será el que variará. "
239
+ ]
240
+ },
241
+ {
242
+ "cell_type": "markdown",
243
+ "metadata": {},
244
+ "source": [
245
+ "**Superposición y linealidad.** La función producto interno satisface la siguiente propiedad:\n",
246
+ "\n",
247
+ "$$\n",
248
+ "\\begin{eqnarray}\n",
249
+ "f_\\mathbf{x}(\\alpha\\mathbf{a}+\\beta\\mathbf{b}) &=& \\mathbf{x}^{T}(\\alpha\\mathbf{a}+\\beta\\mathbf{b}) \\\\\n",
250
+ " &=& \\mathbf{x}^{T}(\\alpha\\mathbf{a})+\\mathbf{x}^{T}(\\beta\\mathbf{b}) \\\\\n",
251
+ " &=& \\alpha(\\mathbf{x}^{T}\\mathbf{a}) + \\beta(\\mathbf{x}^{T}\\mathbf{b}) \\\\\n",
252
+ " &=& \\alpha f_{\\mathbf{x}}(\\mathbf{a}) + \\beta f_{\\mathbf{x}}(\\mathbf{b})\n",
253
+ "\\end{eqnarray}\n",
254
+ "$$\n",
255
+ "\n",
256
+ "Si la función $g$ cumple que $g(\\alpha\\mathbf{x}+\\beta\\mathbf{y}) = \\alpha g(\\mathbf{x})+\\beta g(\\mathbf{y})$ decimos que la función $g$ es una **función lineal.** "
257
+ ]
258
+ },
259
+ {
260
+ "cell_type": "markdown",
261
+ "metadata": {},
262
+ "source": [
263
+ "Si $f$ es una función lineal la _linearidad_ se extiende a cualquier combinación lineal y no solamente a una combinación de dos vectores, tenemos \n",
264
+ "\n",
265
+ "$$\n",
266
+ "f(\\alpha_{0}\\mathbf{x_{0}} + \\alpha_{1}\\mathbf{x_{1}} + \\alpha_{2}\\mathbf{x_{2}} + \\cdots \n",
267
+ " + \\alpha_{n-1}\\mathbf{x_{n-1}}) = \\alpha_{0}f(\\mathbf{x_{0}}) + \\alpha_{1}f(\\mathbf{x_{1}}) + \\alpha_{2}f(\\mathbf{x_{2}}) + \\cdots + \\alpha_{n-1}f(\\mathbf{x_{n-1}})\n",
268
+ "$$\n"
269
+ ]
270
+ },
271
+ {
272
+ "cell_type": "markdown",
273
+ "metadata": {},
274
+ "source": [
275
+ "Si una función $g:\\mathbf{R}^{n} \\to \\mathbf{R}$ es lineal sabemo que cumple $g(\\alpha\\mathbf{x}+\\beta\\mathbf{y}) = \\alpha g(\\mathbf{x})+\\beta g(\\mathbf{y})$, propiedad que llamaremos _superposición_. Ahora, la superposición puede ser separada en dos propiedades:\n",
276
+ "\n",
277
+ "* _Homogeneidad_. Para cualquier $n$-vector $\\mathbf{x}$ y cualquier escalar $\\alpha$ tenemos que $g(\\alpha \\mathbf{x}) = \\alpha g(\\mathbf{x})$\n",
278
+ "\n",
279
+ "* _Aditividad_. Para cualquier $n$-vector $\\mathbf{x}$ y $\\mathbf{y}$ tenemos que $g(\\mathbf{x}+\\mathbf{y}) = g(\\mathbf{x})+g(\\mathbf{y})$\n",
280
+ "\n",
281
+ "La homogeneidad nos dice que escalar el argumento es igual que escalar el valor de la función; la aditividad nos indica que sumar los argumentos es igual que sumar los valores de la función. "
282
+ ]
283
+ },
284
+ {
285
+ "cell_type": "code",
286
+ "execution_count": 24,
287
+ "metadata": {},
288
+ "outputs": [],
289
+ "source": [
290
+ "a = np.array([1,1,1,1])\n",
291
+ "b = np.array([1,0,1,0])\n",
292
+ "x,y = 1,-2"
293
+ ]
294
+ },
295
+ {
296
+ "cell_type": "code",
297
+ "execution_count": 25,
298
+ "metadata": {},
299
+ "outputs": [
300
+ {
301
+ "name": "stdout",
302
+ "output_type": "stream",
303
+ "text": [
304
+ "f(x*a + y*b) = 0\n"
305
+ ]
306
+ }
307
+ ],
308
+ "source": [
309
+ "print('f(x*a + y*b) = ',f(x*a + y*b))"
310
+ ]
311
+ },
312
+ {
313
+ "cell_type": "code",
314
+ "execution_count": 27,
315
+ "metadata": {},
316
+ "outputs": [
317
+ {
318
+ "name": "stdout",
319
+ "output_type": "stream",
320
+ "text": [
321
+ "x*f(a) + y*f(b) = 0\n"
322
+ ]
323
+ }
324
+ ],
325
+ "source": [
326
+ "print('x*f(a) + y*f(b) =',x*f(a) + y*f(b))"
327
+ ]
328
+ },
329
+ {
330
+ "cell_type": "markdown",
331
+ "metadata": {},
332
+ "source": [
333
+ "**Representación producto interno de una función lineal.** En matemáticas las verdades, cuando son verdades, se demuestran usando argumentos principalmente lógicos. Estas verdades vienen empaquetadas en _teoremas_, _corolarios_ y _lemas_. Si no podemos demostrarlo pero creemos que es verdad lo llamamos _conjetura_. Por ejemplo, consideremos el siguiente teorema:"
334
+ ]
335
+ },
336
+ {
337
+ "cell_type": "markdown",
338
+ "metadata": {},
339
+ "source": [
340
+ "**Teorema.** Los ángulos a ambos lados de una recta, que intersecta a otra, siempre suman $180^\\circ$ \n",
341
+ "\n",
342
+ "![img](fl_1.png)"
343
+ ]
344
+ },
345
+ {
346
+ "cell_type": "markdown",
347
+ "metadata": {},
348
+ "source": [
349
+ "*Demostración*: Supongamos que $\\alpha + \\beta \\neq 180$ eso quiere decir que $\\alpha + \\beta > 180$ o $\\alpha + \\beta < 180$. Ahora, pensemos en la linea **f** pasa por el diámetro, es decir, corta a la mitad al círculo. \n",
350
+ "\n",
351
+ "![](fl_t1.png)\n",
352
+ "\n",
353
+ "Al pasar por el diámetro sabemos que ambos lados tenemos un ángulo de $180^\\circ$. Llamemos a ese ángulo $\\Omega=180^\\circ$. Ahora, llamemos **g** a una línea que pase por otro diámetro. \n",
354
+ "\n",
355
+ "![](fl_t2.png)"
356
+ ]
357
+ },
358
+ {
359
+ "cell_type": "markdown",
360
+ "metadata": {},
361
+ "source": [
362
+ "Entonces, al seccionar con **g** tenemos nuevamente los ángulos $\\alpha$ y $\\beta$ entonces tenemos que $\\alpha + \\beta = \\Omega$ pero asumimos que $\\alpha + \\beta \\neq 180^\\circ$ lo cuyal nos lleva a una contradicción $!$ por ello lo anteior debe ser cierto. "
363
+ ]
364
+ },
365
+ {
366
+ "cell_type": "markdown",
367
+ "metadata": {},
368
+ "source": [
369
+ "**Corolario.** Cuando dos líneas se intersectan los ángulos opuestos entre ellos son iguales.\n",
370
+ "\n",
371
+ "![](fl_2.png)"
372
+ ]
373
+ },
374
+ {
375
+ "cell_type": "markdown",
376
+ "metadata": {},
377
+ "source": [
378
+ "*Demostración:* Sabemos que $\\beta + \\alpha = 180^\\circ$ entonces $\\alpha = 180^\\circ - \\beta$. Por otro lado, sabemos que también $\\gamma + \\beta = 180^\\circ$ así pues $\\gamma = 180^\\circ - \\beta$. Juntando lo anteior tenemos que:\n",
379
+ "\n",
380
+ "$$\n",
381
+ "\\alpha = 180^\\circ - \\beta = \\gamma\n",
382
+ "$$\n",
383
+ "\n",
384
+ "Lo mismo es posible aplicarse para $\\beta$ y $\\delta$. **QED**. "
385
+ ]
386
+ },
387
+ {
388
+ "cell_type": "markdown",
389
+ "metadata": {},
390
+ "source": [
391
+ "Ya explorados los teoremas y los corolarios veamos la siguiente proposición: \n",
392
+ "\n",
393
+ "**Proposición:** Una función definida como el producto punto de sus argumentos y algún vector fijo es lineal. Lo inverso es también verdadero: si una función es lineal entonces puede ser expresada como el producto interno de sus argumentos y algún vector fijo."
394
+ ]
395
+ },
396
+ {
397
+ "cell_type": "markdown",
398
+ "metadata": {},
399
+ "source": [
400
+ "Ahora, sea $f$ una función escalar de $n$-vectores que además es lineal. Entonces decimos que _existe_ un $n$-vector $\\mathbf{a}$ tal que $f(\\mathbf{x}) = \\mathbf{a}^{T}\\mathbf{x}$ para cualquier $\\mathbf{x}$. A la expresión $\\mathbf{a}^{T}\\mathbf{x}$ le llamaremos *representación producto punto* de $f$. "
401
+ ]
402
+ },
403
+ {
404
+ "cell_type": "markdown",
405
+ "metadata": {},
406
+ "source": [
407
+ "Otra propiedad interesante es que la *representación producto punto* de $f$ como $\\mathbf{a}^{T}\\mathbf{x}$ es única. "
408
+ ]
409
+ },
410
+ {
411
+ "cell_type": "markdown",
412
+ "metadata": {},
413
+ "source": [
414
+ "$ f(\\mathbf{x}) = \\displaystyle\\sum_{i}^{n-1} x_{i}$ si n=4 esto lo podemos expresar como $f(\\mathbf{x}) = \\mathbf{a}^{T}\\mathbf{x}$ donde:\n",
415
+ "$$\n",
416
+ "a^T = [1,1,1,1]\n",
417
+ "$$"
418
+ ]
419
+ },
420
+ {
421
+ "cell_type": "markdown",
422
+ "metadata": {},
423
+ "source": [
424
+ "**Promedio.** El promedio de una $n$-vector es definida como\n",
425
+ "\n",
426
+ "$$\n",
427
+ "f(x) = (x_{0}+x_{1}+\\cdots+x_{n-1})/n\n",
428
+ "$$\n",
429
+ "\n",
430
+ "Y se denota como $\\mathbf{avg}(x)$, notemos que este $\\mathbf{avg}(x) = a^{T}x$ con\n",
431
+ "\n",
432
+ "$$\n",
433
+ "a^T = [1/n\\; 1/n\\; \\cdots \\; 1/n] = \\mathbf{1}/n\n",
434
+ "$$"
435
+ ]
436
+ },
437
+ {
438
+ "cell_type": "markdown",
439
+ "metadata": {},
440
+ "source": [
441
+ "**Máximo.** Para $n$-vectores $x$ la función que nos da el máximo coeficiente de un vector es $f(x)=max\\{x_{0},x_{1},\\dots,x_{n-1}\\}$ y no es lineal. Para demostrar esto voy a suponer que es lineal y dar un contraejemplo. Si tomamos $x^T = [1,-1]$ y $y^T=[-1,1]$ con $\\alpha = 1/2$ y $\\beta = 1/2$. Entonces tenemos que:\n",
442
+ "\n",
443
+ "$$\n",
444
+ "f(\\alpha x + \\beta y) = 0 \\neq \\alpha f(x) + \\beta f(y) = 1\n",
445
+ "$$"
446
+ ]
447
+ },
448
+ {
449
+ "cell_type": "code",
450
+ "execution_count": 28,
451
+ "metadata": {},
452
+ "outputs": [],
453
+ "source": [
454
+ "def MAX(x):\n",
455
+ " return np.max(x)"
456
+ ]
457
+ },
458
+ {
459
+ "cell_type": "code",
460
+ "execution_count": 29,
461
+ "metadata": {},
462
+ "outputs": [
463
+ {
464
+ "name": "stdout",
465
+ "output_type": "stream",
466
+ "text": [
467
+ "MAX([1,0,2]) = 2\n"
468
+ ]
469
+ }
470
+ ],
471
+ "source": [
472
+ "print('MAX([1,0,2]) = ', MAX(np.array([1,0,2])))"
473
+ ]
474
+ },
475
+ {
476
+ "cell_type": "code",
477
+ "execution_count": 30,
478
+ "metadata": {},
479
+ "outputs": [],
480
+ "source": [
481
+ "x = np.array([1,-1])\n",
482
+ "y = np.array([-1,1])\n",
483
+ "a,b = 1/2, 1/2"
484
+ ]
485
+ },
486
+ {
487
+ "cell_type": "code",
488
+ "execution_count": 31,
489
+ "metadata": {},
490
+ "outputs": [
491
+ {
492
+ "name": "stdout",
493
+ "output_type": "stream",
494
+ "text": [
495
+ "MAX(a*x + b*y) = 0.0\n"
496
+ ]
497
+ }
498
+ ],
499
+ "source": [
500
+ "print('MAX(a*x + b*y) = ', MAX(a*x + b*y))"
501
+ ]
502
+ },
503
+ {
504
+ "cell_type": "code",
505
+ "execution_count": 32,
506
+ "metadata": {},
507
+ "outputs": [
508
+ {
509
+ "name": "stdout",
510
+ "output_type": "stream",
511
+ "text": [
512
+ "a*MAX(x) + b*MAX(y) = 1.0\n"
513
+ ]
514
+ }
515
+ ],
516
+ "source": [
517
+ "print('a*MAX(x) + b*MAX(y) = ', a*MAX(x) + b*MAX(y))"
518
+ ]
519
+ },
520
+ {
521
+ "cell_type": "markdown",
522
+ "metadata": {},
523
+ "source": [
524
+ "## 5.2 Algunas consideraciones"
525
+ ]
526
+ },
527
+ {
528
+ "cell_type": "markdown",
529
+ "metadata": {},
530
+ "source": [
531
+ "**Funciones Afines.** Una función $f:\\mathbb{R}^{n} \\to \\mathbb{R}$ es afín si y solo si puede ser expresada como $f(x) = a^{T}x + b$ para algún $n$-vector $a$ y un escalar $b$, es llamado algunas veces *offset* o *bias*. Por ejemplo si consideramos la siguiente función:\n",
532
+ "\n",
533
+ "$$\n",
534
+ "f(x) = 3 + x_{0}+x_{1}+x_{2}\n",
535
+ "$$\n",
536
+ "\n",
537
+ "La podemos representar como \n",
538
+ "\n",
539
+ "$$\n",
540
+ "f(x) = a^T x + b = [1 \\; 1 \\; 1] x + 3\n",
541
+ "$$"
542
+ ]
543
+ },
544
+ {
545
+ "cell_type": "markdown",
546
+ "metadata": {},
547
+ "source": [
548
+ "Una función afín cumplirá la superposición si y solo si la suma de de los coeficientes de la combinación lineal es uno. Es decir, si $f$ es una función afín entonces $f(\\alpha x + \\beta y) = \\alpha f(x)+ \\beta f(y)$ si y solo si $ \\alpha + \\beta = 1$.\n",
549
+ "\n",
550
+ "*Demostración.* Como $f$ es afín tenemos que $f(x)=a^T x + b$ entonces, usando que $ \\alpha + \\beta = 1$\n",
551
+ "\n",
552
+ "$$\n",
553
+ "\\begin{eqnarray}\n",
554
+ "f(\\alpha x + \\beta y) &=& a^T (\\alpha x + \\beta y) + b \\\\\n",
555
+ " &=& a^T \\alpha x + a^T \\beta y + (\\alpha + \\beta) b \\\\\n",
556
+ " &=& \\alpha a^T x + \\alpha b + \\beta a^T y + \\beta b \\\\\n",
557
+ " &=& \\alpha (a^T x + b) + \\beta (a^T y + b) \\\\\n",
558
+ " &=& \\alpha f(x) + \\beta f(y)\n",
559
+ "\\end{eqnarray}\n",
560
+ "$$"
561
+ ]
562
+ },
563
+ {
564
+ "cell_type": "markdown",
565
+ "metadata": {},
566
+ "source": [
567
+ "**Ejercicio.** Determina si las siguientes funciones son lineales o no:\n",
568
+ "* $f(\\mathbf{x}) = x_{n-1} - x_{0}$\n",
569
+ "\n",
570
+ "* Si $\\mathbf{x}\\in\\mathbb{R}^{4}$ y $f:\\mathbb{R}^{4} \\to \\mathbb{R}$ definida como $f(\\mathbf{x})=x_{3}+(x_{3}-x_{2})$"
571
+ ]
572
+ },
573
+ {
574
+ "cell_type": "markdown",
575
+ "metadata": {},
576
+ "source": [
577
+ "**Problema: Potencia en un clúster de procesadores y temperatura.** La temperatura $T$ de un cluster de tres procesadores es una función afín de la potencia de los procesadores $P^T = [P_{0}\\; P_{1}\\; P_{2}]$. Cuando los tres procesadores están en reposo tenemos que $P^T = [10\\; 10\\; 10]$ lo cual nos da una temperatura de $T=35$. Cuando el primer procesador opera a potencia absoluta tenemos que $P^T = [100\\; 10\\; 10]$ y la temperatura se eleva a $T=60$. Cuando el segundo procesador opera a su máxima capacidad tenemos $P^T = [10\\; 100\\; 10]$ y la temperatura se eleva a $T=75$. Cuando el tercer procesador opera a máxima potencia mientras que los otros dos están en reposo tenemos que $P^T = [10\\; 10\\; 100]$ y la temperatura se elevea a $T=65$. Supongamos que los tres procesadores operan a máxima potencia ¿Qué temperatura se alcanza? La temperatura de fusión de los procesadores (a la que los procesadores se derriten) es cerca de $150$ ¿Cuál es la potencia máxima que pueden alcanzar los procesadores para que $T\\le 150$? \n",
578
+ "*Hint:* $T(P) = a^T P + b$"
579
+ ]
580
+ }
581
+ ],
582
+ "metadata": {
583
+ "kernelspec": {
584
+ "display_name": "Python 3",
585
+ "language": "python",
586
+ "name": "python3"
587
+ },
588
+ "language_info": {
589
+ "codemirror_mode": {
590
+ "name": "ipython",
591
+ "version": 3
592
+ },
593
+ "file_extension": ".py",
594
+ "mimetype": "text/x-python",
595
+ "name": "python",
596
+ "nbconvert_exporter": "python",
597
+ "pygments_lexer": "ipython3",
598
+ "version": "3.7.3"
599
+ }
600
+ },
601
+ "nbformat": 4,
602
+ "nbformat_minor": 4
603
+ }
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Funciones Lineales y Propiedades de Superposición.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1ca61ff5682b9d3bc6450546dcfb81d4fdcb8426a6526458ea4a841ee48bc17b
3
+ size 139603434
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Funciones Lineales y Propiedades de Superposición.vtt ADDED
@@ -0,0 +1,700 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.040 --> 00:00:05.200
4
+ Hola, te doy la bienvenida de nuevo. La
5
+
6
+ 00:00:05.200 --> 00:00:08.080
7
+ clase pasada definimos las funciones y vimos cómo
8
+
9
+ 00:00:08.080 --> 00:00:11.200
10
+ operar con ellas de manera algebraica. También vimos
11
+
12
+ 00:00:11.200 --> 00:00:13.920
13
+ que necesitábamos tener las funciones definidas de manera
14
+
15
+ 00:00:13.920 --> 00:00:16.575
16
+ explícita para poder operar con ellas y vimos
17
+
18
+ 00:00:16.575 --> 00:00:19.975
19
+ cómo implementar algún tipo de ellas en Python.
20
+
21
+ 00:00:19.975 --> 00:00:22.055
22
+ Lo que vamos a ver ahora son algunas
23
+
24
+ 00:00:22.055 --> 00:00:25.755
25
+ funciones lineales. Sin más, vamos a la computadora.
26
+
27
+ 00:00:27.494 --> 00:00:29.654
28
+ Este es el notebook que vimos la clase
29
+
30
+ 00:00:29.654 --> 00:00:32.479
31
+ pasada. Vamos a ver la parte de algunas
32
+
33
+ 00:00:32.479 --> 00:00:37.360
34
+ funciones. Ahora bien, vamos a empezar con la
35
+
36
+ 00:00:37.360 --> 00:00:41.520
37
+ función producto interno. Vamos a decir que Eso
38
+
39
+ 00:00:41.520 --> 00:00:44.125
40
+ eso es muy importante. Lo que vamos a
41
+
42
+ 00:00:44.125 --> 00:00:46.365
43
+ mencionar ahora es que si una función tiene
44
+
45
+ 00:00:46.365 --> 00:00:49.405
46
+ como argumento dos n vectores, vamos a expresar
47
+
48
+ 00:00:49.405 --> 00:00:52.405
49
+ el función, el dominio de la función como
50
+
51
+ 00:00:52.405 --> 00:00:54.605
52
+ r n cruz r n, asumiendo que los
53
+
54
+ 00:00:54.605 --> 00:00:57.690
55
+ vectores viven en r n. Notemos la diferencia
56
+
57
+ 00:00:57.750 --> 00:01:00.230
58
+ entre esta notación y la notación que habíamos
59
+
60
+ 00:01:00.230 --> 00:01:02.630
61
+ venido manejando acá, en este caso, un r
62
+
63
+ 00:01:02.630 --> 00:01:05.750
64
+ tres y, en este caso, una rn. Entonces,
65
+
66
+ 00:01:05.750 --> 00:01:08.890
67
+ básicamente, lo que nos está denotando rn cruz
68
+
69
+ 00:01:08.950 --> 00:01:12.515
70
+ rn es que vamos a tomar dos vectores,
71
+
72
+ 00:01:12.515 --> 00:01:14.674
73
+ la función va a tomar dos n vectores
74
+
75
+ 00:01:14.674 --> 00:01:17.955
76
+ como argumentos. Si tuviera la función tres n
77
+
78
+ 00:01:17.955 --> 00:01:21.955
79
+ vectores como argumentos, estaríamos denotando r n cruz
80
+
81
+ 00:01:21.955 --> 00:01:24.650
82
+ r n cruz r n. Sé que a
83
+
84
+ 00:01:24.650 --> 00:01:27.370
85
+ este momento la cantidad de notación que empezamos
86
+
87
+ 00:01:27.370 --> 00:01:30.490
88
+ a utilizar se va aumentando, pero el propósito
89
+
90
+ 00:01:30.490 --> 00:01:33.130
91
+ de este curso es que, a través de
92
+
93
+ 00:01:33.130 --> 00:01:36.190
94
+ este curso, puedas estar preparado para el siguiente
95
+
96
+ 00:01:36.410 --> 00:01:39.885
97
+ curso, en donde es totalmente necesaria. Y para
98
+
99
+ 00:01:39.885 --> 00:01:42.125
100
+ cursos siguientes también va a ser muy necesario
101
+
102
+ 00:01:42.125 --> 00:01:43.165
103
+ y va a ser muy útil que ya
104
+
105
+ 00:01:43.165 --> 00:01:47.245
106
+ puedas dar ese tipo de cosas. Ahora, digamos
107
+
108
+ 00:01:47.245 --> 00:01:49.645
109
+ entonces que tenemos una función que va de
110
+
111
+ 00:01:49.645 --> 00:01:53.130
112
+ r n cruz RNAR, es decir, toma dos
113
+
114
+ 00:01:53.130 --> 00:01:55.690
115
+ vectores y esos dos vectores los convierte en
116
+
117
+ 00:01:55.690 --> 00:01:58.410
118
+ un escalar. Ya hemos visto una función que
119
+
120
+ 00:01:58.410 --> 00:02:02.810
121
+ hace esto, un una operación. Las clases pasadas
122
+
123
+ 00:02:02.810 --> 00:02:05.530
124
+ vimos el producto interno y vimos que era
125
+
126
+ 00:02:05.530 --> 00:02:10.695
127
+ dos dos vectores, se multiplicaban entre ellos, y
128
+
129
+ 00:02:10.695 --> 00:02:13.115
130
+ lo que nos daba al final era exactamente
131
+
132
+ 00:02:13.495 --> 00:02:16.135
133
+ un escalar. Vamos a ver cómo esta función
134
+
135
+ 00:02:16.135 --> 00:02:19.435
136
+ reproduce eso. Entonces, tenemos a la función a
137
+
138
+ 00:02:19.815 --> 00:02:22.315
139
+ que consume, o que le damos de comer,
140
+
141
+ 00:02:23.280 --> 00:02:25.380
142
+ dos vectores, el vector a y el vector
143
+
144
+ 00:02:25.600 --> 00:02:29.060
145
+ b, y esto se define únicamente como a
146
+
147
+ 00:02:29.600 --> 00:02:31.680
148
+ cero por b cero, es decir, las componentes,
149
+
150
+ 00:02:31.680 --> 00:02:34.000
151
+ las primeras componentes multiplicadas de a y de
152
+
153
+ 00:02:34.000 --> 00:02:36.365
154
+ b, más a uno por b uno, más
155
+
156
+ 00:02:36.365 --> 00:02:38.365
157
+ a dos por b dos, más a n
158
+
159
+ 00:02:38.365 --> 00:02:44.445
160
+ por b n menos uno. Entonces, notemos que
161
+
162
+ 00:02:44.445 --> 00:02:47.085
163
+ esta de aquí realmente lo podemos expresar como
164
+
165
+ 00:02:47.085 --> 00:02:50.170
166
+ una multiplicación de vectores, y esto lo podemos
167
+
168
+ 00:02:50.170 --> 00:02:53.130
169
+ expresar como f de a b como a
170
+
171
+ 00:02:53.130 --> 00:02:56.330
172
+ traspuesta por b, donde a traspuesta es este
173
+
174
+ 00:02:56.330 --> 00:02:58.489
175
+ vector de aquí y b traspuesta es este
176
+
177
+ 00:02:58.489 --> 00:03:02.650
178
+ vector de acá. Esta función recibe el nombre
179
+
180
+ 00:03:02.650 --> 00:03:06.355
181
+ de función producto interno, y esto lo hace
182
+
183
+ 00:03:06.355 --> 00:03:09.954
184
+ totalmente porque es un símil al producto interno
185
+
186
+ 00:03:09.954 --> 00:03:14.034
187
+ que habíamos venido viendo. Entonces, vamos a ver
188
+
189
+ 00:03:14.034 --> 00:03:16.114
190
+ un poco más de esta función. Si nosotros
191
+
192
+ 00:03:16.114 --> 00:03:19.080
193
+ quisiéramos dejar el vector fijo, digamos, el vector
194
+
195
+ 00:03:19.080 --> 00:03:21.640
196
+ a solamente por decir un vector, la anotación
197
+
198
+ 00:03:21.640 --> 00:03:25.659
199
+ que seguiríamos es f subíndice del vector a
200
+
201
+ 00:03:26.040 --> 00:03:28.940
202
+ evaluada en b, y esto es a traspuesta
203
+
204
+ 00:03:29.159 --> 00:03:31.799
205
+ por b. Ahora, ¿para qué nos serviría en
206
+
207
+ 00:03:31.799 --> 00:03:35.004
208
+ esta clase de funciones? Nosotros vimos la clase
209
+
210
+ 00:03:35.004 --> 00:03:38.765
211
+ pasada, o en clases pasadas, que el producto
212
+
213
+ 00:03:38.765 --> 00:03:41.484
214
+ punto era un indicador de de ortogonalidad, es
215
+
216
+ 00:03:41.484 --> 00:03:43.805
217
+ decir, si el producto punto entre dos vectores
218
+
219
+ 00:03:43.805 --> 00:03:46.385
220
+ es igual a cero, significa que esos vectores
221
+
222
+ 00:03:46.525 --> 00:03:49.160
223
+ estaban a noventa grados, lo que significa que
224
+
225
+ 00:03:49.160 --> 00:03:52.200
226
+ los vectores son ortogonales. Será muy útil en
227
+
228
+ 00:03:52.200 --> 00:03:54.680
229
+ el futuro conocer este tipo de funciones y
230
+
231
+ 00:03:54.680 --> 00:03:57.640
232
+ saber que podemos comparar un vector contra una
233
+
234
+ 00:03:57.640 --> 00:04:00.760
235
+ serie de vectores para saber contra cuál es
236
+
237
+ 00:04:00.760 --> 00:04:05.885
238
+ ese ortogonal. Entonces, empecemos aquí, en donde esta
239
+
240
+ 00:04:05.885 --> 00:04:08.945
241
+ función va a dejar fijo al vector b,
242
+
243
+ 00:04:09.005 --> 00:04:10.845
244
+ al vector a, y vamos a empezar a
245
+
246
+ 00:04:10.845 --> 00:04:14.525
247
+ variar el vector b. Ahora, vamos a ver
248
+
249
+ 00:04:14.525 --> 00:04:16.910
250
+ una propiedad. Esa propiedad es la propiedad de
251
+
252
+ 00:04:16.910 --> 00:04:19.310
253
+ la superposición, y vamos a ver cómo la
254
+
255
+ 00:04:19.310 --> 00:04:22.770
256
+ superposición nos lleva a la linealidad o linealidad.
257
+
258
+ 00:04:24.510 --> 00:04:28.430
259
+ La función producto interno satisface esta propiedad, y
260
+
261
+ 00:04:28.430 --> 00:04:31.385
262
+ es que, si la función producto interno dejamos
263
+
264
+ 00:04:31.445 --> 00:04:34.245
265
+ fijo un vector x y la evaluamos en
266
+
267
+ 00:04:34.245 --> 00:04:36.725
268
+ la combinación, en esta combinación lineal, en este
269
+
270
+ 00:04:36.725 --> 00:04:39.685
271
+ vector como combinación lineal, lo que tenemos es
272
+
273
+ 00:04:39.685 --> 00:04:42.759
274
+ que eso es, partiendo de la definición, x
275
+
276
+ 00:04:42.759 --> 00:04:47.240
277
+ transpuesta, estamos dejando fijo al vector x, por
278
+
279
+ 00:04:47.240 --> 00:04:49.159
280
+ el vector en el que está siendo evaluado,
281
+
282
+ 00:04:49.159 --> 00:04:51.259
283
+ que en este caso es esta combinación lineal,
284
+
285
+ 00:04:52.120 --> 00:04:57.014
286
+ alfa a más beta b. Ahora, por las
287
+
288
+ 00:04:57.014 --> 00:05:00.854
289
+ propiedades que vimos, la multiplicación se distribuye sobre
290
+
291
+ 00:05:00.854 --> 00:05:04.935
292
+ la suma, entonces esta multiplicación de vectores es
293
+
294
+ 00:05:04.935 --> 00:05:09.220
295
+ exactamente lo mismo que la multiplicación por cada
296
+
297
+ 00:05:09.220 --> 00:05:12.520
298
+ una de de los elementos de la combinación
299
+
300
+ 00:05:12.660 --> 00:05:18.340
301
+ lineal. Entonces, tenemos que x transpuesta es, que
302
+
303
+ 00:05:18.340 --> 00:05:20.660
304
+ x transpuesta por la suma de alfa más
305
+
306
+ 00:05:20.660 --> 00:05:24.225
307
+ a más beta más b es igual a
308
+
309
+ 00:05:24.245 --> 00:05:28.805
310
+ x traspuesta por alfa veces a más x
311
+
312
+ 00:05:28.805 --> 00:05:32.885
313
+ traspuesta por beta veces b. Ahora sabemos que
314
+
315
+ 00:05:32.885 --> 00:05:37.700
316
+ la multiplicación entre escalares y vectores con muta,
317
+
318
+ 00:05:38.000 --> 00:05:40.639
319
+ y de igual manera es asociativa, por eso
320
+
321
+ 00:05:40.639 --> 00:05:46.980
322
+ podemos escribir alfa veces x traspuesta por a,
323
+
324
+ 00:05:47.815 --> 00:05:51.035
325
+ es decir, este escalar lo pasamos para acá.
326
+
327
+ 00:05:51.575 --> 00:05:55.175
328
+ Y de igual manera podemos escribir beta veces
329
+
330
+ 00:05:55.175 --> 00:05:58.775
331
+ x transpuesta por b. Este escalar lo pasamos
332
+
333
+ 00:05:58.775 --> 00:06:01.710
334
+ para acá y multiplica x transpuesta por b.
335
+
336
+ 00:06:02.509 --> 00:06:05.410
337
+ Ahora, si nos damos cuenta, esto de aquí
338
+
339
+ 00:06:05.470 --> 00:06:08.530
340
+ y esto de aquí corresponden con las definiciones
341
+
342
+ 00:06:08.990 --> 00:06:12.430
343
+ que habíamos dado para la función producto interno
344
+
345
+ 00:06:12.430 --> 00:06:15.414
346
+ evaluado en algún vector. En este caso, aquí
347
+
348
+ 00:06:15.414 --> 00:06:17.854
349
+ estamos dejando fijo al vector x y la
350
+
351
+ 00:06:17.854 --> 00:06:21.615
352
+ estamos evaluando en a. Entonces, esto de aquí
353
+
354
+ 00:06:21.615 --> 00:06:26.995
355
+ lo podemos escribir como f de X0F subíndice
356
+
357
+ 00:06:27.215 --> 00:06:29.880
358
+ vector x con con x fijo evaluado en
359
+
360
+ 00:06:30.420 --> 00:06:36.260
361
+ A0FX de a. Y tenemos un escalar afuera,
362
+
363
+ 00:06:36.260 --> 00:06:40.420
364
+ pasa normal, pasa multiplicando. Entonces, alfa veces f
365
+
366
+ 00:06:40.420 --> 00:06:43.225
367
+ de x a es igual a alfa por
368
+
369
+ 00:06:43.225 --> 00:06:46.025
370
+ x traspuesta de a, y lo mismo hacemos
371
+
372
+ 00:06:46.025 --> 00:06:49.645
373
+ para beta, en donde podemos expresar a beta
374
+
375
+ 00:06:49.945 --> 00:06:52.365
376
+ veces f de x en b es exactamente
377
+
378
+ 00:06:53.545 --> 00:07:00.990
379
+ esta expresión. Ahora bien, notemos que si una
380
+
381
+ 00:07:00.990 --> 00:07:05.070
382
+ función, llamémosle a esa función g, cumple que
383
+
384
+ 00:07:05.070 --> 00:07:09.345
385
+ g evaluada en esta combinación lineal es igual
386
+
387
+ 00:07:09.884 --> 00:07:13.564
388
+ a esta combinación lineal de escalares, notemos que
389
+
390
+ 00:07:13.564 --> 00:07:16.044
391
+ aquí tenemos una combinación lineal de vectores y
392
+
393
+ 00:07:16.044 --> 00:07:19.324
394
+ aquí de escalares, ya que g de XYG
395
+
396
+ 00:07:19.324 --> 00:07:22.365
397
+ de y son escalares, o simplemente a esta
398
+
399
+ 00:07:22.365 --> 00:07:25.530
400
+ suma, entonces decimos que g es una función
401
+
402
+ 00:07:25.530 --> 00:07:28.730
403
+ lineal. Si cumplen esta propiedad, decimos que es
404
+
405
+ 00:07:28.730 --> 00:07:31.930
406
+ lineal. También notemos que si f es una
407
+
408
+ 00:07:31.930 --> 00:07:34.650
409
+ función lineal, llamemos de f a una función
410
+
411
+ 00:07:34.650 --> 00:07:39.175
412
+ cualquiera, la linealidad o la linealidad se extiende
413
+
414
+ 00:07:39.175 --> 00:07:42.135
415
+ a cualquier combinación lineal, no únicamente a una
416
+
417
+ 00:07:42.135 --> 00:07:44.375
418
+ combinación lineal de dos vectores, sino puede ser
419
+
420
+ 00:07:44.375 --> 00:07:47.495
421
+ una combinación lineal de n vectores. Por ejemplo,
422
+
423
+ 00:07:47.495 --> 00:07:51.050
424
+ consideremos esta combinación lineal de aquí. Vamos a
425
+
426
+ 00:07:51.050 --> 00:07:54.170
427
+ evaluar f en esta combinación lineal, pero como
428
+
429
+ 00:07:54.170 --> 00:07:57.210
430
+ sabemos que f es lineal, entonces cumple esta
431
+
432
+ 00:07:57.210 --> 00:08:01.530
433
+ propiedad, y la cumple para cualesquiera vectores y
434
+
435
+ 00:08:01.530 --> 00:08:05.544
436
+ escalares. Entonces, podemos escribir toda esa expresión de
437
+
438
+ 00:08:05.544 --> 00:08:10.185
439
+ aquí simplemente como cero por f evaluado en
440
+
441
+ 00:08:10.185 --> 00:08:13.224
442
+ x cero, más alfa uno por f evaluado
443
+
444
+ 00:08:13.224 --> 00:08:15.465
445
+ en x uno, más alfa dos por f
446
+
447
+ 00:08:15.465 --> 00:08:18.840
448
+ evaluado en x dos. Y así hasta alfa
449
+
450
+ 00:08:18.840 --> 00:08:22.280
451
+ n menos uno evaluada la f en x
452
+
453
+ 00:08:22.280 --> 00:08:27.660
454
+ n menos uno. Ahora, si una función g
455
+
456
+ 00:08:28.920 --> 00:08:32.905
457
+ va de RNARY además es lineal y tenemos
458
+
459
+ 00:08:32.905 --> 00:08:36.225
460
+ que cumple esto, a esta propiedad le vamos
461
+
462
+ 00:08:36.225 --> 00:08:40.505
463
+ a llamar la superposición. Entonces, decimos que una
464
+
465
+ 00:08:40.505 --> 00:08:44.580
466
+ función es, si una función cumple el principio
467
+
468
+ 00:08:44.580 --> 00:08:49.940
469
+ de superposición, es lineal. Ahora, veamos que la
470
+
471
+ 00:08:49.940 --> 00:08:54.220
472
+ superposición puede ser separada en dos propiedades. Esas
473
+
474
+ 00:08:54.220 --> 00:08:57.985
475
+ propiedades son la homogeneidad, es decir, si tenemos
476
+
477
+ 00:08:57.985 --> 00:09:01.791
478
+ cualquier n vector x y cualquier escalar alfa,
479
+
480
+ 00:09:01.958 --> 00:09:05.125
481
+ y si tenemos que la función que definimos
482
+
483
+ 00:09:05.345 --> 00:09:09.825
484
+ acá cumple que g evaluado en alfa veces
485
+
486
+ 00:09:09.825 --> 00:09:13.180
487
+ x es igual que alfa veces g de
488
+
489
+ 00:09:13.480 --> 00:09:16.760
490
+ x, decimos que la función es homogénea, ¿de
491
+
492
+ 00:09:16.760 --> 00:09:22.380
493
+ acuerdo? Repito, si la función g cumple que
494
+
495
+ 00:09:22.440 --> 00:09:25.000
496
+ g alfa veces x es igual que alfa
497
+
498
+ 00:09:25.000 --> 00:09:27.795
499
+ veces g evaluado en x, decimos que la
500
+
501
+ 00:09:27.795 --> 00:09:31.395
502
+ función es homogénea. Ahora vamos para la propiedad
503
+
504
+ 00:09:31.395 --> 00:09:35.015
505
+ de la aditividad. Agarremos cualquiera en el vector
506
+
507
+ 00:09:35.155 --> 00:09:41.475
508
+ XYY. Entonces, tenemos que g evaluado en x
509
+
510
+ 00:09:41.475 --> 00:09:46.780
511
+ más y es igual a g de x
512
+
513
+ 00:09:46.780 --> 00:09:50.780
514
+ más g de y. Si g cumple esto,
515
+
516
+ 00:09:50.780 --> 00:09:54.380
517
+ si cumple esta propiedad, decimos que g es
518
+
519
+ 00:09:54.380 --> 00:09:56.460
520
+ cumple la propiedad de la actividad o es
521
+
522
+ 00:09:56.460 --> 00:10:01.315
523
+ aditiva. Y si la función g cumple estas
524
+
525
+ 00:10:01.315 --> 00:10:05.655
526
+ dos propiedades, entonces decimos que g es lineal,
527
+
528
+ 00:10:06.275 --> 00:10:08.755
529
+ es decir, si g cumple la homogeneidad y
530
+
531
+ 00:10:08.755 --> 00:10:13.309
532
+ la aditividad, cumple la superposición, y si cumple
533
+
534
+ 00:10:13.309 --> 00:10:16.482
535
+ la superposición es lineal. De igual manera, si
536
+
537
+ 00:10:16.482 --> 00:10:19.655
538
+ es lineal, si ya sabemos que es lineal,
539
+
540
+ 00:10:19.655 --> 00:10:22.828
541
+ sabemos que cumple la superposición y sabemos que
542
+
543
+ 00:10:22.828 --> 00:10:28.665
544
+ es homogénea y además que es aditiva. Vamos
545
+
546
+ 00:10:29.524 --> 00:10:32.084
547
+ a comprobar si la función suma que habíamos
548
+
549
+ 00:10:32.084 --> 00:10:36.324
550
+ denotado arriba cumple esta propiedad, es decir, si
551
+
552
+ 00:10:36.324 --> 00:10:39.470
553
+ cumple la superposición. Lo que vamos a comprobar
554
+
555
+ 00:10:39.530 --> 00:10:41.930
556
+ es si nuestra función f es o no
557
+
558
+ 00:10:41.930 --> 00:10:45.370
559
+ es lineal. Entonces, recordemos que f ya está
560
+
561
+ 00:10:45.370 --> 00:10:47.870
562
+ declarada el de arriba, y vamos a agarrar
563
+
564
+ 00:10:48.330 --> 00:10:51.935
565
+ dos vectores cuales quiera a, supongamos que a
566
+
567
+ 00:10:51.935 --> 00:10:55.134
568
+ es igual a Hagamos del vector de los
569
+
570
+ 00:10:55.134 --> 00:11:00.574
571
+ unos, np array, uno coma uno coma uno
572
+
573
+ 00:11:00.574 --> 00:11:03.475
574
+ coma uno, coma uno, porque g f recibía
575
+
576
+ 00:11:03.535 --> 00:11:07.010
577
+ cuatro vectores, y b, vamos a ponerlo como
578
+
579
+ 00:11:07.010 --> 00:11:11.570
580
+ n p array, vamos a elegir el uno
581
+
582
+ 00:11:11.570 --> 00:11:16.290
583
+ coma cero coma uno coma cero, y vamos
584
+
585
+ 00:11:16.290 --> 00:11:20.365
586
+ a elegir dos escalares XYY. Vamos a decir
587
+
588
+ 00:11:20.365 --> 00:11:23.965
589
+ que x es igual a uno y que
590
+
591
+ 00:11:23.965 --> 00:11:30.365
592
+ y es igual a menos dos. Ahora, si
593
+
594
+ 00:11:30.365 --> 00:11:33.750
595
+ la función f es lineal, cumple la superposición,
596
+
597
+ 00:11:34.209 --> 00:11:37.910
598
+ es decir, si yo evalúo f en x
599
+
600
+ 00:11:38.769 --> 00:11:41.730
601
+ veces, en este caso, x veces a más
602
+
603
+ 00:11:41.730 --> 00:11:44.629
604
+ y veces b, debería de ser lo mismo
605
+
606
+ 00:11:44.850 --> 00:11:48.264
607
+ que si yo multiplico x, en este caso
608
+
609
+ 00:11:48.264 --> 00:11:52.125
610
+ abajo, por g evaluado en a, más y,
611
+
612
+ 00:11:54.024 --> 00:11:57.165
613
+ más y por g evaluado en el vector
614
+
615
+ 00:11:57.225 --> 00:12:05.590
616
+ b. Vamos a comprobarlo. Escribimos un print y
617
+
618
+ 00:12:05.930 --> 00:12:11.770
619
+ tenemos f evaluado en x, que es nuestro
620
+
621
+ 00:12:11.770 --> 00:12:23.704
622
+ escalar, por a más y por b. Esto
623
+
624
+ 00:12:23.704 --> 00:12:26.365
625
+ de aquí es igual a, y lo evaluamos,
626
+
627
+ 00:12:27.870 --> 00:12:30.030
628
+ y nos da un cero. Vamos a comprobar
629
+
630
+ 00:12:30.030 --> 00:12:34.610
631
+ que es cero. Recordemos que f suma las
632
+
633
+ 00:12:34.830 --> 00:12:38.530
634
+ entradas, entonces aquí estamos sumando también componentes, primero
635
+
636
+ 00:12:38.590 --> 00:12:40.990
637
+ sumamos las componentes y después lo evaluamos en
638
+
639
+ 00:12:40.990 --> 00:12:44.905
640
+ f. Si sumamos las componentes, es decir, la
641
+
642
+ 00:12:44.905 --> 00:12:54.105
643
+ combinación lineal, esto nos devuelve este arreglo, menos
644
+
645
+ 00:12:54.105 --> 00:12:57.510
646
+ uno, uno, menos uno, uno, y si nosotros
647
+
648
+ 00:12:57.570 --> 00:13:00.610
649
+ sumamos componente a componente, este de aquí se
650
+
651
+ 00:13:00.610 --> 00:13:03.010
652
+ cancela con este de aquí y este de
653
+
654
+ 00:13:03.010 --> 00:13:05.350
655
+ aquí se cancela con este de aquí, entonces,
656
+
657
+ 00:13:05.490 --> 00:13:08.450
658
+ en efecto, nos da un cero. Si esta
659
+
660
+ 00:13:08.450 --> 00:13:12.505
661
+ función cumple la propiedad de la linealidad y
662
+
663
+ 00:13:12.505 --> 00:13:16.825
664
+ la superposición, debería de ser lo mismo esto
665
+
666
+ 00:13:16.825 --> 00:13:20.585
667
+ de aquí que evaluarlo como les voy a
668
+
669
+ 00:13:20.585 --> 00:13:48.045
670
+ mostrar ahora. Quiero evaluarlo así. Que es justo
671
+
672
+ 00:13:48.105 --> 00:13:50.444
673
+ como nos aparece la propiedad de la superposición.
674
+
675
+ 00:13:54.010 --> 00:13:55.690
676
+ Y nos damos cuenta que sí es lo
677
+
678
+ 00:13:55.690 --> 00:13:59.070
679
+ mismo. Ya con esto comprobamos que nuestra función
680
+
681
+ 00:13:59.130 --> 00:14:02.190
682
+ f, la función suma, es una función lineal.
683
+
684
+ 00:14:03.050 --> 00:14:05.645
685
+ Te dejo como ejercicio que compruebes si la
686
+
687
+ 00:14:05.645 --> 00:14:11.005
688
+ función proyección, la función g que habíamos definido
689
+
690
+ 00:14:11.005 --> 00:14:13.985
691
+ aquí arriba, es una función lineal o no.
692
+
693
+ 00:14:15.369 --> 00:14:18.809
694
+ Hasta aquí llega esta clase. Nos vemos en
695
+
696
+ 00:14:18.809 --> 00:14:21.369
697
+ la siguiente, en donde vamos a ver algunos
698
+
699
+ 00:14:21.369 --> 00:14:21.869
700
+ teoremas.
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://colab.research.google.com/drive/1uHLHnGyq5fgP917lwwh3JDNhNtr3EZhw?usp=sharing
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_1_e9705b8d-df25-4f93-9a4b-0290357a6c0c.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_2_869e4304-cce7-43be-9ed0-d36af00c8797.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_t1_9abd2d3c-38bc-4596-9bc7-7cb2b4b0d72e.png ADDED
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/02-fl_t2_5f9fbb8a-3b72-4513-b759-b5d63f6b3590.png ADDED
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/02-funciones_lineales_d6135d0f-fc5c-405c-b74f-b88766a8ce07.ipynb ADDED
@@ -0,0 +1,603 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# 5. Funciones Lineales"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "La notación $f: \\mathbb{R}^{n}\\to \\mathbb{R}$ significa que $f$ es una función con **dominio** en $\\mathbb{R}^{n}$ e imagen en $\\mathbb{R}$, es decir, que toma un $n$-vector y lo convierte en un escalar. \n",
15
+ "La función puede denotarse como $f\\left(\\mathbf{x}\\right)= f\\left(x_{0},x_{1},\\dots,x_{n-1}\\right)$ donde $\\mathbf{x}\\in \\mathbb{R}^{n}$ y $x_{i}$ son las entradas del vector. \n",
16
+ "\n",
17
+ "Es necesario enfatizar que $f(\\mathbf{x})$ es un escalar. "
18
+ ]
19
+ },
20
+ {
21
+ "cell_type": "markdown",
22
+ "metadata": {},
23
+ "source": [
24
+ "Para describir una función $f: \\mathbb{R}^{n} \\to \\mathbb{R}$ tenemos que especificar el cual es el valor para cualquier vector $\\mathbf{x}\\in\\mathbb{R}^{n}$. Por ejemplo, sea $f: \\mathbb{R}^{4} \\to \\mathbb{R}$ definida por\n",
25
+ "$$\n",
26
+ "f(\\mathbf{x}) = x_{0} + x_{1} + x_{2} + x_{3}\n",
27
+ "$$"
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "markdown",
32
+ "metadata": {},
33
+ "source": [
34
+ "Así pues el valor de cualquier $4$-vector queda bien definido, por ejemplo:\n",
35
+ "\n",
36
+ "* $f(\\mathbf{0}) = 0 + 0+ 0+0 = 0$\n",
37
+ "\n",
38
+ "* $f([1\\; 0\\; 0\\; 0]) = 1+0+0+0 = 1$\n",
39
+ "\n",
40
+ "* $f([1\\; 1\\; 1\\; 1]) = 1+1+1+1 = 4$"
41
+ ]
42
+ },
43
+ {
44
+ "cell_type": "code",
45
+ "execution_count": 15,
46
+ "metadata": {},
47
+ "outputs": [],
48
+ "source": [
49
+ "import numpy as np"
50
+ ]
51
+ },
52
+ {
53
+ "cell_type": "code",
54
+ "execution_count": 16,
55
+ "metadata": {},
56
+ "outputs": [],
57
+ "source": [
58
+ "def f(x):\n",
59
+ " return np.sum(x)"
60
+ ]
61
+ },
62
+ {
63
+ "cell_type": "code",
64
+ "execution_count": 17,
65
+ "metadata": {},
66
+ "outputs": [
67
+ {
68
+ "name": "stdout",
69
+ "output_type": "stream",
70
+ "text": [
71
+ "f(0) = 0\n"
72
+ ]
73
+ }
74
+ ],
75
+ "source": [
76
+ "print('f(0) = ',f(np.array([0,0,0,0])))"
77
+ ]
78
+ },
79
+ {
80
+ "cell_type": "code",
81
+ "execution_count": 18,
82
+ "metadata": {},
83
+ "outputs": [
84
+ {
85
+ "name": "stdout",
86
+ "output_type": "stream",
87
+ "text": [
88
+ "f([1,0,0,0]) = 1\n"
89
+ ]
90
+ }
91
+ ],
92
+ "source": [
93
+ "print('f([1,0,0,0]) = ',f(np.array([1,0,0,0])))"
94
+ ]
95
+ },
96
+ {
97
+ "cell_type": "code",
98
+ "execution_count": 19,
99
+ "metadata": {},
100
+ "outputs": [
101
+ {
102
+ "name": "stdout",
103
+ "output_type": "stream",
104
+ "text": [
105
+ "f([1,1,1,1]) = 4\n"
106
+ ]
107
+ }
108
+ ],
109
+ "source": [
110
+ "print('f([1,1,1,1]) = ',f(np.array([1,1,1,1])))"
111
+ ]
112
+ },
113
+ {
114
+ "cell_type": "markdown",
115
+ "metadata": {},
116
+ "source": [
117
+ "Como otro ejemplo, sea $g: \\mathbb{R}^{3} \\to \\mathbb{R}$ definida por \n",
118
+ "$$\n",
119
+ "g(\\mathbf{x}) = x_{0}\n",
120
+ "$$"
121
+ ]
122
+ },
123
+ {
124
+ "cell_type": "markdown",
125
+ "metadata": {},
126
+ "source": [
127
+ "Tenemos entonces:\n",
128
+ "\n",
129
+ "* $g(\\mathbf{0}) = 0$ \n",
130
+ "\n",
131
+ "* $g([0\\; 0\\; 1]) = 0$\n",
132
+ "\n",
133
+ "* $g([1\\; 0\\; 4]) = 1$"
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "code",
138
+ "execution_count": 20,
139
+ "metadata": {},
140
+ "outputs": [],
141
+ "source": [
142
+ "def g(x):\n",
143
+ " return x[0]"
144
+ ]
145
+ },
146
+ {
147
+ "cell_type": "code",
148
+ "execution_count": 21,
149
+ "metadata": {},
150
+ "outputs": [
151
+ {
152
+ "name": "stdout",
153
+ "output_type": "stream",
154
+ "text": [
155
+ "g(0) = 0\n"
156
+ ]
157
+ }
158
+ ],
159
+ "source": [
160
+ "print('g(0) = ',g(np.array([0,0,0])))"
161
+ ]
162
+ },
163
+ {
164
+ "cell_type": "code",
165
+ "execution_count": 22,
166
+ "metadata": {},
167
+ "outputs": [
168
+ {
169
+ "name": "stdout",
170
+ "output_type": "stream",
171
+ "text": [
172
+ "g([0,0,1]) = 0\n"
173
+ ]
174
+ }
175
+ ],
176
+ "source": [
177
+ "print('g([0,0,1]) = ',g(np.array([0,0,1])))"
178
+ ]
179
+ },
180
+ {
181
+ "cell_type": "code",
182
+ "execution_count": 23,
183
+ "metadata": {},
184
+ "outputs": [
185
+ {
186
+ "name": "stdout",
187
+ "output_type": "stream",
188
+ "text": [
189
+ "g([1,0,4]) = 1\n"
190
+ ]
191
+ }
192
+ ],
193
+ "source": [
194
+ "print('g([1,0,4]) = ',g(np.array([1,0,4])))"
195
+ ]
196
+ },
197
+ {
198
+ "cell_type": "markdown",
199
+ "metadata": {},
200
+ "source": [
201
+ "Podemos notar que en este caso $f(\\mathbf{x})$ corresponde a la _función suma_ y $g(\\mathbf{x})$ a proyección sobre $x_{0}$."
202
+ ]
203
+ },
204
+ {
205
+ "cell_type": "markdown",
206
+ "metadata": {},
207
+ "source": [
208
+ "## 5.1 Algunas funciones"
209
+ ]
210
+ },
211
+ {
212
+ "cell_type": "markdown",
213
+ "metadata": {},
214
+ "source": [
215
+ "**Función producto interno**. Si una función tiene como aurgmentos dos $n$-vectores el dominio de la función se expresará como $\\mathbb{R}^{n}\\times\\mathbb{R}^{n}$. Por ejemplo, sea $f:\\mathbb{R}^{n}\\times\\mathbb{R}^{n} \\to \\mathbb{R}$ definida por:\n",
216
+ "\n",
217
+ "$$\n",
218
+ "f(\\mathbf{a},\\mathbf{b}) = a_{0}b_{0} + a_{1}b_{1} + \\cdots + a_{n-1}b_{n-1}\n",
219
+ "$$"
220
+ ]
221
+ },
222
+ {
223
+ "cell_type": "markdown",
224
+ "metadata": {},
225
+ "source": [
226
+ "Notemos que podemos expresar lo anterior como\n",
227
+ "\n",
228
+ "$$\n",
229
+ "f(\\mathbf{a},\\mathbf{b}) = \\mathbf{a}^{T}\\mathbf{b}\n",
230
+ "$$\n",
231
+ "\n",
232
+ "Esta función recibe el nombre de función producto interno. Si quisieramos dejar fijo un vector, digamos el vector $\\mathbf{a}$ podemos recurrir a la siguiente notación:\n",
233
+ "\n",
234
+ "$$\n",
235
+ "f_{\\mathbf{a}}(\\mathbf{b}) = \\mathbf{a}^{T}\\mathbf{b}\n",
236
+ "$$\n",
237
+ "\n",
238
+ "Esto significará que $\\mathbf{a}$ estará fijo mientras que $\\mathbf{b}$ será el que variará. "
239
+ ]
240
+ },
241
+ {
242
+ "cell_type": "markdown",
243
+ "metadata": {},
244
+ "source": [
245
+ "**Superposición y linealidad.** La función producto interno satisface la siguiente propiedad:\n",
246
+ "\n",
247
+ "$$\n",
248
+ "\\begin{eqnarray}\n",
249
+ "f_\\mathbf{x}(\\alpha\\mathbf{a}+\\beta\\mathbf{b}) &=& \\mathbf{x}^{T}(\\alpha\\mathbf{a}+\\beta\\mathbf{b}) \\\\\n",
250
+ " &=& \\mathbf{x}^{T}(\\alpha\\mathbf{a})+\\mathbf{x}^{T}(\\beta\\mathbf{b}) \\\\\n",
251
+ " &=& \\alpha(\\mathbf{x}^{T}\\mathbf{a}) + \\beta(\\mathbf{x}^{T}\\mathbf{b}) \\\\\n",
252
+ " &=& \\alpha f_{\\mathbf{x}}(\\mathbf{a}) + \\beta f_{\\mathbf{x}}(\\mathbf{b})\n",
253
+ "\\end{eqnarray}\n",
254
+ "$$\n",
255
+ "\n",
256
+ "Si la función $g$ cumple que $g(\\alpha\\mathbf{x}+\\beta\\mathbf{y}) = \\alpha g(\\mathbf{x})+\\beta g(\\mathbf{y})$ decimos que la función $g$ es una **función lineal.** "
257
+ ]
258
+ },
259
+ {
260
+ "cell_type": "markdown",
261
+ "metadata": {},
262
+ "source": [
263
+ "Si $f$ es una función lineal la _linearidad_ se extiende a cualquier combinación lineal y no solamente a una combinación de dos vectores, tenemos \n",
264
+ "\n",
265
+ "$$\n",
266
+ "f(\\alpha_{0}\\mathbf{x_{0}} + \\alpha_{1}\\mathbf{x_{1}} + \\alpha_{2}\\mathbf{x_{2}} + \\cdots \n",
267
+ " + \\alpha_{n-1}\\mathbf{x_{n-1}}) = \\alpha_{0}f(\\mathbf{x_{0}}) + \\alpha_{1}f(\\mathbf{x_{1}}) + \\alpha_{2}f(\\mathbf{x_{2}}) + \\cdots + \\alpha_{n-1}f(\\mathbf{x_{n-1}})\n",
268
+ "$$\n"
269
+ ]
270
+ },
271
+ {
272
+ "cell_type": "markdown",
273
+ "metadata": {},
274
+ "source": [
275
+ "Si una función $g:\\mathbf{R}^{n} \\to \\mathbf{R}$ es lineal sabemo que cumple $g(\\alpha\\mathbf{x}+\\beta\\mathbf{y}) = \\alpha g(\\mathbf{x})+\\beta g(\\mathbf{y})$, propiedad que llamaremos _superposición_. Ahora, la superposición puede ser separada en dos propiedades:\n",
276
+ "\n",
277
+ "* _Homogeneidad_. Para cualquier $n$-vector $\\mathbf{x}$ y cualquier escalar $\\alpha$ tenemos que $g(\\alpha \\mathbf{x}) = \\alpha g(\\mathbf{x})$\n",
278
+ "\n",
279
+ "* _Aditividad_. Para cualquier $n$-vector $\\mathbf{x}$ y $\\mathbf{y}$ tenemos que $g(\\mathbf{x}+\\mathbf{y}) = g(\\mathbf{x})+g(\\mathbf{y})$\n",
280
+ "\n",
281
+ "La homogeneidad nos dice que escalar el argumento es igual que escalar el valor de la función; la aditividad nos indica que sumar los argumentos es igual que sumar los valores de la función. "
282
+ ]
283
+ },
284
+ {
285
+ "cell_type": "code",
286
+ "execution_count": 24,
287
+ "metadata": {},
288
+ "outputs": [],
289
+ "source": [
290
+ "a = np.array([1,1,1,1])\n",
291
+ "b = np.array([1,0,1,0])\n",
292
+ "x,y = 1,-2"
293
+ ]
294
+ },
295
+ {
296
+ "cell_type": "code",
297
+ "execution_count": 25,
298
+ "metadata": {},
299
+ "outputs": [
300
+ {
301
+ "name": "stdout",
302
+ "output_type": "stream",
303
+ "text": [
304
+ "f(x*a + y*b) = 0\n"
305
+ ]
306
+ }
307
+ ],
308
+ "source": [
309
+ "print('f(x*a + y*b) = ',f(x*a + y*b))"
310
+ ]
311
+ },
312
+ {
313
+ "cell_type": "code",
314
+ "execution_count": 27,
315
+ "metadata": {},
316
+ "outputs": [
317
+ {
318
+ "name": "stdout",
319
+ "output_type": "stream",
320
+ "text": [
321
+ "x*f(a) + y*f(b) = 0\n"
322
+ ]
323
+ }
324
+ ],
325
+ "source": [
326
+ "print('x*f(a) + y*f(b) =',x*f(a) + y*f(b))"
327
+ ]
328
+ },
329
+ {
330
+ "cell_type": "markdown",
331
+ "metadata": {},
332
+ "source": [
333
+ "**Representación producto interno de una función lineal.** En matemáticas las verdades, cuando son verdades, se demuestran usando argumentos principalmente lógicos. Estas verdades vienen empaquetadas en _teoremas_, _corolarios_ y _lemas_. Si no podemos demostrarlo pero creemos que es verdad lo llamamos _conjetura_. Por ejemplo, consideremos el siguiente teorema:"
334
+ ]
335
+ },
336
+ {
337
+ "cell_type": "markdown",
338
+ "metadata": {},
339
+ "source": [
340
+ "**Teorema.** Los ángulos a ambos lados de una recta, que intersecta a otra, siempre suman $180^\\circ$ \n",
341
+ "\n",
342
+ "![img](fl_1.png)"
343
+ ]
344
+ },
345
+ {
346
+ "cell_type": "markdown",
347
+ "metadata": {},
348
+ "source": [
349
+ "*Demostración*: Supongamos que $\\alpha + \\beta \\neq 180$ eso quiere decir que $\\alpha + \\beta > 180$ o $\\alpha + \\beta < 180$. Ahora, pensemos en la linea **f** pasa por el diámetro, es decir, corta a la mitad al círculo. \n",
350
+ "\n",
351
+ "![](fl_t1.png)\n",
352
+ "\n",
353
+ "Al pasar por el diámetro sabemos que ambos lados tenemos un ángulo de $180^\\circ$. Llamemos a ese ángulo $\\Omega=180^\\circ$. Ahora, llamemos **g** a una línea que pase por otro diámetro. \n",
354
+ "\n",
355
+ "![](fl_t2.png)"
356
+ ]
357
+ },
358
+ {
359
+ "cell_type": "markdown",
360
+ "metadata": {},
361
+ "source": [
362
+ "Entonces, al seccionar con **g** tenemos nuevamente los ángulos $\\alpha$ y $\\beta$ entonces tenemos que $\\alpha + \\beta = \\Omega$ pero asumimos que $\\alpha + \\beta \\neq 180^\\circ$ lo cuyal nos lleva a una contradicción $!$ por ello lo anteior debe ser cierto. "
363
+ ]
364
+ },
365
+ {
366
+ "cell_type": "markdown",
367
+ "metadata": {},
368
+ "source": [
369
+ "**Corolario.** Cuando dos líneas se intersectan los ángulos opuestos entre ellos son iguales.\n",
370
+ "\n",
371
+ "![](fl_2.png)"
372
+ ]
373
+ },
374
+ {
375
+ "cell_type": "markdown",
376
+ "metadata": {},
377
+ "source": [
378
+ "*Demostración:* Sabemos que $\\beta + \\alpha = 180^\\circ$ entonces $\\alpha = 180^\\circ - \\beta$. Por otro lado, sabemos que también $\\gamma + \\beta = 180^\\circ$ así pues $\\gamma = 180^\\circ - \\beta$. Juntando lo anteior tenemos que:\n",
379
+ "\n",
380
+ "$$\n",
381
+ "\\alpha = 180^\\circ - \\beta = \\gamma\n",
382
+ "$$\n",
383
+ "\n",
384
+ "Lo mismo es posible aplicarse para $\\beta$ y $\\delta$. **QED**. "
385
+ ]
386
+ },
387
+ {
388
+ "cell_type": "markdown",
389
+ "metadata": {},
390
+ "source": [
391
+ "Ya explorados los teoremas y los corolarios veamos la siguiente proposición: \n",
392
+ "\n",
393
+ "**Proposición:** Una función definida como el producto punto de sus argumentos y algún vector fijo es lineal. Lo inverso es también verdadero: si una función es lineal entonces puede ser expresada como el producto interno de sus argumentos y algún vector fijo."
394
+ ]
395
+ },
396
+ {
397
+ "cell_type": "markdown",
398
+ "metadata": {},
399
+ "source": [
400
+ "Ahora, sea $f$ una función escalar de $n$-vectores que además es lineal. Entonces decimos que _existe_ un $n$-vector $\\mathbf{a}$ tal que $f(\\mathbf{x}) = \\mathbf{a}^{T}\\mathbf{x}$ para cualquier $\\mathbf{x}$. A la expresión $\\mathbf{a}^{T}\\mathbf{x}$ le llamaremos *representación producto punto* de $f$. "
401
+ ]
402
+ },
403
+ {
404
+ "cell_type": "markdown",
405
+ "metadata": {},
406
+ "source": [
407
+ "Otra propiedad interesante es que la *representación producto punto* de $f$ como $\\mathbf{a}^{T}\\mathbf{x}$ es única. "
408
+ ]
409
+ },
410
+ {
411
+ "cell_type": "markdown",
412
+ "metadata": {},
413
+ "source": [
414
+ "$ f(\\mathbf{x}) = \\displaystyle\\sum_{i}^{n-1} x_{i}$ si n=4 esto lo podemos expresar como $f(\\mathbf{x}) = \\mathbf{a}^{T}\\mathbf{x}$ donde:\n",
415
+ "$$\n",
416
+ "a^T = [1,1,1,1]\n",
417
+ "$$"
418
+ ]
419
+ },
420
+ {
421
+ "cell_type": "markdown",
422
+ "metadata": {},
423
+ "source": [
424
+ "**Promedio.** El promedio de una $n$-vector es definida como\n",
425
+ "\n",
426
+ "$$\n",
427
+ "f(x) = (x_{0}+x_{1}+\\cdots+x_{n-1})/n\n",
428
+ "$$\n",
429
+ "\n",
430
+ "Y se denota como $\\mathbf{avg}(x)$, notemos que este $\\mathbf{avg}(x) = a^{T}x$ con\n",
431
+ "\n",
432
+ "$$\n",
433
+ "a^T = [1/n\\; 1/n\\; \\cdots \\; 1/n] = \\mathbf{1}/n\n",
434
+ "$$"
435
+ ]
436
+ },
437
+ {
438
+ "cell_type": "markdown",
439
+ "metadata": {},
440
+ "source": [
441
+ "**Máximo.** Para $n$-vectores $x$ la función que nos da el máximo coeficiente de un vector es $f(x)=max\\{x_{0},x_{1},\\dots,x_{n-1}\\}$ y no es lineal. Para demostrar esto voy a suponer que es lineal y dar un contraejemplo. Si tomamos $x^T = [1,-1]$ y $y^T=[-1,1]$ con $\\alpha = 1/2$ y $\\beta = 1/2$. Entonces tenemos que:\n",
442
+ "\n",
443
+ "$$\n",
444
+ "f(\\alpha x + \\beta y) = 0 \\neq \\alpha f(x) + \\beta f(y) = 1\n",
445
+ "$$"
446
+ ]
447
+ },
448
+ {
449
+ "cell_type": "code",
450
+ "execution_count": 28,
451
+ "metadata": {},
452
+ "outputs": [],
453
+ "source": [
454
+ "def MAX(x):\n",
455
+ " return np.max(x)"
456
+ ]
457
+ },
458
+ {
459
+ "cell_type": "code",
460
+ "execution_count": 29,
461
+ "metadata": {},
462
+ "outputs": [
463
+ {
464
+ "name": "stdout",
465
+ "output_type": "stream",
466
+ "text": [
467
+ "MAX([1,0,2]) = 2\n"
468
+ ]
469
+ }
470
+ ],
471
+ "source": [
472
+ "print('MAX([1,0,2]) = ', MAX(np.array([1,0,2])))"
473
+ ]
474
+ },
475
+ {
476
+ "cell_type": "code",
477
+ "execution_count": 30,
478
+ "metadata": {},
479
+ "outputs": [],
480
+ "source": [
481
+ "x = np.array([1,-1])\n",
482
+ "y = np.array([-1,1])\n",
483
+ "a,b = 1/2, 1/2"
484
+ ]
485
+ },
486
+ {
487
+ "cell_type": "code",
488
+ "execution_count": 31,
489
+ "metadata": {},
490
+ "outputs": [
491
+ {
492
+ "name": "stdout",
493
+ "output_type": "stream",
494
+ "text": [
495
+ "MAX(a*x + b*y) = 0.0\n"
496
+ ]
497
+ }
498
+ ],
499
+ "source": [
500
+ "print('MAX(a*x + b*y) = ', MAX(a*x + b*y))"
501
+ ]
502
+ },
503
+ {
504
+ "cell_type": "code",
505
+ "execution_count": 32,
506
+ "metadata": {},
507
+ "outputs": [
508
+ {
509
+ "name": "stdout",
510
+ "output_type": "stream",
511
+ "text": [
512
+ "a*MAX(x) + b*MAX(y) = 1.0\n"
513
+ ]
514
+ }
515
+ ],
516
+ "source": [
517
+ "print('a*MAX(x) + b*MAX(y) = ', a*MAX(x) + b*MAX(y))"
518
+ ]
519
+ },
520
+ {
521
+ "cell_type": "markdown",
522
+ "metadata": {},
523
+ "source": [
524
+ "## 5.2 Algunas consideraciones"
525
+ ]
526
+ },
527
+ {
528
+ "cell_type": "markdown",
529
+ "metadata": {},
530
+ "source": [
531
+ "**Funciones Afines.** Una función $f:\\mathbb{R}^{n} \\to \\mathbb{R}$ es afín si y solo si puede ser expresada como $f(x) = a^{T}x + b$ para algún $n$-vector $a$ y un escalar $b$, es llamado algunas veces *offset* o *bias*. Por ejemplo si consideramos la siguiente función:\n",
532
+ "\n",
533
+ "$$\n",
534
+ "f(x) = 3 + x_{0}+x_{1}+x_{2}\n",
535
+ "$$\n",
536
+ "\n",
537
+ "La podemos representar como \n",
538
+ "\n",
539
+ "$$\n",
540
+ "f(x) = a^T x + b = [1 \\; 1 \\; 1] x + 3\n",
541
+ "$$"
542
+ ]
543
+ },
544
+ {
545
+ "cell_type": "markdown",
546
+ "metadata": {},
547
+ "source": [
548
+ "Una función afín cumplirá la superposición si y solo si la suma de de los coeficientes de la combinación lineal es uno. Es decir, si $f$ es una función afín entonces $f(\\alpha x + \\beta y) = \\alpha f(x)+ \\beta f(y)$ si y solo si $ \\alpha + \\beta = 1$.\n",
549
+ "\n",
550
+ "*Demostración.* Como $f$ es afín tenemos que $f(x)=a^T x + b$ entonces, usando que $ \\alpha + \\beta = 1$\n",
551
+ "\n",
552
+ "$$\n",
553
+ "\\begin{eqnarray}\n",
554
+ "f(\\alpha x + \\beta y) &=& a^T (\\alpha x + \\beta y) + b \\\\\n",
555
+ " &=& a^T \\alpha x + a^T \\beta y + (\\alpha + \\beta) b \\\\\n",
556
+ " &=& \\alpha a^T x + \\alpha b + \\beta a^T y + \\beta b \\\\\n",
557
+ " &=& \\alpha (a^T x + b) + \\beta (a^T y + b) \\\\\n",
558
+ " &=& \\alpha f(x) + \\beta f(y)\n",
559
+ "\\end{eqnarray}\n",
560
+ "$$"
561
+ ]
562
+ },
563
+ {
564
+ "cell_type": "markdown",
565
+ "metadata": {},
566
+ "source": [
567
+ "**Ejercicio.** Determina si las siguientes funciones son lineales o no:\n",
568
+ "* $f(\\mathbf{x}) = x_{n-1} - x_{0}$\n",
569
+ "\n",
570
+ "* Si $\\mathbf{x}\\in\\mathbb{R}^{4}$ y $f:\\mathbb{R}^{4} \\to \\mathbb{R}$ definida como $f(\\mathbf{x})=x_{3}+(x_{3}-x_{2})$"
571
+ ]
572
+ },
573
+ {
574
+ "cell_type": "markdown",
575
+ "metadata": {},
576
+ "source": [
577
+ "**Problema: Potencia en un clúster de procesadores y temperatura.** La temperatura $T$ de un cluster de tres procesadores es una función afín de la potencia de los procesadores $P^T = [P_{0}\\; P_{1}\\; P_{2}]$. Cuando los tres procesadores están en reposo tenemos que $P^T = [10\\; 10\\; 10]$ lo cual nos da una temperatura de $T=35$. Cuando el primer procesador opera a potencia absoluta tenemos que $P^T = [100\\; 10\\; 10]$ y la temperatura se eleva a $T=60$. Cuando el segundo procesador opera a su máxima capacidad tenemos $P^T = [10\\; 100\\; 10]$ y la temperatura se eleva a $T=75$. Cuando el tercer procesador opera a máxima potencia mientras que los otros dos están en reposo tenemos que $P^T = [10\\; 10\\; 100]$ y la temperatura se elevea a $T=65$. Supongamos que los tres procesadores operan a máxima potencia ¿Qué temperatura se alcanza? La temperatura de fusión de los procesadores (a la que los procesadores se derriten) es cerca de $150$ ¿Cuál es la potencia máxima que pueden alcanzar los procesadores para que $T\\le 150$? \n",
578
+ "*Hint:* $T(P) = a^T P + b$"
579
+ ]
580
+ }
581
+ ],
582
+ "metadata": {
583
+ "kernelspec": {
584
+ "display_name": "Python 3",
585
+ "language": "python",
586
+ "name": "python3"
587
+ },
588
+ "language_info": {
589
+ "codemirror_mode": {
590
+ "name": "ipython",
591
+ "version": 3
592
+ },
593
+ "file_extension": ".py",
594
+ "mimetype": "text/x-python",
595
+ "name": "python",
596
+ "nbconvert_exporter": "python",
597
+ "pygments_lexer": "ipython3",
598
+ "version": "3.7.3"
599
+ }
600
+ },
601
+ "nbformat": 4,
602
+ "nbformat_minor": 4
603
+ }
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/03-Teoremas y Corolarios en Funciones Lineales.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6e12f85b2bc7ed902e1af09bc970fd14e6ea903a1e1c45bcfd396d87f349ac65
3
+ size 173990656