Upload via hfc (batch)
Browse filesUploaded using hfc tool
This view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +10 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/03-Lecturas recomendadas.txt +1 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/03-Resumen.html +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/03-fl_1_b0e1960a-22ac-4538-9176-d5a3fa4985cf.png +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/03-fl_2_bd69c9e5-5605-4412-8699-45404d217793.png +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/03-fl_t1_7cac34b7-de41-4d65-b7e7-ccd879cccc8d.png +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/03-fl_t2_65ab2094-1926-4062-aeb1-217d5ee6a35f.png +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/03-funciones_lineales_8bea0ee9-b343-42cc-89c3-8f2f43b6ce40.ipynb +603 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-Funciones Afines Propiedades y Ejercicios Prácticos.mp4 +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-Funciones Afines Propiedades y Ejercicios Prácticos.vtt +502 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-Lecturas recomendadas.txt +1 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-Resumen.html +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/04-fl_1_791b9934-e2e7-4a79-9088-20b778cea79a.png +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/04-fl_2_688205df-74d5-46e1-8388-33e306c7158c.png +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/04-fl_t1_7578434d-8348-453c-a733-4a2ac8a759c2.png +0 -0
- a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/04-fl_t2_18bf8950-e77a-4a67-bbaa-37fbebb0ecfe.png +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-funciones_lineales_edd8fc32-9519-46dc-88dd-8718820a615d.ipynb +603 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/05-Aproximaciones de Taylor Modelos Lineales de Funciones No Lineales.mp4 +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/05-Aproximaciones de Taylor Modelos Lineales de Funciones No Lineales.vtt +433 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/05-Lecturas recomendadas.txt +2 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/05-Resumen.html +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/05-aproximacion_taylor_6d013e46-3c9a-49a9-ad07-99eb13e84e1f.ipynb +481 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-Aproximaciones de Taylor y análisis de error en Python.mp4 +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-Aproximaciones de Taylor y análisis de error en Python.vtt +706 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-Lecturas recomendadas.txt +4 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-Resumen.html +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-aproximacion_taylor_ce137460-6fd8-44ff-8cd4-d5d1cde0972c.ipynb +481 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-Lecturas recomendadas.txt +4 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-Regresión Lineal con Datos Geográficos y Socioeconómicos.mp4 +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-Regresión Lineal con Datos Geográficos y Socioeconómicos.vtt +1084 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-Resumen.html +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-definitions_7d274da2-c190-43fe-9c19-8f10487943ee.pdf +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-income_db_gorg_283cf1bb-74a9-4cf5-9255-da690e2b3e64.csv +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-income_methodology_f503f6ab-8d26-417d-946f-a4c86f70bc87.pdf +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-regresion_lineal_306f23ad-b398-409f-a70f-32fc99b2cb56.ipynb +487 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-Lecturas recomendadas.txt +1 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-Propiedades y Cálculo de la Norma de Vectores.mp4 +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-Propiedades y Cálculo de la Norma de Vectores.vtt +763 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-Resumen.html +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-distancias_9e4fe5f7-c830-455a-8f38-ca9850246cef.ipynb +534 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-Cálculo de Distancias entre Vectores usando Normas Euclidianas y LP.mp4 +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-Cálculo de Distancias entre Vectores usando Normas Euclidianas y LP.vtt +1198 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-Lecturas recomendadas.txt +2 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-Resumen.html +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-distancias_8e763fc2-5ce3-498b-91f8-711debd9e867.ipynb +534 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-Lecturas recomendadas.txt +1 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-Optimización de Visitas para Arrendar Departamentos.mp4 +3 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-Optimización de Visitas para Arrendar Departamentos.vtt +595 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-Resumen.html +0 -0
- a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-distancias_7eb83b35-ba4b-431d-9a1a-bd49eeaaf232.ipynb +534 -0
.gitattributes
CHANGED
|
@@ -583,3 +583,13 @@ a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:s
|
|
| 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 586 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/04-Funciones[[:space:]]Afines[[:space:]]Propiedades[[:space:]]y[[:space:]]Ejercicios[[:space:]]Prácticos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 587 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/05-Aproximaciones[[:space:]]de[[:space:]]Taylor[[:space:]]Modelos[[:space:]]Lineales[[:space:]]de[[:space:]]Funciones[[:space:]]No[[:space:]]Lineales.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 588 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/06-Aproximaciones[[:space:]]de[[:space:]]Taylor[[:space:]]y[[:space:]]análisis[[:space:]]de[[:space:]]error[[:space:]]en[[:space:]]Python.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 589 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/07-Regresión[[:space:]]Lineal[[:space:]]con[[:space:]]Datos[[:space:]]Geográficos[[:space:]]y[[:space:]]Socioeconómicos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 590 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/07-definitions_7d274da2-c190-43fe-9c19-8f10487943ee.pdf filter=lfs diff=lfs merge=lfs -text
|
| 591 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/03-Funciones[[:space:]]lineales/07-income_methodology_f503f6ab-8d26-417d-946f-a4c86f70bc87.pdf filter=lfs diff=lfs merge=lfs -text
|
| 592 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/04-Norma[[:space:]]y[[:space:]]distancia/01-Propiedades[[:space:]]y[[:space:]]Cálculo[[:space:]]de[[:space:]]la[[:space:]]Norma[[:space:]]de[[:space:]]Vectores.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 593 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/04-Norma[[:space:]]y[[:space:]]distancia/02-Cálculo[[:space:]]de[[:space:]]Distancias[[:space:]]entre[[:space:]]Vectores[[:space:]]usando[[:space:]]Normas[[:space:]]Euclidianas[[:space:]]y[[:space:]]LP.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 594 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/04-Norma[[:space:]]y[[:space:]]distancia/03-Optimización[[:space:]]de[[:space:]]Visitas[[:space:]]para[[:space:]]Arrendar[[:space:]]Departamentos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 595 |
+
a/Curso[[:space:]]de[[:space:]]Introducción[[:space:]]al[[:space:]]Álgebra[[:space:]]Lineal[[:space:]]Vectores/04-Norma[[:space:]]y[[:space:]]distancia/04-Cálculo[[:space:]]de[[:space:]]Desviación[[:space:]]Estándar[[:space:]]en[[:space:]]Series[[:space:]]de[[:space:]]Tiempo[[:space:]]con[[:space:]]NumPy.mp4 filter=lfs diff=lfs merge=lfs -text
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/03-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/03-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/03-fl_1_b0e1960a-22ac-4538-9176-d5a3fa4985cf.png
ADDED
|
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/03-fl_2_bd69c9e5-5605-4412-8699-45404d217793.png
ADDED
|
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/03-fl_t1_7cac34b7-de41-4d65-b7e7-ccd879cccc8d.png
ADDED
|
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/03-fl_t2_65ab2094-1926-4062-aeb1-217d5ee6a35f.png
ADDED
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/03-funciones_lineales_8bea0ee9-b343-42cc-89c3-8f2f43b6ce40.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 |
+
""
|
| 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 |
+
"\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 |
+
""
|
| 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 |
+
""
|
| 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/04-Funciones Afines Propiedades y Ejercicios Prácticos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a9b0a387e99562beceec610f4c956688a819547fa48e0f278f9953e01284a91d
|
| 3 |
+
size 96678478
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-Funciones Afines Propiedades y Ejercicios Prácticos.vtt
ADDED
|
@@ -0,0 +1,502 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.040 --> 00:00:05.520
|
| 4 |
+
Hola de nuevo. En las clases pasadas ya
|
| 5 |
+
|
| 6 |
+
00:00:05.520 --> 00:00:09.139
|
| 7 |
+
hablamos sobre funciones, tuvimos vastos ejemplos sobre funciones.
|
| 8 |
+
|
| 9 |
+
00:00:09.599 --> 00:00:11.920
|
| 10 |
+
Ahora vamos a ver un último ejemplo y
|
| 11 |
+
|
| 12 |
+
00:00:11.920 --> 00:00:15.665
|
| 13 |
+
te voy a presentar tus ejercicios. Sin más,
|
| 14 |
+
|
| 15 |
+
00:00:15.665 --> 00:00:19.025
|
| 16 |
+
vamos a la computadora. Nuevamente te presento este
|
| 17 |
+
|
| 18 |
+
00:00:19.025 --> 00:00:21.665
|
| 19 |
+
notebook sobre el que hemos venido trabajando. En
|
| 20 |
+
|
| 21 |
+
00:00:21.665 --> 00:00:24.705
|
| 22 |
+
este notebook vamos a encontrar ya nuestra última
|
| 23 |
+
|
| 24 |
+
00:00:24.705 --> 00:00:28.625
|
| 25 |
+
parte. Vamos a hablar dentro de algunas consideraciones
|
| 26 |
+
|
| 27 |
+
00:00:28.625 --> 00:00:31.570
|
| 28 |
+
de las funciones afines, y vamos a considerar
|
| 29 |
+
|
| 30 |
+
00:00:31.710 --> 00:00:33.950
|
| 31 |
+
una función para hablar de las funciones afines
|
| 32 |
+
|
| 33 |
+
00:00:33.950 --> 00:00:37.710
|
| 34 |
+
que vaya de RNARY diremos que la función
|
| 35 |
+
|
| 36 |
+
00:00:37.710 --> 00:00:40.990
|
| 37 |
+
es afín sí y solo sí, es decir,
|
| 38 |
+
|
| 39 |
+
00:00:40.990 --> 00:00:44.035
|
| 40 |
+
que se tiene que cumplir sí o sí,
|
| 41 |
+
|
| 42 |
+
00:00:44.495 --> 00:00:48.114
|
| 43 |
+
puede ser expresada como f de x igual
|
| 44 |
+
|
| 45 |
+
00:00:48.175 --> 00:00:50.975
|
| 46 |
+
a a de a traspuesta por x más
|
| 47 |
+
|
| 48 |
+
00:00:50.975 --> 00:00:56.434
|
| 49 |
+
b, donde AYX son n vectores y estamos
|
| 50 |
+
|
| 51 |
+
00:00:56.735 --> 00:00:59.910
|
| 52 |
+
pensando a b como un escalar. B es
|
| 53 |
+
|
| 54 |
+
00:00:59.910 --> 00:01:02.250
|
| 55 |
+
algunas veces llamado el offset o el bias.
|
| 56 |
+
|
| 57 |
+
00:01:03.350 --> 00:01:07.350
|
| 58 |
+
Por ejemplo, si consideramos la siguiente función dada
|
| 59 |
+
|
| 60 |
+
00:01:07.350 --> 00:01:10.230
|
| 61 |
+
por esta expresión de aquí, tres más x
|
| 62 |
+
|
| 63 |
+
00:01:10.230 --> 00:01:12.895
|
| 64 |
+
cero más x uno más x dos, esta
|
| 65 |
+
|
| 66 |
+
00:01:12.895 --> 00:01:16.655
|
| 67 |
+
la podemos representar como a traspuesta por el
|
| 68 |
+
|
| 69 |
+
00:01:16.655 --> 00:01:19.855
|
| 70 |
+
vector x más b, donde a será el
|
| 71 |
+
|
| 72 |
+
00:01:19.855 --> 00:01:23.615
|
| 73 |
+
vector uno uno uno por x, y este
|
| 74 |
+
|
| 75 |
+
00:01:23.615 --> 00:01:26.335
|
| 76 |
+
tres lo representamos como el offset que está
|
| 77 |
+
|
| 78 |
+
00:01:26.335 --> 00:01:30.000
|
| 79 |
+
justamente acá. Una función afín cumplirá la superposición
|
| 80 |
+
|
| 81 |
+
00:01:30.140 --> 00:01:34.700
|
| 82 |
+
a propiedades superposición si, y solamente si, la
|
| 83 |
+
|
| 84 |
+
00:01:34.700 --> 00:01:37.420
|
| 85 |
+
suma de los coeficientes de la combinación lineal
|
| 86 |
+
|
| 87 |
+
00:01:37.420 --> 00:01:41.625
|
| 88 |
+
en la que estamos evaluando es uno. Hace
|
| 89 |
+
|
| 90 |
+
00:01:41.625 --> 00:01:45.305
|
| 91 |
+
algunas clases, cuando presentamos las combinaciones lineales, presentamos
|
| 92 |
+
|
| 93 |
+
00:01:45.305 --> 00:01:49.485
|
| 94 |
+
las las combinaciones lineales afines, y era justamente
|
| 95 |
+
|
| 96 |
+
00:01:49.545 --> 00:01:52.985
|
| 97 |
+
en donde los coeficientes de las combinaciones lineales
|
| 98 |
+
|
| 99 |
+
00:01:52.985 --> 00:01:56.800
|
| 100 |
+
nos sumaban uno. En este caso, vamos a
|
| 101 |
+
|
| 102 |
+
00:01:56.800 --> 00:02:00.340
|
| 103 |
+
decir que la función afín cumple la superposición
|
| 104 |
+
|
| 105 |
+
00:02:00.960 --> 00:02:04.259
|
| 106 |
+
si solamente si la suma de los coeficientes
|
| 107 |
+
|
| 108 |
+
00:02:04.799 --> 00:02:08.239
|
| 109 |
+
es de los coeficientes de la combinación lineal
|
| 110 |
+
|
| 111 |
+
00:02:08.239 --> 00:02:11.885
|
| 112 |
+
es uno, o bien, simplemente, decir que la
|
| 113 |
+
|
| 114 |
+
00:02:11.885 --> 00:02:17.165
|
| 115 |
+
que la combinación lineal es afín. Ahora, si
|
| 116 |
+
|
| 117 |
+
00:02:17.165 --> 00:02:20.225
|
| 118 |
+
es afín, nosotros tenemos que tiene que cumplir
|
| 119 |
+
|
| 120 |
+
00:02:20.365 --> 00:02:23.325
|
| 121 |
+
esta propiedad aquí, pero solamente la va a
|
| 122 |
+
|
| 123 |
+
00:02:23.325 --> 00:02:28.090
|
| 124 |
+
cumplir si a más beta es uno. Entonces,
|
| 125 |
+
|
| 126 |
+
00:02:28.090 --> 00:02:31.329
|
| 127 |
+
f evaluado en la combinación lineal alfa más
|
| 128 |
+
|
| 129 |
+
00:02:31.370 --> 00:02:34.810
|
| 130 |
+
alfa x más beta e y es igual
|
| 131 |
+
|
| 132 |
+
00:02:34.810 --> 00:02:37.769
|
| 133 |
+
a alfa por f de x más beta
|
| 134 |
+
|
| 135 |
+
00:02:37.769 --> 00:02:40.405
|
| 136 |
+
por f de y, si solo si alfa
|
| 137 |
+
|
| 138 |
+
00:02:40.405 --> 00:02:43.045
|
| 139 |
+
más beta es igual a uno. Vamos a
|
| 140 |
+
|
| 141 |
+
00:02:43.045 --> 00:02:47.385
|
| 142 |
+
demostrar esto. Como f es afín, sabemos que
|
| 143 |
+
|
| 144 |
+
00:02:47.445 --> 00:02:50.005
|
| 145 |
+
f se puede expresar como un vector a
|
| 146 |
+
|
| 147 |
+
00:02:50.005 --> 00:02:53.000
|
| 148 |
+
traspuesto por x más b, y entonces aquí
|
| 149 |
+
|
| 150 |
+
00:02:53.540 --> 00:02:55.620
|
| 151 |
+
vamos a usar el hecho de que a
|
| 152 |
+
|
| 153 |
+
00:02:55.620 --> 00:02:59.060
|
| 154 |
+
más beta es igual a uno. Primero, vamos
|
| 155 |
+
|
| 156 |
+
00:02:59.060 --> 00:03:03.880
|
| 157 |
+
a partir de f por a x más
|
| 158 |
+
|
| 159 |
+
00:03:05.795 --> 00:03:08.355
|
| 160 |
+
beta veces y. Esto es igual a a
|
| 161 |
+
|
| 162 |
+
00:03:08.355 --> 00:03:12.515
|
| 163 |
+
traspuesta por alfa x más beta veces y
|
| 164 |
+
|
| 165 |
+
00:03:12.515 --> 00:03:14.515
|
| 166 |
+
más b. Esa es la definición de una
|
| 167 |
+
|
| 168 |
+
00:03:14.515 --> 00:03:16.595
|
| 169 |
+
función afín, así se puede expresar una función
|
| 170 |
+
|
| 171 |
+
00:03:16.595 --> 00:03:21.870
|
| 172 |
+
afín. Ahora, sabemos que esto se distribuye dentro
|
| 173 |
+
|
| 174 |
+
00:03:21.870 --> 00:03:24.750
|
| 175 |
+
de la suma de esta multiplicación. Entonces, lo
|
| 176 |
+
|
| 177 |
+
00:03:24.750 --> 00:03:29.569
|
| 178 |
+
podemos escribir como a traspuesta por alfa veces
|
| 179 |
+
|
| 180 |
+
00:03:29.709 --> 00:03:33.545
|
| 181 |
+
x más a traspuesta por beta veces y,
|
| 182 |
+
|
| 183 |
+
00:03:33.925 --> 00:03:36.585
|
| 184 |
+
y aquí viene en donde utilizamos esta propiedad.
|
| 185 |
+
|
| 186 |
+
00:03:38.245 --> 00:03:41.765
|
| 187 |
+
Notemos que como alfa más beta es un
|
| 188 |
+
|
| 189 |
+
00:03:41.765 --> 00:03:46.325
|
| 190 |
+
uno, entonces esto de aquí es uno por
|
| 191 |
+
|
| 192 |
+
00:03:46.325 --> 00:03:49.430
|
| 193 |
+
beta, por b, y uno por b es
|
| 194 |
+
|
| 195 |
+
00:03:49.430 --> 00:03:52.629
|
| 196 |
+
simplemente b, entonces no estamos alterando para nada
|
| 197 |
+
|
| 198 |
+
00:03:52.629 --> 00:03:57.050
|
| 199 |
+
esta ecuación, solamente introdujimos este término de aquí.
|
| 200 |
+
|
| 201 |
+
00:03:57.989 --> 00:04:03.285
|
| 202 |
+
Repito, como alfa más beta es igual a
|
| 203 |
+
|
| 204 |
+
00:04:03.285 --> 00:04:13.285
|
| 205 |
+
uno, entonces alfa más beta por b es
|
| 206 |
+
|
| 207 |
+
00:04:13.285 --> 00:04:17.310
|
| 208 |
+
simplemente el b, porque alfa más beta es
|
| 209 |
+
|
| 210 |
+
00:04:17.310 --> 00:04:22.350
|
| 211 |
+
un uno. Y entonces podemos distribuir esta suma
|
| 212 |
+
|
| 213 |
+
00:04:22.350 --> 00:04:26.670
|
| 214 |
+
también. Distribuyéndola nos queda ese término de beta
|
| 215 |
+
|
| 216 |
+
00:04:26.670 --> 00:04:30.425
|
| 217 |
+
más alfa, lo colocamos aquí, y ese término
|
| 218 |
+
|
| 219 |
+
00:04:30.425 --> 00:04:33.885
|
| 220 |
+
de de beta por b lo colocamos acá.
|
| 221 |
+
|
| 222 |
+
00:04:34.665 --> 00:04:39.945
|
| 223 |
+
Y entonces podemos reagrupar términos y tenemos que
|
| 224 |
+
|
| 225 |
+
00:04:39.945 --> 00:04:44.550
|
| 226 |
+
reagrupando por alfa, tenemos alfa por a traspuesta
|
| 227 |
+
|
| 228 |
+
00:04:44.690 --> 00:04:47.570
|
| 229 |
+
por x más b, que es este término
|
| 230 |
+
|
| 231 |
+
00:04:47.570 --> 00:04:53.010
|
| 232 |
+
de aquí, más beta veces a traspuesta por
|
| 233 |
+
|
| 234 |
+
00:04:53.010 --> 00:04:56.290
|
| 235 |
+
y más b, que es este término de
|
| 236 |
+
|
| 237 |
+
00:04:56.290 --> 00:05:03.045
|
| 238 |
+
aquí, pero agrupamos por beta. Y ahora bien,
|
| 239 |
+
|
| 240 |
+
00:05:03.105 --> 00:05:06.405
|
| 241 |
+
esto de aquí es justo la definición de
|
| 242 |
+
|
| 243 |
+
00:05:06.625 --> 00:05:09.525
|
| 244 |
+
una función afín evaluada en el vector x.
|
| 245 |
+
|
| 246 |
+
00:05:09.665 --> 00:05:12.545
|
| 247 |
+
Entonces, podemos escribir esto simplemente como f de
|
| 248 |
+
|
| 249 |
+
00:05:12.545 --> 00:05:16.040
|
| 250 |
+
x por alfa. Esto de aquí es la
|
| 251 |
+
|
| 252 |
+
00:05:16.040 --> 00:05:18.840
|
| 253 |
+
función afín, la una función afín evaluada en
|
| 254 |
+
|
| 255 |
+
00:05:18.840 --> 00:05:22.600
|
| 256 |
+
x. Entonces, f de x por alfa. Lo
|
| 257 |
+
|
| 258 |
+
00:05:22.600 --> 00:05:24.920
|
| 259 |
+
mismo pasa con este lado, esto es una
|
| 260 |
+
|
| 261 |
+
00:05:24.920 --> 00:05:27.815
|
| 262 |
+
función afín evaluada en el vector y. Entonces,
|
| 263 |
+
|
| 264 |
+
00:05:28.355 --> 00:05:32.375
|
| 265 |
+
nos queda beta por f evaluada en y,
|
| 266 |
+
|
| 267 |
+
00:05:33.075 --> 00:05:37.015
|
| 268 |
+
y así comprobamos que f cumple la propiedad
|
| 269 |
+
|
| 270 |
+
00:05:37.715 --> 00:05:40.275
|
| 271 |
+
de superposición, que es f evaluado en la
|
| 272 |
+
|
| 273 |
+
00:05:40.275 --> 00:05:44.460
|
| 274 |
+
combinación lineal, es igual a la suma de
|
| 275 |
+
|
| 276 |
+
00:05:47.320 --> 00:05:50.840
|
| 277 |
+
la función evaluada en los vectores multiplicada por
|
| 278 |
+
|
| 279 |
+
00:05:50.840 --> 00:05:56.535
|
| 280 |
+
los escalares. Ahora bien, vamos a pasar a
|
| 281 |
+
|
| 282 |
+
00:05:56.535 --> 00:06:02.235
|
| 283 |
+
tus ejercicios. Tus ejercicios van a estar distribuidos
|
| 284 |
+
|
| 285 |
+
00:06:02.375 --> 00:06:05.910
|
| 286 |
+
en un ejercicio y en un problema. En
|
| 287 |
+
|
| 288 |
+
00:06:05.910 --> 00:06:09.270
|
| 289 |
+
el ejercicio tienes que determinar si estas funciones
|
| 290 |
+
|
| 291 |
+
00:06:09.270 --> 00:06:11.990
|
| 292 |
+
de aquí son lineales o no. En el
|
| 293 |
+
|
| 294 |
+
00:06:11.990 --> 00:06:14.970
|
| 295 |
+
primer problema estoy pensando que esta función f
|
| 296 |
+
|
| 297 |
+
00:06:15.350 --> 00:06:20.925
|
| 298 |
+
es una función que va de RNAR. En
|
| 299 |
+
|
| 300 |
+
00:06:20.925 --> 00:06:23.725
|
| 301 |
+
general, de RNAR, no de r dos, de
|
| 302 |
+
|
| 303 |
+
00:06:23.725 --> 00:06:26.765
|
| 304 |
+
r tres, sino de algún RNAR. Hay que
|
| 305 |
+
|
| 306 |
+
00:06:26.765 --> 00:06:29.405
|
| 307 |
+
determinar si esta función es lineal o no.
|
| 308 |
+
|
| 309 |
+
00:06:29.405 --> 00:06:31.965
|
| 310 |
+
Tienes que comprobar si esta función cumple o
|
| 311 |
+
|
| 312 |
+
00:06:31.965 --> 00:06:36.340
|
| 313 |
+
no la propiedad de superposición. Lo mismo para
|
| 314 |
+
|
| 315 |
+
00:06:36.340 --> 00:06:38.900
|
| 316 |
+
el problema de abajo, vamos a considerar un
|
| 317 |
+
|
| 318 |
+
00:06:38.900 --> 00:06:41.220
|
| 319 |
+
x en r cuatro y vamos a tener
|
| 320 |
+
|
| 321 |
+
00:06:41.220 --> 00:06:44.340
|
| 322 |
+
una función definida como x tres menos x
|
| 323 |
+
|
| 324 |
+
00:06:44.340 --> 00:06:48.200
|
| 325 |
+
tres menos más x tres menos x dos.
|
| 326 |
+
|
| 327 |
+
00:06:48.465 --> 00:06:51.345
|
| 328 |
+
Hay que comprobar si esta función cumple la
|
| 329 |
+
|
| 330 |
+
00:06:51.345 --> 00:06:55.025
|
| 331 |
+
superposición. Si no la cumple, diríamos que la
|
| 332 |
+
|
| 333 |
+
00:06:55.025 --> 00:06:59.665
|
| 334 |
+
función no es lineal. Y viene un problema
|
| 335 |
+
|
| 336 |
+
00:06:59.665 --> 00:07:03.120
|
| 337 |
+
muy interesante. Este es un problema más simplificado,
|
| 338 |
+
|
| 339 |
+
00:07:03.120 --> 00:07:05.280
|
| 340 |
+
pero realmente así se manejan algo que se
|
| 341 |
+
|
| 342 |
+
00:07:05.280 --> 00:07:08.160
|
| 343 |
+
llaman los sistemas de control. Y el problema
|
| 344 |
+
|
| 345 |
+
00:07:08.160 --> 00:07:10.400
|
| 346 |
+
es este, vamos a asumir que tenemos un
|
| 347 |
+
|
| 348 |
+
00:07:10.400 --> 00:07:15.395
|
| 349 |
+
clúster de tres procesadores, y nosotros lo que
|
| 350 |
+
|
| 351 |
+
00:07:15.395 --> 00:07:18.295
|
| 352 |
+
podemos medir en ese clúster son la temperatura
|
| 353 |
+
|
| 354 |
+
00:07:18.995 --> 00:07:20.995
|
| 355 |
+
y la potencia a la que operan esos
|
| 356 |
+
|
| 357 |
+
00:07:20.995 --> 00:07:23.815
|
| 358 |
+
procesadores. La potencia a la que operan esos
|
| 359 |
+
|
| 360 |
+
00:07:23.955 --> 00:07:26.755
|
| 361 |
+
procesadores en orden está dado por este vector,
|
| 362 |
+
|
| 363 |
+
00:07:26.755 --> 00:07:30.460
|
| 364 |
+
y la temperatura la denotaremos como t. Ahora,
|
| 365 |
+
|
| 366 |
+
00:07:30.680 --> 00:07:33.480
|
| 367 |
+
cuando los tres procesadores están en reposo, tenemos
|
| 368 |
+
|
| 369 |
+
00:07:33.480 --> 00:07:38.440
|
| 370 |
+
que la potencia que medimos es diez diez
|
| 371 |
+
|
| 372 |
+
00:07:38.440 --> 00:07:40.700
|
| 373 |
+
diez, esto va a significar que los tres
|
| 374 |
+
|
| 375 |
+
00:07:40.760 --> 00:07:43.885
|
| 376 |
+
procesadores están en reposo, y cuando estos tres
|
| 377 |
+
|
| 378 |
+
00:07:43.885 --> 00:07:46.765
|
| 379 |
+
están en reposo, nosotros medimos una temperatura de
|
| 380 |
+
|
| 381 |
+
00:07:46.765 --> 00:07:51.025
|
| 382 |
+
treinta y cinco grados. Ahora, cuando el primer
|
| 383 |
+
|
| 384 |
+
00:07:51.325 --> 00:07:55.345
|
| 385 |
+
procesador opera máxima potencia, pero los otros dos
|
| 386 |
+
|
| 387 |
+
00:07:55.885 --> 00:08:00.140
|
| 388 |
+
están en reposo, tenemos que la potencia medida
|
| 389 |
+
|
| 390 |
+
00:08:00.140 --> 00:08:03.120
|
| 391 |
+
será el vector cien en la primera entrada
|
| 392 |
+
|
| 393 |
+
00:08:03.580 --> 00:08:07.100
|
| 394 |
+
diez diez, y la temperatura se elevará a
|
| 395 |
+
|
| 396 |
+
00:08:07.100 --> 00:08:11.845
|
| 397 |
+
sesenta grados. En cambio, cuando el segundo procesador
|
| 398 |
+
|
| 399 |
+
00:08:11.845 --> 00:08:15.384
|
| 400 |
+
opera su máxima capacidad, nosotros mediremos el vector
|
| 401 |
+
|
| 402 |
+
00:08:16.164 --> 00:08:20.264
|
| 403 |
+
diez, cien, diez, y la temperatura se elevará
|
| 404 |
+
|
| 405 |
+
00:08:20.405 --> 00:08:24.669
|
| 406 |
+
a setenta y cinco grados. Hay que recordar
|
| 407 |
+
|
| 408 |
+
00:08:24.669 --> 00:08:27.310
|
| 409 |
+
que aquí los otros dos procesadores, el uno
|
| 410 |
+
|
| 411 |
+
00:08:27.310 --> 00:08:32.150
|
| 412 |
+
y el tres, están en reposo. Ahora, cuando
|
| 413 |
+
|
| 414 |
+
00:08:32.150 --> 00:08:34.990
|
| 415 |
+
se eleva el tercer procesador y opera esta
|
| 416 |
+
|
| 417 |
+
00:08:34.990 --> 00:08:37.709
|
| 418 |
+
máxima potencia, mientras los otros dos están en
|
| 419 |
+
|
| 420 |
+
00:08:37.709 --> 00:08:41.995
|
| 421 |
+
reposo, tenemos que el vector de potencia medido
|
| 422 |
+
|
| 423 |
+
00:08:41.995 --> 00:08:43.995
|
| 424 |
+
es diez diez, porque el primero y el
|
| 425 |
+
|
| 426 |
+
00:08:43.995 --> 00:08:47.035
|
| 427 |
+
segundo están en reposo, y el tercero está
|
| 428 |
+
|
| 429 |
+
00:08:47.035 --> 00:08:50.635
|
| 430 |
+
en potencia cien. Y cuando y, en este
|
| 431 |
+
|
| 432 |
+
00:08:50.635 --> 00:08:52.875
|
| 433 |
+
caso, la temperatura se eleva a sesenta y
|
| 434 |
+
|
| 435 |
+
00:08:52.875 --> 00:08:56.870
|
| 436 |
+
cinco grados. Ahora, supongamos que los tres procesadores
|
| 437 |
+
|
| 438 |
+
00:08:56.870 --> 00:09:00.870
|
| 439 |
+
operan a máxima potencia. La pregunta que tienes
|
| 440 |
+
|
| 441 |
+
00:09:00.870 --> 00:09:03.769
|
| 442 |
+
que resolver es qué temperatura va a alcanzar
|
| 443 |
+
|
| 444 |
+
00:09:04.389 --> 00:09:08.955
|
| 445 |
+
el sistema. Ahora, una cosa más, la temperatura
|
| 446 |
+
|
| 447 |
+
00:09:08.955 --> 00:09:11.195
|
| 448 |
+
en función de los procesadores, es decir, a
|
| 449 |
+
|
| 450 |
+
00:09:11.195 --> 00:09:13.595
|
| 451 |
+
la temperatura a la que se podrían derretir,
|
| 452 |
+
|
| 453 |
+
00:09:13.595 --> 00:09:16.555
|
| 454 |
+
está cerca de los ciento cincuenta grados. ¿Cuál
|
| 455 |
+
|
| 456 |
+
00:09:16.555 --> 00:09:19.275
|
| 457 |
+
es, entonces, la potencia máxima que pueden alcanzar
|
| 458 |
+
|
| 459 |
+
00:09:19.275 --> 00:09:22.850
|
| 460 |
+
los procesadores para garantizar que te siempre esté,
|
| 461 |
+
|
| 462 |
+
00:09:22.850 --> 00:09:25.010
|
| 463 |
+
que la temperatura esté a lo más, o
|
| 464 |
+
|
| 465 |
+
00:09:25.010 --> 00:09:27.650
|
| 466 |
+
sea, sea menor o igual que ciento cincuenta
|
| 467 |
+
|
| 468 |
+
00:09:27.650 --> 00:09:30.290
|
| 469 |
+
grados. El fin que te voy a dar
|
| 470 |
+
|
| 471 |
+
00:09:30.290 --> 00:09:32.530
|
| 472 |
+
es que la función de la temperatura la
|
| 473 |
+
|
| 474 |
+
00:09:32.530 --> 00:09:36.050
|
| 475 |
+
puedes en la temperatura va a ser una
|
| 476 |
+
|
| 477 |
+
00:09:36.050 --> 00:09:38.755
|
| 478 |
+
función afín de la del vector de potencia.
|
| 479 |
+
|
| 480 |
+
00:09:39.214 --> 00:09:41.134
|
| 481 |
+
Lo que tendrás que encontrar en este caso
|
| 482 |
+
|
| 483 |
+
00:09:41.134 --> 00:09:43.555
|
| 484 |
+
será este vector b y este vector a.
|
| 485 |
+
|
| 486 |
+
00:09:44.975 --> 00:09:48.815
|
| 487 |
+
Hasta aquí llevo esa sesión de funciones. Espero
|
| 488 |
+
|
| 489 |
+
00:09:48.815 --> 00:09:51.954
|
| 490 |
+
que pongas en los comentarios tus dudas, detenerlas,
|
| 491 |
+
|
| 492 |
+
00:09:52.690 --> 00:09:54.769
|
| 493 |
+
y la comunidad de Platzi o yo te
|
| 494 |
+
|
| 495 |
+
00:09:54.769 --> 00:09:58.470
|
| 496 |
+
las podríamos resolver. También espero ver las soluciones
|
| 497 |
+
|
| 498 |
+
00:09:58.610 --> 00:10:01.810
|
| 499 |
+
de tu problema. Nos vemos en la siguiente
|
| 500 |
+
|
| 501 |
+
00:10:01.810 --> 00:10:02.310
|
| 502 |
+
clase.
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-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/04-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/04-fl_1_791b9934-e2e7-4a79-9088-20b778cea79a.png
ADDED
|
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/04-fl_2_688205df-74d5-46e1-8388-33e306c7158c.png
ADDED
|
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/04-fl_t1_7578434d-8348-453c-a733-4a2ac8a759c2.png
ADDED
|
a/Curso de Introducci/303/263n al /303/201lgebra Lineal Vectores/03-Funciones lineales/04-fl_t2_18bf8950-e77a-4a67-bbaa-37fbebb0ecfe.png
ADDED
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/04-funciones_lineales_edd8fc32-9519-46dc-88dd-8718820a615d.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 |
+
""
|
| 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 |
+
"\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 |
+
""
|
| 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 |
+
""
|
| 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/05-Aproximaciones de Taylor Modelos Lineales de Funciones No Lineales.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c89d587ca1e1d5f59d6d90a7b7083228815f7c81a2caed3b3c33d446c7030bd5
|
| 3 |
+
size 79794439
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/05-Aproximaciones de Taylor Modelos Lineales de Funciones No Lineales.vtt
ADDED
|
@@ -0,0 +1,433 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.679 --> 00:00:06.000
|
| 4 |
+
Hola de nuevo. El camino ha sido largo
|
| 5 |
+
|
| 6 |
+
00:00:06.000 --> 00:00:08.720
|
| 7 |
+
y nos está dando frutos. Lo que vamos
|
| 8 |
+
|
| 9 |
+
00:00:08.720 --> 00:00:11.059
|
| 10 |
+
a ver hoy son las aproximaciones de Taylor.
|
| 11 |
+
|
| 12 |
+
00:00:11.679 --> 00:00:13.519
|
| 13 |
+
La mayoría de las funciones que están en
|
| 14 |
+
|
| 15 |
+
00:00:13.519 --> 00:00:16.995
|
| 16 |
+
la realidad, pensando en que las la realidad
|
| 17 |
+
|
| 18 |
+
00:00:16.995 --> 00:00:20.915
|
| 19 |
+
la aproximamos también con funciones, son funciones altamente
|
| 20 |
+
|
| 21 |
+
00:00:20.915 --> 00:00:23.635
|
| 22 |
+
no lineales, y a veces poder trabajar y
|
| 23 |
+
|
| 24 |
+
00:00:23.635 --> 00:00:26.695
|
| 25 |
+
lidiar con ellas es muy complicado. A veces
|
| 26 |
+
|
| 27 |
+
00:00:26.695 --> 00:00:27.505
|
| 28 |
+
nos conviene aproximar funciones lineales o funciones afines,
|
| 29 |
+
|
| 30 |
+
00:00:28.610 --> 00:00:32.310
|
| 31 |
+
aproximar funciones lineales o funciones afines en vecindades
|
| 32 |
+
|
| 33 |
+
00:00:34.610 --> 00:00:38.290
|
| 34 |
+
en distancias muy pequeñas de un punto que
|
| 35 |
+
|
| 36 |
+
00:00:38.290 --> 00:00:41.690
|
| 37 |
+
nos interese. Las funciones lineales las podemos hacer
|
| 38 |
+
|
| 39 |
+
00:00:41.690 --> 00:00:44.394
|
| 40 |
+
y trabajar muy bien, mientras que algunas, las
|
| 41 |
+
|
| 42 |
+
00:00:44.394 --> 00:00:47.034
|
| 43 |
+
no lineales más difíciles, va a ser mucho
|
| 44 |
+
|
| 45 |
+
00:00:47.034 --> 00:00:49.774
|
| 46 |
+
más complicado entenderlas y poder trabajar con ellas.
|
| 47 |
+
|
| 48 |
+
00:00:50.394 --> 00:00:52.394
|
| 49 |
+
Por eso, en esta clase vamos a ver
|
| 50 |
+
|
| 51 |
+
00:00:52.394 --> 00:00:55.695
|
| 52 |
+
las aproximaciones de Taylor, que es una aproximación
|
| 53 |
+
|
| 54 |
+
00:00:55.835 --> 00:00:59.610
|
| 55 |
+
que nos da el cálculo diferencial para poder
|
| 56 |
+
|
| 57 |
+
00:00:59.610 --> 00:01:02.410
|
| 58 |
+
llegar a aproximar alrededor de un punto una
|
| 59 |
+
|
| 60 |
+
00:01:02.410 --> 00:01:07.050
|
| 61 |
+
función no lineal. Sin más, vámonos a la
|
| 62 |
+
|
| 63 |
+
00:01:07.050 --> 00:01:10.650
|
| 64 |
+
computadora. Este notebook en el que vamos a
|
| 65 |
+
|
| 66 |
+
00:01:10.650 --> 00:01:13.130
|
| 67 |
+
estar trabajando es un nuevo notebook, no te
|
| 68 |
+
|
| 69 |
+
00:01:13.130 --> 00:01:16.655
|
| 70 |
+
preocupes, va a estar en el enlace en
|
| 71 |
+
|
| 72 |
+
00:01:16.955 --> 00:01:20.395
|
| 73 |
+
los recursos. Ahora bien, como les comentaba, la
|
| 74 |
+
|
| 75 |
+
00:01:20.395 --> 00:01:22.795
|
| 76 |
+
mayoría de los fenómenos de la realidad, entendiendo
|
| 77 |
+
|
| 78 |
+
00:01:22.795 --> 00:01:26.255
|
| 79 |
+
que también aproximamos a la realidad con funciones,
|
| 80 |
+
|
| 81 |
+
00:01:26.590 --> 00:01:29.870
|
| 82 |
+
son funciones altamente no lineales, son súper no
|
| 83 |
+
|
| 84 |
+
00:01:29.870 --> 00:01:32.030
|
| 85 |
+
lineales, y a veces nos va a ser
|
| 86 |
+
|
| 87 |
+
00:01:32.030 --> 00:01:34.450
|
| 88 |
+
más sencillo para trabajar con ellas o entenderlas
|
| 89 |
+
|
| 90 |
+
00:01:35.230 --> 00:01:38.270
|
| 91 |
+
aproximarnos alrededor de un punto con una función
|
| 92 |
+
|
| 93 |
+
00:01:38.270 --> 00:01:41.495
|
| 94 |
+
afín o lineal. En este caso, nos referiremos
|
| 95 |
+
|
| 96 |
+
00:01:41.495 --> 00:01:44.375
|
| 97 |
+
a la aproximación como modelo, es decir, nuestra
|
| 98 |
+
|
| 99 |
+
00:01:44.375 --> 00:01:46.215
|
| 100 |
+
aproximación es a lo que le vamos a
|
| 101 |
+
|
| 102 |
+
00:01:46.215 --> 00:01:49.595
|
| 103 |
+
llamar un modelo, para recordar que la aproximación
|
| 104 |
+
|
| 105 |
+
00:01:49.975 --> 00:01:52.855
|
| 106 |
+
es solamente eso, es una aproximación, no vamos
|
| 107 |
+
|
| 108 |
+
00:01:52.855 --> 00:01:55.020
|
| 109 |
+
a estar hablando de nuestra función non lineal
|
| 110 |
+
|
| 111 |
+
00:01:55.020 --> 00:01:59.740
|
| 112 |
+
original. Ahora, quien nos otorga las herramientas para
|
| 113 |
+
|
| 114 |
+
00:01:59.740 --> 00:02:02.940
|
| 115 |
+
trabajar de forma organizada para poder encontrar ese
|
| 116 |
+
|
| 117 |
+
00:02:02.940 --> 00:02:08.125
|
| 118 |
+
modelo es el cálculo diferencial. Entonces, vamos a
|
| 119 |
+
|
| 120 |
+
00:02:08.125 --> 00:02:10.365
|
| 121 |
+
suponer que tenemos una función que va de
|
| 122 |
+
|
| 123 |
+
00:02:10.365 --> 00:02:14.685
|
| 124 |
+
RNARY, además, que esta función es diferenciable, es
|
| 125 |
+
|
| 126 |
+
00:02:14.685 --> 00:02:19.245
|
| 127 |
+
decir, que sus derivadas existen. También, sea z
|
| 128 |
+
|
| 129 |
+
00:02:19.245 --> 00:02:22.730
|
| 130 |
+
un n vector. Vamos a definir a la
|
| 131 |
+
|
| 132 |
+
00:02:22.730 --> 00:02:25.770
|
| 133 |
+
aproximación de Taylor de primer orden cerca del
|
| 134 |
+
|
| 135 |
+
00:02:25.770 --> 00:02:29.370
|
| 136 |
+
punto o alrededor del punto z como esta
|
| 137 |
+
|
| 138 |
+
00:02:29.370 --> 00:02:33.790
|
| 139 |
+
función, f gorrito en x igual a f
|
| 140 |
+
|
| 141 |
+
00:02:34.010 --> 00:02:38.195
|
| 142 |
+
evaluado en z, nuestra función original, más la
|
| 143 |
+
|
| 144 |
+
00:02:38.195 --> 00:02:41.635
|
| 145 |
+
derivada respecto a la componente, a respecto a
|
| 146 |
+
|
| 147 |
+
00:02:41.635 --> 00:02:44.755
|
| 148 |
+
la primer componente de f evaluado en nuestro
|
| 149 |
+
|
| 150 |
+
00:02:44.755 --> 00:02:52.535
|
| 151 |
+
vector ZYS multiplicado por x menos x cero,
|
| 152 |
+
|
| 153 |
+
00:02:53.450 --> 00:02:56.650
|
| 154 |
+
es decir, de nuestro vector x de aquí
|
| 155 |
+
|
| 156 |
+
00:02:56.650 --> 00:03:00.650
|
| 157 |
+
agarramos la primer componente y de nuestro vector
|
| 158 |
+
|
| 159 |
+
00:03:00.650 --> 00:03:04.090
|
| 160 |
+
z agarramos la primer componente y obtenemos x
|
| 161 |
+
|
| 162 |
+
00:03:04.090 --> 00:03:08.465
|
| 163 |
+
cero menos z cero. Este elemento de acá
|
| 164 |
+
|
| 165 |
+
00:03:08.465 --> 00:03:14.545
|
| 166 |
+
es f evaluado, la derivada de f respecto
|
| 167 |
+
|
| 168 |
+
00:03:14.545 --> 00:03:17.265
|
| 169 |
+
a la segunda componente evaluado en el vector
|
| 170 |
+
|
| 171 |
+
00:03:17.265 --> 00:03:23.390
|
| 172 |
+
z, multiplicado por x menos un x uno
|
| 173 |
+
|
| 174 |
+
00:03:23.390 --> 00:03:26.450
|
| 175 |
+
menos z menos uno. Agarramos la primer componente
|
| 176 |
+
|
| 177 |
+
00:03:26.510 --> 00:03:29.170
|
| 178 |
+
de nuestro vector x y agarramos la segunda
|
| 179 |
+
|
| 180 |
+
00:03:29.310 --> 00:03:33.095
|
| 181 |
+
componente de nuestro vector z. Y así hasta
|
| 182 |
+
|
| 183 |
+
00:03:33.095 --> 00:03:35.995
|
| 184 |
+
la n menos un derivada de la función
|
| 185 |
+
|
| 186 |
+
00:03:36.055 --> 00:03:39.415
|
| 187 |
+
f, evaluado en z, multiplicado por x n
|
| 188 |
+
|
| 189 |
+
00:03:39.415 --> 00:03:44.135
|
| 190 |
+
menos uno, menos x menos z n menos
|
| 191 |
+
|
| 192 |
+
00:03:44.135 --> 00:03:48.799
|
| 193 |
+
uno. Ahora, hay que recordar que esta notación
|
| 194 |
+
|
| 195 |
+
00:03:48.799 --> 00:03:52.099
|
| 196 |
+
de aquí, lo que denota, es la derivada
|
| 197 |
+
|
| 198 |
+
00:03:52.400 --> 00:03:59.040
|
| 199 |
+
parcial de f respecto a la coordenada I0A
|
| 200 |
+
|
| 201 |
+
00:03:59.040 --> 00:04:03.625
|
| 202 |
+
la componente iésima evaluado en el vector z.
|
| 203 |
+
|
| 204 |
+
00:04:06.165 --> 00:04:09.765
|
| 205 |
+
Algunas veces es útil referirse a f de
|
| 206 |
+
|
| 207 |
+
00:04:09.765 --> 00:04:14.165
|
| 208 |
+
z a nuestra aproximación como f de x
|
| 209 |
+
|
| 210 |
+
00:04:14.165 --> 00:04:17.500
|
| 211 |
+
punto y coma z o también f subíndice
|
| 212 |
+
|
| 213 |
+
00:04:17.720 --> 00:04:20.860
|
| 214 |
+
z de x, para mostrar que estamos expandiendo
|
| 215 |
+
|
| 216 |
+
00:04:21.479 --> 00:04:26.860
|
| 217 |
+
esta función no lineal alrededor de este punto
|
| 218 |
+
|
| 219 |
+
00:04:28.680 --> 00:04:35.535
|
| 220 |
+
z. Ahora, notemos que esta función, nuestra aproximación,
|
| 221 |
+
|
| 222 |
+
00:04:36.475 --> 00:04:41.354
|
| 223 |
+
la podemos escribir como esta función afín. F
|
| 224 |
+
|
| 225 |
+
00:04:41.354 --> 00:04:44.720
|
| 226 |
+
de z de aquí es un escalar, y
|
| 227 |
+
|
| 228 |
+
00:04:44.860 --> 00:04:47.740
|
| 229 |
+
este de aquí lo vamos a denotar como
|
| 230 |
+
|
| 231 |
+
00:04:47.740 --> 00:04:49.979
|
| 232 |
+
un vector, y ese se llamará el vector
|
| 233 |
+
|
| 234 |
+
00:04:49.979 --> 00:04:53.099
|
| 235 |
+
gradiente. Y está compuesto en cada una de
|
| 236 |
+
|
| 237 |
+
00:04:53.099 --> 00:04:55.680
|
| 238 |
+
sus componentes, tiene cada una de las derivadas
|
| 239 |
+
|
| 240 |
+
00:04:56.380 --> 00:04:59.745
|
| 241 |
+
parciales de la función evaluado en z, y
|
| 242 |
+
|
| 243 |
+
00:04:59.745 --> 00:05:05.505
|
| 244 |
+
eso estará multiplicando al vector x menos z.
|
| 245 |
+
|
| 246 |
+
00:05:05.505 --> 00:05:07.665
|
| 247 |
+
Y esto de aquí, como vimos, es una
|
| 248 |
+
|
| 249 |
+
00:05:07.665 --> 00:05:12.705
|
| 250 |
+
función afín. Ahora, notemos otra vez que el
|
| 251 |
+
|
| 252 |
+
00:05:12.705 --> 00:05:19.000
|
| 253 |
+
primer término de aquí es una constante, Y
|
| 254 |
+
|
| 255 |
+
00:05:19.000 --> 00:05:22.599
|
| 256 |
+
este, bueno, básicamente, esto es f, nuestra función
|
| 257 |
+
|
| 258 |
+
00:05:22.599 --> 00:05:25.960
|
| 259 |
+
original, evaluada en nuestro vector z. Entonces, esto
|
| 260 |
+
|
| 261 |
+
00:05:25.960 --> 00:05:27.960
|
| 262 |
+
nos da un número, porque nuestra función va
|
| 263 |
+
|
| 264 |
+
00:05:27.960 --> 00:05:33.145
|
| 265 |
+
de RNAR. Luego tenemos aquí el vector gradiente,
|
| 266 |
+
|
| 267 |
+
00:05:34.004 --> 00:05:36.645
|
| 268 |
+
y a este término de aquí le vamos
|
| 269 |
+
|
| 270 |
+
00:05:36.645 --> 00:05:41.465
|
| 271 |
+
a llamar la perturbación en x o la
|
| 272 |
+
|
| 273 |
+
00:05:41.565 --> 00:05:49.680
|
| 274 |
+
perturbación de x dado z. Ahora, esto se
|
| 275 |
+
|
| 276 |
+
00:05:49.700 --> 00:05:52.800
|
| 277 |
+
llama la aproximación a primer orden de Taylor,
|
| 278 |
+
|
| 279 |
+
00:05:53.100 --> 00:05:55.919
|
| 280 |
+
y esto nos da una forma de poder
|
| 281 |
+
|
| 282 |
+
00:05:56.139 --> 00:05:59.634
|
| 283 |
+
construir una función afín que aproximará nuestra función
|
| 284 |
+
|
| 285 |
+
00:05:59.634 --> 00:06:03.475
|
| 286 |
+
no lineal alrededor del punto z, siempre y
|
| 287 |
+
|
| 288 |
+
00:06:03.475 --> 00:06:06.615
|
| 289 |
+
cuando exista una función explícita de la función
|
| 290 |
+
|
| 291 |
+
00:06:06.675 --> 00:06:10.110
|
| 292 |
+
f y, además, sea diferenciable esa función. Es
|
| 293 |
+
|
| 294 |
+
00:06:10.110 --> 00:06:12.430
|
| 295 |
+
decir, que para que esto funcione, nuestra función
|
| 296 |
+
|
| 297 |
+
00:06:12.430 --> 00:06:15.170
|
| 298 |
+
tiene que ser diferenciable y además tenemos conocer
|
| 299 |
+
|
| 300 |
+
00:06:15.790 --> 00:06:18.590
|
| 301 |
+
cómo está f de manera explícita, necesitamos a
|
| 302 |
+
|
| 303 |
+
00:06:18.590 --> 00:06:23.390
|
| 304 |
+
nuestra función no lineal. Vamos a un breve
|
| 305 |
+
|
| 306 |
+
00:06:23.390 --> 00:06:26.905
|
| 307 |
+
ejemplo. Como primer ejemplo, vamos a tomar o
|
| 308 |
+
|
| 309 |
+
00:06:26.905 --> 00:06:29.065
|
| 310 |
+
vamos a considerar la función que va de
|
| 311 |
+
|
| 312 |
+
00:06:29.065 --> 00:06:32.025
|
| 313 |
+
r dos a r, denotada por f de
|
| 314 |
+
|
| 315 |
+
00:06:32.025 --> 00:06:36.265
|
| 316 |
+
x igual a x cero más la exponencial
|
| 317 |
+
|
| 318 |
+
00:06:36.265 --> 00:06:39.280
|
| 319 |
+
de x uno menos x cero, donde x
|
| 320 |
+
|
| 321 |
+
00:06:39.660 --> 00:06:41.900
|
| 322 |
+
cero y x uno son las componentes del
|
| 323 |
+
|
| 324 |
+
00:06:41.900 --> 00:06:46.780
|
| 325 |
+
vector x. Esta función es una función no
|
| 326 |
+
|
| 327 |
+
00:06:46.780 --> 00:06:49.740
|
| 328 |
+
lineal, por ende, no es ni lineal ni
|
| 329 |
+
|
| 330 |
+
00:06:49.740 --> 00:06:54.634
|
| 331 |
+
es afín. Vamos a encontrar una aproximación de
|
| 332 |
+
|
| 333 |
+
00:06:54.634 --> 00:06:58.228
|
| 334 |
+
Taylor, una función afín alrededor del punto uno
|
| 335 |
+
|
| 336 |
+
00:06:58.228 --> 00:07:03.385
|
| 337 |
+
dos, alrededor de nuestro vector uno dos. Para
|
| 338 |
+
|
| 339 |
+
00:07:03.385 --> 00:07:07.349
|
| 340 |
+
este caso, el vector gradiente será este de
|
| 341 |
+
|
| 342 |
+
00:07:07.370 --> 00:07:10.010
|
| 343 |
+
aquí, donde si tomamos la primer derivada o
|
| 344 |
+
|
| 345 |
+
00:07:10.010 --> 00:07:12.910
|
| 346 |
+
la derivada respecto a la a la componente
|
| 347 |
+
|
| 348 |
+
00:07:12.970 --> 00:07:15.690
|
| 349 |
+
x cero, nos da aquí un uno, que
|
| 350 |
+
|
| 351 |
+
00:07:15.690 --> 00:07:18.630
|
| 352 |
+
es el que tenemos aquí, y cuando derivamos
|
| 353 |
+
|
| 354 |
+
00:07:18.650 --> 00:07:21.130
|
| 355 |
+
la exponencial, tenemos que utilizar la regla de
|
| 356 |
+
|
| 357 |
+
00:07:21.130 --> 00:07:24.955
|
| 358 |
+
la cadena, y esto nos saca un menos
|
| 359 |
+
|
| 360 |
+
00:07:25.015 --> 00:07:27.335
|
| 361 |
+
respecto a este x cero, entonces nos queda
|
| 362 |
+
|
| 363 |
+
00:07:27.335 --> 00:07:30.055
|
| 364 |
+
menos la exponencial de z uno menos z
|
| 365 |
+
|
| 366 |
+
00:07:30.055 --> 00:07:33.735
|
| 367 |
+
cero. La segunda componente viene dictada por la
|
| 368 |
+
|
| 369 |
+
00:07:33.735 --> 00:07:37.980
|
| 370 |
+
derivada de x uno. En este caso, la
|
| 371 |
+
|
| 372 |
+
00:07:37.980 --> 00:07:41.820
|
| 373 |
+
derivada de x uno de x respecto a
|
| 374 |
+
|
| 375 |
+
00:07:41.820 --> 00:07:43.840
|
| 376 |
+
x uno de x cero es un cero,
|
| 377 |
+
|
| 378 |
+
00:07:44.139 --> 00:07:46.699
|
| 379 |
+
por eso no hay ningún término sumando. Y
|
| 380 |
+
|
| 381 |
+
00:07:46.699 --> 00:07:49.755
|
| 382 |
+
en el caso del exponencial, tenemos que como
|
| 383 |
+
|
| 384 |
+
00:07:49.755 --> 00:07:51.835
|
| 385 |
+
esta deriva de respecto a x uno y
|
| 386 |
+
|
| 387 |
+
00:07:51.835 --> 00:07:55.115
|
| 388 |
+
x uno es simplemente x uno, nos saca
|
| 389 |
+
|
| 390 |
+
00:07:55.115 --> 00:07:56.955
|
| 391 |
+
un uno, no nos altera para nada y
|
| 392 |
+
|
| 393 |
+
00:07:56.955 --> 00:07:59.835
|
| 394 |
+
nos queda la exponencial de z uno menos
|
| 395 |
+
|
| 396 |
+
00:07:59.835 --> 00:08:01.755
|
| 397 |
+
z cero, porque la estamos evaluando en los
|
| 398 |
+
|
| 399 |
+
00:08:01.755 --> 00:08:06.629
|
| 400 |
+
vectores z. Así bien, lo que tenemos es
|
| 401 |
+
|
| 402 |
+
00:08:06.629 --> 00:08:10.250
|
| 403 |
+
que tenemos que pasar a evaluar nuestro vector
|
| 404 |
+
|
| 405 |
+
00:08:10.310 --> 00:08:13.990
|
| 406 |
+
gradiente en nuestro vector z. Eso lo haremos
|
| 407 |
+
|
| 408 |
+
00:08:13.990 --> 00:08:16.150
|
| 409 |
+
en Python y lo haremos para la siguiente
|
| 410 |
+
|
| 411 |
+
00:08:16.150 --> 00:08:19.305
|
| 412 |
+
clase. Si te sentiste perdido en esta clase,
|
| 413 |
+
|
| 414 |
+
00:08:19.305 --> 00:08:21.865
|
| 415 |
+
te recomiendo que tomes el curso de cálculo
|
| 416 |
+
|
| 417 |
+
00:08:21.865 --> 00:08:23.945
|
| 418 |
+
que tenemos en Platze. Es un curso que
|
| 419 |
+
|
| 420 |
+
00:08:23.945 --> 00:08:26.345
|
| 421 |
+
te dará las bases suficientes para poder llevar
|
| 422 |
+
|
| 423 |
+
00:08:26.345 --> 00:08:30.297
|
| 424 |
+
esta clase sin ningún problema. Nos vemos la
|
| 425 |
+
|
| 426 |
+
00:08:30.297 --> 00:08:32.857
|
| 427 |
+
próxima clase, en donde voy a estar realizando
|
| 428 |
+
|
| 429 |
+
00:08:32.857 --> 00:08:35.177
|
| 430 |
+
la evaluación de nuestra aproximación de Taylor y
|
| 431 |
+
|
| 432 |
+
00:08:35.177 --> 00:08:37.277
|
| 433 |
+
veremos un ejemplo geométrico más.
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/05-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
https://platzi.com/cursos/calculo-data-science/
|
| 2 |
+
https://colab.research.google.com/drive/1qqJ0suSucs3B7ePEHsBrJ6EKz8YUv7X5?usp=sharing
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/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/03-Funciones lineales/05-aproximacion_taylor_6d013e46-3c9a-49a9-ad07-99eb13e84e1f.ipynb
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {},
|
| 6 |
+
"source": [
|
| 7 |
+
"# 6. Aproximación de Taylor"
|
| 8 |
+
]
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"cell_type": "markdown",
|
| 12 |
+
"metadata": {},
|
| 13 |
+
"source": [
|
| 14 |
+
"La mayoría de los fenómenos de la realidad solo pueden ser aproximados a través de funciones no-lineales y algunas veces es más sencillo aproximarnos con funciones afines o lineales. "
|
| 15 |
+
]
|
| 16 |
+
},
|
| 17 |
+
{
|
| 18 |
+
"cell_type": "markdown",
|
| 19 |
+
"metadata": {},
|
| 20 |
+
"source": [
|
| 21 |
+
"En este caso nos referiremos a la aproximación como *modelo* para recordar que la aproximación es solamente eso, una aproximación."
|
| 22 |
+
]
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
"cell_type": "markdown",
|
| 26 |
+
"metadata": {},
|
| 27 |
+
"source": [
|
| 28 |
+
"Ahora, el cálculo diferencial nos otorga una forma organizada de encontrar ese modelo. Supongamos entonces que $f:\\mathbf{R}^{n} \\to \\mathbf{R}$ es una función diferenciable, sea también $\\mathbf{z}$ un $n$-vector. La aproximación de Taylor de primer orden de $f$ cerca del punto $\\mathbf{z}$ es la función\n",
|
| 29 |
+
"\n",
|
| 30 |
+
"$$\n",
|
| 31 |
+
"\\hat{f}(\\mathbf{x}) = f(\\mathbf{z}) + \\displaystyle\\frac{\\partial}{\\partial x_{0}} f(\\mathbf{z})(x_{0}-z_{0}) + \\displaystyle\\frac{\\partial}{\\partial x_{1}} f(\\mathbf{z})(x_{1}-z_{1}) + \\cdots + \\displaystyle\\frac{\\partial}{\\partial x_{n-1}} f(\\mathbf{z})(x_{n-1}-z_{n-1})\n",
|
| 32 |
+
"$$\n",
|
| 33 |
+
"\n",
|
| 34 |
+
"Donde $\\displaystyle\\frac{\\partial}{\\partial x_{i}}f(\\mathbf{z})$ denota la derivada parcial de $f$ evaluada en el vector $\\mathbf{z}$ respecto al i-ésimo argumento. "
|
| 35 |
+
]
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"cell_type": "markdown",
|
| 39 |
+
"metadata": {},
|
| 40 |
+
"source": [
|
| 41 |
+
"Algunas veces $\\hat{f}(\\mathbf{z})$ también se escribe como $\\hat{f}(\\mathbf{x};\\mathbf{z})$ o también $\\hat{f}_{\\mathbf{z}}(\\mathbf{x})$ para mostrar en qué punto se evalúa o respecto al que se está desarrollando. "
|
| 42 |
+
]
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"cell_type": "markdown",
|
| 46 |
+
"metadata": {},
|
| 47 |
+
"source": [
|
| 48 |
+
"Notemos que \n",
|
| 49 |
+
"\n",
|
| 50 |
+
"$$\n",
|
| 51 |
+
"\\hat{f}(\\mathbf{x}) = f(\\mathbf{z}) + \\nabla f(\\mathbf{z})^{T} (\\mathbf{x}-\\mathbf{z})\n",
|
| 52 |
+
"$$\n",
|
| 53 |
+
"\n",
|
| 54 |
+
"Donde $\\nabla f(\\mathbf{z})$ representa el vector gradiente\n",
|
| 55 |
+
"\n",
|
| 56 |
+
"$$\n",
|
| 57 |
+
"\\nabla f(\\mathbf{z}) = \\begin{bmatrix}\\displaystyle\\frac{\\partial f}{\\partial x_{0}}(\\mathbf{z}) \\\\ \\displaystyle\\frac{\\partial f}{\\partial x_{1}}(\\mathbf{z})\\\\ \\vdots \\\\ \\displaystyle\\frac{\\partial f}{\\partial x_{n-1}}(\\mathbf{z}) \\end{bmatrix}\n",
|
| 58 |
+
"$$\n",
|
| 59 |
+
"\n",
|
| 60 |
+
"Notemos que le primer término de la aproximación es la constante $f(\\mathbf{z})$ (esto es la función $f(\\mathbf{x})$ evaluada en $\\mathbf{z}$). El segundo término es el prodcuto itnerno del vector gradiente de $f$ en $\\mathbf{z}$ y la *desviación* o *perturbación* de $\\mathbf{x}$ por parte de $\\mathbf{z}$, el $n$-vector $(\\mathbf{x}-\\mathbf{z})$."
|
| 61 |
+
]
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"cell_type": "markdown",
|
| 65 |
+
"metadata": {},
|
| 66 |
+
"source": [
|
| 67 |
+
"La aproximación de primer orden de Taylor nos da una forma de consturir una función afín que aproximará la función $f: \\mathbf{R}^{n} \\to \\mathbf{R}$ alrededor del punto $\\mathbf{z}$, siempre y cuando exista una forma explícita de la función $f$ y sea diferenciable. "
|
| 68 |
+
]
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"cell_type": "markdown",
|
| 72 |
+
"metadata": {},
|
| 73 |
+
"source": [
|
| 74 |
+
"## 6.1 Breves ejemplos"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "markdown",
|
| 79 |
+
"metadata": {},
|
| 80 |
+
"source": [
|
| 81 |
+
"**Ejemplo 1.** Considera la función $f:\\mathbf{R}^{2}\\to \\mathbf{R}$ dada por $f(\\mathbf{x}) = x_{0}+\\exp{(x_{1}-x_{0})}$ la cual no es lineal ni afín. Para encontrar una aproximación de Taylor $\\hat{f}$ cerca del punto $\\mathbf{z}^{T} = [1 \\; 2]$. Tenemos que el vector gradiente en este caso será:\n",
|
| 82 |
+
"\n",
|
| 83 |
+
"$$\n",
|
| 84 |
+
"\\nabla f(\\mathbf{z}) = \\begin{bmatrix}\\displaystyle\\frac{\\partial f}{\\partial x_{0}}(\\mathbf{z}) \\\\ \\displaystyle\\frac{\\partial f}{\\partial x_{1}}(\\mathbf{z})\\end{bmatrix} = \\begin{bmatrix} 1 - \\exp{(z_{1}-z_{0})} \\\\ \\exp{(z_{1}-z_{0})} \\end{bmatrix}\n",
|
| 85 |
+
"$$\n",
|
| 86 |
+
"\n",
|
| 87 |
+
"Ahora vamos a evaluar $\\nabla f(\\mathbf{z})$ en el vector $\\mathbf{z}^{T} = [1 \\; 2]$"
|
| 88 |
+
]
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"cell_type": "code",
|
| 92 |
+
"execution_count": 3,
|
| 93 |
+
"metadata": {},
|
| 94 |
+
"outputs": [],
|
| 95 |
+
"source": [
|
| 96 |
+
"import numpy as np"
|
| 97 |
+
]
|
| 98 |
+
},
|
| 99 |
+
{
|
| 100 |
+
"cell_type": "code",
|
| 101 |
+
"execution_count": 4,
|
| 102 |
+
"metadata": {},
|
| 103 |
+
"outputs": [],
|
| 104 |
+
"source": [
|
| 105 |
+
"def gradF(z):\n",
|
| 106 |
+
" return np.array([1-np.exp(z[1]-z[0]),np.exp(z[1]-z[0])])"
|
| 107 |
+
]
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"cell_type": "code",
|
| 111 |
+
"execution_count": 5,
|
| 112 |
+
"metadata": {},
|
| 113 |
+
"outputs": [
|
| 114 |
+
{
|
| 115 |
+
"name": "stdout",
|
| 116 |
+
"output_type": "stream",
|
| 117 |
+
"text": [
|
| 118 |
+
"grad(f)[1,2] = [-1.71828183 2.71828183]\n"
|
| 119 |
+
]
|
| 120 |
+
}
|
| 121 |
+
],
|
| 122 |
+
"source": [
|
| 123 |
+
"z = np.array([1,2])\n",
|
| 124 |
+
"print('grad(f)[1,2] = ', gradF(z))"
|
| 125 |
+
]
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"cell_type": "markdown",
|
| 129 |
+
"metadata": {},
|
| 130 |
+
"source": [
|
| 131 |
+
"Ahora vamos a programar la función $f$."
|
| 132 |
+
]
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"cell_type": "code",
|
| 136 |
+
"execution_count": 6,
|
| 137 |
+
"metadata": {},
|
| 138 |
+
"outputs": [],
|
| 139 |
+
"source": [
|
| 140 |
+
"def F(x):\n",
|
| 141 |
+
" return x[0] + np.exp(x[1]-x[0])"
|
| 142 |
+
]
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"cell_type": "code",
|
| 146 |
+
"execution_count": 7,
|
| 147 |
+
"metadata": {},
|
| 148 |
+
"outputs": [
|
| 149 |
+
{
|
| 150 |
+
"name": "stdout",
|
| 151 |
+
"output_type": "stream",
|
| 152 |
+
"text": [
|
| 153 |
+
"f([1,2]) = 3.718281828459045\n"
|
| 154 |
+
]
|
| 155 |
+
}
|
| 156 |
+
],
|
| 157 |
+
"source": [
|
| 158 |
+
"print('f([1,2]) =',F(z))"
|
| 159 |
+
]
|
| 160 |
+
},
|
| 161 |
+
{
|
| 162 |
+
"cell_type": "markdown",
|
| 163 |
+
"metadata": {},
|
| 164 |
+
"source": [
|
| 165 |
+
"Así pues, nuestro aproximación de Taylor a primer orden será:"
|
| 166 |
+
]
|
| 167 |
+
},
|
| 168 |
+
{
|
| 169 |
+
"cell_type": "code",
|
| 170 |
+
"execution_count": 8,
|
| 171 |
+
"metadata": {},
|
| 172 |
+
"outputs": [],
|
| 173 |
+
"source": [
|
| 174 |
+
"def taylor_F(x,z):\n",
|
| 175 |
+
" fz = F(z)\n",
|
| 176 |
+
" gz = gradF(z)\n",
|
| 177 |
+
" return fz + gz@(x-z)"
|
| 178 |
+
]
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"cell_type": "markdown",
|
| 182 |
+
"metadata": {},
|
| 183 |
+
"source": [
|
| 184 |
+
"Para corroborar que nuestra aproximación es correcta si la evaluamos en $x=z$ deberíamos de obtener que $\\hat{f}(\\mathbf{z})=f(\\mathbf{z})$"
|
| 185 |
+
]
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"cell_type": "code",
|
| 189 |
+
"execution_count": 9,
|
| 190 |
+
"metadata": {},
|
| 191 |
+
"outputs": [
|
| 192 |
+
{
|
| 193 |
+
"name": "stdout",
|
| 194 |
+
"output_type": "stream",
|
| 195 |
+
"text": [
|
| 196 |
+
"taylor_F([1,2],[1,2]) = 3.718281828459045\n"
|
| 197 |
+
]
|
| 198 |
+
}
|
| 199 |
+
],
|
| 200 |
+
"source": [
|
| 201 |
+
"print('taylor_F([1,2],[1,2]) = ',taylor_F(z,z))"
|
| 202 |
+
]
|
| 203 |
+
},
|
| 204 |
+
{
|
| 205 |
+
"cell_type": "markdown",
|
| 206 |
+
"metadata": {},
|
| 207 |
+
"source": [
|
| 208 |
+
"Esto significa que lo hicimos bien, nuestra aproximación viene dada por\n",
|
| 209 |
+
"\n",
|
| 210 |
+
"$$\n",
|
| 211 |
+
"\\hat{f}(\\mathbf{x}) = 3.7183 + [-1.72\\; 2.72]\\begin{bmatrix}x_{0}-1\\\\ x_{1}-2\\end{bmatrix}\n",
|
| 212 |
+
"$$"
|
| 213 |
+
]
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"cell_type": "markdown",
|
| 217 |
+
"metadata": {},
|
| 218 |
+
"source": [
|
| 219 |
+
"**Ejercicio 2.** Para tener un mejor idea de lo que significa hacer una aproximación lineal vamos a realizar la aproximación de una función unidimensional\n",
|
| 220 |
+
"\n",
|
| 221 |
+
"$$\n",
|
| 222 |
+
"f(x) = x^{2} - x^{3}\n",
|
| 223 |
+
"$$\n",
|
| 224 |
+
"\n",
|
| 225 |
+
"Con lo que obtenemos\n",
|
| 226 |
+
"\n",
|
| 227 |
+
"$$\n",
|
| 228 |
+
"\\nabla f(z) = 2z - 3z^{2}\n",
|
| 229 |
+
"$$\n",
|
| 230 |
+
"\n",
|
| 231 |
+
"Ahora, si lo aproximamos en $z=0.4$. "
|
| 232 |
+
]
|
| 233 |
+
},
|
| 234 |
+
{
|
| 235 |
+
"cell_type": "code",
|
| 236 |
+
"execution_count": 10,
|
| 237 |
+
"metadata": {},
|
| 238 |
+
"outputs": [],
|
| 239 |
+
"source": [
|
| 240 |
+
"def df(z):\n",
|
| 241 |
+
" return 2*z - 3*z**2"
|
| 242 |
+
]
|
| 243 |
+
},
|
| 244 |
+
{
|
| 245 |
+
"cell_type": "code",
|
| 246 |
+
"execution_count": 11,
|
| 247 |
+
"metadata": {},
|
| 248 |
+
"outputs": [],
|
| 249 |
+
"source": [
|
| 250 |
+
"def tf(x,z):\n",
|
| 251 |
+
" return f(z) + df(z)*(x-z)"
|
| 252 |
+
]
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"cell_type": "code",
|
| 256 |
+
"execution_count": 12,
|
| 257 |
+
"metadata": {},
|
| 258 |
+
"outputs": [],
|
| 259 |
+
"source": [
|
| 260 |
+
"def f(x):\n",
|
| 261 |
+
" return x**2 - x**3"
|
| 262 |
+
]
|
| 263 |
+
},
|
| 264 |
+
{
|
| 265 |
+
"cell_type": "code",
|
| 266 |
+
"execution_count": 13,
|
| 267 |
+
"metadata": {},
|
| 268 |
+
"outputs": [
|
| 269 |
+
{
|
| 270 |
+
"name": "stdout",
|
| 271 |
+
"output_type": "stream",
|
| 272 |
+
"text": [
|
| 273 |
+
"f(0.4) = 0.09600000000000002\n"
|
| 274 |
+
]
|
| 275 |
+
}
|
| 276 |
+
],
|
| 277 |
+
"source": [
|
| 278 |
+
"print('f(0.4) =',f(0.4))"
|
| 279 |
+
]
|
| 280 |
+
},
|
| 281 |
+
{
|
| 282 |
+
"cell_type": "code",
|
| 283 |
+
"execution_count": 14,
|
| 284 |
+
"metadata": {},
|
| 285 |
+
"outputs": [
|
| 286 |
+
{
|
| 287 |
+
"name": "stdout",
|
| 288 |
+
"output_type": "stream",
|
| 289 |
+
"text": [
|
| 290 |
+
"Df(0.4) = 0.31999999999999995\n"
|
| 291 |
+
]
|
| 292 |
+
}
|
| 293 |
+
],
|
| 294 |
+
"source": [
|
| 295 |
+
"print('Df(0.4) =',df(0.4))"
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
{
|
| 299 |
+
"cell_type": "markdown",
|
| 300 |
+
"metadata": {},
|
| 301 |
+
"source": [
|
| 302 |
+
"Usando los resultados anteriores tenemos que la aproximación de Taylor es\n",
|
| 303 |
+
"\n",
|
| 304 |
+
"$$\n",
|
| 305 |
+
"\\hat{f}(x) = 0.09600000000000002 + 0.31999999999999995 * (x - 0.4)\n",
|
| 306 |
+
"$$\n"
|
| 307 |
+
]
|
| 308 |
+
},
|
| 309 |
+
{
|
| 310 |
+
"cell_type": "code",
|
| 311 |
+
"execution_count": 15,
|
| 312 |
+
"metadata": {},
|
| 313 |
+
"outputs": [],
|
| 314 |
+
"source": [
|
| 315 |
+
"import matplotlib.pyplot as plt #Biblioteca con funciones para visualizar"
|
| 316 |
+
]
|
| 317 |
+
},
|
| 318 |
+
{
|
| 319 |
+
"cell_type": "code",
|
| 320 |
+
"execution_count": 16,
|
| 321 |
+
"metadata": {},
|
| 322 |
+
"outputs": [
|
| 323 |
+
{
|
| 324 |
+
"data": {
|
| 325 |
+
"image/png": "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W2jWrBlAM2vtlpz215ppuWyxsbEXjL3xxhuA87hwERERkRx98+b5IB0YBkOXFHqQ9oaWechlmzdvHlOnTqVr166EhISwdu1a5syZQ6dOnbj55pvdbk9ERESKui//DV+84rwOKg9Dl0LV5u72lEsK03LZmjdvjq+vL+PGjePMmTPpb0p85ZVX3G5NREREijJr4Yt/wlepN0EoUwmGLoPKTdztKw8UpuWyXXvttXz22WdutyEiIiLFibXw2Rj4xlkaSkgVGLYcKl3palt5pTAtIiIiIoXLWlj1LHz7jlOHVneCdIX67vblBYVpERERESk8KSnwyWjnFngAYbVg+HIIr+NqW95SmBYRERGRwpGSAh89ApumO3V4XWdGulxNd/u6DArTIiIiIlLwUpJh6V/h5zlOXaGBE6RDq7nb12VSmBYRERGRgpWcBB/eD5sXOXWlRs5dO8pWdrevfKAwLSIiIiIFJykBFt0Dvy1z6srNnPtIl6nobl/5RGFaRERERApGUjzMHwa/f+LUVa+GIUsguLy7feUjPU5cpJAsXryYV199leTkZLdbERERKXiJsTB34PkgXf16Z2lHCQrSoDAtxUS7du1o166d221c1PDhw6lTp85Ft69bt45BgwbRpEkTPB5P4TUmIiLihoQYmH0X7Ex9qFvNv8CQDyGonLt9FQAt8xApYCdOnKB///689dZbdO3a1e12REREClZ8tBOk96116jptYMBcCAhxt68CojAtxcLq1avdbuGS3n//fVJSUrLd9uOPP/LKK68wdOjQQu5KRESkkMVFway+sH+DU9drD/1ng3+wu30VIIVpyVfWWuLi4ggKCsrX8/r7++fr+fKbn5/fRbd17NixEDsRERFxSewpmHEnHNzk1Fd0gn4zwC/Q3b4KmNZMlyL79u1j1KhRNGzYkKCgICpUqEDfvn3Zu3dvpv2mTp2KMYavvvqKkSNHUqFCBUJDQxk6dCinTp3KtG+dOnXo3r07q1at4vrrrycoKIhJkyYBsHv3bvr27Uv58uUJDg7mL3/5Cx9//HH6sb/99htBQUEXzNiuXbsWj8fDU089lT6Wdc30mjVrMMYwf/58XnrpJapXr07ZsmXp06cPUVFRxMfH8+ijjxIREUFISAgjRowgPj4+03WmTJnCrbfeSkREBAEBATRp0oSJEydm+7X75JNPaNu2LWXLliU0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\n",
|
| 326 |
+
"text/plain": [
|
| 327 |
+
"<Figure size 840x840 with 1 Axes>"
|
| 328 |
+
]
|
| 329 |
+
},
|
| 330 |
+
"metadata": {
|
| 331 |
+
"needs_background": "light"
|
| 332 |
+
},
|
| 333 |
+
"output_type": "display_data"
|
| 334 |
+
}
|
| 335 |
+
],
|
| 336 |
+
"source": [
|
| 337 |
+
"%matplotlib inline\n",
|
| 338 |
+
"fig, ax = plt.subplots(1,1,figsize=(7,7),dpi=120)\n",
|
| 339 |
+
"\n",
|
| 340 |
+
"x = np.linspace(0,1,1000)\n",
|
| 341 |
+
"taf = lambda x:tf(x,0.4)\n",
|
| 342 |
+
"\n",
|
| 343 |
+
"ax.plot(x,f(x),label='original')\n",
|
| 344 |
+
"ax.plot(x,taf(x),label='aproximación')\n",
|
| 345 |
+
"ax.scatter(0.4,f(0.4),color='red')\n",
|
| 346 |
+
"ax.legend()\n",
|
| 347 |
+
"plt.show()"
|
| 348 |
+
]
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"cell_type": "markdown",
|
| 352 |
+
"metadata": {},
|
| 353 |
+
"source": [
|
| 354 |
+
"Ahora vamos a calcular algunas diferencias y errores de la aproximación"
|
| 355 |
+
]
|
| 356 |
+
},
|
| 357 |
+
{
|
| 358 |
+
"cell_type": "code",
|
| 359 |
+
"execution_count": 17,
|
| 360 |
+
"metadata": {},
|
| 361 |
+
"outputs": [
|
| 362 |
+
{
|
| 363 |
+
"name": "stdout",
|
| 364 |
+
"output_type": "stream",
|
| 365 |
+
"text": [
|
| 366 |
+
"x = 0.3, f(x) = 0.063, Taylor f(x) = 0.064, |f(x) - Taylor f(x)| = 0.0010000000000000009\n"
|
| 367 |
+
]
|
| 368 |
+
}
|
| 369 |
+
],
|
| 370 |
+
"source": [
|
| 371 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.3,f(0.3),taf(0.3),np.abs(f(0.3)-taf(0.3))))"
|
| 372 |
+
]
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"cell_type": "code",
|
| 376 |
+
"execution_count": 18,
|
| 377 |
+
"metadata": {},
|
| 378 |
+
"outputs": [
|
| 379 |
+
{
|
| 380 |
+
"name": "stdout",
|
| 381 |
+
"output_type": "stream",
|
| 382 |
+
"text": [
|
| 383 |
+
"x = 0.35, f(x) = 0.079625, Taylor f(x) = 0.08, |f(x) - Taylor f(x)| = 0.00037500000000000033\n"
|
| 384 |
+
]
|
| 385 |
+
}
|
| 386 |
+
],
|
| 387 |
+
"source": [
|
| 388 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.35,f(0.35),taf(0.35),np.abs(f(0.35)-taf(0.35))))"
|
| 389 |
+
]
|
| 390 |
+
},
|
| 391 |
+
{
|
| 392 |
+
"cell_type": "code",
|
| 393 |
+
"execution_count": 19,
|
| 394 |
+
"metadata": {},
|
| 395 |
+
"outputs": [
|
| 396 |
+
{
|
| 397 |
+
"name": "stdout",
|
| 398 |
+
"output_type": "stream",
|
| 399 |
+
"text": [
|
| 400 |
+
"x = 0.4, f(x) = 0.09600000000000002, Taylor f(x) = 0.09600000000000002, |f(x) - Taylor f(x)| = 0.0\n"
|
| 401 |
+
]
|
| 402 |
+
}
|
| 403 |
+
],
|
| 404 |
+
"source": [
|
| 405 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.4,f(0.4),taf(0.4),np.abs(f(0.4)-taf(0.4))))"
|
| 406 |
+
]
|
| 407 |
+
},
|
| 408 |
+
{
|
| 409 |
+
"cell_type": "code",
|
| 410 |
+
"execution_count": 20,
|
| 411 |
+
"metadata": {},
|
| 412 |
+
"outputs": [
|
| 413 |
+
{
|
| 414 |
+
"name": "stdout",
|
| 415 |
+
"output_type": "stream",
|
| 416 |
+
"text": [
|
| 417 |
+
"x = 0.45, f(x) = 0.111375, Taylor f(x) = 0.11200000000000002, |f(x) - Taylor f(x)| = 0.0006250000000000144\n"
|
| 418 |
+
]
|
| 419 |
+
}
|
| 420 |
+
],
|
| 421 |
+
"source": [
|
| 422 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.45,f(0.45),taf(0.45),np.abs(f(0.45)-taf(0.45))))"
|
| 423 |
+
]
|
| 424 |
+
},
|
| 425 |
+
{
|
| 426 |
+
"cell_type": "code",
|
| 427 |
+
"execution_count": 21,
|
| 428 |
+
"metadata": {},
|
| 429 |
+
"outputs": [
|
| 430 |
+
{
|
| 431 |
+
"name": "stdout",
|
| 432 |
+
"output_type": "stream",
|
| 433 |
+
"text": [
|
| 434 |
+
"x = 0.5, f(x) = 0.125, Taylor f(x) = 0.128, |f(x) - Taylor f(x)| = 0.0030000000000000027\n"
|
| 435 |
+
]
|
| 436 |
+
}
|
| 437 |
+
],
|
| 438 |
+
"source": [
|
| 439 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.5,f(0.5),taf(0.5),np.abs(f(0.5)-taf(0.5))))"
|
| 440 |
+
]
|
| 441 |
+
},
|
| 442 |
+
{
|
| 443 |
+
"cell_type": "code",
|
| 444 |
+
"execution_count": 22,
|
| 445 |
+
"metadata": {},
|
| 446 |
+
"outputs": [
|
| 447 |
+
{
|
| 448 |
+
"name": "stdout",
|
| 449 |
+
"output_type": "stream",
|
| 450 |
+
"text": [
|
| 451 |
+
"x = 0.8, f(x) = 0.128, Taylor f(x) = 0.22399999999999998, |f(x) - Taylor f(x)| = 0.09599999999999997\n"
|
| 452 |
+
]
|
| 453 |
+
}
|
| 454 |
+
],
|
| 455 |
+
"source": [
|
| 456 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.8,f(0.8),taf(0.8),np.abs(f(0.8)-taf(0.8))))"
|
| 457 |
+
]
|
| 458 |
+
}
|
| 459 |
+
],
|
| 460 |
+
"metadata": {
|
| 461 |
+
"kernelspec": {
|
| 462 |
+
"display_name": "Python 3",
|
| 463 |
+
"language": "python",
|
| 464 |
+
"name": "python3"
|
| 465 |
+
},
|
| 466 |
+
"language_info": {
|
| 467 |
+
"codemirror_mode": {
|
| 468 |
+
"name": "ipython",
|
| 469 |
+
"version": 3
|
| 470 |
+
},
|
| 471 |
+
"file_extension": ".py",
|
| 472 |
+
"mimetype": "text/x-python",
|
| 473 |
+
"name": "python",
|
| 474 |
+
"nbconvert_exporter": "python",
|
| 475 |
+
"pygments_lexer": "ipython3",
|
| 476 |
+
"version": "3.7.3"
|
| 477 |
+
}
|
| 478 |
+
},
|
| 479 |
+
"nbformat": 4,
|
| 480 |
+
"nbformat_minor": 4
|
| 481 |
+
}
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-Aproximaciones de Taylor y análisis de error en Python.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:245f6360e6589c6678b9233fb5b862fd296aef57e6c42e41c3301ace972ae90f
|
| 3 |
+
size 133388271
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-Aproximaciones de Taylor y análisis de error en Python.vtt
ADDED
|
@@ -0,0 +1,706 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.040 --> 00:00:06.899
|
| 4 |
+
La clase pasada introducimos las aproximaciones de Taylor.
|
| 5 |
+
|
| 6 |
+
00:00:07.040 --> 00:00:10.019
|
| 7 |
+
Vimos cómo una función no lineal la podemos
|
| 8 |
+
|
| 9 |
+
00:00:10.160 --> 00:00:14.000
|
| 10 |
+
aproximar alrededor de un punto a una función
|
| 11 |
+
|
| 12 |
+
00:00:14.000 --> 00:00:18.005
|
| 13 |
+
afín. Ahora vamos a terminar un ejercicio que
|
| 14 |
+
|
| 15 |
+
00:00:18.005 --> 00:00:20.404
|
| 16 |
+
empezamos la clase pasada y vamos a dar
|
| 17 |
+
|
| 18 |
+
00:00:20.404 --> 00:00:23.845
|
| 19 |
+
un ejemplo más geométrico. Sin más, vamos a
|
| 20 |
+
|
| 21 |
+
00:00:23.845 --> 00:00:28.985
|
| 22 |
+
la computadora. La clase pasada introdujimos este breve
|
| 23 |
+
|
| 24 |
+
00:00:29.205 --> 00:00:32.270
|
| 25 |
+
ejemplo, en donde vimos que había una función
|
| 26 |
+
|
| 27 |
+
00:00:32.270 --> 00:00:34.430
|
| 28 |
+
que iba de r dos a r, que
|
| 29 |
+
|
| 30 |
+
00:00:34.430 --> 00:00:36.830
|
| 31 |
+
era y que estaba dada por esa expresión
|
| 32 |
+
|
| 33 |
+
00:00:36.830 --> 00:00:39.150
|
| 34 |
+
de aquí, la cual no era lineal ni
|
| 35 |
+
|
| 36 |
+
00:00:39.150 --> 00:00:43.490
|
| 37 |
+
afín. Para poder encontrar la aproximación de Taylor
|
| 38 |
+
|
| 39 |
+
00:00:43.630 --> 00:00:46.815
|
| 40 |
+
alrededor del punto uno coma dos, del vector
|
| 41 |
+
|
| 42 |
+
00:00:46.815 --> 00:00:50.675
|
| 43 |
+
uno coma dos, calculamos el vector gradiente y
|
| 44 |
+
|
| 45 |
+
00:00:50.894 --> 00:00:54.015
|
| 46 |
+
obtuvimos este vector gradiente. Ahora, lo que nos
|
| 47 |
+
|
| 48 |
+
00:00:54.015 --> 00:00:56.815
|
| 49 |
+
resta es evaluar ese vector gradiente en Python
|
| 50 |
+
|
| 51 |
+
00:00:56.815 --> 00:01:01.560
|
| 52 |
+
y obtener los resultados. Primero, para eso vamos
|
| 53 |
+
|
| 54 |
+
00:01:01.560 --> 00:01:04.060
|
| 55 |
+
a a importar NumPy, que es la biblioteca
|
| 56 |
+
|
| 57 |
+
00:01:04.120 --> 00:01:07.080
|
| 58 |
+
que vamos a estar utilizando. Después vamos a
|
| 59 |
+
|
| 60 |
+
00:01:07.080 --> 00:01:10.680
|
| 61 |
+
declarar la función del gradiente de f. Esta
|
| 62 |
+
|
| 63 |
+
00:01:10.680 --> 00:01:13.740
|
| 64 |
+
función nos va a regresar el vector gradiente.
|
| 65 |
+
|
| 66 |
+
00:01:14.465 --> 00:01:17.765
|
| 67 |
+
En este caso, tenemos que gradiente de f
|
| 68 |
+
|
| 69 |
+
00:01:17.825 --> 00:01:20.965
|
| 70 |
+
recibe un vector z y nos regresa este
|
| 71 |
+
|
| 72 |
+
00:01:21.265 --> 00:01:23.825
|
| 73 |
+
vector, en donde la primer componente es el
|
| 74 |
+
|
| 75 |
+
00:01:23.825 --> 00:01:28.300
|
| 76 |
+
uno menos la exponencial. Numpa ya tiene precargada
|
| 77 |
+
|
| 78 |
+
00:01:28.440 --> 00:01:30.940
|
| 79 |
+
la función exponencial y la llamamos de esta
|
| 80 |
+
|
| 81 |
+
00:01:30.940 --> 00:01:36.460
|
| 82 |
+
manera, y dentro del exponencial restamos z uno
|
| 83 |
+
|
| 84 |
+
00:01:36.520 --> 00:01:39.580
|
| 85 |
+
menos z cero, z uno menos z cero,
|
| 86 |
+
|
| 87 |
+
00:01:39.945 --> 00:01:43.145
|
| 88 |
+
Y la siguiente componente es z uno menos
|
| 89 |
+
|
| 90 |
+
00:01:43.145 --> 00:01:46.185
|
| 91 |
+
z cero, acá lo tenemos también, z uno
|
| 92 |
+
|
| 93 |
+
00:01:46.185 --> 00:01:50.365
|
| 94 |
+
menos z cero. Ahora, lo que nos resta
|
| 95 |
+
|
| 96 |
+
00:01:50.745 --> 00:01:53.380
|
| 97 |
+
es definir a z como el vector uno
|
| 98 |
+
|
| 99 |
+
00:01:53.380 --> 00:01:55.780
|
| 100 |
+
coma dos, aquí ya lo estamos definiendo como
|
| 101 |
+
|
| 102 |
+
00:01:55.780 --> 00:01:58.740
|
| 103 |
+
el vector uno coma dos, y vamos a
|
| 104 |
+
|
| 105 |
+
00:01:58.740 --> 00:02:01.460
|
| 106 |
+
evaluar nuestra función gradiente de f en nuestro
|
| 107 |
+
|
| 108 |
+
00:02:01.460 --> 00:02:05.300
|
| 109 |
+
vector uno coma dos. Evaluando la función en
|
| 110 |
+
|
| 111 |
+
00:02:05.300 --> 00:02:08.235
|
| 112 |
+
uno coma dos, obtenemos que la primer componente
|
| 113 |
+
|
| 114 |
+
00:02:08.235 --> 00:02:10.634
|
| 115 |
+
del vector gradiente es uno punto setenta y
|
| 116 |
+
|
| 117 |
+
00:02:10.634 --> 00:02:13.515
|
| 118 |
+
uno ochenta y dos, y la segunda es
|
| 119 |
+
|
| 120 |
+
00:02:13.515 --> 00:02:17.595
|
| 121 |
+
dos punto setenta y uno. Ahora, vamos a
|
| 122 |
+
|
| 123 |
+
00:02:17.595 --> 00:02:21.740
|
| 124 |
+
programar la función de f. Nuestra función f,
|
| 125 |
+
|
| 126 |
+
00:02:21.740 --> 00:02:25.120
|
| 127 |
+
como la vemos aquí, es x cero más
|
| 128 |
+
|
| 129 |
+
00:02:25.140 --> 00:02:27.760
|
| 130 |
+
la exponencial de x uno menos x cero,
|
| 131 |
+
|
| 132 |
+
00:02:27.980 --> 00:02:30.220
|
| 133 |
+
lo que nos va a regresar nuestra función
|
| 134 |
+
|
| 135 |
+
00:02:30.220 --> 00:02:33.100
|
| 136 |
+
f de x recibiendo un vector x es
|
| 137 |
+
|
| 138 |
+
00:02:33.100 --> 00:02:37.305
|
| 139 |
+
x cero más la exponencial, recordemos que la
|
| 140 |
+
|
| 141 |
+
00:02:37.305 --> 00:02:39.385
|
| 142 |
+
exponencial en un país se llama como n
|
| 143 |
+
|
| 144 |
+
00:02:39.385 --> 00:02:42.584
|
| 145 |
+
p dot exp, paréntesis lo que vaya del
|
| 146 |
+
|
| 147 |
+
00:02:42.584 --> 00:02:45.864
|
| 148 |
+
argumento de la exponencial, x uno menos x
|
| 149 |
+
|
| 150 |
+
00:02:45.864 --> 00:02:51.099
|
| 151 |
+
cero. Así, entonces, tenemos que calcular este elemento,
|
| 152 |
+
|
| 153 |
+
00:02:51.719 --> 00:02:55.739
|
| 154 |
+
retomando la aproximación de Taylor, tenemos que calcular
|
| 155 |
+
|
| 156 |
+
00:02:55.959 --> 00:02:58.280
|
| 157 |
+
el primer elemento que es una constante de
|
| 158 |
+
|
| 159 |
+
00:02:58.280 --> 00:03:05.254
|
| 160 |
+
nuestra aproximación de Taylor. Evaluamos esta función y
|
| 161 |
+
|
| 162 |
+
00:03:05.254 --> 00:03:09.275
|
| 163 |
+
corremos esta celda. Así tenemos que f evaluada
|
| 164 |
+
|
| 165 |
+
00:03:09.415 --> 00:03:11.814
|
| 166 |
+
en uno coma dos es el tres punto
|
| 167 |
+
|
| 168 |
+
00:03:11.814 --> 00:03:16.489
|
| 169 |
+
setenta y uno. Ya tenemos este término y
|
| 170 |
+
|
| 171 |
+
00:03:16.489 --> 00:03:19.670
|
| 172 |
+
ya tenemos este vector de aquí. Va a
|
| 173 |
+
|
| 174 |
+
00:03:19.670 --> 00:03:28.170
|
| 175 |
+
restar conseguir vectores aquí. Para construir nuestra aproximación
|
| 176 |
+
|
| 177 |
+
00:03:28.170 --> 00:03:31.285
|
| 178 |
+
de Taylor, bastará con que nosotros definamos la
|
| 179 |
+
|
| 180 |
+
00:03:31.285 --> 00:03:34.965
|
| 181 |
+
aproximación de Taylor. Dentro de esta calculemos el
|
| 182 |
+
|
| 183 |
+
00:03:34.965 --> 00:03:37.665
|
| 184 |
+
término f z, que es el primer término
|
| 185 |
+
|
| 186 |
+
00:03:37.685 --> 00:03:40.225
|
| 187 |
+
constante al escalar dentro de la aproximación de
|
| 188 |
+
|
| 189 |
+
00:03:40.245 --> 00:03:42.885
|
| 190 |
+
Taylor, y luego dentro de esta misma calculemos
|
| 191 |
+
|
| 192 |
+
00:03:42.885 --> 00:03:46.810
|
| 193 |
+
el gradiente de f respecto al vector z,
|
| 194 |
+
|
| 195 |
+
00:03:47.269 --> 00:03:49.109
|
| 196 |
+
y al final lo que nos va a
|
| 197 |
+
|
| 198 |
+
00:03:49.109 --> 00:03:51.810
|
| 199 |
+
regresar va a ser f z más g
|
| 200 |
+
|
| 201 |
+
00:03:51.909 --> 00:03:58.675
|
| 202 |
+
z, que es nuestro gradiente, por z menos
|
| 203 |
+
|
| 204 |
+
00:03:59.055 --> 00:04:02.255
|
| 205 |
+
por x menos z, que es justamente la
|
| 206 |
+
|
| 207 |
+
00:04:02.255 --> 00:04:05.795
|
| 208 |
+
función afín que representa la aproximación de Taylor.
|
| 209 |
+
|
| 210 |
+
00:04:06.815 --> 00:04:10.815
|
| 211 |
+
Ahora la evaluaremos. Para corroborar que nuestra aproximación
|
| 212 |
+
|
| 213 |
+
00:04:10.815 --> 00:04:14.580
|
| 214 |
+
es correcta, si nosotros evaluamos la aproximación de
|
| 215 |
+
|
| 216 |
+
00:04:14.580 --> 00:04:18.100
|
| 217 |
+
Taylor en x igual a z, deberíamos de
|
| 218 |
+
|
| 219 |
+
00:04:18.100 --> 00:04:22.840
|
| 220 |
+
obtener únicamente f z. Nosotros sabemos que FZ0
|
| 221 |
+
|
| 222 |
+
00:04:22.926 --> 00:04:25.620
|
| 223 |
+
bien f uno coma dos, f valor en
|
| 224 |
+
|
| 225 |
+
00:04:25.620 --> 00:04:27.300
|
| 226 |
+
uno coma dos es tres punto setenta y
|
| 227 |
+
|
| 228 |
+
00:04:27.300 --> 00:04:31.354
|
| 229 |
+
uno. Si nosotros evaluamos nuestra aproximación de taylor
|
| 230 |
+
|
| 231 |
+
00:04:31.354 --> 00:04:37.115
|
| 232 |
+
en z, deberíamos de recobrar eso, evaluémosla. Y
|
| 233 |
+
|
| 234 |
+
00:04:37.115 --> 00:04:39.115
|
| 235 |
+
nos damos cuenta que, en efecto, lo que
|
| 236 |
+
|
| 237 |
+
00:04:39.115 --> 00:04:41.675
|
| 238 |
+
recobramos es el tres punto setenta y uno
|
| 239 |
+
|
| 240 |
+
00:04:41.675 --> 00:04:44.490
|
| 241 |
+
ochenta y dos, es decir, nuestra aproximación es
|
| 242 |
+
|
| 243 |
+
00:04:44.490 --> 00:04:49.069
|
| 244 |
+
correcta. Con lo cual, nuestra función, nuestra aproximación
|
| 245 |
+
|
| 246 |
+
00:04:49.089 --> 00:04:52.409
|
| 247 |
+
de Taylor, nuestra función afín, vendrá dada por
|
| 248 |
+
|
| 249 |
+
00:04:52.409 --> 00:04:54.975
|
| 250 |
+
tres punto setenta y uno ochenta y tres,
|
| 251 |
+
|
| 252 |
+
00:04:56.015 --> 00:04:59.075
|
| 253 |
+
más el vector uno punto setenta y dos
|
| 254 |
+
|
| 255 |
+
00:04:59.535 --> 00:05:01.535
|
| 256 |
+
dos punto setenta y dos, que es el
|
| 257 |
+
|
| 258 |
+
00:05:01.535 --> 00:05:09.520
|
| 259 |
+
que obtuvimos, devaluar nuestro gradiente por x cero
|
| 260 |
+
|
| 261 |
+
00:05:09.580 --> 00:05:13.900
|
| 262 |
+
menos uno, x uno menos dos, y está
|
| 263 |
+
|
| 264 |
+
00:05:13.900 --> 00:05:15.419
|
| 265 |
+
a la espera de que lo volemos en
|
| 266 |
+
|
| 267 |
+
00:05:15.419 --> 00:05:19.099
|
| 268 |
+
algún vector x. Ahora, eso está muy bien,
|
| 269 |
+
|
| 270 |
+
00:05:19.099 --> 00:05:22.665
|
| 271 |
+
pero para entender realmente qué es una aproximación
|
| 272 |
+
|
| 273 |
+
00:05:22.665 --> 00:05:28.185
|
| 274 |
+
de Taylor, lo que tenemos que hacer es
|
| 275 |
+
|
| 276 |
+
00:05:28.185 --> 00:05:33.705
|
| 277 |
+
hacer un ejemplo unidimensional. Consideramos la función f
|
| 278 |
+
|
| 279 |
+
00:05:33.705 --> 00:05:38.130
|
| 280 |
+
de x, x cuadrada menos x cúbica, y
|
| 281 |
+
|
| 282 |
+
00:05:38.130 --> 00:05:40.130
|
| 283 |
+
es una función que va de r en
|
| 284 |
+
|
| 285 |
+
00:05:40.130 --> 00:05:43.570
|
| 286 |
+
r, es decir, este es un uno vector
|
| 287 |
+
|
| 288 |
+
00:05:43.570 --> 00:05:45.650
|
| 289 |
+
y, como habíamos dicho, el uno vector era
|
| 290 |
+
|
| 291 |
+
00:05:45.650 --> 00:05:49.705
|
| 292 |
+
un escalar, con lo cual vamos a obtener
|
| 293 |
+
|
| 294 |
+
00:05:49.705 --> 00:05:52.265
|
| 295 |
+
que su derivada parcial, o en este caso
|
| 296 |
+
|
| 297 |
+
00:05:52.265 --> 00:05:54.825
|
| 298 |
+
lo que correspondería a su vector gradiente evaluado
|
| 299 |
+
|
| 300 |
+
00:05:54.825 --> 00:05:58.025
|
| 301 |
+
en z, es dos z menos tres z
|
| 302 |
+
|
| 303 |
+
00:05:58.025 --> 00:06:00.680
|
| 304 |
+
cuadrada. Eso es la derivada de este. El
|
| 305 |
+
|
| 306 |
+
00:06:00.680 --> 00:06:03.240
|
| 307 |
+
primer término derivándolo respecto a x nos da
|
| 308 |
+
|
| 309 |
+
00:06:03.240 --> 00:06:06.120
|
| 310 |
+
dos x, y evaluándolo en z nos da
|
| 311 |
+
|
| 312 |
+
00:06:06.120 --> 00:06:10.039
|
| 313 |
+
dos z. El segundo término es tres x
|
| 314 |
+
|
| 315 |
+
00:06:10.039 --> 00:06:13.495
|
| 316 |
+
cuadrada, y aquí nos da tres z cuadrada
|
| 317 |
+
|
| 318 |
+
00:06:13.495 --> 00:06:16.215
|
| 319 |
+
después de valorarlo en z. Ahora, lo que
|
| 320 |
+
|
| 321 |
+
00:06:16.215 --> 00:06:19.755
|
| 322 |
+
nosotros queremos hacer es calcular la aproximación alrededor
|
| 323 |
+
|
| 324 |
+
00:06:19.815 --> 00:06:22.775
|
| 325 |
+
de z igual a cero punto cuatro. Para
|
| 326 |
+
|
| 327 |
+
00:06:22.775 --> 00:06:26.760
|
| 328 |
+
eso, primero vaya vamos a escribir la función
|
| 329 |
+
|
| 330 |
+
00:06:26.760 --> 00:06:29.639
|
| 331 |
+
del gradiente de z, que es esta de
|
| 332 |
+
|
| 333 |
+
00:06:29.639 --> 00:06:34.780
|
| 334 |
+
aquí, dos por z menos tres por z
|
| 335 |
+
|
| 336 |
+
00:06:34.919 --> 00:06:39.340
|
| 337 |
+
al cuadrado. En Python, la potencia se denota
|
| 338 |
+
|
| 339 |
+
00:06:39.479 --> 00:06:45.071
|
| 340 |
+
por dos por juntos. Luego, sabemos que nuestra
|
| 341 |
+
|
| 342 |
+
00:06:45.071 --> 00:06:49.555
|
| 343 |
+
aproximación de Taylor viene dada por f evaluado
|
| 344 |
+
|
| 345 |
+
00:06:49.695 --> 00:06:53.955
|
| 346 |
+
en z más la derivada evaluada en z
|
| 347 |
+
|
| 348 |
+
00:06:54.335 --> 00:06:59.379
|
| 349 |
+
por x menos z. Corremos esta celda y,
|
| 350 |
+
|
| 351 |
+
00:06:59.379 --> 00:07:02.419
|
| 352 |
+
por último, vamos a aclarar nuestra función f.
|
| 353 |
+
|
| 354 |
+
00:07:02.419 --> 00:07:06.360
|
| 355 |
+
F es simplemente x cuadrada menos x cúbica.
|
| 356 |
+
|
| 357 |
+
00:07:07.460 --> 00:07:12.485
|
| 358 |
+
Aquí está. Así, pues, vamos a evaluar f
|
| 359 |
+
|
| 360 |
+
00:07:12.485 --> 00:07:15.145
|
| 361 |
+
en cero punto cuatro, con lo cual obtenemos
|
| 362 |
+
|
| 363 |
+
00:07:15.205 --> 00:07:19.365
|
| 364 |
+
cero punto cero nueve seis. Vamos a evaluar
|
| 365 |
+
|
| 366 |
+
00:07:19.365 --> 00:07:24.085
|
| 367 |
+
la derivada, es decir, ese vector gradiente. Con
|
| 368 |
+
|
| 369 |
+
00:07:24.085 --> 00:07:27.260
|
| 370 |
+
eso obtenemos que evaluado el vector gradiente en
|
| 371 |
+
|
| 372 |
+
00:07:27.260 --> 00:07:29.180
|
| 373 |
+
cero punto cuatro es cero punto treinta y
|
| 374 |
+
|
| 375 |
+
00:07:29.180 --> 00:07:32.960
|
| 376 |
+
uno nueve. Con esto, tenemos que la aproximación
|
| 377 |
+
|
| 378 |
+
00:07:33.180 --> 00:07:35.660
|
| 379 |
+
de Taylor va a hacer toda esta función
|
| 380 |
+
|
| 381 |
+
00:07:35.660 --> 00:07:38.140
|
| 382 |
+
de aquí en espera que lo evaluemos en
|
| 383 |
+
|
| 384 |
+
00:07:38.140 --> 00:07:42.195
|
| 385 |
+
algún punto x. Pero, ya llegados aquí, es
|
| 386 |
+
|
| 387 |
+
00:07:42.195 --> 00:07:44.675
|
| 388 |
+
necesario entender qué es lo que está haciendo
|
| 389 |
+
|
| 390 |
+
00:07:44.675 --> 00:07:47.634
|
| 391 |
+
la aproximación de Taylor. Para eso vamos a
|
| 392 |
+
|
| 393 |
+
00:07:47.634 --> 00:07:51.955
|
| 394 |
+
hacer de nuestras primeras visualizaciones en Python. Esta
|
| 395 |
+
|
| 396 |
+
00:07:51.955 --> 00:07:57.470
|
| 397 |
+
librería de aquí es una biblioteca que contiene
|
| 398 |
+
|
| 399 |
+
00:08:01.210 --> 00:08:13.675
|
| 400 |
+
funciones biblioteca con funciones para visualizar. Corremos esta
|
| 401 |
+
|
| 402 |
+
00:08:13.675 --> 00:08:19.135
|
| 403 |
+
celda para importar nuestra biblioteca. Vamos a utilizar
|
| 404 |
+
|
| 405 |
+
00:08:19.275 --> 00:08:22.335
|
| 406 |
+
este comando de aquí y vamos a declarar
|
| 407 |
+
|
| 408 |
+
00:08:22.715 --> 00:08:26.800
|
| 409 |
+
esta serie de instrucciones. Aquí vamos a declarar
|
| 410 |
+
|
| 411 |
+
00:08:27.660 --> 00:08:31.280
|
| 412 |
+
un arreglo, ya habíamos hablado de los linkspace,
|
| 413 |
+
|
| 414 |
+
00:08:31.900 --> 00:08:34.059
|
| 415 |
+
entre el cero y el uno en mil
|
| 416 |
+
|
| 417 |
+
00:08:34.059 --> 00:08:38.620
|
| 418 |
+
cachos, y este estos puntos los vamos a
|
| 419 |
+
|
| 420 |
+
00:08:38.620 --> 00:08:42.884
|
| 421 |
+
evaluar en la función de aproximación de Taylor.
|
| 422 |
+
|
| 423 |
+
00:08:44.704 --> 00:08:49.504
|
| 424 |
+
Veamos cómo nos queda. Lo que nosotros obtenemos
|
| 425 |
+
|
| 426 |
+
00:08:49.504 --> 00:08:53.524
|
| 427 |
+
para este momento es que nuestra función original,
|
| 428 |
+
|
| 429 |
+
00:08:54.320 --> 00:08:57.360
|
| 430 |
+
la función original viene dada por x cuadrada
|
| 431 |
+
|
| 432 |
+
00:08:57.360 --> 00:09:00.720
|
| 433 |
+
menos x cúbica, es esta de aquí, la
|
| 434 |
+
|
| 435 |
+
00:09:00.720 --> 00:09:06.820
|
| 436 |
+
azul, y nuestra aproximación es esta línea anaranjada.
|
| 437 |
+
|
| 438 |
+
00:09:08.135 --> 00:09:11.495
|
| 439 |
+
Ahora, si nos damos cuenta, muy cerca de
|
| 440 |
+
|
| 441 |
+
00:09:11.495 --> 00:09:13.655
|
| 442 |
+
este punto rojo, este punto rojo es el
|
| 443 |
+
|
| 444 |
+
00:09:13.655 --> 00:09:16.615
|
| 445 |
+
uno coma dos, las funciones se parecen mucho.
|
| 446 |
+
|
| 447 |
+
00:09:16.615 --> 00:09:19.735
|
| 448 |
+
De hecho, hasta una vecindad muy pequeña se
|
| 449 |
+
|
| 450 |
+
00:09:19.735 --> 00:09:23.370
|
| 451 |
+
parecen bastante las funciones, van bastante pegaditas, pero
|
| 452 |
+
|
| 453 |
+
00:09:23.370 --> 00:09:26.690
|
| 454 |
+
conforme nos vamos alejando del punto del que
|
| 455 |
+
|
| 456 |
+
00:09:26.690 --> 00:09:31.110
|
| 457 |
+
queríamos aproximar, la función original y la aproximación
|
| 458 |
+
|
| 459 |
+
00:09:31.570 --> 00:09:34.130
|
| 460 |
+
se dejan de parecer cada vez más, y
|
| 461 |
+
|
| 462 |
+
00:09:34.130 --> 00:09:36.221
|
| 463 |
+
lo mismo pasa hacia el otro lado. Primero
|
| 464 |
+
|
| 465 |
+
00:09:36.221 --> 00:09:39.575
|
| 466 |
+
se parecen muchísimo y conforme nos vamos alejando
|
| 467 |
+
|
| 468 |
+
00:09:40.275 --> 00:09:43.395
|
| 469 |
+
se dejan de parecer. En este sentido, sí
|
| 470 |
+
|
| 471 |
+
00:09:43.395 --> 00:09:47.095
|
| 472 |
+
trabajan las aproximaciones. Muy cerca del punto que
|
| 473 |
+
|
| 474 |
+
00:09:47.235 --> 00:09:49.795
|
| 475 |
+
queremos aproximar, la función original y la función
|
| 476 |
+
|
| 477 |
+
00:09:49.795 --> 00:09:52.680
|
| 478 |
+
aproximada, la la aproximación de Taylor van a
|
| 479 |
+
|
| 480 |
+
00:09:52.680 --> 00:09:56.040
|
| 481 |
+
ser muy similares, pero conforme nos alejemos de
|
| 482 |
+
|
| 483 |
+
00:09:56.040 --> 00:09:59.480
|
| 484 |
+
ese punto, vamos a encontrar un error. Para
|
| 485 |
+
|
| 486 |
+
00:09:59.480 --> 00:10:02.280
|
| 487 |
+
eso vamos a introducir lo siguiente, y es
|
| 488 |
+
|
| 489 |
+
00:10:02.280 --> 00:10:04.815
|
| 490 |
+
una forma de poder medir el error. El
|
| 491 |
+
|
| 492 |
+
00:10:04.815 --> 00:10:06.975
|
| 493 |
+
error lo vamos a medir como el valor
|
| 494 |
+
|
| 495 |
+
00:10:06.975 --> 00:10:11.695
|
| 496 |
+
absoluto de el de la función evaluada en
|
| 497 |
+
|
| 498 |
+
00:10:11.695 --> 00:10:14.975
|
| 499 |
+
ese punto x menos lo que la función
|
| 500 |
+
|
| 501 |
+
00:10:14.975 --> 00:10:18.015
|
| 502 |
+
de Taylor nos arroja evaluada en ese mismo
|
| 503 |
+
|
| 504 |
+
00:10:18.015 --> 00:10:22.710
|
| 505 |
+
punto x. Por ejemplo, si nosotros tenemos x
|
| 506 |
+
|
| 507 |
+
00:10:22.710 --> 00:10:25.910
|
| 508 |
+
igual a cero punto tres, f de x
|
| 509 |
+
|
| 510 |
+
00:10:25.910 --> 00:10:28.150
|
| 511 |
+
en esta x cero punto tres es cero
|
| 512 |
+
|
| 513 |
+
00:10:28.150 --> 00:10:31.029
|
| 514 |
+
punto cero sesenta y tres, mientras que la
|
| 515 |
+
|
| 516 |
+
00:10:31.029 --> 00:10:33.110
|
| 517 |
+
función de Taylor nos dice que es cero
|
| 518 |
+
|
| 519 |
+
00:10:33.110 --> 00:10:35.295
|
| 520 |
+
punto sesenta y cuatro. Si nos damos cuenta,
|
| 521 |
+
|
| 522 |
+
00:10:35.755 --> 00:10:38.315
|
| 523 |
+
no está tan lejos, entonces el error que
|
| 524 |
+
|
| 525 |
+
00:10:38.315 --> 00:10:41.435
|
| 526 |
+
tenemos es un error muy pequeño, pero sí
|
| 527 |
+
|
| 528 |
+
00:10:41.435 --> 00:10:44.795
|
| 529 |
+
existe el error. Ahora, como siguiente ejemplo, si
|
| 530 |
+
|
| 531 |
+
00:10:44.795 --> 00:10:47.135
|
| 532 |
+
lo evaluamos en cero punto treinta y cinco,
|
| 533 |
+
|
| 534 |
+
00:10:48.210 --> 00:10:50.850
|
| 535 |
+
el valor de fdx es cero punto cero
|
| 536 |
+
|
| 537 |
+
00:10:50.850 --> 00:10:53.490
|
| 538 |
+
siete y más decimales, mientras que el de
|
| 539 |
+
|
| 540 |
+
00:10:53.490 --> 00:10:56.130
|
| 541 |
+
Taylor es cero punto cero ocho. Si nos
|
| 542 |
+
|
| 543 |
+
00:10:56.130 --> 00:10:58.530
|
| 544 |
+
damos cuenta, este valor y este valor son
|
| 545 |
+
|
| 546 |
+
00:10:58.530 --> 00:11:02.545
|
| 547 |
+
muy similares, pero existe un error, a pesar
|
| 548 |
+
|
| 549 |
+
00:11:02.545 --> 00:11:05.904
|
| 550 |
+
de ser muy, muy pequeñito. Y ahora veamos
|
| 551 |
+
|
| 552 |
+
00:11:05.904 --> 00:11:09.745
|
| 553 |
+
un nuevo ejemplo. Si lo evaluamos en cero
|
| 554 |
+
|
| 555 |
+
00:11:09.745 --> 00:11:11.904
|
| 556 |
+
punto cuatro, que es el punto del cual
|
| 557 |
+
|
| 558 |
+
00:11:11.904 --> 00:11:15.150
|
| 559 |
+
alrededor del cual nos queremos aproximar, del cual
|
| 560 |
+
|
| 561 |
+
00:11:15.150 --> 00:11:18.190
|
| 562 |
+
alrededor del cual estamos aproximando, fdx es cero
|
| 563 |
+
|
| 564 |
+
00:11:18.190 --> 00:11:20.430
|
| 565 |
+
punto noventa y seis, y la aproximación de
|
| 566 |
+
|
| 567 |
+
00:11:20.430 --> 00:11:22.270
|
| 568 |
+
Taylor también nos da cero punto noventa y
|
| 569 |
+
|
| 570 |
+
00:11:22.270 --> 00:11:25.230
|
| 571 |
+
seis, y esto nos da un error de
|
| 572 |
+
|
| 573 |
+
00:11:25.230 --> 00:11:28.430
|
| 574 |
+
cero. Ahora, si nos damos cuenta, este cero
|
| 575 |
+
|
| 576 |
+
00:11:28.430 --> 00:11:31.925
|
| 577 |
+
punto tres está por acá, y entonces el
|
| 578 |
+
|
| 579 |
+
00:11:31.925 --> 00:11:34.105
|
| 580 |
+
cero punto treinta y cinco está por aquí.
|
| 581 |
+
|
| 582 |
+
00:11:34.644 --> 00:11:38.325
|
| 583 |
+
Conforme nos vamos acercando al punto del que
|
| 584 |
+
|
| 585 |
+
00:11:38.325 --> 00:11:42.165
|
| 586 |
+
iniciamos la aproximación, del que del que iniciamos
|
| 587 |
+
|
| 588 |
+
00:11:42.165 --> 00:11:45.240
|
| 589 |
+
la aproximación alrededor, notemos que el error va
|
| 590 |
+
|
| 591 |
+
00:11:45.240 --> 00:11:48.120
|
| 592 |
+
reduciendo. Este es el error en cero punto
|
| 593 |
+
|
| 594 |
+
00:11:48.120 --> 00:11:51.080
|
| 595 |
+
tres, ese es el error en cero punto
|
| 596 |
+
|
| 597 |
+
00:11:51.080 --> 00:11:53.880
|
| 598 |
+
treinta y cinco, y este es el error
|
| 599 |
+
|
| 600 |
+
00:11:53.880 --> 00:11:57.420
|
| 601 |
+
en cero punto cuatro. Entonces, conforme nos acerquemos
|
| 602 |
+
|
| 603 |
+
00:11:58.225 --> 00:12:00.785
|
| 604 |
+
hacia el punto que queremos aproximar, nuestro error
|
| 605 |
+
|
| 606 |
+
00:12:00.785 --> 00:12:02.565
|
| 607 |
+
se va a ser más y más pequeño.
|
| 608 |
+
|
| 609 |
+
00:12:03.505 --> 00:12:06.225
|
| 610 |
+
Y conforme nos alejemos también por este lado,
|
| 611 |
+
|
| 612 |
+
00:12:06.225 --> 00:12:09.205
|
| 613 |
+
notaremos que el error va creciendo. Por ejemplo,
|
| 614 |
+
|
| 615 |
+
00:12:09.265 --> 00:12:12.405
|
| 616 |
+
evaluemos ahora en cero punto cuarenta y cinco.
|
| 617 |
+
|
| 618 |
+
00:12:12.500 --> 00:12:14.760
|
| 619 |
+
Si evaluamos en cero punto cuarenta y cinco,
|
| 620 |
+
|
| 621 |
+
00:12:14.980 --> 00:12:17.720
|
| 622 |
+
obtenemos cero punto once, y eso nos da,
|
| 623 |
+
|
| 624 |
+
00:12:18.260 --> 00:12:20.019
|
| 625 |
+
en la función original y en Taylor nos
|
| 626 |
+
|
| 627 |
+
00:12:20.019 --> 00:12:22.839
|
| 628 |
+
da cero punto once con algunos decimales distintos.
|
| 629 |
+
|
| 630 |
+
00:12:23.380 --> 00:12:26.339
|
| 631 |
+
Cuando sacamos el error, obtenemos este error de
|
| 632 |
+
|
| 633 |
+
00:12:26.339 --> 00:12:31.135
|
| 634 |
+
aquí. Si seguimos creciendo, en cero punto cinco
|
| 635 |
+
|
| 636 |
+
00:12:31.135 --> 00:12:33.375
|
| 637 |
+
obtenemos que f es igual a cero punto
|
| 638 |
+
|
| 639 |
+
00:12:33.375 --> 00:12:36.515
|
| 640 |
+
veinticinco y Taylor nos dice cero punto veintiocho.
|
| 641 |
+
|
| 642 |
+
00:12:37.375 --> 00:12:39.535
|
| 643 |
+
Esto nos da al final un error de
|
| 644 |
+
|
| 645 |
+
00:12:39.535 --> 00:12:41.875
|
| 646 |
+
cero punto cero tres, y vamos a alejarnos
|
| 647 |
+
|
| 648 |
+
00:12:41.935 --> 00:12:44.170
|
| 649 |
+
un punto más. Si nos alejamos un punto
|
| 650 |
+
|
| 651 |
+
00:12:44.630 --> 00:12:47.990
|
| 652 |
+
más, por ejemplo, cero punto ocho, tenemos que
|
| 653 |
+
|
| 654 |
+
00:12:47.990 --> 00:12:51.130
|
| 655 |
+
Taylor nos dice, tenemos que la función original
|
| 656 |
+
|
| 657 |
+
00:12:51.589 --> 00:12:53.829
|
| 658 |
+
evaluada en ese punto es cero punto ciento
|
| 659 |
+
|
| 660 |
+
00:12:53.829 --> 00:12:56.390
|
| 661 |
+
veintiocho, mientras que Taylor nos dice que es
|
| 662 |
+
|
| 663 |
+
00:12:56.390 --> 00:12:59.095
|
| 664 |
+
cero punto veintidós y otros decimales, lo cual
|
| 665 |
+
|
| 666 |
+
00:12:59.095 --> 00:13:04.215
|
| 667 |
+
es un error bastante grande. Ahora, lo que
|
| 668 |
+
|
| 669 |
+
00:13:04.215 --> 00:13:06.055
|
| 670 |
+
se va a quedar como ejercicio para ti
|
| 671 |
+
|
| 672 |
+
00:13:06.055 --> 00:13:08.375
|
| 673 |
+
es que yo calculé el error de de
|
| 674 |
+
|
| 675 |
+
00:13:08.375 --> 00:13:12.660
|
| 676 |
+
la aproximación de Taylor alrededor del punto para
|
| 677 |
+
|
| 678 |
+
00:13:12.660 --> 00:13:17.980
|
| 679 |
+
este ejemplo unidimensional. Puedes extrapolar esto que hemos
|
| 680 |
+
|
| 681 |
+
00:13:17.980 --> 00:13:22.240
|
| 682 |
+
visto hasta ahora para aproximar los errores alrededor
|
| 683 |
+
|
| 684 |
+
00:13:22.300 --> 00:13:25.995
|
| 685 |
+
de algunos puntos en esta aproximación. Si te
|
| 686 |
+
|
| 687 |
+
00:13:25.995 --> 00:13:28.714
|
| 688 |
+
perdiste dentro de esta clase, te aconsejo que
|
| 689 |
+
|
| 690 |
+
00:13:28.714 --> 00:13:31.435
|
| 691 |
+
revisas los cursos de cálculo básico y los
|
| 692 |
+
|
| 693 |
+
00:13:31.435 --> 00:13:35.295
|
| 694 |
+
cursos de programación básica en Python. Ahí obtendrás
|
| 695 |
+
|
| 696 |
+
00:13:35.355 --> 00:13:38.394
|
| 697 |
+
los fundamentos para seguir y para poder llenar
|
| 698 |
+
|
| 699 |
+
00:13:38.394 --> 00:13:41.701
|
| 700 |
+
esos gaps que pudieras tener. Cualquier duda, déjala
|
| 701 |
+
|
| 702 |
+
00:13:41.701 --> 00:13:44.461
|
| 703 |
+
en los comentarios y la comunidad Platzi o
|
| 704 |
+
|
| 705 |
+
00:13:44.461 --> 00:13:47.360
|
| 706 |
+
yo la responderemos. Nos vemos la próxima clase.
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/06-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.html
|
| 2 |
+
https://platzi.com/cursos/calculo-data-science/
|
| 3 |
+
https://platzi.com/cursos/python
|
| 4 |
+
https://colab.research.google.com/drive/1qqJ0suSucs3B7ePEHsBrJ6EKz8YUv7X5?usp=sharing
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/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/03-Funciones lineales/06-aproximacion_taylor_ce137460-6fd8-44ff-8cd4-d5d1cde0972c.ipynb
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {},
|
| 6 |
+
"source": [
|
| 7 |
+
"# 6. Aproximación de Taylor"
|
| 8 |
+
]
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"cell_type": "markdown",
|
| 12 |
+
"metadata": {},
|
| 13 |
+
"source": [
|
| 14 |
+
"La mayoría de los fenómenos de la realidad solo pueden ser aproximados a través de funciones no-lineales y algunas veces es más sencillo aproximarnos con funciones afines o lineales. "
|
| 15 |
+
]
|
| 16 |
+
},
|
| 17 |
+
{
|
| 18 |
+
"cell_type": "markdown",
|
| 19 |
+
"metadata": {},
|
| 20 |
+
"source": [
|
| 21 |
+
"En este caso nos referiremos a la aproximación como *modelo* para recordar que la aproximación es solamente eso, una aproximación."
|
| 22 |
+
]
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
"cell_type": "markdown",
|
| 26 |
+
"metadata": {},
|
| 27 |
+
"source": [
|
| 28 |
+
"Ahora, el cálculo diferencial nos otorga una forma organizada de encontrar ese modelo. Supongamos entonces que $f:\\mathbf{R}^{n} \\to \\mathbf{R}$ es una función diferenciable, sea también $\\mathbf{z}$ un $n$-vector. La aproximación de Taylor de primer orden de $f$ cerca del punto $\\mathbf{z}$ es la función\n",
|
| 29 |
+
"\n",
|
| 30 |
+
"$$\n",
|
| 31 |
+
"\\hat{f}(\\mathbf{x}) = f(\\mathbf{z}) + \\displaystyle\\frac{\\partial}{\\partial x_{0}} f(\\mathbf{z})(x_{0}-z_{0}) + \\displaystyle\\frac{\\partial}{\\partial x_{1}} f(\\mathbf{z})(x_{1}-z_{1}) + \\cdots + \\displaystyle\\frac{\\partial}{\\partial x_{n-1}} f(\\mathbf{z})(x_{n-1}-z_{n-1})\n",
|
| 32 |
+
"$$\n",
|
| 33 |
+
"\n",
|
| 34 |
+
"Donde $\\displaystyle\\frac{\\partial}{\\partial x_{i}}f(\\mathbf{z})$ denota la derivada parcial de $f$ evaluada en el vector $\\mathbf{z}$ respecto al i-ésimo argumento. "
|
| 35 |
+
]
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"cell_type": "markdown",
|
| 39 |
+
"metadata": {},
|
| 40 |
+
"source": [
|
| 41 |
+
"Algunas veces $\\hat{f}(\\mathbf{z})$ también se escribe como $\\hat{f}(\\mathbf{x};\\mathbf{z})$ o también $\\hat{f}_{\\mathbf{z}}(\\mathbf{x})$ para mostrar en qué punto se evalúa o respecto al que se está desarrollando. "
|
| 42 |
+
]
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"cell_type": "markdown",
|
| 46 |
+
"metadata": {},
|
| 47 |
+
"source": [
|
| 48 |
+
"Notemos que \n",
|
| 49 |
+
"\n",
|
| 50 |
+
"$$\n",
|
| 51 |
+
"\\hat{f}(\\mathbf{x}) = f(\\mathbf{z}) + \\nabla f(\\mathbf{z})^{T} (\\mathbf{x}-\\mathbf{z})\n",
|
| 52 |
+
"$$\n",
|
| 53 |
+
"\n",
|
| 54 |
+
"Donde $\\nabla f(\\mathbf{z})$ representa el vector gradiente\n",
|
| 55 |
+
"\n",
|
| 56 |
+
"$$\n",
|
| 57 |
+
"\\nabla f(\\mathbf{z}) = \\begin{bmatrix}\\displaystyle\\frac{\\partial f}{\\partial x_{0}}(\\mathbf{z}) \\\\ \\displaystyle\\frac{\\partial f}{\\partial x_{1}}(\\mathbf{z})\\\\ \\vdots \\\\ \\displaystyle\\frac{\\partial f}{\\partial x_{n-1}}(\\mathbf{z}) \\end{bmatrix}\n",
|
| 58 |
+
"$$\n",
|
| 59 |
+
"\n",
|
| 60 |
+
"Notemos que le primer término de la aproximación es la constante $f(\\mathbf{z})$ (esto es la función $f(\\mathbf{x})$ evaluada en $\\mathbf{z}$). El segundo término es el prodcuto itnerno del vector gradiente de $f$ en $\\mathbf{z}$ y la *desviación* o *perturbación* de $\\mathbf{x}$ por parte de $\\mathbf{z}$, el $n$-vector $(\\mathbf{x}-\\mathbf{z})$."
|
| 61 |
+
]
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"cell_type": "markdown",
|
| 65 |
+
"metadata": {},
|
| 66 |
+
"source": [
|
| 67 |
+
"La aproximación de primer orden de Taylor nos da una forma de consturir una función afín que aproximará la función $f: \\mathbf{R}^{n} \\to \\mathbf{R}$ alrededor del punto $\\mathbf{z}$, siempre y cuando exista una forma explícita de la función $f$ y sea diferenciable. "
|
| 68 |
+
]
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"cell_type": "markdown",
|
| 72 |
+
"metadata": {},
|
| 73 |
+
"source": [
|
| 74 |
+
"## 6.1 Breves ejemplos"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "markdown",
|
| 79 |
+
"metadata": {},
|
| 80 |
+
"source": [
|
| 81 |
+
"**Ejemplo 1.** Considera la función $f:\\mathbf{R}^{2}\\to \\mathbf{R}$ dada por $f(\\mathbf{x}) = x_{0}+\\exp{(x_{1}-x_{0})}$ la cual no es lineal ni afín. Para encontrar una aproximación de Taylor $\\hat{f}$ cerca del punto $\\mathbf{z}^{T} = [1 \\; 2]$. Tenemos que el vector gradiente en este caso será:\n",
|
| 82 |
+
"\n",
|
| 83 |
+
"$$\n",
|
| 84 |
+
"\\nabla f(\\mathbf{z}) = \\begin{bmatrix}\\displaystyle\\frac{\\partial f}{\\partial x_{0}}(\\mathbf{z}) \\\\ \\displaystyle\\frac{\\partial f}{\\partial x_{1}}(\\mathbf{z})\\end{bmatrix} = \\begin{bmatrix} 1 - \\exp{(z_{1}-z_{0})} \\\\ \\exp{(z_{1}-z_{0})} \\end{bmatrix}\n",
|
| 85 |
+
"$$\n",
|
| 86 |
+
"\n",
|
| 87 |
+
"Ahora vamos a evaluar $\\nabla f(\\mathbf{z})$ en el vector $\\mathbf{z}^{T} = [1 \\; 2]$"
|
| 88 |
+
]
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"cell_type": "code",
|
| 92 |
+
"execution_count": 3,
|
| 93 |
+
"metadata": {},
|
| 94 |
+
"outputs": [],
|
| 95 |
+
"source": [
|
| 96 |
+
"import numpy as np"
|
| 97 |
+
]
|
| 98 |
+
},
|
| 99 |
+
{
|
| 100 |
+
"cell_type": "code",
|
| 101 |
+
"execution_count": 4,
|
| 102 |
+
"metadata": {},
|
| 103 |
+
"outputs": [],
|
| 104 |
+
"source": [
|
| 105 |
+
"def gradF(z):\n",
|
| 106 |
+
" return np.array([1-np.exp(z[1]-z[0]),np.exp(z[1]-z[0])])"
|
| 107 |
+
]
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"cell_type": "code",
|
| 111 |
+
"execution_count": 5,
|
| 112 |
+
"metadata": {},
|
| 113 |
+
"outputs": [
|
| 114 |
+
{
|
| 115 |
+
"name": "stdout",
|
| 116 |
+
"output_type": "stream",
|
| 117 |
+
"text": [
|
| 118 |
+
"grad(f)[1,2] = [-1.71828183 2.71828183]\n"
|
| 119 |
+
]
|
| 120 |
+
}
|
| 121 |
+
],
|
| 122 |
+
"source": [
|
| 123 |
+
"z = np.array([1,2])\n",
|
| 124 |
+
"print('grad(f)[1,2] = ', gradF(z))"
|
| 125 |
+
]
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"cell_type": "markdown",
|
| 129 |
+
"metadata": {},
|
| 130 |
+
"source": [
|
| 131 |
+
"Ahora vamos a programar la función $f$."
|
| 132 |
+
]
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"cell_type": "code",
|
| 136 |
+
"execution_count": 6,
|
| 137 |
+
"metadata": {},
|
| 138 |
+
"outputs": [],
|
| 139 |
+
"source": [
|
| 140 |
+
"def F(x):\n",
|
| 141 |
+
" return x[0] + np.exp(x[1]-x[0])"
|
| 142 |
+
]
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"cell_type": "code",
|
| 146 |
+
"execution_count": 7,
|
| 147 |
+
"metadata": {},
|
| 148 |
+
"outputs": [
|
| 149 |
+
{
|
| 150 |
+
"name": "stdout",
|
| 151 |
+
"output_type": "stream",
|
| 152 |
+
"text": [
|
| 153 |
+
"f([1,2]) = 3.718281828459045\n"
|
| 154 |
+
]
|
| 155 |
+
}
|
| 156 |
+
],
|
| 157 |
+
"source": [
|
| 158 |
+
"print('f([1,2]) =',F(z))"
|
| 159 |
+
]
|
| 160 |
+
},
|
| 161 |
+
{
|
| 162 |
+
"cell_type": "markdown",
|
| 163 |
+
"metadata": {},
|
| 164 |
+
"source": [
|
| 165 |
+
"Así pues, nuestro aproximación de Taylor a primer orden será:"
|
| 166 |
+
]
|
| 167 |
+
},
|
| 168 |
+
{
|
| 169 |
+
"cell_type": "code",
|
| 170 |
+
"execution_count": 8,
|
| 171 |
+
"metadata": {},
|
| 172 |
+
"outputs": [],
|
| 173 |
+
"source": [
|
| 174 |
+
"def taylor_F(x,z):\n",
|
| 175 |
+
" fz = F(z)\n",
|
| 176 |
+
" gz = gradF(z)\n",
|
| 177 |
+
" return fz + gz@(x-z)"
|
| 178 |
+
]
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"cell_type": "markdown",
|
| 182 |
+
"metadata": {},
|
| 183 |
+
"source": [
|
| 184 |
+
"Para corroborar que nuestra aproximación es correcta si la evaluamos en $x=z$ deberíamos de obtener que $\\hat{f}(\\mathbf{z})=f(\\mathbf{z})$"
|
| 185 |
+
]
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"cell_type": "code",
|
| 189 |
+
"execution_count": 9,
|
| 190 |
+
"metadata": {},
|
| 191 |
+
"outputs": [
|
| 192 |
+
{
|
| 193 |
+
"name": "stdout",
|
| 194 |
+
"output_type": "stream",
|
| 195 |
+
"text": [
|
| 196 |
+
"taylor_F([1,2],[1,2]) = 3.718281828459045\n"
|
| 197 |
+
]
|
| 198 |
+
}
|
| 199 |
+
],
|
| 200 |
+
"source": [
|
| 201 |
+
"print('taylor_F([1,2],[1,2]) = ',taylor_F(z,z))"
|
| 202 |
+
]
|
| 203 |
+
},
|
| 204 |
+
{
|
| 205 |
+
"cell_type": "markdown",
|
| 206 |
+
"metadata": {},
|
| 207 |
+
"source": [
|
| 208 |
+
"Esto significa que lo hicimos bien, nuestra aproximación viene dada por\n",
|
| 209 |
+
"\n",
|
| 210 |
+
"$$\n",
|
| 211 |
+
"\\hat{f}(\\mathbf{x}) = 3.7183 + [-1.72\\; 2.72]\\begin{bmatrix}x_{0}-1\\\\ x_{1}-2\\end{bmatrix}\n",
|
| 212 |
+
"$$"
|
| 213 |
+
]
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"cell_type": "markdown",
|
| 217 |
+
"metadata": {},
|
| 218 |
+
"source": [
|
| 219 |
+
"**Ejercicio 2.** Para tener un mejor idea de lo que significa hacer una aproximación lineal vamos a realizar la aproximación de una función unidimensional\n",
|
| 220 |
+
"\n",
|
| 221 |
+
"$$\n",
|
| 222 |
+
"f(x) = x^{2} - x^{3}\n",
|
| 223 |
+
"$$\n",
|
| 224 |
+
"\n",
|
| 225 |
+
"Con lo que obtenemos\n",
|
| 226 |
+
"\n",
|
| 227 |
+
"$$\n",
|
| 228 |
+
"\\nabla f(z) = 2z - 3z^{2}\n",
|
| 229 |
+
"$$\n",
|
| 230 |
+
"\n",
|
| 231 |
+
"Ahora, si lo aproximamos en $z=0.4$. "
|
| 232 |
+
]
|
| 233 |
+
},
|
| 234 |
+
{
|
| 235 |
+
"cell_type": "code",
|
| 236 |
+
"execution_count": 10,
|
| 237 |
+
"metadata": {},
|
| 238 |
+
"outputs": [],
|
| 239 |
+
"source": [
|
| 240 |
+
"def df(z):\n",
|
| 241 |
+
" return 2*z - 3*z**2"
|
| 242 |
+
]
|
| 243 |
+
},
|
| 244 |
+
{
|
| 245 |
+
"cell_type": "code",
|
| 246 |
+
"execution_count": 11,
|
| 247 |
+
"metadata": {},
|
| 248 |
+
"outputs": [],
|
| 249 |
+
"source": [
|
| 250 |
+
"def tf(x,z):\n",
|
| 251 |
+
" return f(z) + df(z)*(x-z)"
|
| 252 |
+
]
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"cell_type": "code",
|
| 256 |
+
"execution_count": 12,
|
| 257 |
+
"metadata": {},
|
| 258 |
+
"outputs": [],
|
| 259 |
+
"source": [
|
| 260 |
+
"def f(x):\n",
|
| 261 |
+
" return x**2 - x**3"
|
| 262 |
+
]
|
| 263 |
+
},
|
| 264 |
+
{
|
| 265 |
+
"cell_type": "code",
|
| 266 |
+
"execution_count": 13,
|
| 267 |
+
"metadata": {},
|
| 268 |
+
"outputs": [
|
| 269 |
+
{
|
| 270 |
+
"name": "stdout",
|
| 271 |
+
"output_type": "stream",
|
| 272 |
+
"text": [
|
| 273 |
+
"f(0.4) = 0.09600000000000002\n"
|
| 274 |
+
]
|
| 275 |
+
}
|
| 276 |
+
],
|
| 277 |
+
"source": [
|
| 278 |
+
"print('f(0.4) =',f(0.4))"
|
| 279 |
+
]
|
| 280 |
+
},
|
| 281 |
+
{
|
| 282 |
+
"cell_type": "code",
|
| 283 |
+
"execution_count": 14,
|
| 284 |
+
"metadata": {},
|
| 285 |
+
"outputs": [
|
| 286 |
+
{
|
| 287 |
+
"name": "stdout",
|
| 288 |
+
"output_type": "stream",
|
| 289 |
+
"text": [
|
| 290 |
+
"Df(0.4) = 0.31999999999999995\n"
|
| 291 |
+
]
|
| 292 |
+
}
|
| 293 |
+
],
|
| 294 |
+
"source": [
|
| 295 |
+
"print('Df(0.4) =',df(0.4))"
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
{
|
| 299 |
+
"cell_type": "markdown",
|
| 300 |
+
"metadata": {},
|
| 301 |
+
"source": [
|
| 302 |
+
"Usando los resultados anteriores tenemos que la aproximación de Taylor es\n",
|
| 303 |
+
"\n",
|
| 304 |
+
"$$\n",
|
| 305 |
+
"\\hat{f}(x) = 0.09600000000000002 + 0.31999999999999995 * (x - 0.4)\n",
|
| 306 |
+
"$$\n"
|
| 307 |
+
]
|
| 308 |
+
},
|
| 309 |
+
{
|
| 310 |
+
"cell_type": "code",
|
| 311 |
+
"execution_count": 15,
|
| 312 |
+
"metadata": {},
|
| 313 |
+
"outputs": [],
|
| 314 |
+
"source": [
|
| 315 |
+
"import matplotlib.pyplot as plt #Biblioteca con funciones para visualizar"
|
| 316 |
+
]
|
| 317 |
+
},
|
| 318 |
+
{
|
| 319 |
+
"cell_type": "code",
|
| 320 |
+
"execution_count": 16,
|
| 321 |
+
"metadata": {},
|
| 322 |
+
"outputs": [
|
| 323 |
+
{
|
| 324 |
+
"data": {
|
| 325 |
+
"image/png": "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W2jWrBlAM2vtlpz215ppuWyxsbEXjL3xxhuA87hwERERkRx98+b5IB0YBkOXFHqQ9oaWechlmzdvHlOnTqVr166EhISwdu1a5syZQ6dOnbj55pvdbk9ERESKui//DV+84rwOKg9Dl0LV5u72lEsK03LZmjdvjq+vL+PGjePMmTPpb0p85ZVX3G5NREREijJr4Yt/wlepN0EoUwmGLoPKTdztKw8UpuWyXXvttXz22WdutyEiIiLFibXw2Rj4xlkaSkgVGLYcKl3palt5pTAtIiIiIoXLWlj1LHz7jlOHVneCdIX67vblBYVpERERESk8KSnwyWjnFngAYbVg+HIIr+NqW95SmBYRERGRwpGSAh89ApumO3V4XWdGulxNd/u6DArTIiIiIlLwUpJh6V/h5zlOXaGBE6RDq7nb12VSmBYRERGRgpWcBB/eD5sXOXWlRs5dO8pWdrevfKAwLSIiIiIFJykBFt0Dvy1z6srNnPtIl6nobl/5RGFaRERERApGUjzMHwa/f+LUVa+GIUsguLy7feUjPU5cpJAsXryYV199leTkZLdbERERKXiJsTB34PkgXf16Z2lHCQrSoDAtxUS7du1o166d221c1PDhw6lTp85Ft69bt45BgwbRpEkTPB5P4TUmIiLihoQYmH0X7Ex9qFvNv8CQDyGonLt9FQAt8xApYCdOnKB///689dZbdO3a1e12REREClZ8tBOk96116jptYMBcCAhxt68CojAtxcLq1avdbuGS3n//fVJSUrLd9uOPP/LKK68wdOjQQu5KRESkkMVFway+sH+DU9drD/1ng3+wu30VIIVpyVfWWuLi4ggKCsrX8/r7++fr+fKbn5/fRbd17NixEDsRERFxSewpmHEnHNzk1Fd0gn4zwC/Q3b4KmNZMlyL79u1j1KhRNGzYkKCgICpUqEDfvn3Zu3dvpv2mTp2KMYavvvqKkSNHUqFCBUJDQxk6dCinTp3KtG+dOnXo3r07q1at4vrrrycoKIhJkyYBsHv3bvr27Uv58uUJDg7mL3/5Cx9//HH6sb/99htBQUEXzNiuXbsWj8fDU089lT6Wdc30mjVrMMYwf/58XnrpJapXr07ZsmXp06cPUVFRxMfH8+ijjxIREUFISAgjRowgPj4+03WmTJnCrbfeSkREBAEBATRp0oSJEydm+7X75JNPaNu2LWXLliU0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\n",
|
| 326 |
+
"text/plain": [
|
| 327 |
+
"<Figure size 840x840 with 1 Axes>"
|
| 328 |
+
]
|
| 329 |
+
},
|
| 330 |
+
"metadata": {
|
| 331 |
+
"needs_background": "light"
|
| 332 |
+
},
|
| 333 |
+
"output_type": "display_data"
|
| 334 |
+
}
|
| 335 |
+
],
|
| 336 |
+
"source": [
|
| 337 |
+
"%matplotlib inline\n",
|
| 338 |
+
"fig, ax = plt.subplots(1,1,figsize=(7,7),dpi=120)\n",
|
| 339 |
+
"\n",
|
| 340 |
+
"x = np.linspace(0,1,1000)\n",
|
| 341 |
+
"taf = lambda x:tf(x,0.4)\n",
|
| 342 |
+
"\n",
|
| 343 |
+
"ax.plot(x,f(x),label='original')\n",
|
| 344 |
+
"ax.plot(x,taf(x),label='aproximación')\n",
|
| 345 |
+
"ax.scatter(0.4,f(0.4),color='red')\n",
|
| 346 |
+
"ax.legend()\n",
|
| 347 |
+
"plt.show()"
|
| 348 |
+
]
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"cell_type": "markdown",
|
| 352 |
+
"metadata": {},
|
| 353 |
+
"source": [
|
| 354 |
+
"Ahora vamos a calcular algunas diferencias y errores de la aproximación"
|
| 355 |
+
]
|
| 356 |
+
},
|
| 357 |
+
{
|
| 358 |
+
"cell_type": "code",
|
| 359 |
+
"execution_count": 17,
|
| 360 |
+
"metadata": {},
|
| 361 |
+
"outputs": [
|
| 362 |
+
{
|
| 363 |
+
"name": "stdout",
|
| 364 |
+
"output_type": "stream",
|
| 365 |
+
"text": [
|
| 366 |
+
"x = 0.3, f(x) = 0.063, Taylor f(x) = 0.064, |f(x) - Taylor f(x)| = 0.0010000000000000009\n"
|
| 367 |
+
]
|
| 368 |
+
}
|
| 369 |
+
],
|
| 370 |
+
"source": [
|
| 371 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.3,f(0.3),taf(0.3),np.abs(f(0.3)-taf(0.3))))"
|
| 372 |
+
]
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"cell_type": "code",
|
| 376 |
+
"execution_count": 18,
|
| 377 |
+
"metadata": {},
|
| 378 |
+
"outputs": [
|
| 379 |
+
{
|
| 380 |
+
"name": "stdout",
|
| 381 |
+
"output_type": "stream",
|
| 382 |
+
"text": [
|
| 383 |
+
"x = 0.35, f(x) = 0.079625, Taylor f(x) = 0.08, |f(x) - Taylor f(x)| = 0.00037500000000000033\n"
|
| 384 |
+
]
|
| 385 |
+
}
|
| 386 |
+
],
|
| 387 |
+
"source": [
|
| 388 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.35,f(0.35),taf(0.35),np.abs(f(0.35)-taf(0.35))))"
|
| 389 |
+
]
|
| 390 |
+
},
|
| 391 |
+
{
|
| 392 |
+
"cell_type": "code",
|
| 393 |
+
"execution_count": 19,
|
| 394 |
+
"metadata": {},
|
| 395 |
+
"outputs": [
|
| 396 |
+
{
|
| 397 |
+
"name": "stdout",
|
| 398 |
+
"output_type": "stream",
|
| 399 |
+
"text": [
|
| 400 |
+
"x = 0.4, f(x) = 0.09600000000000002, Taylor f(x) = 0.09600000000000002, |f(x) - Taylor f(x)| = 0.0\n"
|
| 401 |
+
]
|
| 402 |
+
}
|
| 403 |
+
],
|
| 404 |
+
"source": [
|
| 405 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.4,f(0.4),taf(0.4),np.abs(f(0.4)-taf(0.4))))"
|
| 406 |
+
]
|
| 407 |
+
},
|
| 408 |
+
{
|
| 409 |
+
"cell_type": "code",
|
| 410 |
+
"execution_count": 20,
|
| 411 |
+
"metadata": {},
|
| 412 |
+
"outputs": [
|
| 413 |
+
{
|
| 414 |
+
"name": "stdout",
|
| 415 |
+
"output_type": "stream",
|
| 416 |
+
"text": [
|
| 417 |
+
"x = 0.45, f(x) = 0.111375, Taylor f(x) = 0.11200000000000002, |f(x) - Taylor f(x)| = 0.0006250000000000144\n"
|
| 418 |
+
]
|
| 419 |
+
}
|
| 420 |
+
],
|
| 421 |
+
"source": [
|
| 422 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.45,f(0.45),taf(0.45),np.abs(f(0.45)-taf(0.45))))"
|
| 423 |
+
]
|
| 424 |
+
},
|
| 425 |
+
{
|
| 426 |
+
"cell_type": "code",
|
| 427 |
+
"execution_count": 21,
|
| 428 |
+
"metadata": {},
|
| 429 |
+
"outputs": [
|
| 430 |
+
{
|
| 431 |
+
"name": "stdout",
|
| 432 |
+
"output_type": "stream",
|
| 433 |
+
"text": [
|
| 434 |
+
"x = 0.5, f(x) = 0.125, Taylor f(x) = 0.128, |f(x) - Taylor f(x)| = 0.0030000000000000027\n"
|
| 435 |
+
]
|
| 436 |
+
}
|
| 437 |
+
],
|
| 438 |
+
"source": [
|
| 439 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.5,f(0.5),taf(0.5),np.abs(f(0.5)-taf(0.5))))"
|
| 440 |
+
]
|
| 441 |
+
},
|
| 442 |
+
{
|
| 443 |
+
"cell_type": "code",
|
| 444 |
+
"execution_count": 22,
|
| 445 |
+
"metadata": {},
|
| 446 |
+
"outputs": [
|
| 447 |
+
{
|
| 448 |
+
"name": "stdout",
|
| 449 |
+
"output_type": "stream",
|
| 450 |
+
"text": [
|
| 451 |
+
"x = 0.8, f(x) = 0.128, Taylor f(x) = 0.22399999999999998, |f(x) - Taylor f(x)| = 0.09599999999999997\n"
|
| 452 |
+
]
|
| 453 |
+
}
|
| 454 |
+
],
|
| 455 |
+
"source": [
|
| 456 |
+
"print('x = {}, f(x) = {}, Taylor f(x) = {}, |f(x) - Taylor f(x)| = {}'.format(0.8,f(0.8),taf(0.8),np.abs(f(0.8)-taf(0.8))))"
|
| 457 |
+
]
|
| 458 |
+
}
|
| 459 |
+
],
|
| 460 |
+
"metadata": {
|
| 461 |
+
"kernelspec": {
|
| 462 |
+
"display_name": "Python 3",
|
| 463 |
+
"language": "python",
|
| 464 |
+
"name": "python3"
|
| 465 |
+
},
|
| 466 |
+
"language_info": {
|
| 467 |
+
"codemirror_mode": {
|
| 468 |
+
"name": "ipython",
|
| 469 |
+
"version": 3
|
| 470 |
+
},
|
| 471 |
+
"file_extension": ".py",
|
| 472 |
+
"mimetype": "text/x-python",
|
| 473 |
+
"name": "python",
|
| 474 |
+
"nbconvert_exporter": "python",
|
| 475 |
+
"pygments_lexer": "ipython3",
|
| 476 |
+
"version": "3.7.3"
|
| 477 |
+
}
|
| 478 |
+
},
|
| 479 |
+
"nbformat": 4,
|
| 480 |
+
"nbformat_minor": 4
|
| 481 |
+
}
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
https://pandas.pydata.org/
|
| 2 |
+
https://platzi.com/cursos/pandas/
|
| 3 |
+
https://matplotlib.org/3.3.2/api/_as_gen/matplotlib.pyplot.scatter.html
|
| 4 |
+
https://colab.research.google.com/drive/1a9z-u3RUndOQYqAe_J1-JfdCzHNo5pWM?usp=sharing
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-Regresión Lineal con Datos Geográficos y Socioeconómicos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:16f35955a2e1714317f0c3cc8c00610259a58972d6de89ba4de11910fb9baa35
|
| 3 |
+
size 208308772
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-Regresión Lineal con Datos Geográficos y Socioeconómicos.vtt
ADDED
|
@@ -0,0 +1,1084 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.840 --> 00:00:06.960
|
| 4 |
+
Hola. En esta clase vamos a ver una
|
| 5 |
+
|
| 6 |
+
00:00:06.960 --> 00:00:09.760
|
| 7 |
+
regresión lineal, vamos a ver cómo a partir
|
| 8 |
+
|
| 9 |
+
00:00:09.760 --> 00:00:14.900
|
| 10 |
+
de funciones afines podemos construir aproximaciones hacia datos.
|
| 11 |
+
|
| 12 |
+
00:00:15.264 --> 00:00:16.965
|
| 13 |
+
Este va a ser uno de los proyectos
|
| 14 |
+
|
| 15 |
+
00:00:17.105 --> 00:00:19.425
|
| 16 |
+
más fuertes que vamos a utilizar hacia el
|
| 17 |
+
|
| 18 |
+
00:00:19.425 --> 00:00:22.625
|
| 19 |
+
futuro. Recuerda que este curso se divide en
|
| 20 |
+
|
| 21 |
+
00:00:22.625 --> 00:00:25.285
|
| 22 |
+
tres módulos, el de vectores, el de matrices
|
| 23 |
+
|
| 24 |
+
00:00:25.744 --> 00:00:28.890
|
| 25 |
+
y uno de aplicaciones del algebra lineal. En
|
| 26 |
+
|
| 27 |
+
00:00:28.890 --> 00:00:31.449
|
| 28 |
+
las aplicaciones del algebra lineal vamos a retomar
|
| 29 |
+
|
| 30 |
+
00:00:31.449 --> 00:00:32.970
|
| 31 |
+
este ejemplo y lo vamos a hacer con
|
| 32 |
+
|
| 33 |
+
00:00:32.970 --> 00:00:35.450
|
| 34 |
+
muchísimo más detalle y vamos a hacerlo mucho
|
| 35 |
+
|
| 36 |
+
00:00:35.450 --> 00:00:38.329
|
| 37 |
+
más profundidad explicando detalles que aquí nos vamos
|
| 38 |
+
|
| 39 |
+
00:00:38.329 --> 00:00:40.809
|
| 40 |
+
a saltar. Si te sientes perdido de dónde
|
| 41 |
+
|
| 42 |
+
00:00:40.809 --> 00:00:44.445
|
| 43 |
+
vienen algunos coeficientes, no te preocupes, esos los
|
| 44 |
+
|
| 45 |
+
00:00:44.445 --> 00:00:49.085
|
| 46 |
+
explicaremos en dos cursos adelante. Sin más, vamos
|
| 47 |
+
|
| 48 |
+
00:00:49.085 --> 00:00:52.765
|
| 49 |
+
a la computadora. Este es un nuevo notebook,
|
| 50 |
+
|
| 51 |
+
00:00:52.765 --> 00:00:55.245
|
| 52 |
+
pero no te preocupes, como siempre lo tendrás
|
| 53 |
+
|
| 54 |
+
00:00:55.245 --> 00:00:57.565
|
| 55 |
+
a la mano en los recursos, podrás hacer
|
| 56 |
+
|
| 57 |
+
00:00:57.565 --> 00:01:00.550
|
| 58 |
+
una copia y trabajar con él. Ahora, vamos
|
| 59 |
+
|
| 60 |
+
00:01:00.550 --> 00:01:04.069
|
| 61 |
+
a empezar considerando esta función afín. Este tipo
|
| 62 |
+
|
| 63 |
+
00:01:04.069 --> 00:01:06.470
|
| 64 |
+
de funciones ya la hemos visto, y ahora
|
| 65 |
+
|
| 66 |
+
00:01:06.470 --> 00:01:09.430
|
| 67 |
+
les vamos a llamar modelos de regresión. Le
|
| 68 |
+
|
| 69 |
+
00:01:09.430 --> 00:01:12.325
|
| 70 |
+
vamos a llamar modelos de regresión y a
|
| 71 |
+
|
| 72 |
+
00:01:12.325 --> 00:01:15.284
|
| 73 |
+
los elementos del vector x le vamos a
|
| 74 |
+
|
| 75 |
+
00:01:15.284 --> 00:01:19.845
|
| 76 |
+
llamar regresores. De igual manera, a y el
|
| 77 |
+
|
| 78 |
+
00:01:19.845 --> 00:01:23.860
|
| 79 |
+
gorrito le vamos a llamar predicción. Hay que
|
| 80 |
+
|
| 81 |
+
00:01:23.860 --> 00:01:26.340
|
| 82 |
+
notar que la regresión es un modelo, es
|
| 83 |
+
|
| 84 |
+
00:01:26.340 --> 00:01:29.700
|
| 85 |
+
decir, que nos estamos aproximando a estimar una
|
| 86 |
+
|
| 87 |
+
00:01:29.700 --> 00:01:34.340
|
| 88 |
+
variable dependiente y, y algunas veces, a esta
|
| 89 |
+
|
| 90 |
+
00:01:34.340 --> 00:01:37.594
|
| 91 |
+
variable dependiente y también se le llama label,
|
| 92 |
+
|
| 93 |
+
00:01:37.814 --> 00:01:43.414
|
| 94 |
+
etiqueta o resultado esperado. Al vector b se
|
| 95 |
+
|
| 96 |
+
00:01:43.414 --> 00:01:46.375
|
| 97 |
+
le denomina el vector de los pesos, mientras
|
| 98 |
+
|
| 99 |
+
00:01:46.375 --> 00:01:49.115
|
| 100 |
+
que al escalar b se le llama offset
|
| 101 |
+
|
| 102 |
+
00:01:49.335 --> 00:01:53.890
|
| 103 |
+
o bias. En conjunto, b y beta son
|
| 104 |
+
|
| 105 |
+
00:01:53.890 --> 00:01:57.650
|
| 106 |
+
los parámetros de la regresión. Recordamos que la
|
| 107 |
+
|
| 108 |
+
00:01:57.650 --> 00:02:00.370
|
| 109 |
+
notación y, y es muy importante hacer este
|
| 110 |
+
|
| 111 |
+
00:02:00.370 --> 00:02:04.675
|
| 112 |
+
énfasis, nos hace alusión a que es un
|
| 113 |
+
|
| 114 |
+
00:02:04.675 --> 00:02:09.095
|
| 115 |
+
estimado o una predicción esperada respecto al resultado
|
| 116 |
+
|
| 117 |
+
00:02:09.475 --> 00:02:14.455
|
| 118 |
+
y. Ahora bien, vamos a la notación simplificada
|
| 119 |
+
|
| 120 |
+
00:02:14.515 --> 00:02:18.620
|
| 121 |
+
para un modelo de regresión. Cuando hacemos la
|
| 122 |
+
|
| 123 |
+
00:02:18.620 --> 00:02:22.880
|
| 124 |
+
concatenación de vectores, esta nos puede servir para
|
| 125 |
+
|
| 126 |
+
00:02:23.100 --> 00:02:27.440
|
| 127 |
+
expresar, cuando tenemos muchos vectores, bloques de vectores
|
| 128 |
+
|
| 129 |
+
00:02:27.660 --> 00:02:31.120
|
| 130 |
+
y tener vectores comprimidos, y así tener notación
|
| 131 |
+
|
| 132 |
+
00:02:31.260 --> 00:02:36.365
|
| 133 |
+
más sencilla. En el caso de esta ecuación
|
| 134 |
+
|
| 135 |
+
00:02:36.365 --> 00:02:40.205
|
| 136 |
+
nos ayudará muchísimo. Notemos que podemos definir el
|
| 137 |
+
|
| 138 |
+
00:02:40.205 --> 00:02:45.200
|
| 139 |
+
n más un vector beta como en la
|
| 140 |
+
|
| 141 |
+
00:02:45.220 --> 00:02:50.380
|
| 142 |
+
primer componente ponemos el escalar v y después
|
| 143 |
+
|
| 144 |
+
00:02:50.380 --> 00:02:54.860
|
| 145 |
+
concatenamos el vector beta que teníamos anteriormente. Y
|
| 146 |
+
|
| 147 |
+
00:02:54.860 --> 00:02:58.240
|
| 148 |
+
de igual forma tenemos el n más uno
|
| 149 |
+
|
| 150 |
+
00:02:58.540 --> 00:03:02.275
|
| 151 |
+
vector x transpuesta, como poniendo un uno en
|
| 152 |
+
|
| 153 |
+
00:03:02.275 --> 00:03:05.735
|
| 154 |
+
la primer componente y concatenamos con el vector
|
| 155 |
+
|
| 156 |
+
00:03:05.795 --> 00:03:09.395
|
| 157 |
+
x que ya conocíamos. De esta manera, nosotros
|
| 158 |
+
|
| 159 |
+
00:03:09.395 --> 00:03:12.355
|
| 160 |
+
podemos expresar esta ecuación afín, esta ecuación de
|
| 161 |
+
|
| 162 |
+
00:03:12.355 --> 00:03:17.100
|
| 163 |
+
acá, como la multiplicación de estos dos bloques
|
| 164 |
+
|
| 165 |
+
00:03:17.100 --> 00:03:21.280
|
| 166 |
+
de vectores, y esto lo podemos expresar simplemente
|
| 167 |
+
|
| 168 |
+
00:03:21.420 --> 00:03:28.895
|
| 169 |
+
como x traspuesta por beta. Por simplicidad, algunas
|
| 170 |
+
|
| 171 |
+
00:03:28.895 --> 00:03:35.215
|
| 172 |
+
veces simplemente se escribe la predicción llego rito
|
| 173 |
+
|
| 174 |
+
00:03:35.215 --> 00:03:39.540
|
| 175 |
+
igual a x transpuesta por b, por beta,
|
| 176 |
+
|
| 177 |
+
00:03:39.540 --> 00:03:43.220
|
| 178 |
+
donde estamos sobreentendiendo que esta es la construcción
|
| 179 |
+
|
| 180 |
+
00:03:43.220 --> 00:03:46.200
|
| 181 |
+
que estamos utilizando. Va a estar sobre entendido
|
| 182 |
+
|
| 183 |
+
00:03:46.260 --> 00:03:48.340
|
| 184 |
+
que aquí ya está incluido el offset, el
|
| 185 |
+
|
| 186 |
+
00:03:48.340 --> 00:03:53.075
|
| 187 |
+
BIOS. Ahora entendido esto, vamos a pasar a
|
| 188 |
+
|
| 189 |
+
00:03:53.075 --> 00:03:59.315
|
| 190 |
+
un ejemplo de regresión. Ahora, vamos a comenzar
|
| 191 |
+
|
| 192 |
+
00:03:59.315 --> 00:04:02.034
|
| 193 |
+
con un ejemplo de regresión. Para este ejemplo,
|
| 194 |
+
|
| 195 |
+
00:04:02.034 --> 00:04:04.915
|
| 196 |
+
vamos a considerar los datos del Golden Oak
|
| 197 |
+
|
| 198 |
+
00:04:04.915 --> 00:04:07.940
|
| 199 |
+
Research Group. El Golden Oak Research Group, y
|
| 200 |
+
|
| 201 |
+
00:04:07.940 --> 00:04:09.620
|
| 202 |
+
sobre todo la base de datos que vamos
|
| 203 |
+
|
| 204 |
+
00:04:09.620 --> 00:04:13.300
|
| 205 |
+
a estar utilizando, correlaciona los ingresos por casa
|
| 206 |
+
|
| 207 |
+
00:04:13.300 --> 00:04:16.420
|
| 208 |
+
promedio con la latitud y la longitud, al
|
| 209 |
+
|
| 210 |
+
00:04:16.420 --> 00:04:20.274
|
| 211 |
+
igual que los códigos postales. Tú vas a
|
| 212 |
+
|
| 213 |
+
00:04:20.274 --> 00:04:24.835
|
| 214 |
+
encontrar en esta clase anexo al notebook una
|
| 215 |
+
|
| 216 |
+
00:04:24.835 --> 00:04:28.195
|
| 217 |
+
serie de documentos. Dentro de ellos vas a
|
| 218 |
+
|
| 219 |
+
00:04:28.195 --> 00:04:37.410
|
| 220 |
+
poder encontrar incomedb G0RG. Si nosotros lo abrimos,
|
| 221 |
+
|
| 222 |
+
00:04:37.410 --> 00:04:39.330
|
| 223 |
+
veremos que es una base en donde está
|
| 224 |
+
|
| 225 |
+
00:04:39.330 --> 00:04:42.210
|
| 226 |
+
un ID, el el código del estado, el
|
| 227 |
+
|
| 228 |
+
00:04:42.210 --> 00:04:46.195
|
| 229 |
+
nombre del estado, la abreviación de ese estado,
|
| 230 |
+
|
| 231 |
+
00:04:46.195 --> 00:04:56.035
|
| 232 |
+
el country, la ciudad, el lugar de el
|
| 233 |
+
|
| 234 |
+
00:04:56.035 --> 00:04:57.735
|
| 235 |
+
lugar de donde es dentro de esa ciudad,
|
| 236 |
+
|
| 237 |
+
00:05:00.140 --> 00:05:03.340
|
| 238 |
+
El tipo, o sea, si es una ciudad,
|
| 239 |
+
|
| 240 |
+
00:05:03.340 --> 00:05:04.860
|
| 241 |
+
si es un pueblo, si es una gran
|
| 242 |
+
|
| 243 |
+
00:05:04.860 --> 00:05:09.040
|
| 244 |
+
urbe. Vamos a encontrar también los códigos postales,
|
| 245 |
+
|
| 246 |
+
00:05:09.340 --> 00:05:13.765
|
| 247 |
+
vamos a encontrar los códigos de área, vamos
|
| 248 |
+
|
| 249 |
+
00:05:13.765 --> 00:05:16.565
|
| 250 |
+
a encontrar la latitud y la longitud, vamos
|
| 251 |
+
|
| 252 |
+
00:05:16.565 --> 00:05:19.465
|
| 253 |
+
a encontrar el salario promedio que se registró,
|
| 254 |
+
|
| 255 |
+
00:05:20.565 --> 00:05:23.764
|
| 256 |
+
la mediana del salario de de ingreso por
|
| 257 |
+
|
| 258 |
+
00:05:23.764 --> 00:05:29.000
|
| 259 |
+
casa y la desviación estándar. Dentro de esta
|
| 260 |
+
|
| 261 |
+
00:05:29.000 --> 00:05:32.200
|
| 262 |
+
misma o vas a encontrar esta carpeta, y
|
| 263 |
+
|
| 264 |
+
00:05:32.200 --> 00:05:36.040
|
| 265 |
+
esta carpeta tiene este PDF de definitions. Aquí
|
| 266 |
+
|
| 267 |
+
00:05:36.040 --> 00:05:40.205
|
| 268 |
+
están definidos cada una de las columnas de
|
| 269 |
+
|
| 270 |
+
00:05:40.745 --> 00:05:43.865
|
| 271 |
+
este dataset. Por ejemplo, el ID te dice
|
| 272 |
+
|
| 273 |
+
00:05:43.865 --> 00:05:46.105
|
| 274 |
+
que es tipo carácter y es el ID
|
| 275 |
+
|
| 276 |
+
00:05:46.105 --> 00:05:49.005
|
| 277 |
+
de la locación donde fue analizado la data.
|
| 278 |
+
|
| 279 |
+
00:05:50.345 --> 00:05:53.145
|
| 280 |
+
Otro ejemplo sería, por ejemplo, el área code.
|
| 281 |
+
|
| 282 |
+
00:05:53.145 --> 00:05:55.440
|
| 283 |
+
El área code es un carácter, te dice
|
| 284 |
+
|
| 285 |
+
00:05:55.440 --> 00:05:59.360
|
| 286 |
+
que es de tipo carácter, y tiene el
|
| 287 |
+
|
| 288 |
+
00:05:59.360 --> 00:06:02.560
|
| 289 |
+
ZIP code reportado por el censo de Estados
|
| 290 |
+
|
| 291 |
+
00:06:02.560 --> 00:06:07.440
|
| 292 |
+
Unidos, y es el ZIP más cercano a
|
| 293 |
+
|
| 294 |
+
00:06:07.440 --> 00:06:11.785
|
| 295 |
+
la longitud donde se hizo la encuesta. O,
|
| 296 |
+
|
| 297 |
+
00:06:11.785 --> 00:06:14.264
|
| 298 |
+
por ejemplo, la latitud, en donde te dice
|
| 299 |
+
|
| 300 |
+
00:06:14.264 --> 00:06:16.525
|
| 301 |
+
que es un double, y esto te dice
|
| 302 |
+
|
| 303 |
+
00:06:16.825 --> 00:06:21.305
|
| 304 |
+
que es el salario promedio que reciben dada
|
| 305 |
+
|
| 306 |
+
00:06:21.305 --> 00:06:28.470
|
| 307 |
+
una locación específica. Ahora, aquí podrás encontrar la
|
| 308 |
+
|
| 309 |
+
00:06:28.470 --> 00:06:31.110
|
| 310 |
+
descripción de cada una de las columnas. Las
|
| 311 |
+
|
| 312 |
+
00:06:31.110 --> 00:06:34.310
|
| 313 |
+
que nosotros vamos a utilizar más adelante será
|
| 314 |
+
|
| 315 |
+
00:06:34.310 --> 00:06:37.430
|
| 316 |
+
lat, que representa la latitud, long, que representa
|
| 317 |
+
|
| 318 |
+
00:06:37.430 --> 00:06:41.765
|
| 319 |
+
la longitud, min, que representa el salario promedio
|
| 320 |
+
|
| 321 |
+
00:06:41.765 --> 00:06:45.445
|
| 322 |
+
que se está registrando en ese lugar. Más
|
| 323 |
+
|
| 324 |
+
00:06:45.445 --> 00:06:48.825
|
| 325 |
+
adelante también, para cerrar, usaremos el zip code.
|
| 326 |
+
|
| 327 |
+
00:06:49.125 --> 00:06:51.525
|
| 328 |
+
Si tienes alguna duda con este dataset, puedes
|
| 329 |
+
|
| 330 |
+
00:06:51.525 --> 00:06:53.970
|
| 331 |
+
venir a revisarlo aquí totalmente y están todas
|
| 332 |
+
|
| 333 |
+
00:06:53.970 --> 00:06:56.969
|
| 334 |
+
las definiciones por columna. De igual manera, vas
|
| 335 |
+
|
| 336 |
+
00:06:56.969 --> 00:07:00.210
|
| 337 |
+
a ver con Metodology, y es en donde
|
| 338 |
+
|
| 339 |
+
00:07:00.210 --> 00:07:03.750
|
| 340 |
+
explican cómo hicieron este estudio. Si tienes curiosidad,
|
| 341 |
+
|
| 342 |
+
00:07:03.810 --> 00:07:07.835
|
| 343 |
+
puedes venir a revisarlo aquí. Ahora bien, regresando
|
| 344 |
+
|
| 345 |
+
00:07:07.835 --> 00:07:11.995
|
| 346 |
+
a nuestro notebook, lo primero que vamos a
|
| 347 |
+
|
| 348 |
+
00:07:11.995 --> 00:07:14.955
|
| 349 |
+
hacer va a ser cargar nuestras bibliotecas. En
|
| 350 |
+
|
| 351 |
+
00:07:14.955 --> 00:07:18.795
|
| 352 |
+
esta ocasión, vamos a utilizar Matplotlib porque queremos
|
| 353 |
+
|
| 354 |
+
00:07:18.795 --> 00:07:23.440
|
| 355 |
+
visualizar. Vamos a utilizar Pandas para poder acceder
|
| 356 |
+
|
| 357 |
+
00:07:23.900 --> 00:07:26.060
|
| 358 |
+
a un tipo especial de objetos, que son
|
| 359 |
+
|
| 360 |
+
00:07:26.060 --> 00:07:30.800
|
| 361 |
+
los data frames. Pandas nos permite manipular conjuntos
|
| 362 |
+
|
| 363 |
+
00:07:31.020 --> 00:07:34.395
|
| 364 |
+
de información, data sets de información de una
|
| 365 |
+
|
| 366 |
+
00:07:34.395 --> 00:07:38.555
|
| 367 |
+
forma muy sencilla. Y también vamos a utilizar
|
| 368 |
+
|
| 369 |
+
00:07:38.555 --> 00:07:42.795
|
| 370 |
+
NumPy, como siempre. Ahora, la notación estándar o
|
| 371 |
+
|
| 372 |
+
00:07:42.795 --> 00:07:46.175
|
| 373 |
+
la nomenclatura estándar para cargar un CS un
|
| 374 |
+
|
| 375 |
+
00:07:46.315 --> 00:07:49.680
|
| 376 |
+
CSV es este, y aquí vamos a ejecutar
|
| 377 |
+
|
| 378 |
+
00:07:49.680 --> 00:07:55.700
|
| 379 |
+
estas instrucciones. Ejecutamos esta y ejecutamos también esta.
|
| 380 |
+
|
| 381 |
+
00:07:55.760 --> 00:07:57.520
|
| 382 |
+
Aquí lo que estoy haciendo es que estoy
|
| 383 |
+
|
| 384 |
+
00:07:57.520 --> 00:08:00.260
|
| 385 |
+
creando un data frame después de leer estos
|
| 386 |
+
|
| 387 |
+
00:08:00.400 --> 00:08:03.255
|
| 388 |
+
este archivo, este CSV, y va a quedar
|
| 389 |
+
|
| 390 |
+
00:08:03.315 --> 00:08:05.795
|
| 391 |
+
en DF. Vamos a ver cómo se ve
|
| 392 |
+
|
| 393 |
+
00:08:05.795 --> 00:08:08.995
|
| 394 |
+
DF. DF luce así, es casi como si
|
| 395 |
+
|
| 396 |
+
00:08:08.995 --> 00:08:15.255
|
| 397 |
+
viéramos SCSV. Podemos sacar funciones interesantes como solamente
|
| 398 |
+
|
| 399 |
+
00:08:15.385 --> 00:08:19.039
|
| 400 |
+
imprimir el head, y nos nos regresa los
|
| 401 |
+
|
| 402 |
+
00:08:19.039 --> 00:08:23.780
|
| 403 |
+
primeros cinco resultados, o también podemos reproducir, imprimir
|
| 404 |
+
|
| 405 |
+
00:08:24.000 --> 00:08:28.720
|
| 406 |
+
únicamente la cola. Notemos que la longitud de
|
| 407 |
+
|
| 408 |
+
00:08:28.720 --> 00:08:31.379
|
| 409 |
+
este dataset es de treinta y dos mil
|
| 410 |
+
|
| 411 |
+
00:08:31.919 --> 00:08:35.475
|
| 412 |
+
quinientos veinticinco, Es decir, si nosotros calculamos la
|
| 413 |
+
|
| 414 |
+
00:08:35.475 --> 00:08:42.595
|
| 415 |
+
longitud nos daremos cuenta que tiene treinta y
|
| 416 |
+
|
| 417 |
+
00:08:42.595 --> 00:08:46.950
|
| 418 |
+
dos mil quinientos veintiséis renglones de datos, Y
|
| 419 |
+
|
| 420 |
+
00:08:46.950 --> 00:08:51.210
|
| 421 |
+
también podemos nosotros calcular las columnas diez columns,
|
| 422 |
+
|
| 423 |
+
00:08:52.150 --> 00:08:57.430
|
| 424 |
+
y nos dice qué columnas tiene. Nos dice
|
| 425 |
+
|
| 426 |
+
00:08:57.430 --> 00:08:59.350
|
| 427 |
+
que esté el ID, el state code, el
|
| 428 |
+
|
| 429 |
+
00:08:59.350 --> 00:09:01.995
|
| 430 |
+
state name, etcétera. Y, de hecho, nos dice
|
| 431 |
+
|
| 432 |
+
00:09:01.995 --> 00:09:04.415
|
| 433 |
+
que tiene, vamos a ver cuántas columnas tiene.
|
| 434 |
+
|
| 435 |
+
00:09:07.035 --> 00:09:10.575
|
| 436 |
+
Tiene diecinueve columnas. Ahora, cada una de estas
|
| 437 |
+
|
| 438 |
+
00:09:10.954 --> 00:09:12.954
|
| 439 |
+
columnas, voy a regresar rapidísimo al a la
|
| 440 |
+
|
| 441 |
+
00:09:12.954 --> 00:09:18.139
|
| 442 |
+
visión del data frame, y vamos a ponerle
|
| 443 |
+
|
| 444 |
+
00:09:18.139 --> 00:09:22.880
|
| 445 |
+
el head. Cada una de estas columnas la
|
| 446 |
+
|
| 447 |
+
00:09:23.180 --> 00:09:27.260
|
| 448 |
+
podemos pensar como un vector, y entonces, más
|
| 449 |
+
|
| 450 |
+
00:09:27.260 --> 00:09:29.420
|
| 451 |
+
adelante vamos a poder acceder a cada una
|
| 452 |
+
|
| 453 |
+
00:09:29.420 --> 00:09:31.545
|
| 454 |
+
de estas y poder operar con cada una
|
| 455 |
+
|
| 456 |
+
00:09:31.545 --> 00:09:40.505
|
| 457 |
+
de ellas. Ahora, para responder las preguntas de
|
| 458 |
+
|
| 459 |
+
00:09:40.505 --> 00:09:43.160
|
| 460 |
+
qué data contiene la base de datos, basta
|
| 461 |
+
|
| 462 |
+
00:09:43.160 --> 00:09:45.960
|
| 463 |
+
con que hagamos un data frame o un
|
| 464 |
+
|
| 465 |
+
00:09:45.960 --> 00:09:49.080
|
| 466 |
+
DF. Head, y ya nos arroja y podemos
|
| 467 |
+
|
| 468 |
+
00:09:49.080 --> 00:09:51.320
|
| 469 |
+
visualizar qué tipo de datos contiene para poder
|
| 470 |
+
|
| 471 |
+
00:09:51.320 --> 00:09:54.780
|
| 472 |
+
responder eso. Para poder responder qué tamaño tiene,
|
| 473 |
+
|
| 474 |
+
00:09:54.920 --> 00:09:57.880
|
| 475 |
+
deberíamos de pensar qué significa que qué tamaño
|
| 476 |
+
|
| 477 |
+
00:09:57.880 --> 00:10:02.515
|
| 478 |
+
tenga. Si nos, si queremos saber cuál es
|
| 479 |
+
|
| 480 |
+
00:10:02.515 --> 00:10:06.035
|
| 481 |
+
la cantidad de datos que contiene, entonces esa
|
| 482 |
+
|
| 483 |
+
00:10:06.035 --> 00:10:09.495
|
| 484 |
+
pregunta sería la longitud que tiene el data
|
| 485 |
+
|
| 486 |
+
00:10:10.115 --> 00:10:13.800
|
| 487 |
+
frame por la longitud del número de columnas.
|
| 488 |
+
|
| 489 |
+
00:10:14.760 --> 00:10:20.200
|
| 490 |
+
Dif dot columns. Y eso nos diría que
|
| 491 |
+
|
| 492 |
+
00:10:20.200 --> 00:10:23.959
|
| 493 |
+
tiene seiscientos diecisiete mil novecientos noventa y cuatro
|
| 494 |
+
|
| 495 |
+
00:10:23.959 --> 00:10:27.019
|
| 496 |
+
datos. Pero si lo que queremos es responder
|
| 497 |
+
|
| 498 |
+
00:10:27.535 --> 00:10:31.615
|
| 499 |
+
cuántas renglones tiene, es decir, cuántos elementos va
|
| 500 |
+
|
| 501 |
+
00:10:31.615 --> 00:10:35.215
|
| 502 |
+
a tener cada uno de esos vectores, tiene
|
| 503 |
+
|
| 504 |
+
00:10:35.215 --> 00:10:39.390
|
| 505 |
+
treinta y dos mil quinientos veintiséis. Ahora bien,
|
| 506 |
+
|
| 507 |
+
00:10:39.710 --> 00:10:42.670
|
| 508 |
+
para este ejemplo, nuestros regresores van a ser
|
| 509 |
+
|
| 510 |
+
00:10:42.670 --> 00:10:47.730
|
| 511 |
+
la latitud y la longitud, mientras que nuestra
|
| 512 |
+
|
| 513 |
+
00:10:48.110 --> 00:10:53.170
|
| 514 |
+
nuestra variable dependiente, la que nosotros queremos predecir,
|
| 515 |
+
|
| 516 |
+
00:10:54.190 --> 00:10:56.185
|
| 517 |
+
va a ser el MIN, que es el
|
| 518 |
+
|
| 519 |
+
00:10:56.185 --> 00:10:59.625
|
| 520 |
+
salario promedio que se recibe en esas, o
|
| 521 |
+
|
| 522 |
+
00:10:59.625 --> 00:11:01.785
|
| 523 |
+
que se reporta en esa latitud y en
|
| 524 |
+
|
| 525 |
+
00:11:01.785 --> 00:11:07.464
|
| 526 |
+
esa longitud. Ahora, calcular el vector de predicciones
|
| 527 |
+
|
| 528 |
+
00:11:07.464 --> 00:11:10.710
|
| 529 |
+
y, lo lo que hay que hacer es
|
| 530 |
+
|
| 531 |
+
00:11:10.710 --> 00:11:14.470
|
| 532 |
+
calcular el el vector de predicciones y, ya
|
| 533 |
+
|
| 534 |
+
00:11:14.470 --> 00:11:16.230
|
| 535 |
+
que a cada uno de esos valores de
|
| 536 |
+
|
| 537 |
+
00:11:16.230 --> 00:11:19.450
|
| 538 |
+
latitud y de longitud les vamos a asignar
|
| 539 |
+
|
| 540 |
+
00:11:19.510 --> 00:11:22.275
|
| 541 |
+
o van a tener asignados un valor de
|
| 542 |
+
|
| 543 |
+
00:11:22.275 --> 00:11:25.555
|
| 544 |
+
mil. Entonces, este de aquí va a ser
|
| 545 |
+
|
| 546 |
+
00:11:25.555 --> 00:11:29.155
|
| 547 |
+
nuestra etiqueta o nuestro valor esperado, y gorrito,
|
| 548 |
+
|
| 549 |
+
00:11:29.155 --> 00:11:31.975
|
| 550 |
+
va a ser nuestra predicción, y nuestros regresores
|
| 551 |
+
|
| 552 |
+
00:11:32.035 --> 00:11:34.295
|
| 553 |
+
van a ser la latitud y la longitud.
|
| 554 |
+
|
| 555 |
+
00:11:34.900 --> 00:11:37.700
|
| 556 |
+
Un problema que tenemos aquí es que no
|
| 557 |
+
|
| 558 |
+
00:11:37.700 --> 00:11:40.580
|
| 559 |
+
tenemos la forma de calcular los valores de
|
| 560 |
+
|
| 561 |
+
00:11:40.580 --> 00:11:44.200
|
| 562 |
+
los parámetros o del vector de pesos, beta,
|
| 563 |
+
|
| 564 |
+
00:11:44.660 --> 00:11:48.824
|
| 565 |
+
y del offset. Estos parámetros de aquí vamos
|
| 566 |
+
|
| 567 |
+
00:11:48.824 --> 00:11:51.545
|
| 568 |
+
a asumir que ya vienen dados. Más adelante,
|
| 569 |
+
|
| 570 |
+
00:11:51.545 --> 00:11:54.105
|
| 571 |
+
en próximas clases, sobre todo en el módulo
|
| 572 |
+
|
| 573 |
+
00:11:54.105 --> 00:11:56.345
|
| 574 |
+
tres, vamos a estar tratando muchos problemas como
|
| 575 |
+
|
| 576 |
+
00:11:56.345 --> 00:12:00.480
|
| 577 |
+
este y ahí quedará mucho más claro. Ahora,
|
| 578 |
+
|
| 579 |
+
00:12:00.620 --> 00:12:03.899
|
| 580 |
+
ya asumiendo que esos son nuestros parámetros, podemos
|
| 581 |
+
|
| 582 |
+
00:12:03.899 --> 00:12:06.940
|
| 583 |
+
empezar a hacer las predicciones. Para hacer las
|
| 584 |
+
|
| 585 |
+
00:12:06.940 --> 00:12:10.079
|
| 586 |
+
predicciones, basta con que carguemos nuestra función afín.
|
| 587 |
+
|
| 588 |
+
00:12:10.620 --> 00:12:15.014
|
| 589 |
+
Aquí tenemos def predicciones igual a beta, Cargamos
|
| 590 |
+
|
| 591 |
+
00:12:15.035 --> 00:12:17.954
|
| 592 |
+
estos valores de beta aquí, setenta y cuatro
|
| 593 |
+
|
| 594 |
+
00:12:17.954 --> 00:12:20.274
|
| 595 |
+
punto ochenta y tres, setecientos cuarenta y cuatro
|
| 596 |
+
|
| 597 |
+
00:12:20.274 --> 00:12:23.475
|
| 598 |
+
punto ochenta y tres y menos ochenta y
|
| 599 |
+
|
| 600 |
+
00:12:23.475 --> 00:12:27.589
|
| 601 |
+
tres punto cuarenta y cinco. De igual manera,
|
| 602 |
+
|
| 603 |
+
00:12:27.589 --> 00:12:30.470
|
| 604 |
+
cargamos el offset. El offset es igual a
|
| 605 |
+
|
| 606 |
+
00:12:30.470 --> 00:12:34.330
|
| 607 |
+
treinta mil novecientos ochenta punto cuarenta y ocho.
|
| 608 |
+
|
| 609 |
+
00:12:35.830 --> 00:12:39.430
|
| 610 |
+
Y nosotros sabemos que la función para hacer
|
| 611 |
+
|
| 612 |
+
00:12:39.430 --> 00:12:45.085
|
| 613 |
+
la predicción es x y prima transpuesta por
|
| 614 |
+
|
| 615 |
+
00:12:45.085 --> 00:12:49.005
|
| 616 |
+
el vector de pesos más el offset. Entonces,
|
| 617 |
+
|
| 618 |
+
00:12:49.005 --> 00:12:51.485
|
| 619 |
+
aquí lo que tenemos es eso, el vector
|
| 620 |
+
|
| 621 |
+
00:12:51.485 --> 00:12:54.855
|
| 622 |
+
en el que evaluamos es x, entonces es
|
| 623 |
+
|
| 624 |
+
00:12:54.855 --> 00:12:59.970
|
| 625 |
+
x por beta más nuestro offset. Ejecutamos esta
|
| 626 |
+
|
| 627 |
+
00:12:59.970 --> 00:13:04.930
|
| 628 |
+
celda. Ahora, nosotros queremos sacar la la longitud
|
| 629 |
+
|
| 630 |
+
00:13:04.930 --> 00:13:08.545
|
| 631 |
+
y la latitud del data frame. Notemos que
|
| 632 |
+
|
| 633 |
+
00:13:08.545 --> 00:13:11.045
|
| 634 |
+
una forma para poder acceder a esas columnas
|
| 635 |
+
|
| 636 |
+
00:13:11.345 --> 00:13:14.385
|
| 637 |
+
únicamente es a través de la instrucción d
|
| 638 |
+
|
| 639 |
+
00:13:14.385 --> 00:13:18.325
|
| 640 |
+
f, corchetes cuadrados, y le ponemos el nombre
|
| 641 |
+
|
| 642 |
+
00:13:18.705 --> 00:13:21.025
|
| 643 |
+
de la columna. Por ejemplo, si quisiéramos la
|
| 644 |
+
|
| 645 |
+
00:13:21.025 --> 00:13:26.320
|
| 646 |
+
latitud, tenemos nada más lat, y nos arroja
|
| 647 |
+
|
| 648 |
+
00:13:26.380 --> 00:13:29.520
|
| 649 |
+
exactamente esto de aquí. Pero si nos damos
|
| 650 |
+
|
| 651 |
+
00:13:29.900 --> 00:13:33.020
|
| 652 |
+
cuenta, yo le voy a preguntar qué tipo
|
| 653 |
+
|
| 654 |
+
00:13:33.020 --> 00:13:38.795
|
| 655 |
+
es, y esto nos da que es un
|
| 656 |
+
|
| 657 |
+
00:13:38.795 --> 00:13:46.315
|
| 658 |
+
tipo Pandas.core.Series.Series. Nosotros hasta el momento hemos trabajado
|
| 659 |
+
|
| 660 |
+
00:13:46.315 --> 00:13:50.480
|
| 661 |
+
únicamente con numpy array y nos gustaría poder
|
| 662 |
+
|
| 663 |
+
00:13:50.480 --> 00:13:53.600
|
| 664 |
+
convertir esto en un numpy array. La forma
|
| 665 |
+
|
| 666 |
+
00:13:53.600 --> 00:13:55.680
|
| 667 |
+
de poder hacer eso es a través de
|
| 668 |
+
|
| 669 |
+
00:13:55.680 --> 00:14:00.560
|
| 670 |
+
la instrucción punto values, y lo que ya
|
| 671 |
+
|
| 672 |
+
00:14:00.560 --> 00:14:02.880
|
| 673 |
+
nos regresa es un numpy array de esos
|
| 674 |
+
|
| 675 |
+
00:14:02.880 --> 00:14:05.625
|
| 676 |
+
valores en orden, así que hay que comprobarlo.
|
| 677 |
+
|
| 678 |
+
00:14:06.005 --> 00:14:10.085
|
| 679 |
+
Le vamos a preguntar el tipo y nos
|
| 680 |
+
|
| 681 |
+
00:14:10.085 --> 00:14:13.785
|
| 682 |
+
dice, hola, soy un numpy array. Eso está
|
| 683 |
+
|
| 684 |
+
00:14:14.165 --> 00:14:16.645
|
| 685 |
+
perfecto, pero ahora lo que nosotros queremos son
|
| 686 |
+
|
| 687 |
+
00:14:16.645 --> 00:14:19.380
|
| 688 |
+
los vectores x, en donde la primera entrada
|
| 689 |
+
|
| 690 |
+
00:14:19.380 --> 00:14:21.380
|
| 691 |
+
es la latitud y la segunda es la
|
| 692 |
+
|
| 693 |
+
00:14:21.380 --> 00:14:25.400
|
| 694 |
+
longitud. Para poder acceder a eso, podemos utilizar
|
| 695 |
+
|
| 696 |
+
00:14:25.460 --> 00:14:30.600
|
| 697 |
+
ahora la instrucción de f, corchetes cuadrados, y
|
| 698 |
+
|
| 699 |
+
00:14:31.884 --> 00:14:34.444
|
| 700 |
+
lo que la intuición nos diría es que
|
| 701 |
+
|
| 702 |
+
00:14:34.444 --> 00:14:39.024
|
| 703 |
+
nosotros podemos meter aquí el lat coma long
|
| 704 |
+
|
| 705 |
+
00:14:39.565 --> 00:14:43.725
|
| 706 |
+
de la longitud. Y esto nos da un
|
| 707 |
+
|
| 708 |
+
00:14:43.725 --> 00:14:47.190
|
| 709 |
+
error, porque Pandas no sabe cómo interpretar esto.
|
| 710 |
+
|
| 711 |
+
00:14:47.590 --> 00:14:53.350
|
| 712 |
+
La sintaxis correcta sería que estos corchetes tuvieran
|
| 713 |
+
|
| 714 |
+
00:14:53.350 --> 00:14:55.850
|
| 715 |
+
adentro este vector, el vector de los nombres.
|
| 716 |
+
|
| 717 |
+
00:14:56.630 --> 00:14:59.370
|
| 718 |
+
Ahora, si nos damos cuenta, vamos a preguntar
|
| 719 |
+
|
| 720 |
+
00:14:59.830 --> 00:15:05.524
|
| 721 |
+
qué tipo de dato nos está arrojando, qué
|
| 722 |
+
|
| 723 |
+
00:15:05.524 --> 00:15:07.765
|
| 724 |
+
tipo de objeto. Y esto de aquí es
|
| 725 |
+
|
| 726 |
+
00:15:07.765 --> 00:15:10.865
|
| 727 |
+
un data frame, igual que DF completo, y
|
| 728 |
+
|
| 729 |
+
00:15:10.964 --> 00:15:15.240
|
| 730 |
+
nos gustaría poder convertir esto, pero donde las
|
| 731 |
+
|
| 732 |
+
00:15:15.240 --> 00:15:17.960
|
| 733 |
+
estas entradas estén dentro de un mismo vector,
|
| 734 |
+
|
| 735 |
+
00:15:17.960 --> 00:15:20.440
|
| 736 |
+
dentro de un mismo numpy array, a un
|
| 737 |
+
|
| 738 |
+
00:15:20.440 --> 00:15:23.800
|
| 739 |
+
vector que tenga todos estos vectores. Para hacer
|
| 740 |
+
|
| 741 |
+
00:15:23.800 --> 00:15:27.180
|
| 742 |
+
eso, bastará con que ejecutemos la la instrucción
|
| 743 |
+
|
| 744 |
+
00:15:27.400 --> 00:15:34.695
|
| 745 |
+
value. Values con la s. Y ya nos
|
| 746 |
+
|
| 747 |
+
00:15:34.695 --> 00:15:38.454
|
| 748 |
+
regresa vectores de manera ordenada, en donde el
|
| 749 |
+
|
| 750 |
+
00:15:38.454 --> 00:15:40.935
|
| 751 |
+
primero corresponde al primer valor de la longitud
|
| 752 |
+
|
| 753 |
+
00:15:40.935 --> 00:15:42.910
|
| 754 |
+
de la latitud y el otro es el
|
| 755 |
+
|
| 756 |
+
00:15:42.910 --> 00:15:44.750
|
| 757 |
+
primer valor de la longitud, y este es
|
| 758 |
+
|
| 759 |
+
00:15:44.750 --> 00:15:47.870
|
| 760 |
+
el primer renglón, el segundo renglón, el tercer
|
| 761 |
+
|
| 762 |
+
00:15:47.870 --> 00:15:51.070
|
| 763 |
+
renglón, y así hasta el n menos uno
|
| 764 |
+
|
| 765 |
+
00:15:51.070 --> 00:15:52.670
|
| 766 |
+
renglón, que en este caso es treinta y
|
| 767 |
+
|
| 768 |
+
00:15:52.670 --> 00:15:56.405
|
| 769 |
+
dos mil y algo. Ahora, esto lo podemos
|
| 770 |
+
|
| 771 |
+
00:15:56.405 --> 00:15:59.465
|
| 772 |
+
guardar de manera completa aquí en esta variable
|
| 773 |
+
|
| 774 |
+
00:15:59.605 --> 00:16:04.905
|
| 775 |
+
x mayúscula, entonces la ejecutamos. Y ahora, evaluar
|
| 776 |
+
|
| 777 |
+
00:16:05.005 --> 00:16:08.325
|
| 778 |
+
nuestras predicciones va a ser tan sencillo como
|
| 779 |
+
|
| 780 |
+
00:16:08.325 --> 00:16:12.320
|
| 781 |
+
evaluar el vector de predicciones, la función de
|
| 782 |
+
|
| 783 |
+
00:16:12.540 --> 00:16:17.100
|
| 784 |
+
predicciones en el vector XYA esto, esto de
|
| 785 |
+
|
| 786 |
+
00:16:17.100 --> 00:16:22.060
|
| 787 |
+
aquí, esta función nos va a regresar un
|
| 788 |
+
|
| 789 |
+
00:16:22.060 --> 00:16:24.060
|
| 790 |
+
un n vector, que es de tamaño treinta
|
| 791 |
+
|
| 792 |
+
00:16:24.060 --> 00:16:27.035
|
| 793 |
+
y dos mil y algo, y este lo
|
| 794 |
+
|
| 795 |
+
00:16:27.035 --> 00:16:29.615
|
| 796 |
+
vamos a asignar a la variable yeh hat.
|
| 797 |
+
|
| 798 |
+
00:16:33.755 --> 00:16:37.305
|
| 799 |
+
Ejecutado. Ahora veamos cómo se ve yeh hat.
|
| 800 |
+
|
| 801 |
+
00:16:39.389 --> 00:16:42.350
|
| 802 |
+
JHot es un conjunto, es un es un
|
| 803 |
+
|
| 804 |
+
00:16:42.350 --> 00:16:47.170
|
| 805 |
+
numpy array, miren, el type, es numpy array.
|
| 806 |
+
|
| 807 |
+
00:16:49.755 --> 00:16:53.595
|
| 808 |
+
Y además, le podemos preguntar también su longitud,
|
| 809 |
+
|
| 810 |
+
00:16:53.595 --> 00:16:56.415
|
| 811 |
+
y tiene treinta y dos mil quinientos veintiséis.
|
| 812 |
+
|
| 813 |
+
00:16:57.035 --> 00:17:01.435
|
| 814 |
+
Vamos a preguntarle la longitud que tiene a
|
| 815 |
+
|
| 816 |
+
00:17:01.435 --> 00:17:04.190
|
| 817 |
+
x, porque para cada una de las entradas
|
| 818 |
+
|
| 819 |
+
00:17:04.190 --> 00:17:06.589
|
| 820 |
+
de este vector x tiene que corresponder un
|
| 821 |
+
|
| 822 |
+
00:17:06.589 --> 00:17:08.750
|
| 823 |
+
valor de yehad, y vemos que sí, en
|
| 824 |
+
|
| 825 |
+
00:17:08.750 --> 00:17:11.390
|
| 826 |
+
efecto, tienen el mismo tamaño. Al menos ya
|
| 827 |
+
|
| 828 |
+
00:17:11.390 --> 00:17:13.890
|
| 829 |
+
sabemos que hay una correspondencia uno a uno.
|
| 830 |
+
|
| 831 |
+
00:17:15.015 --> 00:17:19.095
|
| 832 |
+
Ahora, nuestro valor al que queríamos aproximarnos era
|
| 833 |
+
|
| 834 |
+
00:17:19.095 --> 00:17:22.075
|
| 835 |
+
el valor de mil, que era el salario
|
| 836 |
+
|
| 837 |
+
00:17:22.215 --> 00:17:26.075
|
| 838 |
+
promedio reportado en cada uno de los hogares,
|
| 839 |
+
|
| 840 |
+
00:17:26.215 --> 00:17:29.420
|
| 841 |
+
en esa latitud y en esa longitud. Como
|
| 842 |
+
|
| 843 |
+
00:17:29.420 --> 00:17:31.360
|
| 844 |
+
queremos que eso sea un un p array,
|
| 845 |
+
|
| 846 |
+
00:17:31.580 --> 00:17:36.320
|
| 847 |
+
ejecutamos data frame o diez corchetes min dot
|
| 848 |
+
|
| 849 |
+
00:17:36.380 --> 00:17:39.360
|
| 850 |
+
values, y esto va a generar en y
|
| 851 |
+
|
| 852 |
+
00:17:42.345 --> 00:17:47.005
|
| 853 |
+
justamente ese vector. Ahora, vamos a ir rapidísimo
|
| 854 |
+
|
| 855 |
+
00:17:47.385 --> 00:17:51.865
|
| 856 |
+
a ejecutar la idea. Vamos a partir de
|
| 857 |
+
|
| 858 |
+
00:17:51.865 --> 00:17:59.460
|
| 859 |
+
aquí. Si yo tengo mis datos y en
|
| 860 |
+
|
| 861 |
+
00:17:59.460 --> 00:18:03.460
|
| 862 |
+
este voy a graficar los datos reales, y
|
| 863 |
+
|
| 864 |
+
00:18:03.460 --> 00:18:08.455
|
| 865 |
+
en este voy a graficar las predicciones, Lo
|
| 866 |
+
|
| 867 |
+
00:18:08.455 --> 00:18:11.195
|
| 868 |
+
ideal es que si yo gráfico las predicciones,
|
| 869 |
+
|
| 870 |
+
00:18:13.255 --> 00:18:15.255
|
| 871 |
+
le voy a poner a este una p
|
| 872 |
+
|
| 873 |
+
00:18:15.255 --> 00:18:19.815
|
| 874 |
+
de predicciones o una y, gorrito. Y a
|
| 875 |
+
|
| 876 |
+
00:18:19.815 --> 00:18:26.580
|
| 877 |
+
este tengo y. Si yo gráfico, vamos a
|
| 878 |
+
|
| 879 |
+
00:18:26.580 --> 00:18:29.940
|
| 880 |
+
ponerlos al revés. Simplemente le quito de aquí
|
| 881 |
+
|
| 882 |
+
00:18:29.940 --> 00:18:33.240
|
| 883 |
+
el gorrito y se lo pongo a k.
|
| 884 |
+
|
| 885 |
+
00:18:34.340 --> 00:18:38.200
|
| 886 |
+
Ahora, si nosotros pensamos graficar en este eje
|
| 887 |
+
|
| 888 |
+
00:18:38.625 --> 00:18:42.784
|
| 889 |
+
el valor que nosotros sabemos que medimos de
|
| 890 |
+
|
| 891 |
+
00:18:42.784 --> 00:18:46.325
|
| 892 |
+
los de los incoming mensuales de los salarios
|
| 893 |
+
|
| 894 |
+
00:18:47.345 --> 00:18:50.065
|
| 895 |
+
mensuales promedio de las personas, y en este
|
| 896 |
+
|
| 897 |
+
00:18:50.065 --> 00:18:53.150
|
| 898 |
+
tenemos lo que nosotros predecimos que debería de
|
| 899 |
+
|
| 900 |
+
00:18:53.150 --> 00:18:54.990
|
| 901 |
+
ser a partir de la latitud y la
|
| 902 |
+
|
| 903 |
+
00:18:54.990 --> 00:19:00.030
|
| 904 |
+
longitud, en el mejor de los casos, este
|
| 905 |
+
|
| 906 |
+
00:19:00.030 --> 00:19:06.855
|
| 907 |
+
debería de quedar como una línea recta. Así,
|
| 908 |
+
|
| 909 |
+
00:19:07.955 --> 00:19:10.675
|
| 910 |
+
porque eso significaría que a cada valor que
|
| 911 |
+
|
| 912 |
+
00:19:10.675 --> 00:19:17.795
|
| 913 |
+
yo tomé de aquí, supongamos aquí, se le
|
| 914 |
+
|
| 915 |
+
00:19:17.795 --> 00:19:22.170
|
| 916 |
+
asignó exactamente el mismo valor o el valor
|
| 917 |
+
|
| 918 |
+
00:19:22.170 --> 00:19:28.090
|
| 919 |
+
que debería de ser en la predicción. Entonces,
|
| 920 |
+
|
| 921 |
+
00:19:28.090 --> 00:19:30.090
|
| 922 |
+
en el mejor de los escenarios y cuando
|
| 923 |
+
|
| 924 |
+
00:19:30.090 --> 00:19:33.050
|
| 925 |
+
no hay ningún error, esto debería de corresponder
|
| 926 |
+
|
| 927 |
+
00:19:33.050 --> 00:19:35.965
|
| 928 |
+
o debería de tener alguna recta. En la
|
| 929 |
+
|
| 930 |
+
00:19:35.965 --> 00:19:38.764
|
| 931 |
+
realidad, lo que nosotros vamos a ver es
|
| 932 |
+
|
| 933 |
+
00:19:38.764 --> 00:19:42.605
|
| 934 |
+
que se forman ciertos puntos alrededor de esta
|
| 935 |
+
|
| 936 |
+
00:19:42.605 --> 00:19:44.365
|
| 937 |
+
recta o alrededor de lo que sería la
|
| 938 |
+
|
| 939 |
+
00:19:44.365 --> 00:19:49.005
|
| 940 |
+
mejor recta. Pero siempre y cuando sigan este
|
| 941 |
+
|
| 942 |
+
00:19:49.005 --> 00:19:54.600
|
| 943 |
+
comportamiento de recta, significa que nuestra predicción estuvo
|
| 944 |
+
|
| 945 |
+
00:19:54.899 --> 00:19:57.539
|
| 946 |
+
bien, y a esta le podemos medir el
|
| 947 |
+
|
| 948 |
+
00:19:57.539 --> 00:20:01.299
|
| 949 |
+
error. Ahora, si todos los puntos aparecen súper
|
| 950 |
+
|
| 951 |
+
00:20:01.299 --> 00:20:02.980
|
| 952 |
+
lejos de lo que debería de ser la
|
| 953 |
+
|
| 954 |
+
00:20:02.980 --> 00:20:07.695
|
| 955 |
+
recta, como por ejemplo hasta acá, eso significa
|
| 956 |
+
|
| 957 |
+
00:20:07.695 --> 00:20:10.015
|
| 958 |
+
que nuestros parámetros están mal y hay que
|
| 959 |
+
|
| 960 |
+
00:20:10.015 --> 00:20:13.475
|
| 961 |
+
reajustar los parámetros, esto es reentrenar el modelo
|
| 962 |
+
|
| 963 |
+
00:20:13.535 --> 00:20:17.940
|
| 964 |
+
para volver a hacerlo bien. Ahora, eso es
|
| 965 |
+
|
| 966 |
+
00:20:17.940 --> 00:20:20.020
|
| 967 |
+
lo que vamos a hacer aquí. Vamos a
|
| 968 |
+
|
| 969 |
+
00:20:20.020 --> 00:20:22.660
|
| 970 |
+
plottear puntos, Scatter lo que nos hace es
|
| 971 |
+
|
| 972 |
+
00:20:22.660 --> 00:20:25.460
|
| 973 |
+
hacer plot de puntitos, de y hat en
|
| 974 |
+
|
| 975 |
+
00:20:25.460 --> 00:20:28.340
|
| 976 |
+
el eje x, de y, que son los
|
| 977 |
+
|
| 978 |
+
00:20:28.340 --> 00:20:32.485
|
| 979 |
+
valores que esperábamos, y vamos a ponerlos un
|
| 980 |
+
|
| 981 |
+
00:20:32.485 --> 00:20:34.885
|
| 982 |
+
marker con una bolita y que sean de
|
| 983 |
+
|
| 984 |
+
00:20:34.885 --> 00:20:40.405
|
| 985 |
+
color rojo. Ahora, por otro lado, vamos a
|
| 986 |
+
|
| 987 |
+
00:20:40.405 --> 00:20:43.205
|
| 988 |
+
plotear una línea punteada que sea y coma
|
| 989 |
+
|
| 990 |
+
00:20:43.205 --> 00:20:45.190
|
| 991 |
+
y. Y coma y es el mejor de
|
| 992 |
+
|
| 993 |
+
00:20:45.190 --> 00:20:48.250
|
| 994 |
+
los escenarios, a donde deberíamos de haber llegado.
|
| 995 |
+
|
| 996 |
+
00:20:48.470 --> 00:20:50.870
|
| 997 |
+
Los puntos deberían de estar alrededor de esta
|
| 998 |
+
|
| 999 |
+
00:20:50.870 --> 00:20:56.890
|
| 1000 |
+
línea si nuestros parámetros están bien. Y bueno,
|
| 1001 |
+
|
| 1002 |
+
00:20:57.725 --> 00:21:00.125
|
| 1003 |
+
gran decepción aquí, eso significa que hay que
|
| 1004 |
+
|
| 1005 |
+
00:21:00.125 --> 00:21:03.485
|
| 1006 |
+
reentrenar nuestros parámetros. Si se dan cuenta, solamente
|
| 1007 |
+
|
| 1008 |
+
00:21:03.485 --> 00:21:05.805
|
| 1009 |
+
hay una pequeña zona de parámetros que están
|
| 1010 |
+
|
| 1011 |
+
00:21:05.805 --> 00:21:08.125
|
| 1012 |
+
cerca de aquí, una pequeña zona de parámetros
|
| 1013 |
+
|
| 1014 |
+
00:21:08.125 --> 00:21:10.365
|
| 1015 |
+
que están cerca de aquí y otra pequeña
|
| 1016 |
+
|
| 1017 |
+
00:21:10.365 --> 00:21:12.545
|
| 1018 |
+
zona de parámetros que están cerca de aquí.
|
| 1019 |
+
|
| 1020 |
+
00:21:12.900 --> 00:21:14.740
|
| 1021 |
+
Nosotros nos gustaría que para cada una de
|
| 1022 |
+
|
| 1023 |
+
00:21:14.740 --> 00:21:17.780
|
| 1024 |
+
las latitudes y longitudes que escogimos hubiera un
|
| 1025 |
+
|
| 1026 |
+
00:21:17.780 --> 00:21:22.680
|
| 1027 |
+
vector de householding correspondiendo exactamente con ese main.
|
| 1028 |
+
|
| 1029 |
+
00:21:25.635 --> 00:21:27.715
|
| 1030 |
+
Ahora, lo que te queda a ti para
|
| 1031 |
+
|
| 1032 |
+
00:21:27.715 --> 00:21:32.035
|
| 1033 |
+
hacer es repetir todo este proceso, y lo
|
| 1034 |
+
|
| 1035 |
+
00:21:32.035 --> 00:21:36.195
|
| 1036 |
+
vas a repetir con estos nuevos parámetros, y
|
| 1037 |
+
|
| 1038 |
+
00:21:36.195 --> 00:21:39.820
|
| 1039 |
+
aquí vamos a introducir zip code. Entonces, no
|
| 1040 |
+
|
| 1041 |
+
00:21:39.820 --> 00:21:43.019
|
| 1042 |
+
vamos a utilizar como regresores únicamente latitud y
|
| 1043 |
+
|
| 1044 |
+
00:21:43.019 --> 00:21:46.399
|
| 1045 |
+
longitud, sino vamos a introducir también zip code
|
| 1046 |
+
|
| 1047 |
+
00:21:46.460 --> 00:21:49.259
|
| 1048 |
+
dentro de los regresores. Los parámetros con los
|
| 1049 |
+
|
| 1050 |
+
00:21:49.259 --> 00:21:50.940
|
| 1051 |
+
que vas a ajustar el modelo van a
|
| 1052 |
+
|
| 1053 |
+
00:21:50.940 --> 00:21:54.425
|
| 1054 |
+
ser estos de aquí. La pregunta que me
|
| 1055 |
+
|
| 1056 |
+
00:21:54.425 --> 00:21:58.125
|
| 1057 |
+
gustaría que respondiera es si mejoras, si mejora
|
| 1058 |
+
|
| 1059 |
+
00:21:58.265 --> 00:22:01.065
|
| 1060 |
+
la predicción introduciendo el nuevo regresor y con
|
| 1061 |
+
|
| 1062 |
+
00:22:01.065 --> 00:22:06.320
|
| 1063 |
+
los nuevos parámetros. Si te sentiste perdido en
|
| 1064 |
+
|
| 1065 |
+
00:22:06.779 --> 00:22:08.299
|
| 1066 |
+
esta clase, te invito a que tomes el
|
| 1067 |
+
|
| 1068 |
+
00:22:08.299 --> 00:22:10.380
|
| 1069 |
+
curso de introducción a Python que tenemos en
|
| 1070 |
+
|
| 1071 |
+
00:22:10.380 --> 00:22:13.019
|
| 1072 |
+
Platzi. De igual manera, si te interesó el
|
| 1073 |
+
|
| 1074 |
+
00:22:13.019 --> 00:22:16.539
|
| 1075 |
+
manejo de datos usando Pandas, tenemos un curso
|
| 1076 |
+
|
| 1077 |
+
00:22:16.539 --> 00:22:19.497
|
| 1078 |
+
de análisis de datos con Pandas también en
|
| 1079 |
+
|
| 1080 |
+
00:22:19.497 --> 00:22:21.997
|
| 1081 |
+
Platzi. Seguro que te será muy útil aprenderlo.
|
| 1082 |
+
|
| 1083 |
+
00:22:23.096 --> 00:22:24.637
|
| 1084 |
+
Nos vemos en la siguiente clase.
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/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/03-Funciones lineales/07-definitions_7d274da2-c190-43fe-9c19-8f10487943ee.pdf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0c4db2b297bfff02ef22133c1c7276a59feb984d749f791ecc1aa23a162029cf
|
| 3 |
+
size 176858
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-income_db_gorg_283cf1bb-74a9-4cf5-9255-da690e2b3e64.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-income_methodology_f503f6ab-8d26-417d-946f-a4c86f70bc87.pdf
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8d37270ff38c77e11ac0bbfa62051e8207958f107d10322980f4ecffe88c81d0
|
| 3 |
+
size 647958
|
a/Curso de Introducción al Álgebra Lineal Vectores/03-Funciones lineales/07-regresion_lineal_306f23ad-b398-409f-a70f-32fc99b2cb56.ipynb
ADDED
|
@@ -0,0 +1,487 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {},
|
| 6 |
+
"source": [
|
| 7 |
+
"# 7. Regresión lineal"
|
| 8 |
+
]
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"cell_type": "markdown",
|
| 12 |
+
"metadata": {},
|
| 13 |
+
"source": [
|
| 14 |
+
"Usaremos la función afín:\n",
|
| 15 |
+
"\n",
|
| 16 |
+
"$$\n",
|
| 17 |
+
"\\hat{y} = \\mathbf{x}^{T}\\boldsymbol{\\beta} + v\n",
|
| 18 |
+
"$$\n",
|
| 19 |
+
"\n",
|
| 20 |
+
"Esta función es llamada un **modelo de regresión**. En este caso las entradas de $\\mathbf{x}$ son llamadas *regresores* y a $\\hat{y}$ se le llama *predicción*. Hay que notar que la regresión es un modelo, nos estamos aproximando a estimar nuestra variable dependiente $y$, algunas veces llamada también *label*, *etiqueta* o *resultado esperado*. "
|
| 21 |
+
]
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"cell_type": "markdown",
|
| 25 |
+
"metadata": {},
|
| 26 |
+
"source": [
|
| 27 |
+
"Al vector $\\mathbf{\\beta}$ se le denomina el *vector de pesos* mientras que el escalar $v$ es llamado el offset o bias. En conjunto $v$ y $\\beta$ son los parámetros de la regresión. Recordamos que la notación $\\hat{y}$ es usando para enfatizar que es un estimado o prediccción del resultado esperado $y$. "
|
| 28 |
+
]
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
"cell_type": "markdown",
|
| 32 |
+
"metadata": {},
|
| 33 |
+
"source": [
|
| 34 |
+
"## 7.1 Notación simplificada de un modelo de regresión. "
|
| 35 |
+
]
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"cell_type": "markdown",
|
| 39 |
+
"metadata": {},
|
| 40 |
+
"source": [
|
| 41 |
+
"La concatenación de vectores nos puede ayudar a expresar de manera más sencilla la ecuación de regresión. Notemos que podemos definir el $(n+1)$-vector $\\boldsymbol{\\tilde{\\beta}}^{T} = [v\\; \\boldsymbol{\\beta}]$ y de igual forma el $(n+1)$-vector $\\mathbf{\\widetilde{x}}^{T} = [1 \\; \\boldsymbol{x}]$ de manera que:\n",
|
| 42 |
+
"\n",
|
| 43 |
+
"$$\n",
|
| 44 |
+
"\\hat{y} = \\mathbf{x}^{T}\\boldsymbol{\\beta} + v = \\begin{bmatrix}1\\\\ \\mathbf{x}\\end{bmatrix}^{T} \\begin{bmatrix} v\\\\\\boldsymbol{\\beta} \\end{bmatrix} = \\mathbf{\\widetilde{x}}^{T} \\boldsymbol{\\widetilde{\\beta}}\n",
|
| 45 |
+
"$$\n",
|
| 46 |
+
"\n",
|
| 47 |
+
"Por simplicidad algunas veces solamente se escribe $\\hat{y}=\\mathbf{x}^{T}\\boldsymbol{\\beta}$ sobreentendiendo nuestra construcción. "
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"cell_type": "markdown",
|
| 52 |
+
"metadata": {},
|
| 53 |
+
"source": [
|
| 54 |
+
"## 7.2 Un ejemplo de regresión. "
|
| 55 |
+
]
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"cell_type": "markdown",
|
| 59 |
+
"metadata": {},
|
| 60 |
+
"source": [
|
| 61 |
+
"Vamos a considerar el siguiente ejemplo donde vamos a analizar una base de datos del *GOLDEN OAK RESEARCH GROUP*. Nuestra variable dependiente serán el ingreso promedio por casa y nuestros regresores serán simplemente la latitud y la longitud. \n",
|
| 62 |
+
"\n",
|
| 63 |
+
"Para poder cargar la base vamos a importar en conjunto a numpy también **pandas** la cual es una biblioteca de manejo y manipulación de bases de datos tomando como bases sus objetos *dataframe*. "
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"cell_type": "code",
|
| 68 |
+
"execution_count": 1,
|
| 69 |
+
"metadata": {},
|
| 70 |
+
"outputs": [],
|
| 71 |
+
"source": [
|
| 72 |
+
"import matplotlib.pyplot as plt # Para poder realizar visualizaciones\n",
|
| 73 |
+
"import pandas as pd # Para poder acceder a pandas\n",
|
| 74 |
+
"import numpy as np # Para poder tener vectores"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "code",
|
| 79 |
+
"execution_count": 2,
|
| 80 |
+
"metadata": {},
|
| 81 |
+
"outputs": [],
|
| 82 |
+
"source": [
|
| 83 |
+
"df = pd.read_csv('income_db_GORG.csv')"
|
| 84 |
+
]
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"cell_type": "code",
|
| 88 |
+
"execution_count": 10,
|
| 89 |
+
"metadata": {},
|
| 90 |
+
"outputs": [
|
| 91 |
+
{
|
| 92 |
+
"data": {
|
| 93 |
+
"text/html": [
|
| 94 |
+
"<div>\n",
|
| 95 |
+
"<style scoped>\n",
|
| 96 |
+
" .dataframe tbody tr th:only-of-type {\n",
|
| 97 |
+
" vertical-align: middle;\n",
|
| 98 |
+
" }\n",
|
| 99 |
+
"\n",
|
| 100 |
+
" .dataframe tbody tr th {\n",
|
| 101 |
+
" vertical-align: top;\n",
|
| 102 |
+
" }\n",
|
| 103 |
+
"\n",
|
| 104 |
+
" .dataframe thead th {\n",
|
| 105 |
+
" text-align: right;\n",
|
| 106 |
+
" }\n",
|
| 107 |
+
"</style>\n",
|
| 108 |
+
"<table border=\"1\" class=\"dataframe\">\n",
|
| 109 |
+
" <thead>\n",
|
| 110 |
+
" <tr style=\"text-align: right;\">\n",
|
| 111 |
+
" <th></th>\n",
|
| 112 |
+
" <th>id</th>\n",
|
| 113 |
+
" <th>State_Code</th>\n",
|
| 114 |
+
" <th>State_Name</th>\n",
|
| 115 |
+
" <th>State_ab</th>\n",
|
| 116 |
+
" <th>County</th>\n",
|
| 117 |
+
" <th>City</th>\n",
|
| 118 |
+
" <th>Place</th>\n",
|
| 119 |
+
" <th>Type</th>\n",
|
| 120 |
+
" <th>Primary</th>\n",
|
| 121 |
+
" <th>Zip_Code</th>\n",
|
| 122 |
+
" <th>Area_Code</th>\n",
|
| 123 |
+
" <th>ALand</th>\n",
|
| 124 |
+
" <th>AWater</th>\n",
|
| 125 |
+
" <th>Lat</th>\n",
|
| 126 |
+
" <th>Lon</th>\n",
|
| 127 |
+
" <th>Mean</th>\n",
|
| 128 |
+
" <th>Median</th>\n",
|
| 129 |
+
" <th>Stdev</th>\n",
|
| 130 |
+
" <th>sum_w</th>\n",
|
| 131 |
+
" </tr>\n",
|
| 132 |
+
" </thead>\n",
|
| 133 |
+
" <tbody>\n",
|
| 134 |
+
" <tr>\n",
|
| 135 |
+
" <th>0</th>\n",
|
| 136 |
+
" <td>1011000</td>\n",
|
| 137 |
+
" <td>1</td>\n",
|
| 138 |
+
" <td>Alabama</td>\n",
|
| 139 |
+
" <td>AL</td>\n",
|
| 140 |
+
" <td>Mobile County</td>\n",
|
| 141 |
+
" <td>Chickasaw</td>\n",
|
| 142 |
+
" <td>Chickasaw city</td>\n",
|
| 143 |
+
" <td>City</td>\n",
|
| 144 |
+
" <td>place</td>\n",
|
| 145 |
+
" <td>36611</td>\n",
|
| 146 |
+
" <td>251</td>\n",
|
| 147 |
+
" <td>10894952</td>\n",
|
| 148 |
+
" <td>909156</td>\n",
|
| 149 |
+
" <td>30.771450</td>\n",
|
| 150 |
+
" <td>-88.079697</td>\n",
|
| 151 |
+
" <td>38773</td>\n",
|
| 152 |
+
" <td>30506</td>\n",
|
| 153 |
+
" <td>33101</td>\n",
|
| 154 |
+
" <td>1638.260513</td>\n",
|
| 155 |
+
" </tr>\n",
|
| 156 |
+
" <tr>\n",
|
| 157 |
+
" <th>1</th>\n",
|
| 158 |
+
" <td>1011010</td>\n",
|
| 159 |
+
" <td>1</td>\n",
|
| 160 |
+
" <td>Alabama</td>\n",
|
| 161 |
+
" <td>AL</td>\n",
|
| 162 |
+
" <td>Barbour County</td>\n",
|
| 163 |
+
" <td>Louisville</td>\n",
|
| 164 |
+
" <td>Clio city</td>\n",
|
| 165 |
+
" <td>City</td>\n",
|
| 166 |
+
" <td>place</td>\n",
|
| 167 |
+
" <td>36048</td>\n",
|
| 168 |
+
" <td>334</td>\n",
|
| 169 |
+
" <td>26070325</td>\n",
|
| 170 |
+
" <td>23254</td>\n",
|
| 171 |
+
" <td>31.708516</td>\n",
|
| 172 |
+
" <td>-85.611039</td>\n",
|
| 173 |
+
" <td>37725</td>\n",
|
| 174 |
+
" <td>19528</td>\n",
|
| 175 |
+
" <td>43789</td>\n",
|
| 176 |
+
" <td>258.017685</td>\n",
|
| 177 |
+
" </tr>\n",
|
| 178 |
+
" <tr>\n",
|
| 179 |
+
" <th>2</th>\n",
|
| 180 |
+
" <td>1011020</td>\n",
|
| 181 |
+
" <td>1</td>\n",
|
| 182 |
+
" <td>Alabama</td>\n",
|
| 183 |
+
" <td>AL</td>\n",
|
| 184 |
+
" <td>Shelby County</td>\n",
|
| 185 |
+
" <td>Columbiana</td>\n",
|
| 186 |
+
" <td>Columbiana city</td>\n",
|
| 187 |
+
" <td>City</td>\n",
|
| 188 |
+
" <td>place</td>\n",
|
| 189 |
+
" <td>35051</td>\n",
|
| 190 |
+
" <td>205</td>\n",
|
| 191 |
+
" <td>44835274</td>\n",
|
| 192 |
+
" <td>261034</td>\n",
|
| 193 |
+
" <td>33.191452</td>\n",
|
| 194 |
+
" <td>-86.615618</td>\n",
|
| 195 |
+
" <td>54606</td>\n",
|
| 196 |
+
" <td>31930</td>\n",
|
| 197 |
+
" <td>57348</td>\n",
|
| 198 |
+
" <td>926.031000</td>\n",
|
| 199 |
+
" </tr>\n",
|
| 200 |
+
" <tr>\n",
|
| 201 |
+
" <th>3</th>\n",
|
| 202 |
+
" <td>1011030</td>\n",
|
| 203 |
+
" <td>1</td>\n",
|
| 204 |
+
" <td>Alabama</td>\n",
|
| 205 |
+
" <td>AL</td>\n",
|
| 206 |
+
" <td>Mobile County</td>\n",
|
| 207 |
+
" <td>Satsuma</td>\n",
|
| 208 |
+
" <td>Creola city</td>\n",
|
| 209 |
+
" <td>City</td>\n",
|
| 210 |
+
" <td>place</td>\n",
|
| 211 |
+
" <td>36572</td>\n",
|
| 212 |
+
" <td>251</td>\n",
|
| 213 |
+
" <td>36878729</td>\n",
|
| 214 |
+
" <td>2374530</td>\n",
|
| 215 |
+
" <td>30.874343</td>\n",
|
| 216 |
+
" <td>-88.009442</td>\n",
|
| 217 |
+
" <td>63919</td>\n",
|
| 218 |
+
" <td>52814</td>\n",
|
| 219 |
+
" <td>47707</td>\n",
|
| 220 |
+
" <td>378.114619</td>\n",
|
| 221 |
+
" </tr>\n",
|
| 222 |
+
" <tr>\n",
|
| 223 |
+
" <th>4</th>\n",
|
| 224 |
+
" <td>1011040</td>\n",
|
| 225 |
+
" <td>1</td>\n",
|
| 226 |
+
" <td>Alabama</td>\n",
|
| 227 |
+
" <td>AL</td>\n",
|
| 228 |
+
" <td>Mobile County</td>\n",
|
| 229 |
+
" <td>Dauphin Island</td>\n",
|
| 230 |
+
" <td>Dauphin Island</td>\n",
|
| 231 |
+
" <td>Town</td>\n",
|
| 232 |
+
" <td>place</td>\n",
|
| 233 |
+
" <td>36528</td>\n",
|
| 234 |
+
" <td>251</td>\n",
|
| 235 |
+
" <td>16204185</td>\n",
|
| 236 |
+
" <td>413605152</td>\n",
|
| 237 |
+
" <td>30.250913</td>\n",
|
| 238 |
+
" <td>-88.171268</td>\n",
|
| 239 |
+
" <td>77948</td>\n",
|
| 240 |
+
" <td>67225</td>\n",
|
| 241 |
+
" <td>54270</td>\n",
|
| 242 |
+
" <td>282.320328</td>\n",
|
| 243 |
+
" </tr>\n",
|
| 244 |
+
" </tbody>\n",
|
| 245 |
+
"</table>\n",
|
| 246 |
+
"</div>"
|
| 247 |
+
],
|
| 248 |
+
"text/plain": [
|
| 249 |
+
" id State_Code State_Name State_ab County City \\\n",
|
| 250 |
+
"0 1011000 1 Alabama AL Mobile County Chickasaw \n",
|
| 251 |
+
"1 1011010 1 Alabama AL Barbour County Louisville \n",
|
| 252 |
+
"2 1011020 1 Alabama AL Shelby County Columbiana \n",
|
| 253 |
+
"3 1011030 1 Alabama AL Mobile County Satsuma \n",
|
| 254 |
+
"4 1011040 1 Alabama AL Mobile County Dauphin Island \n",
|
| 255 |
+
"\n",
|
| 256 |
+
" Place Type Primary Zip_Code Area_Code ALand AWater \\\n",
|
| 257 |
+
"0 Chickasaw city City place 36611 251 10894952 909156 \n",
|
| 258 |
+
"1 Clio city City place 36048 334 26070325 23254 \n",
|
| 259 |
+
"2 Columbiana city City place 35051 205 44835274 261034 \n",
|
| 260 |
+
"3 Creola city City place 36572 251 36878729 2374530 \n",
|
| 261 |
+
"4 Dauphin Island Town place 36528 251 16204185 413605152 \n",
|
| 262 |
+
"\n",
|
| 263 |
+
" Lat Lon Mean Median Stdev sum_w \n",
|
| 264 |
+
"0 30.771450 -88.079697 38773 30506 33101 1638.260513 \n",
|
| 265 |
+
"1 31.708516 -85.611039 37725 19528 43789 258.017685 \n",
|
| 266 |
+
"2 33.191452 -86.615618 54606 31930 57348 926.031000 \n",
|
| 267 |
+
"3 30.874343 -88.009442 63919 52814 47707 378.114619 \n",
|
| 268 |
+
"4 30.250913 -88.171268 77948 67225 54270 282.320328 "
|
| 269 |
+
]
|
| 270 |
+
},
|
| 271 |
+
"execution_count": 10,
|
| 272 |
+
"metadata": {},
|
| 273 |
+
"output_type": "execute_result"
|
| 274 |
+
}
|
| 275 |
+
],
|
| 276 |
+
"source": [
|
| 277 |
+
"df.head()"
|
| 278 |
+
]
|
| 279 |
+
},
|
| 280 |
+
{
|
| 281 |
+
"cell_type": "markdown",
|
| 282 |
+
"metadata": {},
|
| 283 |
+
"source": [
|
| 284 |
+
"¿Qué data contiene la base de datos?"
|
| 285 |
+
]
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"cell_type": "markdown",
|
| 289 |
+
"metadata": {},
|
| 290 |
+
"source": [
|
| 291 |
+
"¿Qué tamaño tiene?"
|
| 292 |
+
]
|
| 293 |
+
},
|
| 294 |
+
{
|
| 295 |
+
"cell_type": "code",
|
| 296 |
+
"execution_count": 11,
|
| 297 |
+
"metadata": {},
|
| 298 |
+
"outputs": [
|
| 299 |
+
{
|
| 300 |
+
"data": {
|
| 301 |
+
"text/plain": [
|
| 302 |
+
"617994"
|
| 303 |
+
]
|
| 304 |
+
},
|
| 305 |
+
"execution_count": 11,
|
| 306 |
+
"metadata": {},
|
| 307 |
+
"output_type": "execute_result"
|
| 308 |
+
}
|
| 309 |
+
],
|
| 310 |
+
"source": [
|
| 311 |
+
"len(df)*len(df.columns)"
|
| 312 |
+
]
|
| 313 |
+
},
|
| 314 |
+
{
|
| 315 |
+
"cell_type": "code",
|
| 316 |
+
"execution_count": 12,
|
| 317 |
+
"metadata": {},
|
| 318 |
+
"outputs": [
|
| 319 |
+
{
|
| 320 |
+
"data": {
|
| 321 |
+
"text/plain": [
|
| 322 |
+
"32526"
|
| 323 |
+
]
|
| 324 |
+
},
|
| 325 |
+
"execution_count": 12,
|
| 326 |
+
"metadata": {},
|
| 327 |
+
"output_type": "execute_result"
|
| 328 |
+
}
|
| 329 |
+
],
|
| 330 |
+
"source": [
|
| 331 |
+
"len(df)"
|
| 332 |
+
]
|
| 333 |
+
},
|
| 334 |
+
{
|
| 335 |
+
"cell_type": "markdown",
|
| 336 |
+
"metadata": {},
|
| 337 |
+
"source": [
|
| 338 |
+
"Ahora bien, como comenté nuestros regresores en términos de columnas son:\n",
|
| 339 |
+
"* Lat\n",
|
| 340 |
+
"* Lon\n",
|
| 341 |
+
"\n",
|
| 342 |
+
"Mientras que nuestra variable dependiente es:\n",
|
| 343 |
+
"* Mean "
|
| 344 |
+
]
|
| 345 |
+
},
|
| 346 |
+
{
|
| 347 |
+
"cell_type": "markdown",
|
| 348 |
+
"metadata": {},
|
| 349 |
+
"source": [
|
| 350 |
+
"Ahora, calcular el vector predicciones $\\hat{y}$ ya que cada valor de Lat y Lon tendrá asociado un valor de Mean y es justo el que queremos aproximar con $\\hat{y}$. Ahora, como no forma parte de este curso ya tenemos unos parámetros dados:\n",
|
| 351 |
+
"\n",
|
| 352 |
+
"$$\n",
|
| 353 |
+
"v = 30980.48, \\qquad \\boldsymbol{\\beta} = \\begin{bmatrix}744.83 \\\\ -83.45\\end{bmatrix}\n",
|
| 354 |
+
"$$\n",
|
| 355 |
+
"\n",
|
| 356 |
+
"Con lo cual ya podemos realizar las predicciones $\\hat{y}_{i} = \\mathbf{x}^{T}_{i} \\boldsymbol{\\beta} + v$"
|
| 357 |
+
]
|
| 358 |
+
},
|
| 359 |
+
{
|
| 360 |
+
"cell_type": "code",
|
| 361 |
+
"execution_count": 13,
|
| 362 |
+
"metadata": {},
|
| 363 |
+
"outputs": [],
|
| 364 |
+
"source": [
|
| 365 |
+
"def pred(x):\n",
|
| 366 |
+
" beta = np.array([744.83,-83.45])\n",
|
| 367 |
+
" v = 30980.48\n",
|
| 368 |
+
" return x@beta + v"
|
| 369 |
+
]
|
| 370 |
+
},
|
| 371 |
+
{
|
| 372 |
+
"cell_type": "code",
|
| 373 |
+
"execution_count": 18,
|
| 374 |
+
"metadata": {},
|
| 375 |
+
"outputs": [
|
| 376 |
+
{
|
| 377 |
+
"data": {
|
| 378 |
+
"text/plain": [
|
| 379 |
+
"numpy.ndarray"
|
| 380 |
+
]
|
| 381 |
+
},
|
| 382 |
+
"execution_count": 18,
|
| 383 |
+
"metadata": {},
|
| 384 |
+
"output_type": "execute_result"
|
| 385 |
+
}
|
| 386 |
+
],
|
| 387 |
+
"source": [
|
| 388 |
+
"type(df['Lat'].values)"
|
| 389 |
+
]
|
| 390 |
+
},
|
| 391 |
+
{
|
| 392 |
+
"cell_type": "code",
|
| 393 |
+
"execution_count": 25,
|
| 394 |
+
"metadata": {},
|
| 395 |
+
"outputs": [],
|
| 396 |
+
"source": [
|
| 397 |
+
"X = df[['Lat','Lon']].values"
|
| 398 |
+
]
|
| 399 |
+
},
|
| 400 |
+
{
|
| 401 |
+
"cell_type": "code",
|
| 402 |
+
"execution_count": 26,
|
| 403 |
+
"metadata": {},
|
| 404 |
+
"outputs": [],
|
| 405 |
+
"source": [
|
| 406 |
+
"Y_hat = pred(X)"
|
| 407 |
+
]
|
| 408 |
+
},
|
| 409 |
+
{
|
| 410 |
+
"cell_type": "code",
|
| 411 |
+
"execution_count": 31,
|
| 412 |
+
"metadata": {},
|
| 413 |
+
"outputs": [],
|
| 414 |
+
"source": [
|
| 415 |
+
"Y = df['Mean'].values"
|
| 416 |
+
]
|
| 417 |
+
},
|
| 418 |
+
{
|
| 419 |
+
"cell_type": "code",
|
| 420 |
+
"execution_count": 32,
|
| 421 |
+
"metadata": {},
|
| 422 |
+
"outputs": [
|
| 423 |
+
{
|
| 424 |
+
"data": {
|
| 425 |
+
"image/png": "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\n",
|
| 426 |
+
"text/plain": [
|
| 427 |
+
"<Figure size 840x840 with 1 Axes>"
|
| 428 |
+
]
|
| 429 |
+
},
|
| 430 |
+
"metadata": {
|
| 431 |
+
"needs_background": "light"
|
| 432 |
+
},
|
| 433 |
+
"output_type": "display_data"
|
| 434 |
+
}
|
| 435 |
+
],
|
| 436 |
+
"source": [
|
| 437 |
+
"fig, ax = plt.subplots(1,1,figsize=(7,7),dpi=120)\n",
|
| 438 |
+
"\n",
|
| 439 |
+
"ax.scatter(Y_hat,Y,marker ='o',color='red')\n",
|
| 440 |
+
"ax.plot(Y,Y,ls='--')\n",
|
| 441 |
+
"plt.show()"
|
| 442 |
+
]
|
| 443 |
+
},
|
| 444 |
+
{
|
| 445 |
+
"cell_type": "markdown",
|
| 446 |
+
"metadata": {},
|
| 447 |
+
"source": [
|
| 448 |
+
"¿Cómo calculamos el error?"
|
| 449 |
+
]
|
| 450 |
+
},
|
| 451 |
+
{
|
| 452 |
+
"cell_type": "markdown",
|
| 453 |
+
"metadata": {},
|
| 454 |
+
"source": [
|
| 455 |
+
"## 7.3 Ejercicio. \n",
|
| 456 |
+
"\n",
|
| 457 |
+
"Considera que ya no solamente usamos Lat y Lon como regresores sino también comenzamos a usar Zip_Code como regresor, ajustar ese modelo nos deja con los siguientes parámetros:\n",
|
| 458 |
+
"$$\n",
|
| 459 |
+
"v = 4152.02, \\qquad \\boldsymbol{\\beta} = \\begin{bmatrix}6.55490348e+02 \\\\ 5.75918372e+02 \\\\ -2.94216316e-01\\end{bmatrix}\n",
|
| 460 |
+
"$$\n",
|
| 461 |
+
"\n",
|
| 462 |
+
"¿Mejora la preducción al introducir un nuevo regresor?"
|
| 463 |
+
]
|
| 464 |
+
}
|
| 465 |
+
],
|
| 466 |
+
"metadata": {
|
| 467 |
+
"kernelspec": {
|
| 468 |
+
"display_name": "Python 3",
|
| 469 |
+
"language": "python",
|
| 470 |
+
"name": "python3"
|
| 471 |
+
},
|
| 472 |
+
"language_info": {
|
| 473 |
+
"codemirror_mode": {
|
| 474 |
+
"name": "ipython",
|
| 475 |
+
"version": 3
|
| 476 |
+
},
|
| 477 |
+
"file_extension": ".py",
|
| 478 |
+
"mimetype": "text/x-python",
|
| 479 |
+
"name": "python",
|
| 480 |
+
"nbconvert_exporter": "python",
|
| 481 |
+
"pygments_lexer": "ipython3",
|
| 482 |
+
"version": "3.7.3"
|
| 483 |
+
}
|
| 484 |
+
},
|
| 485 |
+
"nbformat": 4,
|
| 486 |
+
"nbformat_minor": 4
|
| 487 |
+
}
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://colab.research.google.com/drive/1pg6fxVEmEDlpou3JbEtnlZzcVckPGS8F?usp=sharing
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-Propiedades y Cálculo de la Norma de Vectores.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3ad6650957a636a9329ffa037a876b8d5b659bf54dd4842d15677757aa05c8ec
|
| 3 |
+
size 140716199
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-Propiedades y Cálculo de la Norma de Vectores.vtt
ADDED
|
@@ -0,0 +1,763 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.120 --> 00:00:07.460
|
| 4 |
+
Hola. Hasta el momento hemos aprendido bastante. Sabemos
|
| 5 |
+
|
| 6 |
+
00:00:07.520 --> 00:00:09.920
|
| 7 |
+
cómo interactúan los vectores entre ellos y cómo
|
| 8 |
+
|
| 9 |
+
00:00:09.920 --> 00:00:12.799
|
| 10 |
+
operar entre vectores, sabemos hacer sumas y producto
|
| 11 |
+
|
| 12 |
+
00:00:12.799 --> 00:00:16.795
|
| 13 |
+
punto. También sabemos cómo multiplicar escalares con vectores,
|
| 14 |
+
|
| 15 |
+
00:00:17.095 --> 00:00:20.135
|
| 16 |
+
y sabemos que los vectores escalan, es decir,
|
| 17 |
+
|
| 18 |
+
00:00:20.135 --> 00:00:21.895
|
| 19 |
+
se hacen más grandes o se hacen más
|
| 20 |
+
|
| 21 |
+
00:00:21.895 --> 00:00:27.270
|
| 22 |
+
pequeños, e incluso cambian de sentido. También hemos
|
| 23 |
+
|
| 24 |
+
00:00:27.270 --> 00:00:30.470
|
| 25 |
+
aprendido cómo interactúan los vectores con funciones, y
|
| 26 |
+
|
| 27 |
+
00:00:30.470 --> 00:00:33.190
|
| 28 |
+
hemos aprendido cómo utilizar los vectores para poder
|
| 29 |
+
|
| 30 |
+
00:00:33.190 --> 00:00:36.489
|
| 31 |
+
hacer regresiones lineales. E incluso, a este momento
|
| 32 |
+
|
| 33 |
+
00:00:36.550 --> 00:00:38.870
|
| 34 |
+
ya hemos realizado un modelo muy básico y
|
| 35 |
+
|
| 36 |
+
00:00:38.870 --> 00:00:41.934
|
| 37 |
+
rudimentario, pero ya hicimos un primer modelo de
|
| 38 |
+
|
| 39 |
+
00:00:41.934 --> 00:00:45.215
|
| 40 |
+
análisis de sentimientos, utilizando únicamente lo que has
|
| 41 |
+
|
| 42 |
+
00:00:45.215 --> 00:00:49.135
|
| 43 |
+
aprendido hasta estas clases. Hasta este momento, hemos
|
| 44 |
+
|
| 45 |
+
00:00:49.135 --> 00:00:51.535
|
| 46 |
+
utilizado algunas palabras para los vectores que no
|
| 47 |
+
|
| 48 |
+
00:00:51.535 --> 00:00:54.260
|
| 49 |
+
he definido, como la magnitud, como tampoco he
|
| 50 |
+
|
| 51 |
+
00:00:54.260 --> 00:00:57.379
|
| 52 |
+
definido el sentido ni la orientación. El sentido
|
| 53 |
+
|
| 54 |
+
00:00:57.379 --> 00:01:00.659
|
| 55 |
+
quedó muy claro cuando utilizamos la multiplicación con
|
| 56 |
+
|
| 57 |
+
00:01:00.659 --> 00:01:03.699
|
| 58 |
+
escalares, donde vimos que se invertía el sentido,
|
| 59 |
+
|
| 60 |
+
00:01:03.699 --> 00:01:08.024
|
| 61 |
+
hacia dónde apuntaba la flecha. En este caso,
|
| 62 |
+
|
| 63 |
+
00:01:09.045 --> 00:01:13.284
|
| 64 |
+
vamos a tratar la magnitud, y entonces, con
|
| 65 |
+
|
| 66 |
+
00:01:13.284 --> 00:01:16.164
|
| 67 |
+
la magnitud vamos a introducir el concepto de
|
| 68 |
+
|
| 69 |
+
00:01:16.164 --> 00:01:19.204
|
| 70 |
+
la norma para después poder introducir el concepto
|
| 71 |
+
|
| 72 |
+
00:01:19.204 --> 00:01:22.979
|
| 73 |
+
de la distancia entre vectores. Sin más, vamos
|
| 74 |
+
|
| 75 |
+
00:01:22.979 --> 00:01:27.140
|
| 76 |
+
a la computadora. Ahora, en esta clase tenemos
|
| 77 |
+
|
| 78 |
+
00:01:27.140 --> 00:01:29.780
|
| 79 |
+
un notebook nuevo. Como siempre, no te preocupes,
|
| 80 |
+
|
| 81 |
+
00:01:29.780 --> 00:01:31.539
|
| 82 |
+
este notebook va a estar disponible para ti
|
| 83 |
+
|
| 84 |
+
00:01:31.539 --> 00:01:34.805
|
| 85 |
+
los recursos. Lo que vamos a empezar definiendo
|
| 86 |
+
|
| 87 |
+
00:01:34.865 --> 00:01:37.745
|
| 88 |
+
es una nueva operación para los vectores. Esta
|
| 89 |
+
|
| 90 |
+
00:01:37.745 --> 00:01:40.225
|
| 91 |
+
operación se va a llamar norma, y la
|
| 92 |
+
|
| 93 |
+
00:01:40.225 --> 00:01:41.665
|
| 94 |
+
norma lo que nos va a dar es
|
| 95 |
+
|
| 96 |
+
00:01:41.665 --> 00:01:44.805
|
| 97 |
+
la longitud del vector, la magnitud que tiene.
|
| 98 |
+
|
| 99 |
+
00:01:45.585 --> 00:01:49.170
|
| 100 |
+
En este caso, nosotros vamos a partir de
|
| 101 |
+
|
| 102 |
+
00:01:49.170 --> 00:01:52.790
|
| 103 |
+
la norma euclidiana, así se denomina esta operación,
|
| 104 |
+
|
| 105 |
+
00:01:53.050 --> 00:01:55.250
|
| 106 |
+
y eso se debe a que es la
|
| 107 |
+
|
| 108 |
+
00:01:55.250 --> 00:01:57.410
|
| 109 |
+
forma en la que se sienta en los
|
| 110 |
+
|
| 111 |
+
00:01:57.410 --> 00:02:00.230
|
| 112 |
+
tratados de Euclides cómo se mide la distancia.
|
| 113 |
+
|
| 114 |
+
00:02:02.095 --> 00:02:05.455
|
| 115 |
+
Ahora, la anotación de la norma de un
|
| 116 |
+
|
| 117 |
+
00:02:05.455 --> 00:02:07.715
|
| 118 |
+
vector se va a denotar por dos barritas,
|
| 119 |
+
|
| 120 |
+
00:02:08.294 --> 00:02:11.135
|
| 121 |
+
un dos a cada lado. Esto va a
|
| 122 |
+
|
| 123 |
+
00:02:11.135 --> 00:02:13.440
|
| 124 |
+
denotar que es la norma de un vector.
|
| 125 |
+
|
| 126 |
+
00:02:13.680 --> 00:02:16.160
|
| 127 |
+
Cuando sea solamente una barra simple a cada
|
| 128 |
+
|
| 129 |
+
00:02:16.160 --> 00:02:19.440
|
| 130 |
+
lado, estaremos hablando del valor absoluto. En el
|
| 131 |
+
|
| 132 |
+
00:02:19.440 --> 00:02:21.120
|
| 133 |
+
caso de la norma del vector, vamos a
|
| 134 |
+
|
| 135 |
+
00:02:21.120 --> 00:02:23.200
|
| 136 |
+
definir la norma como la suma de los
|
| 137 |
+
|
| 138 |
+
00:02:23.200 --> 00:02:26.915
|
| 139 |
+
cuadrados de sus elementos. O lo podemos definir
|
| 140 |
+
|
| 141 |
+
00:02:26.975 --> 00:02:29.955
|
| 142 |
+
también, si recuerdan esta operación de aquí al
|
| 143 |
+
|
| 144 |
+
00:02:30.255 --> 00:02:33.455
|
| 145 |
+
centro, sin la raíz cuadrada, es el producto
|
| 146 |
+
|
| 147 |
+
00:02:33.455 --> 00:02:37.935
|
| 148 |
+
punto entre XYX, entonces podemos definirlo como x
|
| 149 |
+
|
| 150 |
+
00:02:37.935 --> 00:02:41.315
|
| 151 |
+
traspuesta por x y la raíz de eso.
|
| 152 |
+
|
| 153 |
+
00:02:41.640 --> 00:02:44.360
|
| 154 |
+
Recordemos que esto nos da un escalar, entonces
|
| 155 |
+
|
| 156 |
+
00:02:44.360 --> 00:02:46.459
|
| 157 |
+
estaríamos hablando de la raíz de un número.
|
| 158 |
+
|
| 159 |
+
00:02:46.599 --> 00:02:51.099
|
| 160 |
+
Por ejemplo, vamos a empezar con un nvector,
|
| 161 |
+
|
| 162 |
+
00:02:51.640 --> 00:02:53.400
|
| 163 |
+
en este caso un tres vector, y que
|
| 164 |
+
|
| 165 |
+
00:02:53.400 --> 00:02:55.400
|
| 166 |
+
ese tres vector sea el uno coma dos
|
| 167 |
+
|
| 168 |
+
00:02:55.400 --> 00:02:59.345
|
| 169 |
+
coma tres. La magnitud de este vector será
|
| 170 |
+
|
| 171 |
+
00:02:59.345 --> 00:03:02.305
|
| 172 |
+
entonces uno al cuadrado más dos al cuadrado
|
| 173 |
+
|
| 174 |
+
00:03:02.305 --> 00:03:04.305
|
| 175 |
+
más tres al cuadrado, que es catorce al
|
| 176 |
+
|
| 177 |
+
00:03:04.305 --> 00:03:07.505
|
| 178 |
+
cuadrado, y eso aproximadamente es tres punto setenta
|
| 179 |
+
|
| 180 |
+
00:03:07.505 --> 00:03:13.380
|
| 181 |
+
y cuatro. Vamos con otro ejemplo. Empecemos con
|
| 182 |
+
|
| 183 |
+
00:03:13.380 --> 00:03:16.820
|
| 184 |
+
el vector, el tres vector dos coma menos
|
| 185 |
+
|
| 186 |
+
00:03:16.820 --> 00:03:19.620
|
| 187 |
+
uno coma dos. La magnitud de ese vector
|
| 188 |
+
|
| 189 |
+
00:03:19.620 --> 00:03:23.860
|
| 190 |
+
será entonces dos al cuadrado más menos uno
|
| 191 |
+
|
| 192 |
+
00:03:23.860 --> 00:03:28.565
|
| 193 |
+
al cuadrado más dos al cuadrado. Esto me
|
| 194 |
+
|
| 195 |
+
00:03:28.565 --> 00:03:31.205
|
| 196 |
+
da un cuatro aquí, un cuatro aquí, esto
|
| 197 |
+
|
| 198 |
+
00:03:31.205 --> 00:03:33.444
|
| 199 |
+
es un ocho, y uno al cuadrado es
|
| 200 |
+
|
| 201 |
+
00:03:33.444 --> 00:03:36.185
|
| 202 |
+
uno, entonces me da un nueve, y tengo
|
| 203 |
+
|
| 204 |
+
00:03:36.245 --> 00:03:39.065
|
| 205 |
+
raíz de nueve, raíz de nueve es tres.
|
| 206 |
+
|
| 207 |
+
00:03:42.000 --> 00:03:46.560
|
| 208 |
+
Una cosa muy importante es que puedes llegar
|
| 209 |
+
|
| 210 |
+
00:03:46.560 --> 00:03:51.440
|
| 211 |
+
al resultado de tres siendo tres negativo o
|
| 212 |
+
|
| 213 |
+
00:03:51.440 --> 00:03:54.739
|
| 214 |
+
positivo. Si tú elevas tres negativo al cuadrado,
|
| 215 |
+
|
| 216 |
+
00:03:55.195 --> 00:03:59.055
|
| 217 |
+
vas a obtener un número positivo. Si elevas
|
| 218 |
+
|
| 219 |
+
00:03:59.275 --> 00:04:03.295
|
| 220 |
+
tres obtendrías nueve positivo. Si elevas tres positivo
|
| 221 |
+
|
| 222 |
+
00:04:03.355 --> 00:04:06.020
|
| 223 |
+
al cuadrado, también obtendrías nueve. Entonces, una restricción
|
| 224 |
+
|
| 225 |
+
00:04:06.020 --> 00:04:06.087
|
| 226 |
+
que vamos a tener, y que lo vamos
|
| 227 |
+
|
| 228 |
+
00:04:06.087 --> 00:04:06.155
|
| 229 |
+
a ver dentro de las propiedades de la
|
| 230 |
+
|
| 231 |
+
00:04:06.155 --> 00:04:09.193
|
| 232 |
+
norma, es una restricción que vamos a tener
|
| 233 |
+
|
| 234 |
+
00:04:09.193 --> 00:04:10.080
|
| 235 |
+
y que lo vamos a ver dentro de
|
| 236 |
+
|
| 237 |
+
00:04:10.080 --> 00:04:10.966
|
| 238 |
+
las propiedades de la norma, es que vamos
|
| 239 |
+
|
| 240 |
+
00:04:10.966 --> 00:04:12.480
|
| 241 |
+
a elegir siempre la raíz positiva. Ahora, vamos
|
| 242 |
+
|
| 243 |
+
00:04:12.480 --> 00:04:13.076
|
| 244 |
+
a ver las propiedades de la norma. Como
|
| 245 |
+
|
| 246 |
+
00:04:13.076 --> 00:04:22.035
|
| 247 |
+
todas las operaciones que hemos trabajado hasta ahora,
|
| 248 |
+
|
| 249 |
+
00:04:22.035 --> 00:04:24.035
|
| 250 |
+
la norma también va a cumplir una serie
|
| 251 |
+
|
| 252 |
+
00:04:24.035 --> 00:04:26.354
|
| 253 |
+
de propiedades, y en este caso vamos a
|
| 254 |
+
|
| 255 |
+
00:04:26.354 --> 00:04:29.395
|
| 256 |
+
definir dos vectores XYY, vamos a definirlos como
|
| 257 |
+
|
| 258 |
+
00:04:29.395 --> 00:04:31.715
|
| 259 |
+
n vectores, y vamos a definir también a
|
| 260 |
+
|
| 261 |
+
00:04:31.715 --> 00:04:35.070
|
| 262 |
+
beta como un escalar cualquiera. Las propiedades que
|
| 263 |
+
|
| 264 |
+
00:04:35.070 --> 00:04:38.130
|
| 265 |
+
compran la norma son las siguientes, la homogeneidad
|
| 266 |
+
|
| 267 |
+
00:04:38.830 --> 00:04:42.510
|
| 268 |
+
no negativa, eso quiere decir que yo puedo
|
| 269 |
+
|
| 270 |
+
00:04:42.510 --> 00:04:46.290
|
| 271 |
+
separar, puedo sacar este beta de la norma,
|
| 272 |
+
|
| 273 |
+
00:04:47.325 --> 00:04:49.905
|
| 274 |
+
pero va a salir como un escalar positivo.
|
| 275 |
+
|
| 276 |
+
00:04:52.045 --> 00:04:55.325
|
| 277 |
+
No importa si aquí adentro era menos uno
|
| 278 |
+
|
| 279 |
+
00:04:55.325 --> 00:04:57.805
|
| 280 |
+
o uno, va a salir siempre como el
|
| 281 |
+
|
| 282 |
+
00:04:57.805 --> 00:05:01.980
|
| 283 |
+
valor absoluto de ese valor. Luego, tenemos que
|
| 284 |
+
|
| 285 |
+
00:05:01.980 --> 00:05:06.060
|
| 286 |
+
también este cumpla la desigualdad del triángulo. Esto
|
| 287 |
+
|
| 288 |
+
00:05:06.060 --> 00:05:09.600
|
| 289 |
+
significa que cuando nosotros sumamos un vector XYY,
|
| 290 |
+
|
| 291 |
+
00:05:09.740 --> 00:05:12.800
|
| 292 |
+
la magnitud de XYY es a lo más
|
| 293 |
+
|
| 294 |
+
00:05:12.940 --> 00:05:17.845
|
| 295 |
+
la suma de las magnitudes individuales. Y cumple
|
| 296 |
+
|
| 297 |
+
00:05:17.845 --> 00:05:21.045
|
| 298 |
+
con el criterio de la no negatividad, y
|
| 299 |
+
|
| 300 |
+
00:05:21.045 --> 00:05:24.025
|
| 301 |
+
es que el valor de una magnitud siempre
|
| 302 |
+
|
| 303 |
+
00:05:24.165 --> 00:05:26.265
|
| 304 |
+
va a ser mayor o igual que cero,
|
| 305 |
+
|
| 306 |
+
00:05:26.645 --> 00:05:30.025
|
| 307 |
+
y solamente va a ser cero si solamente
|
| 308 |
+
|
| 309 |
+
00:05:30.085 --> 00:05:33.560
|
| 310 |
+
si x es igual al vector cero, al
|
| 311 |
+
|
| 312 |
+
00:05:33.560 --> 00:05:39.900
|
| 313 |
+
nvector cero. Ahora, la norma es ampliamente usada,
|
| 314 |
+
|
| 315 |
+
00:05:39.960 --> 00:05:43.775
|
| 316 |
+
en particular podemos señalar estos ejemplos. El valor
|
| 317 |
+
|
| 318 |
+
00:05:43.775 --> 00:05:48.195
|
| 319 |
+
cuadrático medio, que se define como sigue. RMS
|
| 320 |
+
|
| 321 |
+
00:05:48.655 --> 00:05:51.135
|
| 322 |
+
es por sus siglas en inglés Root Min
|
| 323 |
+
|
| 324 |
+
00:05:51.135 --> 00:05:54.575
|
| 325 |
+
Square. Le metemos un vector, le damos de
|
| 326 |
+
|
| 327 |
+
00:05:54.575 --> 00:05:56.940
|
| 328 |
+
comer a esta función un vector y va
|
| 329 |
+
|
| 330 |
+
00:05:56.940 --> 00:05:59.900
|
| 331 |
+
a sumar el cuadrado de las componentes del
|
| 332 |
+
|
| 333 |
+
00:05:59.900 --> 00:06:03.100
|
| 334 |
+
vector y lo va a dividir entre la
|
| 335 |
+
|
| 336 |
+
00:06:03.100 --> 00:06:06.700
|
| 337 |
+
longitud entre la dimensión del vector. Lo podemos
|
| 338 |
+
|
| 339 |
+
00:06:06.700 --> 00:06:11.745
|
| 340 |
+
expresar de manera más comprimida así. Otro también
|
| 341 |
+
|
| 342 |
+
00:06:11.885 --> 00:06:13.645
|
| 343 |
+
es la norma de la suma de dos
|
| 344 |
+
|
| 345 |
+
00:06:13.645 --> 00:06:18.765
|
| 346 |
+
vectores. Si tenemos dos vectores XYY, entonces decimos
|
| 347 |
+
|
| 348 |
+
00:06:18.765 --> 00:06:20.525
|
| 349 |
+
que la norma de la suma de esos
|
| 350 |
+
|
| 351 |
+
00:06:20.525 --> 00:06:23.570
|
| 352 |
+
vectores se puede expresar como sigue. La norma
|
| 353 |
+
|
| 354 |
+
00:06:23.570 --> 00:06:26.250
|
| 355 |
+
de x más y será igual a x
|
| 356 |
+
|
| 357 |
+
00:06:26.250 --> 00:06:31.470
|
| 358 |
+
cuadrada más dos x traspuesta por y más
|
| 359 |
+
|
| 360 |
+
00:06:31.610 --> 00:06:34.190
|
| 361 |
+
dos veces la norma de y al cuadrado.
|
| 362 |
+
|
| 363 |
+
00:06:34.890 --> 00:06:37.845
|
| 364 |
+
Este te lo voy a dejar como ejercicio
|
| 365 |
+
|
| 366 |
+
00:06:38.065 --> 00:06:41.185
|
| 367 |
+
para que lo demuestres. Demostrar esta propiedad no
|
| 368 |
+
|
| 369 |
+
00:06:41.185 --> 00:06:44.465
|
| 370 |
+
es trivial, pero con un poco de ejercicio
|
| 371 |
+
|
| 372 |
+
00:06:44.465 --> 00:06:46.405
|
| 373 |
+
y un poco de intentos verás que lo
|
| 374 |
+
|
| 375 |
+
00:06:46.785 --> 00:06:50.259
|
| 376 |
+
podrás lograr. Y por último, una norma interesante
|
| 377 |
+
|
| 378 |
+
00:06:50.479 --> 00:06:52.580
|
| 379 |
+
es la norma de un bloque de vectores.
|
| 380 |
+
|
| 381 |
+
00:06:53.039 --> 00:06:55.280
|
| 382 |
+
Como hemos visto, los bloques de vectores los
|
| 383 |
+
|
| 384 |
+
00:06:55.280 --> 00:06:58.720
|
| 385 |
+
hemos utilizado hasta ahora. Poder obtener también la
|
| 386 |
+
|
| 387 |
+
00:06:58.720 --> 00:07:00.879
|
| 388 |
+
norma o la magnitud de un bloque de
|
| 389 |
+
|
| 390 |
+
00:07:00.879 --> 00:07:04.285
|
| 391 |
+
vectores será algo muy importante hacia el futuro,
|
| 392 |
+
|
| 393 |
+
00:07:05.225 --> 00:07:08.985
|
| 394 |
+
y resulta que la norma del bloque de
|
| 395 |
+
|
| 396 |
+
00:07:08.985 --> 00:07:12.025
|
| 397 |
+
vectores, si consideramos que tenemos, por ejemplo, d
|
| 398 |
+
|
| 399 |
+
00:07:12.025 --> 00:07:14.985
|
| 400 |
+
un k vector con componentes de I, donde
|
| 401 |
+
|
| 402 |
+
00:07:14.985 --> 00:07:18.330
|
| 403 |
+
las componentes son n vectores, tendremos que la
|
| 404 |
+
|
| 405 |
+
00:07:18.330 --> 00:07:21.450
|
| 406 |
+
norma del d vector de del d k
|
| 407 |
+
|
| 408 |
+
00:07:21.450 --> 00:07:25.450
|
| 409 |
+
vector será el cuadrado de la suma de
|
| 410 |
+
|
| 411 |
+
00:07:25.450 --> 00:07:28.110
|
| 412 |
+
las normas de cada una de las componentes.
|
| 413 |
+
|
| 414 |
+
00:07:29.770 --> 00:07:33.345
|
| 415 |
+
Ahora, vamos a poner un ejemplo concreto. Vamos
|
| 416 |
+
|
| 417 |
+
00:07:33.345 --> 00:07:35.585
|
| 418 |
+
a ir otra vez hacia Geogebra y vamos
|
| 419 |
+
|
| 420 |
+
00:07:35.585 --> 00:07:38.545
|
| 421 |
+
a dibujar un vector. Supongamos que tenemos el
|
| 422 |
+
|
| 423 |
+
00:07:38.545 --> 00:07:45.905
|
| 424 |
+
vector uno coma uno. La longitud que este
|
| 425 |
+
|
| 426 |
+
00:07:45.905 --> 00:07:50.080
|
| 427 |
+
vector tendría, según lo que vimos, es uno
|
| 428 |
+
|
| 429 |
+
00:07:50.080 --> 00:07:53.200
|
| 430 |
+
al cuadrado más uno al cuadrado. Eso nos
|
| 431 |
+
|
| 432 |
+
00:07:53.200 --> 00:07:55.780
|
| 433 |
+
da dos y la longitud de este vector
|
| 434 |
+
|
| 435 |
+
00:07:56.000 --> 00:07:59.460
|
| 436 |
+
es raíz de dos. Si esto es cierto,
|
| 437 |
+
|
| 438 |
+
00:07:59.865 --> 00:08:03.505
|
| 439 |
+
eso significa que si nosotros multiplicamos este por
|
| 440 |
+
|
| 441 |
+
00:08:03.505 --> 00:08:09.065
|
| 442 |
+
un escalar, supongamos que es un escalar de
|
| 443 |
+
|
| 444 |
+
00:08:09.065 --> 00:08:11.885
|
| 445 |
+
dos, por ejemplo, lo que deberíamos de obtener
|
| 446 |
+
|
| 447 |
+
00:08:12.345 --> 00:08:16.229
|
| 448 |
+
es que obtenemos una magnitud de dos. Entonces,
|
| 449 |
+
|
| 450 |
+
00:08:16.449 --> 00:08:18.770
|
| 451 |
+
vamos a poner el u vector y vamos
|
| 452 |
+
|
| 453 |
+
00:08:18.770 --> 00:08:25.810
|
| 454 |
+
a multiplicarlo por dos. Y ahora vamos a
|
| 455 |
+
|
| 456 |
+
00:08:25.810 --> 00:08:29.969
|
| 457 |
+
calcular la norma de este vector. Regresemos a
|
| 458 |
+
|
| 459 |
+
00:08:29.969 --> 00:08:37.534
|
| 460 |
+
Python. Entonces, vamos a empezar expresando los vectores
|
| 461 |
+
|
| 462 |
+
00:08:37.534 --> 00:08:40.255
|
| 463 |
+
aquí en Python. Vamos a empezar con el
|
| 464 |
+
|
| 465 |
+
00:08:40.255 --> 00:08:43.714
|
| 466 |
+
import numpy as np, como siempre lo hacemos,
|
| 467 |
+
|
| 468 |
+
00:08:44.010 --> 00:08:47.290
|
| 469 |
+
y vamos a declarar nuestro vector u. U
|
| 470 |
+
|
| 471 |
+
00:08:47.290 --> 00:08:54.670
|
| 472 |
+
es igual a np, array uno coma uno.
|
| 473 |
+
|
| 474 |
+
00:08:55.850 --> 00:08:59.005
|
| 475 |
+
Ahora, vamos a comprobar esas propiedades para poder
|
| 476 |
+
|
| 477 |
+
00:08:59.005 --> 00:09:02.685
|
| 478 |
+
llegar al resultado que obtuvimos desde Geogebra. Si
|
| 479 |
+
|
| 480 |
+
00:09:02.685 --> 00:09:08.065
|
| 481 |
+
nosotros multiplicamos Antes de eso, hay que desarrollar,
|
| 482 |
+
|
| 483 |
+
00:09:08.125 --> 00:09:11.185
|
| 484 |
+
por cierto, una función para poder calcular esto
|
| 485 |
+
|
| 486 |
+
00:09:11.270 --> 00:09:14.810
|
| 487 |
+
y de hecho nuestra función está aquí. Entonces,
|
| 488 |
+
|
| 489 |
+
00:09:15.350 --> 00:09:17.830
|
| 490 |
+
fíjense lo que haremos, vamos a hacer def
|
| 491 |
+
|
| 492 |
+
00:09:17.830 --> 00:09:19.910
|
| 493 |
+
y vamos a sacar una función que se
|
| 494 |
+
|
| 495 |
+
00:09:19.910 --> 00:09:22.710
|
| 496 |
+
llame norma, y norma va a consumir un
|
| 497 |
+
|
| 498 |
+
00:09:22.710 --> 00:09:25.610
|
| 499 |
+
vector x, y lo que vamos a regresar
|
| 500 |
+
|
| 501 |
+
00:09:28.085 --> 00:09:33.125
|
| 502 |
+
va a ser exactamente x por x, porque
|
| 503 |
+
|
| 504 |
+
00:09:33.125 --> 00:09:34.485
|
| 505 |
+
sabemos que eso nos va a dar la
|
| 506 |
+
|
| 507 |
+
00:09:34.485 --> 00:09:38.245
|
| 508 |
+
suma de los cuadrados, pero necesitamos ahora sacar
|
| 509 |
+
|
| 510 |
+
00:09:38.245 --> 00:09:41.190
|
| 511 |
+
la raíz. NumPy también tiene una función para
|
| 512 |
+
|
| 513 |
+
00:09:41.190 --> 00:09:46.090
|
| 514 |
+
eso y es n p.sqrt por squirt. Así,
|
| 515 |
+
|
| 516 |
+
00:09:50.150 --> 00:09:53.610
|
| 517 |
+
pues, veamos qué nos da la norma de
|
| 518 |
+
|
| 519 |
+
00:09:54.315 --> 00:10:01.355
|
| 520 |
+
La norma du es uno punto cuarenta y
|
| 521 |
+
|
| 522 |
+
00:10:01.355 --> 00:10:04.015
|
| 523 |
+
uno. Vamos a ver cuánto es n p
|
| 524 |
+
|
| 525 |
+
00:10:04.395 --> 00:10:10.060
|
| 526 |
+
dot square de dos. Es exactamente esto, entonces
|
| 527 |
+
|
| 528 |
+
00:10:10.060 --> 00:10:12.140
|
| 529 |
+
obtenemos que la norma de u es la
|
| 530 |
+
|
| 531 |
+
00:10:12.140 --> 00:10:15.980
|
| 532 |
+
raíz de dos. Veamos qué pasa si nosotros
|
| 533 |
+
|
| 534 |
+
00:10:15.980 --> 00:10:19.660
|
| 535 |
+
escalamos esto. Según la propiedad de homogeneidad no
|
| 536 |
+
|
| 537 |
+
00:10:19.660 --> 00:10:26.005
|
| 538 |
+
negativa, si nosotros multiplicamos esto, nosotros deberíamos de
|
| 539 |
+
|
| 540 |
+
00:10:26.005 --> 00:10:34.580
|
| 541 |
+
obtener la siguiente norma, norma de u, y
|
| 542 |
+
|
| 543 |
+
00:10:34.580 --> 00:10:38.420
|
| 544 |
+
lo multiplicaremos por dos aquí, nos da dos
|
| 545 |
+
|
| 546 |
+
00:10:38.420 --> 00:10:44.180
|
| 547 |
+
punto ochenta y cuatro. Si nosotros calculamos, en
|
| 548 |
+
|
| 549 |
+
00:10:44.180 --> 00:10:47.465
|
| 550 |
+
este caso, a mano, la norma de dos
|
| 551 |
+
|
| 552 |
+
00:10:47.465 --> 00:10:54.745
|
| 553 |
+
veces u, obtendremos lo siguiente. Sabemos que u
|
| 554 |
+
|
| 555 |
+
00:10:54.745 --> 00:11:04.490
|
| 556 |
+
transpuesto es igual al vector uno coma uno.
|
| 557 |
+
|
| 558 |
+
00:11:07.750 --> 00:11:18.325
|
| 559 |
+
Entonces, la norma será vamos a multiplicar de
|
| 560 |
+
|
| 561 |
+
00:11:18.325 --> 00:11:21.045
|
| 562 |
+
una vez el dos aquí, eso significa que
|
| 563 |
+
|
| 564 |
+
00:11:21.045 --> 00:11:23.465
|
| 565 |
+
tenemos aquí un dos y aquí un dos.
|
| 566 |
+
|
| 567 |
+
00:11:24.485 --> 00:11:30.910
|
| 568 |
+
La norma de dos veces u, dos veces
|
| 569 |
+
|
| 570 |
+
00:11:32.329 --> 00:11:39.389
|
| 571 |
+
u será igual a el squirt, la raíz,
|
| 572 |
+
|
| 573 |
+
00:11:51.235 --> 00:11:54.115
|
| 574 |
+
de este vector en componentes que tenemos dos
|
| 575 |
+
|
| 576 |
+
00:11:54.115 --> 00:12:00.980
|
| 577 |
+
al cuadrado más dos al cuadrado. Esto de
|
| 578 |
+
|
| 579 |
+
00:12:00.980 --> 00:12:22.185
|
| 580 |
+
aquí nos da igual a Dos al cuadrado
|
| 581 |
+
|
| 582 |
+
00:12:22.325 --> 00:12:24.885
|
| 583 |
+
es cuatro, y esto nos da dos veces
|
| 584 |
+
|
| 585 |
+
00:12:24.885 --> 00:12:27.770
|
| 586 |
+
cuatro, que sería ocho, la raíz de ocho.
|
| 587 |
+
|
| 588 |
+
00:12:28.150 --> 00:12:30.550
|
| 589 |
+
Vamos a comprobar cuánto es la raíz de
|
| 590 |
+
|
| 591 |
+
00:12:30.550 --> 00:12:37.110
|
| 592 |
+
ocho. Np dot square, raíz de ocho. Y,
|
| 593 |
+
|
| 594 |
+
00:12:37.110 --> 00:12:41.125
|
| 595 |
+
en efecto, lo tenemos bien. Ahora, ya para
|
| 596 |
+
|
| 597 |
+
00:12:41.125 --> 00:12:44.404
|
| 598 |
+
comprobar la propiedad de la no homogeneidad, vamos
|
| 599 |
+
|
| 600 |
+
00:12:44.404 --> 00:12:50.165
|
| 601 |
+
a comprobar que dos por la norma de
|
| 602 |
+
|
| 603 |
+
00:12:50.165 --> 00:12:53.845
|
| 604 |
+
u es exactamente igual a dos punto ochenta
|
| 605 |
+
|
| 606 |
+
00:12:53.845 --> 00:12:58.130
|
| 607 |
+
y dos, y así lo tenemos. Entonces, esto
|
| 608 |
+
|
| 609 |
+
00:12:58.130 --> 00:13:02.310
|
| 610 |
+
dice cómo estamos escalando nuestros vectores. Por último,
|
| 611 |
+
|
| 612 |
+
00:13:02.370 --> 00:13:08.145
|
| 613 |
+
vamos a comprobar la propiedad del triángulo. Para
|
| 614 |
+
|
| 615 |
+
00:13:08.145 --> 00:13:10.785
|
| 616 |
+
eso ya tenemos un vector u declarado, vamos
|
| 617 |
+
|
| 618 |
+
00:13:10.785 --> 00:13:13.745
|
| 619 |
+
a declarar un nuevo vector. Digamos que este
|
| 620 |
+
|
| 621 |
+
00:13:13.745 --> 00:13:16.065
|
| 622 |
+
nuevo vector se va a llamar v, y
|
| 623 |
+
|
| 624 |
+
00:13:16.065 --> 00:13:22.320
|
| 625 |
+
este nuevo vector será numpy array, y a
|
| 626 |
+
|
| 627 |
+
00:13:22.320 --> 00:13:30.880
|
| 628 |
+
este le pondremos menos uno coma uno. Y
|
| 629 |
+
|
| 630 |
+
00:13:30.880 --> 00:13:36.204
|
| 631 |
+
ahora vamos a ver qué sucede. Vamos a
|
| 632 |
+
|
| 633 |
+
00:13:36.204 --> 00:13:40.444
|
| 634 |
+
declarar como No, no declararemos un nuevo vector,
|
| 635 |
+
|
| 636 |
+
00:13:40.444 --> 00:13:43.745
|
| 637 |
+
lo haremos directo. Vamos a aclarar el print
|
| 638 |
+
|
| 639 |
+
00:13:45.485 --> 00:13:59.019
|
| 640 |
+
de u más v es igual, la norma
|
| 641 |
+
|
| 642 |
+
00:13:59.019 --> 00:14:04.185
|
| 643 |
+
de u más v es igual a coma,
|
| 644 |
+
|
| 645 |
+
00:14:04.404 --> 00:14:10.105
|
| 646 |
+
simplemente ponemos norm, norma de u más v,
|
| 647 |
+
|
| 648 |
+
00:14:10.645 --> 00:14:15.860
|
| 649 |
+
y obtenemos el valor de dos. Ahora, vamos
|
| 650 |
+
|
| 651 |
+
00:14:15.860 --> 00:14:17.800
|
| 652 |
+
a ver cuál es la norma de b,
|
| 653 |
+
|
| 654 |
+
00:14:18.340 --> 00:14:22.440
|
| 655 |
+
porque esa es una norma que no hemos
|
| 656 |
+
|
| 657 |
+
00:14:23.180 --> 00:14:26.340
|
| 658 |
+
calculado. La norma de b es uno punto
|
| 659 |
+
|
| 660 |
+
00:14:26.340 --> 00:14:29.265
|
| 661 |
+
cuarenta y uno cuarenta y dos. Esto le
|
| 662 |
+
|
| 663 |
+
00:14:29.265 --> 00:14:33.105
|
| 664 |
+
recuerda algo, es exactamente la misma norma que
|
| 665 |
+
|
| 666 |
+
00:14:33.105 --> 00:14:37.024
|
| 667 |
+
la norma de u, pero el vector es
|
| 668 |
+
|
| 669 |
+
00:14:37.024 --> 00:14:40.464
|
| 670 |
+
un vector totalmente distinto, está orientado hacia otro
|
| 671 |
+
|
| 672 |
+
00:14:40.464 --> 00:14:42.930
|
| 673 |
+
lado. ¿Cuál es la diferencia entre estos dos
|
| 674 |
+
|
| 675 |
+
00:14:42.930 --> 00:14:47.170
|
| 676 |
+
vectores? Bueno, el vector u está hacia este
|
| 677 |
+
|
| 678 |
+
00:14:47.170 --> 00:14:50.450
|
| 679 |
+
lado, mientras que el otro vector, el vector
|
| 680 |
+
|
| 681 |
+
00:14:50.450 --> 00:14:58.175
|
| 682 |
+
v, está apuntando hacia otra dirección. Sin embargo,
|
| 683 |
+
|
| 684 |
+
00:14:58.714 --> 00:15:02.815
|
| 685 |
+
tiene el mismo tamaño, la misma magnitud. Pareciera
|
| 686 |
+
|
| 687 |
+
00:15:03.675 --> 00:15:07.755
|
| 688 |
+
guiño guiño que lo rotaron. Más adelante veremos
|
| 689 |
+
|
| 690 |
+
00:15:07.755 --> 00:15:16.960
|
| 691 |
+
esto. Regresamos al notebook. Ahora, para terminar de
|
| 692 |
+
|
| 693 |
+
00:15:16.960 --> 00:15:20.560
|
| 694 |
+
comprobar esto, a lo más este número debería
|
| 695 |
+
|
| 696 |
+
00:15:20.560 --> 00:15:23.280
|
| 697 |
+
de ser igual, este número no puede ser
|
| 698 |
+
|
| 699 |
+
00:15:23.280 --> 00:15:34.535
|
| 700 |
+
mayor. Entonces, vamos a preguntarle a Python, print.
|
| 701 |
+
|
| 702 |
+
00:15:34.835 --> 00:15:41.170
|
| 703 |
+
¿Es verdad que esta expresión de aquí es
|
| 704 |
+
|
| 705 |
+
00:15:48.430 --> 00:15:56.235
|
| 706 |
+
menor o igual que la suma de los
|
| 707 |
+
|
| 708 |
+
00:15:56.235 --> 00:16:12.650
|
| 709 |
+
individuales. Coma, ahora, ¿cómo le preguntamos esto? Pues,
|
| 710 |
+
|
| 711 |
+
00:16:12.650 --> 00:16:15.610
|
| 712 |
+
fíjense que lo que haremos es preguntarle a
|
| 713 |
+
|
| 714 |
+
00:16:15.610 --> 00:16:20.815
|
| 715 |
+
Python la siguiente expresión lógica. Vamos a llamar
|
| 716 |
+
|
| 717 |
+
00:16:20.815 --> 00:16:25.695
|
| 718 |
+
a norma, norma de u más v, y
|
| 719 |
+
|
| 720 |
+
00:16:25.695 --> 00:16:28.175
|
| 721 |
+
le vamos a poner la condición de que
|
| 722 |
+
|
| 723 |
+
00:16:28.175 --> 00:16:33.980
|
| 724 |
+
sea menor o igual, menor o igual, y
|
| 725 |
+
|
| 726 |
+
00:16:33.980 --> 00:16:37.740
|
| 727 |
+
a eso le vamos a poner norma de
|
| 728 |
+
|
| 729 |
+
00:16:37.740 --> 00:16:44.540
|
| 730 |
+
b más norma de u. Cerramos paréntesis y
|
| 731 |
+
|
| 732 |
+
00:16:44.540 --> 00:16:48.135
|
| 733 |
+
veamos qué nos dice Python. Nos dice que
|
| 734 |
+
|
| 735 |
+
00:16:48.135 --> 00:16:51.175
|
| 736 |
+
es verdad, la norma de v es menor
|
| 737 |
+
|
| 738 |
+
00:16:51.175 --> 00:16:53.975
|
| 739 |
+
o igual que u más v, por lo
|
| 740 |
+
|
| 741 |
+
00:16:53.975 --> 00:16:57.335
|
| 742 |
+
tanto, hemos comprobado las propiedades que tiene la
|
| 743 |
+
|
| 744 |
+
00:16:57.335 --> 00:17:00.870
|
| 745 |
+
norma. En la próxima clase vamos a ver
|
| 746 |
+
|
| 747 |
+
00:17:00.870 --> 00:17:03.290
|
| 748 |
+
cómo a partir de la norma y recordando
|
| 749 |
+
|
| 750 |
+
00:17:03.430 --> 00:17:06.230
|
| 751 |
+
la operación de suma, vamos a poder definir
|
| 752 |
+
|
| 753 |
+
00:17:06.230 --> 00:17:08.630
|
| 754 |
+
la distancia entre dos vectores y va a
|
| 755 |
+
|
| 756 |
+
00:17:08.630 --> 00:17:12.089
|
| 757 |
+
ser totalmente necesario revisitar la suma entre vectores
|
| 758 |
+
|
| 759 |
+
00:17:12.150 --> 00:17:16.616
|
| 760 |
+
para entenderla como una operación también geométrica. Nos
|
| 761 |
+
|
| 762 |
+
00:17:16.616 --> 00:17:17.996
|
| 763 |
+
vemos en la próxima clase.
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/01-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/04-Norma y distancia/01-distancias_9e4fe5f7-c830-455a-8f38-ca9850246cef.ipynb
ADDED
|
@@ -0,0 +1,534 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {},
|
| 6 |
+
"source": [
|
| 7 |
+
"# 8. Distancia y Norma"
|
| 8 |
+
]
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"cell_type": "markdown",
|
| 12 |
+
"metadata": {},
|
| 13 |
+
"source": [
|
| 14 |
+
"En clases pasadas hablamos de la magnitud de un vector pero no dimos una forma de poder medirla, esa magnitud la podremos calcular a través de la *norma Euclidiana*:\n",
|
| 15 |
+
"\n",
|
| 16 |
+
"$$\n",
|
| 17 |
+
"||x|| = \\displaystyle\\sqrt{x_{0}^2 + x_{1}^2 + \\cdots + x_{n-1}^{2}} = \\displaystyle\\sqrt(x^Tx)\n",
|
| 18 |
+
"$$\n",
|
| 19 |
+
"\n",
|
| 20 |
+
"Hay que notar que $x$ en la expresión anterior es un $n$-vector. \n",
|
| 21 |
+
"Pongamos un ejemplo con $x^T = [1,2,3]$\n",
|
| 22 |
+
"\n",
|
| 23 |
+
"$$\n",
|
| 24 |
+
"||x|| = \\displaystyle\\sqrt{1^2 + 2^2 + 3^2} = \\sqrt{14} \\approx 3.74\n",
|
| 25 |
+
"$$\n",
|
| 26 |
+
"\n",
|
| 27 |
+
"Realizaremos otro con $x^T = [2,-1,2]$\n",
|
| 28 |
+
"\n",
|
| 29 |
+
"$$\n",
|
| 30 |
+
"||x|| = \\displaystyle\\sqrt{2^2 + (-1)^2 + 2^2} = \\sqrt{9} = 3\n",
|
| 31 |
+
"$$"
|
| 32 |
+
]
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"cell_type": "markdown",
|
| 36 |
+
"metadata": {},
|
| 37 |
+
"source": [
|
| 38 |
+
"## 8.1 Propieades de la norma"
|
| 39 |
+
]
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"cell_type": "markdown",
|
| 43 |
+
"metadata": {},
|
| 44 |
+
"source": [
|
| 45 |
+
"Como todas las operaciones con las que trabajamos hasta ahora la norma también cumple una serie de propiedades. Sean $x$, $y$ son $n$-vectores y $\\beta$ un escalar cualquiera, tenemos que la norma cumple:\n",
|
| 46 |
+
"* Homogeneídad no negativa: $||\\beta x|| = |\\beta|\\cdot ||x||$\n",
|
| 47 |
+
"\n",
|
| 48 |
+
"* Desigualdad del triángulo: $||x+y|| \\le ||x|| + ||y||$ \n",
|
| 49 |
+
"\n",
|
| 50 |
+
"* No-negatividad: $||x||\\ge 0$ y además $||x|| = 0$ si y solamente si $x = \\mathbf{0}$"
|
| 51 |
+
]
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"cell_type": "markdown",
|
| 55 |
+
"metadata": {},
|
| 56 |
+
"source": [
|
| 57 |
+
"La norma es ampliamente usada, en particular podemos señalar los siguientes ejemplos:\n",
|
| 58 |
+
"\n",
|
| 59 |
+
"**Valor cuadrático medio.** Algunas veces también es llamado simplemente **RMS** y se define como sigue:\n",
|
| 60 |
+
"\n",
|
| 61 |
+
"$$\n",
|
| 62 |
+
"rms(x) = \\displaystyle\\sqrt{\\frac{x_{0}^2 + x_{1}^2 + \\cdots + x_{n-1}^{2}}{n}} = \\frac{||x||}{\\sqrt{n}}\n",
|
| 63 |
+
"$$"
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"cell_type": "markdown",
|
| 68 |
+
"metadata": {},
|
| 69 |
+
"source": [
|
| 70 |
+
"**Norma de una suma.** Si tenemos dos vectores $x$ y $y$ entonces la norma de la suma es\n",
|
| 71 |
+
"\n",
|
| 72 |
+
"$$\n",
|
| 73 |
+
"||x+y|| = \\displaystyle\\sqrt{||x||^{2} + 2x^{T}y + ||y||^{2}}\n",
|
| 74 |
+
"$$"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "markdown",
|
| 79 |
+
"metadata": {},
|
| 80 |
+
"source": [
|
| 81 |
+
"**Norma de una bloque de vectores.** La norma de bloque de vectores será simplemente la raíz cuadrada de la suma de sus componentes. Si tenemos $d$ un $k$-vector con componentes $d_{i}$ que son $n$-vectores entonces tenemos que:\n",
|
| 82 |
+
"\n",
|
| 83 |
+
"$$\n",
|
| 84 |
+
"||d|| = \\displaystyle\\sqrt{||d_{0}||^{2}+||d_{1}||^{2}+\\cdots + ||d_{n-1}||^{2}}\n",
|
| 85 |
+
"$$"
|
| 86 |
+
]
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"cell_type": "code",
|
| 90 |
+
"execution_count": 1,
|
| 91 |
+
"metadata": {},
|
| 92 |
+
"outputs": [],
|
| 93 |
+
"source": [
|
| 94 |
+
"import numpy as np"
|
| 95 |
+
]
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"cell_type": "code",
|
| 99 |
+
"execution_count": 2,
|
| 100 |
+
"metadata": {},
|
| 101 |
+
"outputs": [],
|
| 102 |
+
"source": [
|
| 103 |
+
"u = np.array([1,1])"
|
| 104 |
+
]
|
| 105 |
+
},
|
| 106 |
+
{
|
| 107 |
+
"cell_type": "code",
|
| 108 |
+
"execution_count": 3,
|
| 109 |
+
"metadata": {},
|
| 110 |
+
"outputs": [],
|
| 111 |
+
"source": [
|
| 112 |
+
"def norma(x):\n",
|
| 113 |
+
" return np.sqrt(x@x)"
|
| 114 |
+
]
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"cell_type": "code",
|
| 118 |
+
"execution_count": 4,
|
| 119 |
+
"metadata": {},
|
| 120 |
+
"outputs": [
|
| 121 |
+
{
|
| 122 |
+
"data": {
|
| 123 |
+
"text/plain": [
|
| 124 |
+
"1.4142135623730951"
|
| 125 |
+
]
|
| 126 |
+
},
|
| 127 |
+
"execution_count": 4,
|
| 128 |
+
"metadata": {},
|
| 129 |
+
"output_type": "execute_result"
|
| 130 |
+
}
|
| 131 |
+
],
|
| 132 |
+
"source": [
|
| 133 |
+
"norma(u)"
|
| 134 |
+
]
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"cell_type": "markdown",
|
| 138 |
+
"metadata": {},
|
| 139 |
+
"source": [
|
| 140 |
+
"$2*u^T = [2,2]$ entonces la norma será $||2u|| = \\displaystyle\\sqrt{2^2 + 2^2} = \\displaystyle\\sqrt{8}$"
|
| 141 |
+
]
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"cell_type": "code",
|
| 145 |
+
"execution_count": 5,
|
| 146 |
+
"metadata": {},
|
| 147 |
+
"outputs": [
|
| 148 |
+
{
|
| 149 |
+
"data": {
|
| 150 |
+
"text/plain": [
|
| 151 |
+
"2.8284271247461903"
|
| 152 |
+
]
|
| 153 |
+
},
|
| 154 |
+
"execution_count": 5,
|
| 155 |
+
"metadata": {},
|
| 156 |
+
"output_type": "execute_result"
|
| 157 |
+
}
|
| 158 |
+
],
|
| 159 |
+
"source": [
|
| 160 |
+
"norma(2*u)"
|
| 161 |
+
]
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"cell_type": "code",
|
| 165 |
+
"execution_count": 6,
|
| 166 |
+
"metadata": {},
|
| 167 |
+
"outputs": [
|
| 168 |
+
{
|
| 169 |
+
"data": {
|
| 170 |
+
"text/plain": [
|
| 171 |
+
"2.8284271247461903"
|
| 172 |
+
]
|
| 173 |
+
},
|
| 174 |
+
"execution_count": 6,
|
| 175 |
+
"metadata": {},
|
| 176 |
+
"output_type": "execute_result"
|
| 177 |
+
}
|
| 178 |
+
],
|
| 179 |
+
"source": [
|
| 180 |
+
"2*norma(u)"
|
| 181 |
+
]
|
| 182 |
+
},
|
| 183 |
+
{
|
| 184 |
+
"cell_type": "code",
|
| 185 |
+
"execution_count": 7,
|
| 186 |
+
"metadata": {},
|
| 187 |
+
"outputs": [],
|
| 188 |
+
"source": [
|
| 189 |
+
"v = np.array([-1,1])"
|
| 190 |
+
]
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"cell_type": "code",
|
| 194 |
+
"execution_count": 8,
|
| 195 |
+
"metadata": {},
|
| 196 |
+
"outputs": [
|
| 197 |
+
{
|
| 198 |
+
"name": "stdout",
|
| 199 |
+
"output_type": "stream",
|
| 200 |
+
"text": [
|
| 201 |
+
"||u+v|| = 2.0\n"
|
| 202 |
+
]
|
| 203 |
+
}
|
| 204 |
+
],
|
| 205 |
+
"source": [
|
| 206 |
+
"print('||u+v|| = ',norma(u+v))"
|
| 207 |
+
]
|
| 208 |
+
},
|
| 209 |
+
{
|
| 210 |
+
"cell_type": "code",
|
| 211 |
+
"execution_count": 9,
|
| 212 |
+
"metadata": {},
|
| 213 |
+
"outputs": [
|
| 214 |
+
{
|
| 215 |
+
"name": "stdout",
|
| 216 |
+
"output_type": "stream",
|
| 217 |
+
"text": [
|
| 218 |
+
"||v|| = 1.4142135623730951\n"
|
| 219 |
+
]
|
| 220 |
+
}
|
| 221 |
+
],
|
| 222 |
+
"source": [
|
| 223 |
+
"print('||v|| = ',norma(v))"
|
| 224 |
+
]
|
| 225 |
+
},
|
| 226 |
+
{
|
| 227 |
+
"cell_type": "code",
|
| 228 |
+
"execution_count": 10,
|
| 229 |
+
"metadata": {},
|
| 230 |
+
"outputs": [
|
| 231 |
+
{
|
| 232 |
+
"name": "stdout",
|
| 233 |
+
"output_type": "stream",
|
| 234 |
+
"text": [
|
| 235 |
+
"¿Es verdad que ||u+v|| menor o igual que ||u||+||v|| True\n"
|
| 236 |
+
]
|
| 237 |
+
}
|
| 238 |
+
],
|
| 239 |
+
"source": [
|
| 240 |
+
"print('¿Es verdad que ||u+v|| menor o igual que ||u||+||v||', norma(u+v) <= norma(v)+norma(u))"
|
| 241 |
+
]
|
| 242 |
+
},
|
| 243 |
+
{
|
| 244 |
+
"cell_type": "markdown",
|
| 245 |
+
"metadata": {},
|
| 246 |
+
"source": [
|
| 247 |
+
" "
|
| 248 |
+
]
|
| 249 |
+
},
|
| 250 |
+
{
|
| 251 |
+
"cell_type": "markdown",
|
| 252 |
+
"metadata": {},
|
| 253 |
+
"source": [
|
| 254 |
+
"## 8.1 Distancia entre vectores"
|
| 255 |
+
]
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"cell_type": "markdown",
|
| 259 |
+
"metadata": {},
|
| 260 |
+
"source": [
|
| 261 |
+
"Podemos usar la norma pora definir la distancia entre dos vectores $\\mathbf{a}$ y $\\mathbf{b}$ como la norma de la diferencia de los vectores\n",
|
| 262 |
+
"\n",
|
| 263 |
+
"$$\n",
|
| 264 |
+
"dist(\\mathbf{a},\\mathbf{b}) = ||\\mathbf{a} - \\mathbf{b}|| = \\displaystyle\\sqrt{(a_{0}-b_{0})^2 + (a_{1}-b_{1})^2 + \\cdots + (a_{n-1}-b_{n-1})^2}\n",
|
| 265 |
+
"$$"
|
| 266 |
+
]
|
| 267 |
+
},
|
| 268 |
+
{
|
| 269 |
+
"cell_type": "code",
|
| 270 |
+
"execution_count": 11,
|
| 271 |
+
"metadata": {},
|
| 272 |
+
"outputs": [],
|
| 273 |
+
"source": [
|
| 274 |
+
"a = np.array([1,1])\n",
|
| 275 |
+
"b = np.array([-2,3])"
|
| 276 |
+
]
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"cell_type": "code",
|
| 280 |
+
"execution_count": 12,
|
| 281 |
+
"metadata": {},
|
| 282 |
+
"outputs": [],
|
| 283 |
+
"source": [
|
| 284 |
+
"c = a - b"
|
| 285 |
+
]
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"cell_type": "code",
|
| 289 |
+
"execution_count": 15,
|
| 290 |
+
"metadata": {},
|
| 291 |
+
"outputs": [
|
| 292 |
+
{
|
| 293 |
+
"data": {
|
| 294 |
+
"text/plain": [
|
| 295 |
+
"3.605551275463989"
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
"execution_count": 15,
|
| 299 |
+
"metadata": {},
|
| 300 |
+
"output_type": "execute_result"
|
| 301 |
+
}
|
| 302 |
+
],
|
| 303 |
+
"source": [
|
| 304 |
+
"norma(a-b)"
|
| 305 |
+
]
|
| 306 |
+
},
|
| 307 |
+
{
|
| 308 |
+
"cell_type": "code",
|
| 309 |
+
"execution_count": 16,
|
| 310 |
+
"metadata": {},
|
| 311 |
+
"outputs": [
|
| 312 |
+
{
|
| 313 |
+
"data": {
|
| 314 |
+
"text/plain": [
|
| 315 |
+
"3.605551275463989"
|
| 316 |
+
]
|
| 317 |
+
},
|
| 318 |
+
"execution_count": 16,
|
| 319 |
+
"metadata": {},
|
| 320 |
+
"output_type": "execute_result"
|
| 321 |
+
}
|
| 322 |
+
],
|
| 323 |
+
"source": [
|
| 324 |
+
"np.linalg.norm(a-b)"
|
| 325 |
+
]
|
| 326 |
+
},
|
| 327 |
+
{
|
| 328 |
+
"cell_type": "markdown",
|
| 329 |
+
"metadata": {},
|
| 330 |
+
"source": [
|
| 331 |
+
"A esto se el llama _norma Euclidiana_ o *distancia Euclidiana* y tiene ese nombre porque es como se infiere la forma de medir distancias de los [postulados de Euclides](https://es.wikipedia.org/wiki/Postulados_de_Euclides). Ahora, la realidad es que siempre que nuestro espacio admita una $\\mathbf{L^p}$-norma entonces podremos generalizar la norma anterior como\n",
|
| 332 |
+
"\n",
|
| 333 |
+
"$$\n",
|
| 334 |
+
"||x||_{p} = \\left(|x_{0}|^p + |x_{1}|^p + \\cdots + |x_{n-1}|^p\\right)^{1/p} \\qquad con \\;\\; 1\\le p\n",
|
| 335 |
+
"$$"
|
| 336 |
+
]
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"cell_type": "markdown",
|
| 340 |
+
"metadata": {},
|
| 341 |
+
"source": [
|
| 342 |
+
"Por eso es que la norma Euclidiana también es conocida como la *norma $L_{2}$*. Hay otras normas que recibe nombres. Por ejemplo, si $p=1$ tenemos la norma $L_{1}$ y esta es llamada _la métrica del taxista_ o _la métrica de Manhattan_. Si tomamos $p \\to \\infty$ entonces tenemos $L_{\\infty}$ y esta es llamada _la métrica del máximo_. Es muy importante saber qué métrica estamos usando para medir distancias ya que la forma en la que medimos distancias está en total correspondencia en con configuración y la percepción el espacio. Por ejemplo, mientras que en la métrica Euclidiana la distancia corresponde a la más corta entre los dos vectores en el espacio planeo en el caso de la métrica del taxista es la más corta pero no será es segmento más directo sino por _bloques_."
|
| 343 |
+
]
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"cell_type": "markdown",
|
| 347 |
+
"metadata": {},
|
| 348 |
+
"source": [
|
| 349 |
+
"Para poder simplificar las cosas tomemos dos vectores $\\mathbf{x}$ y $\\mathbf{y}$ en $\\mathbb{R}^2$\n",
|
| 350 |
+
"\n",
|
| 351 |
+
"$$\n",
|
| 352 |
+
"\\mathbf{x} = \\begin{bmatrix} 2\\\\1 \\end{bmatrix},\\; \\qquad \\mathbf{y} = \\begin{bmatrix} 1\\\\2 \\end{bmatrix}\n",
|
| 353 |
+
"$$\n",
|
| 354 |
+
"\n",
|
| 355 |
+
"La distancia en el caso de norma $L_{2}$ tenemos que la distancia entre los vectores es $||\\mathbf{x}-\\mathbf{y}||_{2} = \\displaystyle\\sqrt{(2-1)^{2} + (1-2)^{2}} = \\displaystyle\\sqrt{2}$ mientras que bajo la norma $L_{1}$ obtenemos que $||\\mathbf{x}-\\mathbf{y}||_{1} = |2-1|+|1-2| = 2$. "
|
| 356 |
+
]
|
| 357 |
+
},
|
| 358 |
+
{
|
| 359 |
+
"cell_type": "markdown",
|
| 360 |
+
"metadata": {},
|
| 361 |
+
"source": [
|
| 362 |
+
"Ahora, si $\\mathbf{x}$ y $\\mathbf{y}$ son $n$-vectores hay una medida quer después cobrará importancia, *la desviación cuadrática media*\n",
|
| 363 |
+
"\n",
|
| 364 |
+
"$$\n",
|
| 365 |
+
"rms_{dev}(\\mathbf{x},\\mathbf{y}) = \\displaystyle\\frac{||\\mathbf{x}-\\mathbf{y}||}{\\sqrt{n}}\n",
|
| 366 |
+
"$$"
|
| 367 |
+
]
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"cell_type": "markdown",
|
| 371 |
+
"metadata": {},
|
| 372 |
+
"source": [
|
| 373 |
+
" "
|
| 374 |
+
]
|
| 375 |
+
},
|
| 376 |
+
{
|
| 377 |
+
"cell_type": "markdown",
|
| 378 |
+
"metadata": {},
|
| 379 |
+
"source": [
|
| 380 |
+
"Algo muy imporante es que a pesar de que medimos distancias no existen propiamente nociones de *cerca* y *lejos*. Si tomamos los siguientes $4$-vectores\n",
|
| 381 |
+
"\n",
|
| 382 |
+
"$$\n",
|
| 383 |
+
"\\mathbf{u} = \\begin{bmatrix}1.8 \\\\ 2.8 \\\\ -3.7 \\\\ 4.7 \\end{bmatrix}, \\qquad \\mathbf{v} = \\begin{bmatrix}0.6 \\\\ 2.1 \\\\ 1.9 \\\\ -1.4 \\end{bmatrix}, \\qquad \\mathbf{w} = \\begin{bmatrix}2.0 \\\\ 1.9 \\\\ -4.0 \\\\ 4.6 \\end{bmatrix}\n",
|
| 384 |
+
"$$\n",
|
| 385 |
+
"\n",
|
| 386 |
+
"Tenemos que las distancia entre los vectores es:\n",
|
| 387 |
+
"\n",
|
| 388 |
+
"$$\n",
|
| 389 |
+
"||\\mathbf{u}-\\mathbf{v}|| = 8.36, \\qquad ||\\mathbf{u}-\\mathbf{w}|| = 0.38, \\qquad ||\\mathbf{v}-\\mathbf{w}|| = 8.63\n",
|
| 390 |
+
"$$\n",
|
| 391 |
+
"\n",
|
| 392 |
+
"Entonces así ya tenemos noción de cercanía o lontanaza, de no ser porque comparamos no tendríamos estas nociones. "
|
| 393 |
+
]
|
| 394 |
+
},
|
| 395 |
+
{
|
| 396 |
+
"cell_type": "markdown",
|
| 397 |
+
"metadata": {},
|
| 398 |
+
"source": [
|
| 399 |
+
" "
|
| 400 |
+
]
|
| 401 |
+
},
|
| 402 |
+
{
|
| 403 |
+
"cell_type": "markdown",
|
| 404 |
+
"metadata": {},
|
| 405 |
+
"source": [
|
| 406 |
+
"**Desigualdad del triángulo.** Debido a que la distancia la definimos a partir de la norma entonces la distancia también está sujeta a cumplir la desigualdad del triángulo. Considemos entonces tres $n$-vectores $\\mathbf{a}$,$\\mathbf{b}$ y $\\mathbf{c}$ entonces tenemos\n",
|
| 407 |
+
"\n",
|
| 408 |
+
"$$\n",
|
| 409 |
+
"||\\mathbf{a}-\\mathbf{c}|| = ||\\mathbf{a}-\\mathbf{b}+\\mathbf{b}-\\mathbf{c}|| \\le ||\\mathbf{a}-\\mathbf{b}|| + ||\\mathbf{b}-\\mathbf{c}||\n",
|
| 410 |
+
"$$"
|
| 411 |
+
]
|
| 412 |
+
},
|
| 413 |
+
{
|
| 414 |
+
"cell_type": "markdown",
|
| 415 |
+
"metadata": {},
|
| 416 |
+
"source": [
|
| 417 |
+
"Vamos a partir de los siguientes $2$-vectores:\n",
|
| 418 |
+
"$$\n",
|
| 419 |
+
"\\mathbf{a} = \\begin{bmatrix} 1\\\\ 1 \\end{bmatrix}, \\qquad \\mathbf{b} = \\begin{bmatrix} 2\\\\ 3 \\end{bmatrix}, \\qquad \\mathbf{c} = \\begin{bmatrix} 4\\\\ 2 \\end{bmatrix}\n",
|
| 420 |
+
"$$"
|
| 421 |
+
]
|
| 422 |
+
},
|
| 423 |
+
{
|
| 424 |
+
"cell_type": "markdown",
|
| 425 |
+
"metadata": {},
|
| 426 |
+
"source": [
|
| 427 |
+
" "
|
| 428 |
+
]
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"cell_type": "markdown",
|
| 432 |
+
"metadata": {},
|
| 433 |
+
"source": [
|
| 434 |
+
"## 8.3 Una aplicación"
|
| 435 |
+
]
|
| 436 |
+
},
|
| 437 |
+
{
|
| 438 |
+
"cell_type": "markdown",
|
| 439 |
+
"metadata": {},
|
| 440 |
+
"source": [
|
| 441 |
+
"**Visita óptima de apartamentos para arrendar.** Supongamos que estamos en búsqueda de alquilar un apartamento. Comenzamos buscando caracacterísticas como cantidad de recámaras, cantidad de baños, estacionamientos, zona y tamaño. Un problema es que algunas veces llegamos a colectar una gran cantidad de anuncios y contactos y organizarnos para ir a las visitas puede parecer prácticamte imposible y puede que dejemos escapar una gran oportunidad. Afortunadamente en este curso vamos a proponer una solución: vamos a partir de nuestro departamento ideal y vamos a representarlo como un vector de caracteristicas, construimos el mismo vector para los apartamentos que ya tengamos localizados y calculamos la distancia entre estos vectores y el vector que representa al departamento ideal. Los ordenamos por de manera ascendente y ya tendríamos una lista ordenada en prioridad de contacto y visita de apartamentos según nuestro apartamento ideal. \n",
|
| 442 |
+
"\n",
|
| 443 |
+
"Para esto, supongamos que las características que queremos tomar en cuenta son tamaño del apartamento, número de recámaras, número de baños y número de estacionamientos. Notemos que en el caso de tamaño del apartamento regularmente se nos da en metros cuadrados (área) pero el gran problema es que puede variar mucho y usar estos números *tan grandes* puede introducir una gran cantidad de ruido. Para resolver el problema anterior vamos a catalogar los tamaños de apartametos en categorias:\n",
|
| 444 |
+
"1. Si el área es menor que 60 metros cuadrados\n",
|
| 445 |
+
"2. Si el área es mayor o igual que 60 metros cuadrados pero menor que 80 metros cuadrados\n",
|
| 446 |
+
"3. Si el área es mayor o igual que 80 metros cuadrados pero menor que 110 metros cuadrados\n",
|
| 447 |
+
"4. Si el área es mayor o igual que 110 metros cuadrados pero menor que 130 metros cuadrados\n",
|
| 448 |
+
"5. Si el área es mayor o igual que 130 metros cuadrados. "
|
| 449 |
+
]
|
| 450 |
+
},
|
| 451 |
+
{
|
| 452 |
+
"cell_type": "markdown",
|
| 453 |
+
"metadata": {},
|
| 454 |
+
"source": [
|
| 455 |
+
"Supongamos también que el orden de las características en el vector es categoria de tamaño, número de recámaras, número de baños y número estacionamientos. Nuestro apartamento ideal viene dado por el siguiente vector:\n",
|
| 456 |
+
"\n",
|
| 457 |
+
"$$\n",
|
| 458 |
+
"\\mathbf{I} = \\begin{bmatrix} 3\\\\ 2\\\\ 2\\\\1 \\end{bmatrix}\n",
|
| 459 |
+
"$$\n",
|
| 460 |
+
"\n",
|
| 461 |
+
"Y nostros encontramos los siguientes apartamentos:\n",
|
| 462 |
+
"\n",
|
| 463 |
+
"$$\n",
|
| 464 |
+
"\\mathbf{A_{1}} = \\begin{bmatrix}4 \\\\3 \\\\ 3\\\\3 \\end{bmatrix}, \\qquad \\mathbf{A_{2}} = \\begin{bmatrix}3 \\\\3 \\\\ 1\\\\0 \\end{bmatrix}, \\qquad \\mathbf{A_{3}} = \\begin{bmatrix}5 \\\\4 \\\\ 3\\\\0 \\end{bmatrix}\n",
|
| 465 |
+
"$$"
|
| 466 |
+
]
|
| 467 |
+
},
|
| 468 |
+
{
|
| 469 |
+
"cell_type": "code",
|
| 470 |
+
"execution_count": 21,
|
| 471 |
+
"metadata": {},
|
| 472 |
+
"outputs": [],
|
| 473 |
+
"source": [
|
| 474 |
+
"I = np.array([3,2,2,1])\n",
|
| 475 |
+
"A_1 = np.array([4,3,3,3])\n",
|
| 476 |
+
"A_2 = np.array([3,3,2,1])\n",
|
| 477 |
+
"A_3 = np.array([5,4,3,0])"
|
| 478 |
+
]
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"cell_type": "code",
|
| 482 |
+
"execution_count": 22,
|
| 483 |
+
"metadata": {},
|
| 484 |
+
"outputs": [
|
| 485 |
+
{
|
| 486 |
+
"name": "stdout",
|
| 487 |
+
"output_type": "stream",
|
| 488 |
+
"text": [
|
| 489 |
+
"||I-A_1|| = 2.6457513110645907\n",
|
| 490 |
+
"||I-A_2|| = 1.0\n",
|
| 491 |
+
"||I-A_3|| = 3.1622776601683795\n"
|
| 492 |
+
]
|
| 493 |
+
}
|
| 494 |
+
],
|
| 495 |
+
"source": [
|
| 496 |
+
"print('||I-A_1|| =',np.linalg.norm(I-A_1))\n",
|
| 497 |
+
"print('||I-A_2|| =',np.linalg.norm(I-A_2))\n",
|
| 498 |
+
"print('||I-A_3|| =',np.linalg.norm(I-A_3))"
|
| 499 |
+
]
|
| 500 |
+
},
|
| 501 |
+
{
|
| 502 |
+
"cell_type": "markdown",
|
| 503 |
+
"metadata": {},
|
| 504 |
+
"source": [
|
| 505 |
+
"Este problema es el problema de encontrar el vector más cercano. Básicamte si tenemos una colección de N $n$-vectores $z_{0},z_{1},\\dots,z_{N-1}$ vamos a decir que $z_{i}$ es el vecino más cercano del vector $x$ si \n",
|
| 506 |
+
"\n",
|
| 507 |
+
"$$\n",
|
| 508 |
+
"||x-z_{i}|| \\le ||x - z_{j}|| \\quad con \\; \\; j = 0,\\dots, N-1\n",
|
| 509 |
+
"$$"
|
| 510 |
+
]
|
| 511 |
+
}
|
| 512 |
+
],
|
| 513 |
+
"metadata": {
|
| 514 |
+
"kernelspec": {
|
| 515 |
+
"display_name": "Python 3",
|
| 516 |
+
"language": "python",
|
| 517 |
+
"name": "python3"
|
| 518 |
+
},
|
| 519 |
+
"language_info": {
|
| 520 |
+
"codemirror_mode": {
|
| 521 |
+
"name": "ipython",
|
| 522 |
+
"version": 3
|
| 523 |
+
},
|
| 524 |
+
"file_extension": ".py",
|
| 525 |
+
"mimetype": "text/x-python",
|
| 526 |
+
"name": "python",
|
| 527 |
+
"nbconvert_exporter": "python",
|
| 528 |
+
"pygments_lexer": "ipython3",
|
| 529 |
+
"version": "3.7.3"
|
| 530 |
+
}
|
| 531 |
+
},
|
| 532 |
+
"nbformat": 4,
|
| 533 |
+
"nbformat_minor": 4
|
| 534 |
+
}
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-Cálculo de Distancias entre Vectores usando Normas Euclidianas y LP.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:85c2a2612c728e88871feafc16a0fa4522936f772ab59b98ada5e753edd4dd8f
|
| 3 |
+
size 219666438
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-Cálculo de Distancias entre Vectores usando Normas Euclidianas y LP.vtt
ADDED
|
@@ -0,0 +1,1198 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.679 --> 00:00:05.920
|
| 4 |
+
Hola. En esta clase vamos a ver cómo
|
| 5 |
+
|
| 6 |
+
00:00:05.920 --> 00:00:07.520
|
| 7 |
+
a partir de lo que aprendimos la clase
|
| 8 |
+
|
| 9 |
+
00:00:07.520 --> 00:00:09.920
|
| 10 |
+
pasada, que es la norma, vamos a poder
|
| 11 |
+
|
| 12 |
+
00:00:09.920 --> 00:00:13.460
|
| 13 |
+
empezar a calcular la distancia entre dos vectores.
|
| 14 |
+
|
| 15 |
+
00:00:13.885 --> 00:00:16.965
|
| 16 |
+
Igual manera, vamos a ver una representación geométrica
|
| 17 |
+
|
| 18 |
+
00:00:16.965 --> 00:00:19.325
|
| 19 |
+
y vamos a conocer otras formas de medir
|
| 20 |
+
|
| 21 |
+
00:00:19.325 --> 00:00:23.565
|
| 22 |
+
distancias. Sin más, vamos a la computadora. Ahora,
|
| 23 |
+
|
| 24 |
+
00:00:23.565 --> 00:00:26.285
|
| 25 |
+
este notebook en el que estamos trabajando es
|
| 26 |
+
|
| 27 |
+
00:00:26.285 --> 00:00:28.845
|
| 28 |
+
el notebook que empezamos a trabajar la clase
|
| 29 |
+
|
| 30 |
+
00:00:28.845 --> 00:00:31.740
|
| 31 |
+
pasada. Entonces, no te preocupes, lo vas a
|
| 32 |
+
|
| 33 |
+
00:00:31.740 --> 00:00:33.660
|
| 34 |
+
tener disponible, y lo más importante es que
|
| 35 |
+
|
| 36 |
+
00:00:33.660 --> 00:00:36.540
|
| 37 |
+
estemos seguros de que estas celdas sí estén
|
| 38 |
+
|
| 39 |
+
00:00:36.540 --> 00:00:38.660
|
| 40 |
+
corriendo o se hayan corrido antes de que
|
| 41 |
+
|
| 42 |
+
00:00:38.660 --> 00:00:41.520
|
| 43 |
+
nosotros empecemos a trabajar, pues vamos a empezar
|
| 44 |
+
|
| 45 |
+
00:00:41.580 --> 00:00:43.820
|
| 46 |
+
a a usar esa función norma para lo
|
| 47 |
+
|
| 48 |
+
00:00:43.820 --> 00:00:47.515
|
| 49 |
+
que viene, al igual que en un pay.
|
| 50 |
+
|
| 51 |
+
00:00:50.375 --> 00:00:53.175
|
| 52 |
+
Ahora bien, llegados a este punto, nosotros ya
|
| 53 |
+
|
| 54 |
+
00:00:53.175 --> 00:00:56.215
|
| 55 |
+
definimos la función norma y ya sabemos cómo
|
| 56 |
+
|
| 57 |
+
00:00:56.215 --> 00:00:58.510
|
| 58 |
+
calcular la magnitud de un vector. Lo que
|
| 59 |
+
|
| 60 |
+
00:00:58.510 --> 00:01:00.750
|
| 61 |
+
vamos a hacer ahora es calcular la distancia
|
| 62 |
+
|
| 63 |
+
00:01:00.750 --> 00:01:03.710
|
| 64 |
+
entre dos vectores, y es que hay algo
|
| 65 |
+
|
| 66 |
+
00:01:03.710 --> 00:01:07.310
|
| 67 |
+
que tenemos que hacer, porque tenemos que entender
|
| 68 |
+
|
| 69 |
+
00:01:07.310 --> 00:01:10.270
|
| 70 |
+
ahora de manera geométrica qué va a significar
|
| 71 |
+
|
| 72 |
+
00:01:10.270 --> 00:01:13.410
|
| 73 |
+
sumar vectores y qué va a significar sumar,
|
| 74 |
+
|
| 75 |
+
00:01:13.935 --> 00:01:17.455
|
| 76 |
+
restarlos también. Entonces, primero vamos a proponer dos
|
| 77 |
+
|
| 78 |
+
00:01:17.455 --> 00:01:20.335
|
| 79 |
+
vectores cualesquiera. Lo que estoy diciendo aquí es
|
| 80 |
+
|
| 81 |
+
00:01:20.335 --> 00:01:22.895
|
| 82 |
+
que la distancia entre dos vectores se va
|
| 83 |
+
|
| 84 |
+
00:01:22.895 --> 00:01:25.215
|
| 85 |
+
a proponer como la norma de la resta
|
| 86 |
+
|
| 87 |
+
00:01:25.215 --> 00:01:28.470
|
| 88 |
+
de esos vectores. Veamos entonces si proponemos un
|
| 89 |
+
|
| 90 |
+
00:01:28.470 --> 00:01:35.430
|
| 91 |
+
vector a igual ANP dot array uno coma
|
| 92 |
+
|
| 93 |
+
00:01:35.430 --> 00:01:39.130
|
| 94 |
+
uno y después proponemos a un vector b
|
| 95 |
+
|
| 96 |
+
00:01:39.670 --> 00:01:54.185
|
| 97 |
+
igual ANP array. Menos dos coma tres. Y
|
| 98 |
+
|
| 99 |
+
00:01:54.185 --> 00:01:56.920
|
| 100 |
+
ahora vamos a calcular la resta de estos
|
| 101 |
+
|
| 102 |
+
00:01:56.920 --> 00:01:58.750
|
| 103 |
+
vectores. A ese vector le voy a llamar
|
| 104 |
+
|
| 105 |
+
00:01:58.750 --> 00:02:09.080
|
| 106 |
+
el vector c. Entonces, tenemos que el vector
|
| 107 |
+
|
| 108 |
+
00:02:09.080 --> 00:02:14.025
|
| 109 |
+
c es simplemente tres menos dos. Vamos de
|
| 110 |
+
|
| 111 |
+
00:02:14.025 --> 00:02:16.525
|
| 112 |
+
nuevo a Geogebra para poder hacer este ejercicio.
|
| 113 |
+
|
| 114 |
+
00:02:21.465 --> 00:02:24.470
|
| 115 |
+
Ahora, si recordamos, aquí en GeoGeora tenemos que
|
| 116 |
+
|
| 117 |
+
00:02:24.470 --> 00:02:27.190
|
| 118 |
+
empezar a declarar nuestros vectores. Vamos a empezar
|
| 119 |
+
|
| 120 |
+
00:02:27.190 --> 00:02:36.410
|
| 121 |
+
declarando el vector uno coma uno. Vamos a
|
| 122 |
+
|
| 123 |
+
00:02:36.470 --> 00:02:46.915
|
| 124 |
+
declarar también el vector menos dos coma tres.
|
| 125 |
+
|
| 126 |
+
00:02:46.915 --> 00:02:49.575
|
| 127 |
+
Y ahora vamos a revisitar lo que significaba
|
| 128 |
+
|
| 129 |
+
00:02:49.635 --> 00:02:52.780
|
| 130 |
+
sumar los vectores. Vamos a dibujar el nuevo
|
| 131 |
+
|
| 132 |
+
00:02:52.780 --> 00:02:57.500
|
| 133 |
+
vector u más v. U más v es
|
| 134 |
+
|
| 135 |
+
00:02:57.500 --> 00:02:59.980
|
| 136 |
+
igual a ese vector de ahí. Ahora, ¿cómo
|
| 137 |
+
|
| 138 |
+
00:02:59.980 --> 00:03:02.300
|
| 139 |
+
es que sale ese vector de ahí? Bueno,
|
| 140 |
+
|
| 141 |
+
00:03:02.300 --> 00:03:04.400
|
| 142 |
+
lo que vamos a hacer en este momento
|
| 143 |
+
|
| 144 |
+
00:03:05.180 --> 00:03:10.834
|
| 145 |
+
es trasladar este vector u hacia acá y
|
| 146 |
+
|
| 147 |
+
00:03:10.834 --> 00:03:14.855
|
| 148 |
+
vamos a trasladar este vector b hacia acá.
|
| 149 |
+
|
| 150 |
+
00:03:16.114 --> 00:03:52.640
|
| 151 |
+
Vamos a hacerlo. Ahora bien, ya dibujados nuestros
|
| 152 |
+
|
| 153 |
+
00:03:52.640 --> 00:03:56.305
|
| 154 |
+
vectores, vamos a retomar el ejercicio. Primero dibujamos
|
| 155 |
+
|
| 156 |
+
00:03:56.305 --> 00:03:59.584
|
| 157 |
+
nuestros vectores bases, que era nuestro vector VYU,
|
| 158 |
+
|
| 159 |
+
00:03:59.584 --> 00:04:01.265
|
| 160 |
+
que era el vector uno coma uno y
|
| 161 |
+
|
| 162 |
+
00:04:01.265 --> 00:04:04.245
|
| 163 |
+
el vector menos dos coma tres. Ahora bien,
|
| 164 |
+
|
| 165 |
+
00:04:05.025 --> 00:04:06.944
|
| 166 |
+
vamos a ver qué pasa si sumamos el
|
| 167 |
+
|
| 168 |
+
00:04:06.944 --> 00:04:11.000
|
| 169 |
+
vector VYUU. La suma del vector VYU es
|
| 170 |
+
|
| 171 |
+
00:04:11.000 --> 00:04:14.280
|
| 172 |
+
este vector w. Nosotros ya vimos cómo hacer
|
| 173 |
+
|
| 174 |
+
00:04:14.280 --> 00:04:17.800
|
| 175 |
+
la suma de de manera algebraica. Ahora, yo
|
| 176 |
+
|
| 177 |
+
00:04:17.800 --> 00:04:19.720
|
| 178 |
+
te invito a que tomes una hoja de
|
| 179 |
+
|
| 180 |
+
00:04:19.720 --> 00:04:23.585
|
| 181 |
+
papel, una credencial, te puede servir, o bien,
|
| 182 |
+
|
| 183 |
+
00:04:23.585 --> 00:04:25.465
|
| 184 |
+
un set de reglas, y lo que vamos
|
| 185 |
+
|
| 186 |
+
00:04:25.465 --> 00:04:28.305
|
| 187 |
+
a hacer es esto. Nosotros vamos a partir
|
| 188 |
+
|
| 189 |
+
00:04:28.305 --> 00:04:31.345
|
| 190 |
+
de que tenemos esos vectores dibujados, puedes ayudarte
|
| 191 |
+
|
| 192 |
+
00:04:31.345 --> 00:04:34.465
|
| 193 |
+
de una hoja cuadriculada, y entonces vas a
|
| 194 |
+
|
| 195 |
+
00:04:34.465 --> 00:04:37.541
|
| 196 |
+
recargar aquí tu tu regla y vas a
|
| 197 |
+
|
| 198 |
+
00:04:37.541 --> 00:04:40.740
|
| 199 |
+
poner otra regla aquí para que puedas mover
|
| 200 |
+
|
| 201 |
+
00:04:40.800 --> 00:04:44.320
|
| 202 |
+
exactamente este trazo hacia acá, de manera que
|
| 203 |
+
|
| 204 |
+
00:04:44.320 --> 00:04:48.800
|
| 205 |
+
te quede un trazo aquí. Este vector de
|
| 206 |
+
|
| 207 |
+
00:04:48.800 --> 00:04:52.104
|
| 208 |
+
aquí es el vector correspondiente a haber trasladado
|
| 209 |
+
|
| 210 |
+
00:04:52.485 --> 00:04:55.525
|
| 211 |
+
este vector hasta acá, hasta la punta de
|
| 212 |
+
|
| 213 |
+
00:04:55.525 --> 00:04:58.565
|
| 214 |
+
este vector. Ahora lo mismo vamos a hacer
|
| 215 |
+
|
| 216 |
+
00:04:58.565 --> 00:05:02.164
|
| 217 |
+
con este, pero en esta dirección. Tomamos este
|
| 218 |
+
|
| 219 |
+
00:05:02.164 --> 00:05:04.820
|
| 220 |
+
vector v, nos recargamos en una regla y
|
| 221 |
+
|
| 222 |
+
00:05:04.820 --> 00:05:08.419
|
| 223 |
+
lo desplazamos, y desplazándolo nos debería de quedar
|
| 224 |
+
|
| 225 |
+
00:05:08.419 --> 00:05:12.580
|
| 226 |
+
este vector de aquí. Ahora, si nosotros nos
|
| 227 |
+
|
| 228 |
+
00:05:12.580 --> 00:05:16.440
|
| 229 |
+
fijamos de manera cuidadosa, podemos trazar una línea
|
| 230 |
+
|
| 231 |
+
00:05:16.500 --> 00:05:19.115
|
| 232 |
+
de este punto hacia este punto en donde
|
| 233 |
+
|
| 234 |
+
00:05:19.115 --> 00:05:21.755
|
| 235 |
+
se intersectan esas dos flechas, y eso de
|
| 236 |
+
|
| 237 |
+
00:05:21.755 --> 00:05:24.475
|
| 238 |
+
ahí será la suma de los vectores. A
|
| 239 |
+
|
| 240 |
+
00:05:24.475 --> 00:05:26.155
|
| 241 |
+
esto se le conoce como la suma del
|
| 242 |
+
|
| 243 |
+
00:05:26.155 --> 00:05:29.115
|
| 244 |
+
paralelogramo, o la suma del rombo, también le
|
| 245 |
+
|
| 246 |
+
00:05:29.115 --> 00:05:32.200
|
| 247 |
+
suelen llamar. Y es que justamente los vectores
|
| 248 |
+
|
| 249 |
+
00:05:32.260 --> 00:05:34.740
|
| 250 |
+
son cantidades tan geométricas que incluso en su
|
| 251 |
+
|
| 252 |
+
00:05:34.740 --> 00:05:37.300
|
| 253 |
+
suma se conservan este tipo de cosas. Pero
|
| 254 |
+
|
| 255 |
+
00:05:37.300 --> 00:05:39.780
|
| 256 |
+
hay una cosa muy interesante también, y es
|
| 257 |
+
|
| 258 |
+
00:05:39.780 --> 00:05:41.955
|
| 259 |
+
que, ¿qué es la resta en este caso?
|
| 260 |
+
|
| 261 |
+
00:05:42.435 --> 00:05:45.395
|
| 262 |
+
Bueno, si nosotros quisiéramos medir la distancia del
|
| 263 |
+
|
| 264 |
+
00:05:45.395 --> 00:05:47.474
|
| 265 |
+
vector v al vector u, sería medir la
|
| 266 |
+
|
| 267 |
+
00:05:47.474 --> 00:05:50.694
|
| 268 |
+
distancia de este lugar a este lugar. Entonces,
|
| 269 |
+
|
| 270 |
+
00:05:51.155 --> 00:05:53.094
|
| 271 |
+
para poder hacer eso, como lo hemos venido
|
| 272 |
+
|
| 273 |
+
00:05:53.155 --> 00:05:55.235
|
| 274 |
+
haciendo hasta ahora, deberíamos de poder construir un
|
| 275 |
+
|
| 276 |
+
00:05:55.235 --> 00:05:57.474
|
| 277 |
+
vector que vaya de este punto a este
|
| 278 |
+
|
| 279 |
+
00:05:57.474 --> 00:06:00.009
|
| 280 |
+
punto y a ese vector le podríamos calcular
|
| 281 |
+
|
| 282 |
+
00:06:00.009 --> 00:06:03.850
|
| 283 |
+
su magnitud. ¿Y adivinen qué? Siguiendo esta misma
|
| 284 |
+
|
| 285 |
+
00:06:03.850 --> 00:06:07.850
|
| 286 |
+
construcción, si nosotros trazamos ese vector transversal, lo
|
| 287 |
+
|
| 288 |
+
00:06:07.850 --> 00:06:09.289
|
| 289 |
+
a lo que vamos a llegar es que
|
| 290 |
+
|
| 291 |
+
00:06:09.289 --> 00:06:11.150
|
| 292 |
+
ese vector es la resta de los vectores.
|
| 293 |
+
|
| 294 |
+
00:06:11.565 --> 00:06:13.885
|
| 295 |
+
Entonces, vamos a trazar, por ejemplo, el u
|
| 296 |
+
|
| 297 |
+
00:06:13.885 --> 00:06:21.005
|
| 298 |
+
menos v. Y entonces, nos sale justamente este
|
| 299 |
+
|
| 300 |
+
00:06:21.005 --> 00:06:23.980
|
| 301 |
+
vector. Ahora, cuando nosotros hacemos la resta algebraica,
|
| 302 |
+
|
| 303 |
+
00:06:23.980 --> 00:06:26.860
|
| 304 |
+
las restas algebraicas se hacen en función del
|
| 305 |
+
|
| 306 |
+
00:06:26.860 --> 00:06:30.940
|
| 307 |
+
centro. Nosotros podemos trasladar este vector de aquí.
|
| 308 |
+
|
| 309 |
+
00:06:30.940 --> 00:06:34.000
|
| 310 |
+
Entonces, lo que vamos a hacer es justamente
|
| 311 |
+
|
| 312 |
+
00:06:34.300 --> 00:06:44.105
|
| 313 |
+
esto de acá. Vector de menos dos coma
|
| 314 |
+
|
| 315 |
+
00:06:44.105 --> 00:06:54.510
|
| 316 |
+
tres. Ahora bien, lo que podemos hacer para
|
| 317 |
+
|
| 318 |
+
00:06:54.510 --> 00:06:56.910
|
| 319 |
+
poder hacer este trazo es recargar aquí una
|
| 320 |
+
|
| 321 |
+
00:06:56.910 --> 00:06:59.470
|
| 322 |
+
regla y recargar la otra en ángulo, y
|
| 323 |
+
|
| 324 |
+
00:06:59.470 --> 00:07:02.510
|
| 325 |
+
traspasar este vector de aquí en ángulo hacia
|
| 326 |
+
|
| 327 |
+
00:07:02.510 --> 00:07:05.410
|
| 328 |
+
acá. Veremos que es exactamente el mismo vector
|
| 329 |
+
|
| 330 |
+
00:07:05.445 --> 00:07:07.765
|
| 331 |
+
y va a tener la misma magnitud, es
|
| 332 |
+
|
| 333 |
+
00:07:07.765 --> 00:07:10.005
|
| 334 |
+
decir, midiendo la magnitud de la resta del
|
| 335 |
+
|
| 336 |
+
00:07:10.005 --> 00:07:13.685
|
| 337 |
+
vector UYB, podemos obtener justamente la distancia de
|
| 338 |
+
|
| 339 |
+
00:07:13.685 --> 00:07:16.505
|
| 340 |
+
este punto a este punto. Es por eso
|
| 341 |
+
|
| 342 |
+
00:07:16.725 --> 00:07:19.205
|
| 343 |
+
que, para calcular la distancia del vector b
|
| 344 |
+
|
| 345 |
+
00:07:19.205 --> 00:07:21.490
|
| 346 |
+
al vector u, una de las mejores formas
|
| 347 |
+
|
| 348 |
+
00:07:21.490 --> 00:07:24.150
|
| 349 |
+
de hacerlo es a través de la resta.
|
| 350 |
+
|
| 351 |
+
00:07:24.530 --> 00:07:26.690
|
| 352 |
+
Y después, ya que restamos esos y creamos
|
| 353 |
+
|
| 354 |
+
00:07:26.690 --> 00:07:29.730
|
| 355 |
+
este nuevo vector, a este le calculamos la
|
| 356 |
+
|
| 357 |
+
00:07:29.730 --> 00:07:33.170
|
| 358 |
+
magnitud y ya tendremos lo que es la
|
| 359 |
+
|
| 360 |
+
00:07:33.170 --> 00:07:36.805
|
| 361 |
+
distancia del vector v al vector u. Regresemos
|
| 362 |
+
|
| 363 |
+
00:07:36.805 --> 00:07:43.284
|
| 364 |
+
al notebook. Ahora, simplemente recordando lo que vimos
|
| 365 |
+
|
| 366 |
+
00:07:43.284 --> 00:07:46.965
|
| 367 |
+
en Geogebra, nos daremos cuenta que el vector
|
| 368 |
+
|
| 369 |
+
00:07:46.965 --> 00:07:50.004
|
| 370 |
+
que habíamos obtenido era exactamente tres coma menos
|
| 371 |
+
|
| 372 |
+
00:07:50.004 --> 00:07:52.320
|
| 373 |
+
dos. ¿Y cuál sería la distancia entre estos
|
| 374 |
+
|
| 375 |
+
00:07:52.320 --> 00:07:56.180
|
| 376 |
+
vectores? Bueno, eso lo podemos calcular también aquí.
|
| 377 |
+
|
| 378 |
+
00:07:56.400 --> 00:07:59.280
|
| 379 |
+
Si recordamos, ya teníamos una función que se
|
| 380 |
+
|
| 381 |
+
00:07:59.280 --> 00:08:04.900
|
| 382 |
+
llamaba norma, y esa función norma es simplemente
|
| 383 |
+
|
| 384 |
+
00:08:05.039 --> 00:08:07.405
|
| 385 |
+
aplicarla y ya nos da la longitud del
|
| 386 |
+
|
| 387 |
+
00:08:07.405 --> 00:08:09.884
|
| 388 |
+
la magnitud del vector, que es tres punto
|
| 389 |
+
|
| 390 |
+
00:08:09.884 --> 00:08:13.725
|
| 391 |
+
seis, pero podríamos hacerlo directamente acá, en a
|
| 392 |
+
|
| 393 |
+
00:08:13.725 --> 00:08:16.764
|
| 394 |
+
menos b, realizaría primero la operación y después
|
| 395 |
+
|
| 396 |
+
00:08:16.764 --> 00:08:20.710
|
| 397 |
+
se evaluaría la función norma. Nos da exactamente
|
| 398 |
+
|
| 399 |
+
00:08:20.770 --> 00:08:23.970
|
| 400 |
+
lo mismo. Ahora, hay algo muy interesante y
|
| 401 |
+
|
| 402 |
+
00:08:23.970 --> 00:08:25.970
|
| 403 |
+
es que, como muchas otras funciones que hemos
|
| 404 |
+
|
| 405 |
+
00:08:25.970 --> 00:08:29.010
|
| 406 |
+
visto hasta ahora, NumPy ya trae precargada también
|
| 407 |
+
|
| 408 |
+
00:08:29.010 --> 00:08:31.890
|
| 409 |
+
una función de norma. ¿Cómo podemos acceder a
|
| 410 |
+
|
| 411 |
+
00:08:31.890 --> 00:08:34.574
|
| 412 |
+
ella? Tenemos que acceder a través de numpy
|
| 413 |
+
|
| 414 |
+
00:08:34.995 --> 00:08:43.834
|
| 415 |
+
dot linalg punto norm. Y evaluamos el vector
|
| 416 |
+
|
| 417 |
+
00:08:43.834 --> 00:08:48.020
|
| 418 |
+
que nosotros queramos hacer, a menos b, por
|
| 419 |
+
|
| 420 |
+
00:08:48.080 --> 00:08:50.800
|
| 421 |
+
ejemplo, y nos da exactamente lo mismo. Esta
|
| 422 |
+
|
| 423 |
+
00:08:50.800 --> 00:08:52.880
|
| 424 |
+
fue la que nosotros construimos y es esta
|
| 425 |
+
|
| 426 |
+
00:08:52.880 --> 00:08:54.640
|
| 427 |
+
la que está en NumPy. ¿Cuál es la
|
| 428 |
+
|
| 429 |
+
00:08:54.640 --> 00:08:56.800
|
| 430 |
+
ventaja de que esté en NumPy? Bueno, nosotros
|
| 431 |
+
|
| 432 |
+
00:08:56.800 --> 00:08:58.800
|
| 433 |
+
no vamos a tener que estar declarando esta
|
| 434 |
+
|
| 435 |
+
00:08:58.800 --> 00:09:00.480
|
| 436 |
+
función todo el tiempo y ya va a
|
| 437 |
+
|
| 438 |
+
00:09:00.480 --> 00:09:03.515
|
| 439 |
+
estar precargada aquí. Entonces, a partir de este
|
| 440 |
+
|
| 441 |
+
00:09:03.515 --> 00:09:05.275
|
| 442 |
+
momento vamos a dejar de utilizar la función
|
| 443 |
+
|
| 444 |
+
00:09:05.275 --> 00:09:07.755
|
| 445 |
+
norma que habíamos creado y, por simplicidad, vamos
|
| 446 |
+
|
| 447 |
+
00:09:07.755 --> 00:09:10.495
|
| 448 |
+
a empezar a usar la función n p
|
| 449 |
+
|
| 450 |
+
00:09:10.715 --> 00:09:18.010
|
| 451 |
+
linalg norm. Ahora, a esto que estamos calculando
|
| 452 |
+
|
| 453 |
+
00:09:18.470 --> 00:09:21.370
|
| 454 |
+
se le llama norma euclidiana o distancia euclidiana,
|
| 455 |
+
|
| 456 |
+
00:09:21.750 --> 00:09:24.710
|
| 457 |
+
y tiene ese nombre porque así es como
|
| 458 |
+
|
| 459 |
+
00:09:24.710 --> 00:09:27.510
|
| 460 |
+
se infiere la medida de las distancias en
|
| 461 |
+
|
| 462 |
+
00:09:27.510 --> 00:09:30.485
|
| 463 |
+
los postulados de Euclides. Los postulados de Euclides
|
| 464 |
+
|
| 465 |
+
00:09:30.485 --> 00:09:34.245
|
| 466 |
+
son unos postulados que Euclides, por allá de
|
| 467 |
+
|
| 468 |
+
00:09:34.245 --> 00:09:39.845
|
| 469 |
+
el año trescientos antes de nuestra era, puso,
|
| 470 |
+
|
| 471 |
+
00:09:39.845 --> 00:09:43.610
|
| 472 |
+
y son cómo hacer algunos trazos dentro de
|
| 473 |
+
|
| 474 |
+
00:09:43.610 --> 00:09:46.330
|
| 475 |
+
el plano, al plano mismo que le llamamos
|
| 476 |
+
|
| 477 |
+
00:09:46.330 --> 00:09:50.810
|
| 478 |
+
hoy euclidiana también. Les invito a que le
|
| 479 |
+
|
| 480 |
+
00:09:50.810 --> 00:09:55.530
|
| 481 |
+
den una leída a este. Bien, ahora, la
|
| 482 |
+
|
| 483 |
+
00:09:55.530 --> 00:09:59.785
|
| 484 |
+
realidad es que la norma euclidiana es solamente
|
| 485 |
+
|
| 486 |
+
00:09:59.925 --> 00:10:02.885
|
| 487 |
+
una forma de medir. Hay muchas otras formas
|
| 488 |
+
|
| 489 |
+
00:10:02.885 --> 00:10:05.365
|
| 490 |
+
de medir, regularmente los espacios en los que
|
| 491 |
+
|
| 492 |
+
00:10:05.365 --> 00:10:08.265
|
| 493 |
+
vamos a estar trabajando son espacios que admiten
|
| 494 |
+
|
| 495 |
+
00:10:08.325 --> 00:10:11.920
|
| 496 |
+
normas LP. ¿Qué significa que admiten normas LP?
|
| 497 |
+
|
| 498 |
+
00:10:12.300 --> 00:10:15.519
|
| 499 |
+
Significa que nosotros podemos construir este de aquí
|
| 500 |
+
|
| 501 |
+
00:10:16.139 --> 00:10:18.220
|
| 502 |
+
para alguna p con p mayor o igual
|
| 503 |
+
|
| 504 |
+
00:10:18.220 --> 00:10:23.274
|
| 505 |
+
que uno. Ahora, esta norma de aquí, a
|
| 506 |
+
|
| 507 |
+
00:10:23.274 --> 00:10:25.774
|
| 508 |
+
pesar de que aquí estamos midiendo la longitud,
|
| 509 |
+
|
| 510 |
+
00:10:26.075 --> 00:10:28.555
|
| 511 |
+
la magnitud de un vector, como vimos aquí
|
| 512 |
+
|
| 513 |
+
00:10:28.555 --> 00:10:32.075
|
| 514 |
+
arriba, nos permite inducir también medir distancia entre
|
| 515 |
+
|
| 516 |
+
00:10:32.075 --> 00:10:38.330
|
| 517 |
+
vectores. Por ejemplo, en el caso de la
|
| 518 |
+
|
| 519 |
+
00:10:38.330 --> 00:10:41.610
|
| 520 |
+
norma euclidiana, a la norma euclidiana, si nos
|
| 521 |
+
|
| 522 |
+
00:10:41.610 --> 00:10:44.270
|
| 523 |
+
fijamos breve en la fórmula que tenemos aquí,
|
| 524 |
+
|
| 525 |
+
00:10:44.970 --> 00:10:47.470
|
| 526 |
+
también se le conoce como norma l dos,
|
| 527 |
+
|
| 528 |
+
00:10:47.850 --> 00:10:50.575
|
| 529 |
+
porque vamos a poner una p igual a
|
| 530 |
+
|
| 531 |
+
00:10:50.575 --> 00:10:55.055
|
| 532 |
+
dos aquí. Hay otras normas y esas otras
|
| 533 |
+
|
| 534 |
+
00:10:55.055 --> 00:10:57.615
|
| 535 |
+
normas reciben nombres. Por ejemplo, si p es
|
| 536 |
+
|
| 537 |
+
00:10:57.615 --> 00:11:00.175
|
| 538 |
+
igual a uno, tenemos la norma l uno,
|
| 539 |
+
|
| 540 |
+
00:11:00.175 --> 00:11:02.575
|
| 541 |
+
y esa es la llamada métrica del taxista
|
| 542 |
+
|
| 543 |
+
00:11:02.575 --> 00:11:05.160
|
| 544 |
+
o métrica de Manhattan. Y si, por ejemplo,
|
| 545 |
+
|
| 546 |
+
00:11:05.160 --> 00:11:07.360
|
| 547 |
+
hacemos que p tiende a infinito, entonces lo
|
| 548 |
+
|
| 549 |
+
00:11:07.360 --> 00:11:10.140
|
| 550 |
+
que obtenemos es l infinito, que es la
|
| 551 |
+
|
| 552 |
+
00:11:10.600 --> 00:11:13.640
|
| 553 |
+
llamada métrica del máximo. El caso de l
|
| 554 |
+
|
| 555 |
+
00:11:13.640 --> 00:11:16.200
|
| 556 |
+
infinito, por ejemplo, nos da simplemente la componente
|
| 557 |
+
|
| 558 |
+
00:11:16.200 --> 00:11:18.600
|
| 559 |
+
que sea la máxima, el máximo elemento de
|
| 560 |
+
|
| 561 |
+
00:11:18.600 --> 00:11:23.735
|
| 562 |
+
nuestro vector. Ahora, es muy importante saber qué
|
| 563 |
+
|
| 564 |
+
00:11:23.735 --> 00:11:26.775
|
| 565 |
+
métrica estamos utilizando para medir distancias, ya que
|
| 566 |
+
|
| 567 |
+
00:11:26.775 --> 00:11:28.855
|
| 568 |
+
la forma en la que medimos distancias está
|
| 569 |
+
|
| 570 |
+
00:11:28.855 --> 00:11:31.895
|
| 571 |
+
en total correspondencia con cómo estamos configurando el
|
| 572 |
+
|
| 573 |
+
00:11:31.895 --> 00:11:35.020
|
| 574 |
+
espacio y cómo lo estamos percibiendo. Por ejemplo,
|
| 575 |
+
|
| 576 |
+
00:11:35.020 --> 00:11:37.820
|
| 577 |
+
mientras que la métrica se euclidiana, esta métrica
|
| 578 |
+
|
| 579 |
+
00:11:37.820 --> 00:11:39.500
|
| 580 |
+
va a corresponder a la línea más corta
|
| 581 |
+
|
| 582 |
+
00:11:39.500 --> 00:11:42.460
|
| 583 |
+
entre dos vectores en el espacio. En el
|
| 584 |
+
|
| 585 |
+
00:11:42.460 --> 00:11:45.660
|
| 586 |
+
espacio plano, por supuesto. Mientras que en el
|
| 587 |
+
|
| 588 |
+
00:11:45.660 --> 00:11:48.355
|
| 589 |
+
caso de la métrica del taxista, esta será
|
| 590 |
+
|
| 591 |
+
00:11:48.355 --> 00:11:50.194
|
| 592 |
+
la más corta, pero no en el sentido
|
| 593 |
+
|
| 594 |
+
00:11:50.194 --> 00:11:54.514
|
| 595 |
+
de una línea recta, serán segmentos, serán distancias
|
| 596 |
+
|
| 597 |
+
00:11:54.514 --> 00:11:57.634
|
| 598 |
+
medidas por bloques. Vamos rápido de regreso a
|
| 599 |
+
|
| 600 |
+
00:11:57.634 --> 00:11:59.975
|
| 601 |
+
Geogero para ver un breve ejemplo de esto.
|
| 602 |
+
|
| 603 |
+
00:12:01.150 --> 00:12:03.230
|
| 604 |
+
Ahora, una cosa muy interesante por lo cual
|
| 605 |
+
|
| 606 |
+
00:12:03.230 --> 00:12:04.830
|
| 607 |
+
voy a utilizar el grid es que en
|
| 608 |
+
|
| 609 |
+
00:12:04.830 --> 00:12:06.510
|
| 610 |
+
el caso de la norma de taxista o
|
| 611 |
+
|
| 612 |
+
00:12:06.510 --> 00:12:08.590
|
| 613 |
+
norma L uno, nos va a ayudar mucho
|
| 614 |
+
|
| 615 |
+
00:12:08.590 --> 00:12:10.750
|
| 616 |
+
este grid para poder ubicarnos, y lo que
|
| 617 |
+
|
| 618 |
+
00:12:10.750 --> 00:12:13.390
|
| 619 |
+
pasa es esto. En una ciudad, por ejemplo,
|
| 620 |
+
|
| 621 |
+
00:12:13.390 --> 00:12:14.990
|
| 622 |
+
en la Ciudad de México, en Colombia o
|
| 623 |
+
|
| 624 |
+
00:12:14.990 --> 00:12:19.025
|
| 625 |
+
en Manhattan, si nosotros tuviéramos un destino en
|
| 626 |
+
|
| 627 |
+
00:12:19.025 --> 00:12:23.685
|
| 628 |
+
el punto, vamos a trazar un punto, point,
|
| 629 |
+
|
| 630 |
+
00:12:25.105 --> 00:12:31.589
|
| 631 |
+
y ese punto va a ser el, que
|
| 632 |
+
|
| 633 |
+
00:12:31.589 --> 00:12:41.670
|
| 634 |
+
sea el tres coma tres. Tracemos, nos va
|
| 635 |
+
|
| 636 |
+
00:12:41.670 --> 00:12:45.475
|
| 637 |
+
a ser más útil trazar un vector. Vector
|
| 638 |
+
|
| 639 |
+
00:12:45.475 --> 00:12:47.475
|
| 640 |
+
y le vamos a dar el tres coma
|
| 641 |
+
|
| 642 |
+
00:12:47.475 --> 00:12:52.355
|
| 643 |
+
tres. Ahora, si nosotros queremos ir de la
|
| 644 |
+
|
| 645 |
+
00:12:52.355 --> 00:12:57.490
|
| 646 |
+
forma eucliviana del punto cero coma cero al
|
| 647 |
+
|
| 648 |
+
00:12:57.490 --> 00:13:00.310
|
| 649 |
+
tres coma tres, lo que tendríamos que hacer
|
| 650 |
+
|
| 651 |
+
00:13:00.370 --> 00:13:02.769
|
| 652 |
+
justamente es trazar la misma recta que está
|
| 653 |
+
|
| 654 |
+
00:13:02.769 --> 00:13:05.490
|
| 655 |
+
trazando el el vector. Ese es el camino
|
| 656 |
+
|
| 657 |
+
00:13:05.490 --> 00:13:08.230
|
| 658 |
+
más corto que podríamos hacer en el plano.
|
| 659 |
+
|
| 660 |
+
00:13:08.865 --> 00:13:11.185
|
| 661 |
+
Pero en una ciudad no es así, en
|
| 662 |
+
|
| 663 |
+
00:13:11.185 --> 00:13:13.365
|
| 664 |
+
una ciudad nos tenemos que ir por bloques.
|
| 665 |
+
|
| 666 |
+
00:13:13.665 --> 00:13:15.745
|
| 667 |
+
Entonces, en lugar de hacer ese camino, lo
|
| 668 |
+
|
| 669 |
+
00:13:15.745 --> 00:13:19.425
|
| 670 |
+
que haríamos sería recorrer el camino, quizá el
|
| 671 |
+
|
| 672 |
+
00:13:19.425 --> 00:13:23.425
|
| 673 |
+
camino más corto sea hacer esta recta de
|
| 674 |
+
|
| 675 |
+
00:13:23.425 --> 00:13:26.230
|
| 676 |
+
aquí, toda toda esta venida de aquí y
|
| 677 |
+
|
| 678 |
+
00:13:26.690 --> 00:13:30.530
|
| 679 |
+
después subir toda esta venida de aquí. O
|
| 680 |
+
|
| 681 |
+
00:13:30.530 --> 00:13:33.970
|
| 682 |
+
quizá a lo mejor sería llegar aquí, subir
|
| 683 |
+
|
| 684 |
+
00:13:33.970 --> 00:13:37.110
|
| 685 |
+
aquí, llegar aquí, subir aquí, llegar aquí, subir
|
| 686 |
+
|
| 687 |
+
00:13:37.570 --> 00:13:40.704
|
| 688 |
+
aquí y todo en zigzag hasta que lleguemos
|
| 689 |
+
|
| 690 |
+
00:13:41.005 --> 00:13:43.485
|
| 691 |
+
aquí. Y si se dan cuenta, esa trayectoria
|
| 692 |
+
|
| 693 |
+
00:13:43.485 --> 00:13:45.885
|
| 694 |
+
de aquí tiene su símil también en el
|
| 695 |
+
|
| 696 |
+
00:13:45.885 --> 00:13:48.685
|
| 697 |
+
otro lado del del vector, sería subir todo
|
| 698 |
+
|
| 699 |
+
00:13:48.685 --> 00:13:52.045
|
| 700 |
+
esto de aquí, llegar hasta acá, o podríamos
|
| 701 |
+
|
| 702 |
+
00:13:52.045 --> 00:13:58.050
|
| 703 |
+
hacer este zigzag también. Ahora, lo que les
|
| 704 |
+
|
| 705 |
+
00:13:58.050 --> 00:14:00.370
|
| 706 |
+
decía de que como midamos nos va a
|
| 707 |
+
|
| 708 |
+
00:14:00.370 --> 00:14:02.050
|
| 709 |
+
cambiar la geometría y nos va a cambiar
|
| 710 |
+
|
| 711 |
+
00:14:02.050 --> 00:14:05.410
|
| 712 |
+
las restricciones tiene total sentido, porque si nosotros
|
| 713 |
+
|
| 714 |
+
00:14:05.410 --> 00:14:10.394
|
| 715 |
+
medimos de forma euclidiana podemos trazar diagonales si
|
| 716 |
+
|
| 717 |
+
00:14:10.394 --> 00:14:12.635
|
| 718 |
+
medimos con la norma l dos. Si no
|
| 719 |
+
|
| 720 |
+
00:14:12.635 --> 00:14:14.735
|
| 721 |
+
medimos con la norma l dos y medimos,
|
| 722 |
+
|
| 723 |
+
00:14:14.795 --> 00:14:17.035
|
| 724 |
+
en cambio, con la norma l uno, estamos
|
| 725 |
+
|
| 726 |
+
00:14:17.035 --> 00:14:21.455
|
| 727 |
+
totalmente restringidos a poder avanzar en líneas horizontales
|
| 728 |
+
|
| 729 |
+
00:14:21.675 --> 00:14:23.834
|
| 730 |
+
y verticales, no vamos a poder avanzar en
|
| 731 |
+
|
| 732 |
+
00:14:23.834 --> 00:14:27.589
|
| 733 |
+
diagonales. Ahora, ¿cómo se ve eso? Regresamos al
|
| 734 |
+
|
| 735 |
+
00:14:27.589 --> 00:14:30.710
|
| 736 |
+
notebook. Vamos a simplificar las cosas y vamos
|
| 737 |
+
|
| 738 |
+
00:14:30.710 --> 00:14:33.290
|
| 739 |
+
a tomar nuevamente dos vectores en r dos.
|
| 740 |
+
|
| 741 |
+
00:14:33.430 --> 00:14:35.350
|
| 742 |
+
En el caso de r dos, vamos a
|
| 743 |
+
|
| 744 |
+
00:14:35.350 --> 00:14:38.250
|
| 745 |
+
agarrarnos dos coma uno y uno coma dos.
|
| 746 |
+
|
| 747 |
+
00:14:38.355 --> 00:14:41.154
|
| 748 |
+
Y en el caso de la norma l
|
| 749 |
+
|
| 750 |
+
00:14:41.154 --> 00:14:45.014
|
| 751 |
+
dos, vamos a tener que eso es dos
|
| 752 |
+
|
| 753 |
+
00:14:45.115 --> 00:14:50.115
|
| 754 |
+
menos uno al cuadrado más uno menos dos
|
| 755 |
+
|
| 756 |
+
00:14:50.115 --> 00:14:52.460
|
| 757 |
+
al cuadrado, y esto de aquí nos da
|
| 758 |
+
|
| 759 |
+
00:14:52.460 --> 00:14:54.220
|
| 760 |
+
un uno y este de aquí nos da
|
| 761 |
+
|
| 762 |
+
00:14:54.220 --> 00:14:56.300
|
| 763 |
+
un uno y uno al cuadrado nos sigue
|
| 764 |
+
|
| 765 |
+
00:14:56.300 --> 00:14:59.100
|
| 766 |
+
dando un uno, y esto nos da un
|
| 767 |
+
|
| 768 |
+
00:14:59.100 --> 00:15:01.440
|
| 769 |
+
dos, entonces nos queda la raíz de dos.
|
| 770 |
+
|
| 771 |
+
00:15:02.140 --> 00:15:04.425
|
| 772 |
+
Mientras que si agarramos la norma l uno,
|
| 773 |
+
|
| 774 |
+
00:15:04.505 --> 00:15:05.865
|
| 775 |
+
lo que vamos a tener es que en
|
| 776 |
+
|
| 777 |
+
00:15:05.865 --> 00:15:08.925
|
| 778 |
+
la resta de los vectores, este menos este
|
| 779 |
+
|
| 780 |
+
00:15:09.385 --> 00:15:12.745
|
| 781 |
+
nos da un uno en valor absoluto. Luego
|
| 782 |
+
|
| 783 |
+
00:15:12.745 --> 00:15:15.625
|
| 784 |
+
viene este menos este, que es nos da
|
| 785 |
+
|
| 786 |
+
00:15:15.625 --> 00:15:18.180
|
| 787 |
+
un uno también porque está en valor absoluto,
|
| 788 |
+
|
| 789 |
+
00:15:18.500 --> 00:15:20.660
|
| 790 |
+
y al final, si lo sumamos, nos da
|
| 791 |
+
|
| 792 |
+
00:15:20.660 --> 00:15:24.420
|
| 793 |
+
un dos. Las distancias cambian totalmente, es decir,
|
| 794 |
+
|
| 795 |
+
00:15:24.420 --> 00:15:27.460
|
| 796 |
+
ya no estamos hablando de una raíz de
|
| 797 |
+
|
| 798 |
+
00:15:27.460 --> 00:15:31.060
|
| 799 |
+
dos, sino estamos hablando de un dos. Vamos
|
| 800 |
+
|
| 801 |
+
00:15:31.060 --> 00:15:32.920
|
| 802 |
+
a ver cómo se ve esto con geoghebre
|
| 803 |
+
|
| 804 |
+
00:15:32.980 --> 00:15:37.675
|
| 805 |
+
en el plano. Bien. Ahora, ya tenemos nuestros
|
| 806 |
+
|
| 807 |
+
00:15:37.675 --> 00:15:41.755
|
| 808 |
+
vectores trazados aquí. Nosotros sabemos que utilizando la
|
| 809 |
+
|
| 810 |
+
00:15:41.755 --> 00:15:44.315
|
| 811 |
+
norma euclidiana, el vector que deberíamos de trazar,
|
| 812 |
+
|
| 813 |
+
00:15:44.315 --> 00:15:47.035
|
| 814 |
+
que sería el más corso, sería exactamente este
|
| 815 |
+
|
| 816 |
+
00:15:47.035 --> 00:15:50.790
|
| 817 |
+
de aquí. Entonces, veamos qué pasa ahí. Sería
|
| 818 |
+
|
| 819 |
+
00:15:51.570 --> 00:15:56.390
|
| 820 |
+
el vector que va del dos coma uno
|
| 821 |
+
|
| 822 |
+
00:15:57.890 --> 00:16:03.170
|
| 823 |
+
hacia el uno coma dos, y ese vector
|
| 824 |
+
|
| 825 |
+
00:16:03.170 --> 00:16:06.675
|
| 826 |
+
nos da el menos uno uno. La longitud
|
| 827 |
+
|
| 828 |
+
00:16:06.675 --> 00:16:09.334
|
| 829 |
+
de este vector, la magnitud, si la sacamos,
|
| 830 |
+
|
| 831 |
+
00:16:09.394 --> 00:16:12.755
|
| 832 |
+
nos da exactamente dos, es este al cuadrado
|
| 833 |
+
|
| 834 |
+
00:16:12.755 --> 00:16:16.515
|
| 835 |
+
más este al cuadrado. Nos da un dos,
|
| 836 |
+
|
| 837 |
+
00:16:16.515 --> 00:16:18.675
|
| 838 |
+
y después la raíz de esa suma, que
|
| 839 |
+
|
| 840 |
+
00:16:18.675 --> 00:16:21.620
|
| 841 |
+
sería raíz de dos. En cambio, les voy
|
| 842 |
+
|
| 843 |
+
00:16:21.620 --> 00:16:24.899
|
| 844 |
+
a mostrar cómo lo haríamos si fuera a
|
| 845 |
+
|
| 846 |
+
00:16:24.899 --> 00:16:28.820
|
| 847 |
+
través de l uno. En l uno no
|
| 848 |
+
|
| 849 |
+
00:16:28.820 --> 00:16:32.260
|
| 850 |
+
podemos hacer estas diagonales, entonces nos tendríamos que
|
| 851 |
+
|
| 852 |
+
00:16:32.260 --> 00:16:35.805
|
| 853 |
+
ir del punto primero, por ejemplo, una ruta
|
| 854 |
+
|
| 855 |
+
00:16:35.805 --> 00:16:42.125
|
| 856 |
+
sería irnos del punto dos coma uno al
|
| 857 |
+
|
| 858 |
+
00:16:42.125 --> 00:16:49.820
|
| 859 |
+
punto uno coma uno. Y eso nos da
|
| 860 |
+
|
| 861 |
+
00:16:49.959 --> 00:16:54.120
|
| 862 |
+
este trazo de aquí. Y luego tendríamos que
|
| 863 |
+
|
| 864 |
+
00:16:54.120 --> 00:16:57.560
|
| 865 |
+
hacer el trazo hacia arriba, que sería el
|
| 866 |
+
|
| 867 |
+
00:16:57.560 --> 00:17:12.974
|
| 868 |
+
vector que va del uno coma uno al
|
| 869 |
+
|
| 870 |
+
00:17:12.974 --> 00:17:17.570
|
| 871 |
+
uno coma dos. Entonces, la ruta que tendrías
|
| 872 |
+
|
| 873 |
+
00:17:17.630 --> 00:17:19.970
|
| 874 |
+
que seguir si fueras un taxista en Manhattan
|
| 875 |
+
|
| 876 |
+
00:17:20.190 --> 00:17:22.270
|
| 877 |
+
no podría ser esta diagonal porque no podemos
|
| 878 |
+
|
| 879 |
+
00:17:22.270 --> 00:17:25.570
|
| 880 |
+
pasar por arriba de los edificios, tendrías que
|
| 881 |
+
|
| 882 |
+
00:17:25.630 --> 00:17:29.090
|
| 883 |
+
llevar toda esta manzana y después subir aquí.
|
| 884 |
+
|
| 885 |
+
00:17:29.945 --> 00:17:32.585
|
| 886 |
+
Ahora, si nos damos cuenta, la magnitud de
|
| 887 |
+
|
| 888 |
+
00:17:32.585 --> 00:17:34.425
|
| 889 |
+
este vector de aquí, que es este de
|
| 890 |
+
|
| 891 |
+
00:17:34.425 --> 00:17:38.905
|
| 892 |
+
aquí, es exactamente uno, y ya recorrimos un
|
| 893 |
+
|
| 894 |
+
00:17:38.905 --> 00:17:42.390
|
| 895 |
+
uno en esta distancia, y después tenemos que
|
| 896 |
+
|
| 897 |
+
00:17:42.390 --> 00:17:45.830
|
| 898 |
+
subir, y la magnitud de este vector de
|
| 899 |
+
|
| 900 |
+
00:17:45.830 --> 00:17:49.430
|
| 901 |
+
aquí es también uno, y como recorrimos uno
|
| 902 |
+
|
| 903 |
+
00:17:49.430 --> 00:17:51.930
|
| 904 |
+
hacia k y uno hacia k, la distancia
|
| 905 |
+
|
| 906 |
+
00:17:52.070 --> 00:17:55.195
|
| 907 |
+
entre este punto y este punto para la
|
| 908 |
+
|
| 909 |
+
00:17:55.195 --> 00:17:57.514
|
| 910 |
+
norma del taxista ya no es raíz de
|
| 911 |
+
|
| 912 |
+
00:17:57.514 --> 00:18:03.215
|
| 913 |
+
dos, sino es dos. Es así como cambiar
|
| 914 |
+
|
| 915 |
+
00:18:03.514 --> 00:18:05.595
|
| 916 |
+
simplemente la forma en la que medimos las
|
| 917 |
+
|
| 918 |
+
00:18:05.595 --> 00:18:07.514
|
| 919 |
+
distancias nos va a alterar la geometría por
|
| 920 |
+
|
| 921 |
+
00:18:07.514 --> 00:18:10.309
|
| 922 |
+
completo, y entonces hay que pensar si vamos
|
| 923 |
+
|
| 924 |
+
00:18:10.309 --> 00:18:12.409
|
| 925 |
+
a tener la libertad de volar arriba de
|
| 926 |
+
|
| 927 |
+
00:18:12.789 --> 00:18:14.630
|
| 928 |
+
edificios o si vamos a estar constreñidos por
|
| 929 |
+
|
| 930 |
+
00:18:14.630 --> 00:18:18.309
|
| 931 |
+
las calles. Ahora, hay una medida que vamos
|
| 932 |
+
|
| 933 |
+
00:18:18.309 --> 00:18:20.710
|
| 934 |
+
a utilizar hacia el futuro y esa medida
|
| 935 |
+
|
| 936 |
+
00:18:20.710 --> 00:18:24.015
|
| 937 |
+
es la desviación cuadrática media. La desviación cuadrática
|
| 938 |
+
|
| 939 |
+
00:18:24.155 --> 00:18:28.875
|
| 940 |
+
media entre dos vectores XYY es simplemente la
|
| 941 |
+
|
| 942 |
+
00:18:28.875 --> 00:18:34.395
|
| 943 |
+
distancia del vector x al y entre la
|
| 944 |
+
|
| 945 |
+
00:18:34.395 --> 00:18:43.020
|
| 946 |
+
raíz de la dimensión. Ahora, una cosa muy
|
| 947 |
+
|
| 948 |
+
00:18:43.020 --> 00:18:44.860
|
| 949 |
+
importante es que el ejemplo en r dos
|
| 950 |
+
|
| 951 |
+
00:18:44.860 --> 00:18:47.180
|
| 952 |
+
para nosotros es fácil de visualizar, lo podemos
|
| 953 |
+
|
| 954 |
+
00:18:47.180 --> 00:18:49.120
|
| 955 |
+
ver en el plano, por ejemplo, con geoquebra.
|
| 956 |
+
|
| 957 |
+
00:18:53.705 --> 00:18:56.045
|
| 958 |
+
A pesar de que nosotros ya no podamos
|
| 959 |
+
|
| 960 |
+
00:18:56.905 --> 00:19:00.505
|
| 961 |
+
ver cosas, ya no podamos visualizar los vectores,
|
| 962 |
+
|
| 963 |
+
00:19:00.505 --> 00:19:03.705
|
| 964 |
+
por ejemplo, vectores de r cuatro, las distancias
|
| 965 |
+
|
| 966 |
+
00:19:03.705 --> 00:19:06.505
|
| 967 |
+
se siguen midiendo de la misma forma. Y
|
| 968 |
+
|
| 969 |
+
00:19:06.505 --> 00:19:09.110
|
| 970 |
+
hay un gran problema también, porque que midamos
|
| 971 |
+
|
| 972 |
+
00:19:09.250 --> 00:19:11.650
|
| 973 |
+
las distancias no nos va a implicar que
|
| 974 |
+
|
| 975 |
+
00:19:11.650 --> 00:19:13.890
|
| 976 |
+
nosotros sepamos que es algo que está cerca
|
| 977 |
+
|
| 978 |
+
00:19:13.890 --> 00:19:16.290
|
| 979 |
+
o que es algo que está lejos. Para
|
| 980 |
+
|
| 981 |
+
00:19:16.290 --> 00:19:18.450
|
| 982 |
+
decir si algo está cerca o está lejos
|
| 983 |
+
|
| 984 |
+
00:19:18.450 --> 00:19:21.185
|
| 985 |
+
tenemos que compararlo con algo. De hecho, todas
|
| 986 |
+
|
| 987 |
+
00:19:21.185 --> 00:19:23.745
|
| 988 |
+
las medidas que hacemos hasta en la realidad,
|
| 989 |
+
|
| 990 |
+
00:19:23.745 --> 00:19:25.825
|
| 991 |
+
cuando decimos que algo es pequeño o es
|
| 992 |
+
|
| 993 |
+
00:19:25.825 --> 00:19:28.785
|
| 994 |
+
grande, nosotros ya lo estamos comparando con algo,
|
| 995 |
+
|
| 996 |
+
00:19:28.785 --> 00:19:30.865
|
| 997 |
+
y si no, ya tenemos una experiencia como
|
| 998 |
+
|
| 999 |
+
00:19:30.865 --> 00:19:33.745
|
| 1000 |
+
precedente para que podamos decir esto es grande
|
| 1001 |
+
|
| 1002 |
+
00:19:33.745 --> 00:19:37.320
|
| 1003 |
+
o esto es pequeño. Bien, ahora, si consideramos
|
| 1004 |
+
|
| 1005 |
+
00:19:37.320 --> 00:19:39.800
|
| 1006 |
+
estos tres vectores de aquí, para saber cuál
|
| 1007 |
+
|
| 1008 |
+
00:19:39.800 --> 00:19:41.800
|
| 1009 |
+
está más cerca o para tener una noción
|
| 1010 |
+
|
| 1011 |
+
00:19:41.800 --> 00:19:43.640
|
| 1012 |
+
de qué es o qué sería lo cerca,
|
| 1013 |
+
|
| 1014 |
+
00:19:43.640 --> 00:19:46.200
|
| 1015 |
+
tendríamos que calcular la distancia entre esos tres
|
| 1016 |
+
|
| 1017 |
+
00:19:46.200 --> 00:19:48.600
|
| 1018 |
+
vectores. La distancia entre el vector u y
|
| 1019 |
+
|
| 1020 |
+
00:19:48.600 --> 00:19:50.440
|
| 1021 |
+
el vector v es ocho punto treinta y
|
| 1022 |
+
|
| 1023 |
+
00:19:50.440 --> 00:19:52.575
|
| 1024 |
+
seis, la distancia entre el vector u y
|
| 1025 |
+
|
| 1026 |
+
00:19:52.575 --> 00:19:55.535
|
| 1027 |
+
el vector w medidos con la norma euclidiana
|
| 1028 |
+
|
| 1029 |
+
00:19:55.535 --> 00:19:57.775
|
| 1030 |
+
es cero punto treinta y ocho, y la
|
| 1031 |
+
|
| 1032 |
+
00:19:57.775 --> 00:19:59.635
|
| 1033 |
+
distancia entre el vector v y el vector
|
| 1034 |
+
|
| 1035 |
+
00:19:59.855 --> 00:20:02.895
|
| 1036 |
+
w es ocho punto sesenta y tres. Entonces,
|
| 1037 |
+
|
| 1038 |
+
00:20:02.895 --> 00:20:06.120
|
| 1039 |
+
podemos decir que sí está más cerca el
|
| 1040 |
+
|
| 1041 |
+
00:20:06.120 --> 00:20:08.539
|
| 1042 |
+
el u del w que lo que está,
|
| 1043 |
+
|
| 1044 |
+
00:20:09.080 --> 00:20:10.760
|
| 1045 |
+
y bueno, podemos decir que los que están
|
| 1046 |
+
|
| 1047 |
+
00:20:10.760 --> 00:20:12.679
|
| 1048 |
+
lejos son el u y el b, y
|
| 1049 |
+
|
| 1050 |
+
00:20:12.679 --> 00:20:16.299
|
| 1051 |
+
el v y el w. Así y solamente
|
| 1052 |
+
|
| 1053 |
+
00:20:16.360 --> 00:20:18.440
|
| 1054 |
+
así vamos a tener una noción de cercanía
|
| 1055 |
+
|
| 1056 |
+
00:20:18.440 --> 00:20:24.975
|
| 1057 |
+
y de lontananza. Por último, como eso estaba
|
| 1058 |
+
|
| 1059 |
+
00:20:24.975 --> 00:20:29.215
|
| 1060 |
+
teñido a las reglas de la norma y
|
| 1061 |
+
|
| 1062 |
+
00:20:29.215 --> 00:20:31.855
|
| 1063 |
+
cumple las mismas propiedades que la norma, también
|
| 1064 |
+
|
| 1065 |
+
00:20:31.855 --> 00:20:34.350
|
| 1066 |
+
la propiedad del triángulo se cumple, y eso
|
| 1067 |
+
|
| 1068 |
+
00:20:34.350 --> 00:20:36.850
|
| 1069 |
+
lo podemos verificar de una manera muy sencilla,
|
| 1070 |
+
|
| 1071 |
+
00:20:37.070 --> 00:20:39.669
|
| 1072 |
+
y es que si nos agarramos tres vectores
|
| 1073 |
+
|
| 1074 |
+
00:20:39.669 --> 00:20:42.430
|
| 1075 |
+
cuales sea y nos agarramos la distancia entre
|
| 1076 |
+
|
| 1077 |
+
00:20:42.430 --> 00:20:44.510
|
| 1078 |
+
el a y el c, la distancia entre
|
| 1079 |
+
|
| 1080 |
+
00:20:44.510 --> 00:20:46.030
|
| 1081 |
+
el a y el c es lo mismo
|
| 1082 |
+
|
| 1083 |
+
00:20:46.030 --> 00:20:48.375
|
| 1084 |
+
que la distancia, o bueno, que toda esta
|
| 1085 |
+
|
| 1086 |
+
00:20:48.375 --> 00:20:53.095
|
| 1087 |
+
operación vectorial. Notemos que menos b más b
|
| 1088 |
+
|
| 1089 |
+
00:20:53.095 --> 00:20:56.295
|
| 1090 |
+
es cero, entonces no estoy sumando nada, yo
|
| 1091 |
+
|
| 1092 |
+
00:20:56.295 --> 00:20:58.775
|
| 1093 |
+
podría quitar esta expresión de aquí, tendría a
|
| 1094 |
+
|
| 1095 |
+
00:20:58.775 --> 00:21:01.110
|
| 1096 |
+
menos c. Por eso a menos c es
|
| 1097 |
+
|
| 1098 |
+
00:21:01.110 --> 00:21:04.310
|
| 1099 |
+
igual a a menos b más b menos
|
| 1100 |
+
|
| 1101 |
+
00:21:04.310 --> 00:21:06.550
|
| 1102 |
+
c. A esto se le llama introducir un
|
| 1103 |
+
|
| 1104 |
+
00:21:06.550 --> 00:21:09.910
|
| 1105 |
+
cero. Ahora, introduciendo este cero de aquí, yo
|
| 1106 |
+
|
| 1107 |
+
00:21:09.910 --> 00:21:13.575
|
| 1108 |
+
puedo reagruparlo en dos conjuntos, porque yo sé
|
| 1109 |
+
|
| 1110 |
+
00:21:13.575 --> 00:21:15.735
|
| 1111 |
+
que esto, como lo vimos antes, lo puedo
|
| 1112 |
+
|
| 1113 |
+
00:21:15.735 --> 00:21:17.735
|
| 1114 |
+
agrupar en dos sumas, perdón. Y esto, como
|
| 1115 |
+
|
| 1116 |
+
00:21:17.735 --> 00:21:22.875
|
| 1117 |
+
lo vimos antes agrupado, lo podemos utilizar para,
|
| 1118 |
+
|
| 1119 |
+
00:21:23.255 --> 00:21:25.434
|
| 1120 |
+
no sé si recuerdan lo que vimos, que
|
| 1121 |
+
|
| 1122 |
+
00:21:25.590 --> 00:21:30.630
|
| 1123 |
+
en la suma de vectores la norma del
|
| 1124 |
+
|
| 1125 |
+
00:21:30.630 --> 00:21:33.510
|
| 1126 |
+
vector era a lo más, la la norma
|
| 1127 |
+
|
| 1128 |
+
00:21:33.510 --> 00:21:35.669
|
| 1129 |
+
de la suma de vectores era a lo
|
| 1130 |
+
|
| 1131 |
+
00:21:35.669 --> 00:21:40.485
|
| 1132 |
+
más la norma de la suma de las
|
| 1133 |
+
|
| 1134 |
+
00:21:40.485 --> 00:21:43.924
|
| 1135 |
+
normas de los vectores individuales. La propiedad está
|
| 1136 |
+
|
| 1137 |
+
00:21:43.924 --> 00:21:47.605
|
| 1138 |
+
acá arriba, si no se los recuerdo, es
|
| 1139 |
+
|
| 1140 |
+
00:21:47.605 --> 00:21:51.480
|
| 1141 |
+
exactamente esta de aquí. Y entonces, en este
|
| 1142 |
+
|
| 1143 |
+
00:21:51.480 --> 00:21:59.480
|
| 1144 |
+
caso, el papel de XYY serían a menos
|
| 1145 |
+
|
| 1146 |
+
00:21:59.480 --> 00:22:01.740
|
| 1147 |
+
b y el otro sería b menos c.
|
| 1148 |
+
|
| 1149 |
+
00:22:02.054 --> 00:22:05.638
|
| 1150 |
+
Entonces justamente tenemos que a menos c es
|
| 1151 |
+
|
| 1152 |
+
00:22:05.638 --> 00:22:08.134
|
| 1153 |
+
menor que la la distancia de a menos
|
| 1154 |
+
|
| 1155 |
+
00:22:08.134 --> 00:22:10.695
|
| 1156 |
+
b y la distancia de BAC. Esto lo
|
| 1157 |
+
|
| 1158 |
+
00:22:10.695 --> 00:22:13.414
|
| 1159 |
+
puedes comprobar de manera muy rápida. Te invito
|
| 1160 |
+
|
| 1161 |
+
00:22:13.414 --> 00:22:16.794
|
| 1162 |
+
a que vayas a utilizar estos dos vectores
|
| 1163 |
+
|
| 1164 |
+
00:22:17.870 --> 00:22:20.830
|
| 1165 |
+
en una hoja de papel, sobre todo si
|
| 1166 |
+
|
| 1167 |
+
00:22:20.830 --> 00:22:23.470
|
| 1168 |
+
la puedes tener cuadriculada de preferencia, y que
|
| 1169 |
+
|
| 1170 |
+
00:22:23.470 --> 00:22:26.030
|
| 1171 |
+
calcules las distancias y que veas que esto
|
| 1172 |
+
|
| 1173 |
+
00:22:26.030 --> 00:22:28.510
|
| 1174 |
+
siempre se va a cumplir. Espero ver tus
|
| 1175 |
+
|
| 1176 |
+
00:22:28.510 --> 00:22:31.655
|
| 1177 |
+
imágenes en los comentarios. En la próxima clase
|
| 1178 |
+
|
| 1179 |
+
00:22:31.655 --> 00:22:33.175
|
| 1180 |
+
vamos a ver una aplicación de lo que
|
| 1181 |
+
|
| 1182 |
+
00:22:33.175 --> 00:22:35.655
|
| 1183 |
+
hemos visto en estas dos últimas clases. Si
|
| 1184 |
+
|
| 1185 |
+
00:22:35.655 --> 00:22:38.535
|
| 1186 |
+
alguna vez has tenido problemas decidiendo hacia dónde
|
| 1187 |
+
|
| 1188 |
+
00:22:38.535 --> 00:22:41.435
|
| 1189 |
+
marcar primero en el arrendamiento cuando estás buscando
|
| 1190 |
+
|
| 1191 |
+
00:22:41.655 --> 00:22:44.289
|
| 1192 |
+
un nuevo apartamento, sin duda te va a
|
| 1193 |
+
|
| 1194 |
+
00:22:44.289 --> 00:22:46.309
|
| 1195 |
+
seguir, te va a servir la siguiente clase.
|
| 1196 |
+
|
| 1197 |
+
00:22:46.449 --> 00:22:47.508
|
| 1198 |
+
Nos vemos allá.
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
https://es.wikipedia.org/wiki/Postulados_de_Euclides
|
| 2 |
+
https://colab.research.google.com/drive/1pg6fxVEmEDlpou3JbEtnlZzcVckPGS8F?usp=sharing
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/02-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/04-Norma y distancia/02-distancias_8e763fc2-5ce3-498b-91f8-711debd9e867.ipynb
ADDED
|
@@ -0,0 +1,534 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {},
|
| 6 |
+
"source": [
|
| 7 |
+
"# 8. Distancia y Norma"
|
| 8 |
+
]
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"cell_type": "markdown",
|
| 12 |
+
"metadata": {},
|
| 13 |
+
"source": [
|
| 14 |
+
"En clases pasadas hablamos de la magnitud de un vector pero no dimos una forma de poder medirla, esa magnitud la podremos calcular a través de la *norma Euclidiana*:\n",
|
| 15 |
+
"\n",
|
| 16 |
+
"$$\n",
|
| 17 |
+
"||x|| = \\displaystyle\\sqrt{x_{0}^2 + x_{1}^2 + \\cdots + x_{n-1}^{2}} = \\displaystyle\\sqrt(x^Tx)\n",
|
| 18 |
+
"$$\n",
|
| 19 |
+
"\n",
|
| 20 |
+
"Hay que notar que $x$ en la expresión anterior es un $n$-vector. \n",
|
| 21 |
+
"Pongamos un ejemplo con $x^T = [1,2,3]$\n",
|
| 22 |
+
"\n",
|
| 23 |
+
"$$\n",
|
| 24 |
+
"||x|| = \\displaystyle\\sqrt{1^2 + 2^2 + 3^2} = \\sqrt{14} \\approx 3.74\n",
|
| 25 |
+
"$$\n",
|
| 26 |
+
"\n",
|
| 27 |
+
"Realizaremos otro con $x^T = [2,-1,2]$\n",
|
| 28 |
+
"\n",
|
| 29 |
+
"$$\n",
|
| 30 |
+
"||x|| = \\displaystyle\\sqrt{2^2 + (-1)^2 + 2^2} = \\sqrt{9} = 3\n",
|
| 31 |
+
"$$"
|
| 32 |
+
]
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"cell_type": "markdown",
|
| 36 |
+
"metadata": {},
|
| 37 |
+
"source": [
|
| 38 |
+
"## 8.1 Propieades de la norma"
|
| 39 |
+
]
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"cell_type": "markdown",
|
| 43 |
+
"metadata": {},
|
| 44 |
+
"source": [
|
| 45 |
+
"Como todas las operaciones con las que trabajamos hasta ahora la norma también cumple una serie de propiedades. Sean $x$, $y$ son $n$-vectores y $\\beta$ un escalar cualquiera, tenemos que la norma cumple:\n",
|
| 46 |
+
"* Homogeneídad no negativa: $||\\beta x|| = |\\beta|\\cdot ||x||$\n",
|
| 47 |
+
"\n",
|
| 48 |
+
"* Desigualdad del triángulo: $||x+y|| \\le ||x|| + ||y||$ \n",
|
| 49 |
+
"\n",
|
| 50 |
+
"* No-negatividad: $||x||\\ge 0$ y además $||x|| = 0$ si y solamente si $x = \\mathbf{0}$"
|
| 51 |
+
]
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"cell_type": "markdown",
|
| 55 |
+
"metadata": {},
|
| 56 |
+
"source": [
|
| 57 |
+
"La norma es ampliamente usada, en particular podemos señalar los siguientes ejemplos:\n",
|
| 58 |
+
"\n",
|
| 59 |
+
"**Valor cuadrático medio.** Algunas veces también es llamado simplemente **RMS** y se define como sigue:\n",
|
| 60 |
+
"\n",
|
| 61 |
+
"$$\n",
|
| 62 |
+
"rms(x) = \\displaystyle\\sqrt{\\frac{x_{0}^2 + x_{1}^2 + \\cdots + x_{n-1}^{2}}{n}} = \\frac{||x||}{\\sqrt{n}}\n",
|
| 63 |
+
"$$"
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"cell_type": "markdown",
|
| 68 |
+
"metadata": {},
|
| 69 |
+
"source": [
|
| 70 |
+
"**Norma de una suma.** Si tenemos dos vectores $x$ y $y$ entonces la norma de la suma es\n",
|
| 71 |
+
"\n",
|
| 72 |
+
"$$\n",
|
| 73 |
+
"||x+y|| = \\displaystyle\\sqrt{||x||^{2} + 2x^{T}y + ||y||^{2}}\n",
|
| 74 |
+
"$$"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "markdown",
|
| 79 |
+
"metadata": {},
|
| 80 |
+
"source": [
|
| 81 |
+
"**Norma de una bloque de vectores.** La norma de bloque de vectores será simplemente la raíz cuadrada de la suma de sus componentes. Si tenemos $d$ un $k$-vector con componentes $d_{i}$ que son $n$-vectores entonces tenemos que:\n",
|
| 82 |
+
"\n",
|
| 83 |
+
"$$\n",
|
| 84 |
+
"||d|| = \\displaystyle\\sqrt{||d_{0}||^{2}+||d_{1}||^{2}+\\cdots + ||d_{n-1}||^{2}}\n",
|
| 85 |
+
"$$"
|
| 86 |
+
]
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"cell_type": "code",
|
| 90 |
+
"execution_count": 1,
|
| 91 |
+
"metadata": {},
|
| 92 |
+
"outputs": [],
|
| 93 |
+
"source": [
|
| 94 |
+
"import numpy as np"
|
| 95 |
+
]
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"cell_type": "code",
|
| 99 |
+
"execution_count": 2,
|
| 100 |
+
"metadata": {},
|
| 101 |
+
"outputs": [],
|
| 102 |
+
"source": [
|
| 103 |
+
"u = np.array([1,1])"
|
| 104 |
+
]
|
| 105 |
+
},
|
| 106 |
+
{
|
| 107 |
+
"cell_type": "code",
|
| 108 |
+
"execution_count": 3,
|
| 109 |
+
"metadata": {},
|
| 110 |
+
"outputs": [],
|
| 111 |
+
"source": [
|
| 112 |
+
"def norma(x):\n",
|
| 113 |
+
" return np.sqrt(x@x)"
|
| 114 |
+
]
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"cell_type": "code",
|
| 118 |
+
"execution_count": 4,
|
| 119 |
+
"metadata": {},
|
| 120 |
+
"outputs": [
|
| 121 |
+
{
|
| 122 |
+
"data": {
|
| 123 |
+
"text/plain": [
|
| 124 |
+
"1.4142135623730951"
|
| 125 |
+
]
|
| 126 |
+
},
|
| 127 |
+
"execution_count": 4,
|
| 128 |
+
"metadata": {},
|
| 129 |
+
"output_type": "execute_result"
|
| 130 |
+
}
|
| 131 |
+
],
|
| 132 |
+
"source": [
|
| 133 |
+
"norma(u)"
|
| 134 |
+
]
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"cell_type": "markdown",
|
| 138 |
+
"metadata": {},
|
| 139 |
+
"source": [
|
| 140 |
+
"$2*u^T = [2,2]$ entonces la norma será $||2u|| = \\displaystyle\\sqrt{2^2 + 2^2} = \\displaystyle\\sqrt{8}$"
|
| 141 |
+
]
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"cell_type": "code",
|
| 145 |
+
"execution_count": 5,
|
| 146 |
+
"metadata": {},
|
| 147 |
+
"outputs": [
|
| 148 |
+
{
|
| 149 |
+
"data": {
|
| 150 |
+
"text/plain": [
|
| 151 |
+
"2.8284271247461903"
|
| 152 |
+
]
|
| 153 |
+
},
|
| 154 |
+
"execution_count": 5,
|
| 155 |
+
"metadata": {},
|
| 156 |
+
"output_type": "execute_result"
|
| 157 |
+
}
|
| 158 |
+
],
|
| 159 |
+
"source": [
|
| 160 |
+
"norma(2*u)"
|
| 161 |
+
]
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"cell_type": "code",
|
| 165 |
+
"execution_count": 6,
|
| 166 |
+
"metadata": {},
|
| 167 |
+
"outputs": [
|
| 168 |
+
{
|
| 169 |
+
"data": {
|
| 170 |
+
"text/plain": [
|
| 171 |
+
"2.8284271247461903"
|
| 172 |
+
]
|
| 173 |
+
},
|
| 174 |
+
"execution_count": 6,
|
| 175 |
+
"metadata": {},
|
| 176 |
+
"output_type": "execute_result"
|
| 177 |
+
}
|
| 178 |
+
],
|
| 179 |
+
"source": [
|
| 180 |
+
"2*norma(u)"
|
| 181 |
+
]
|
| 182 |
+
},
|
| 183 |
+
{
|
| 184 |
+
"cell_type": "code",
|
| 185 |
+
"execution_count": 7,
|
| 186 |
+
"metadata": {},
|
| 187 |
+
"outputs": [],
|
| 188 |
+
"source": [
|
| 189 |
+
"v = np.array([-1,1])"
|
| 190 |
+
]
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"cell_type": "code",
|
| 194 |
+
"execution_count": 8,
|
| 195 |
+
"metadata": {},
|
| 196 |
+
"outputs": [
|
| 197 |
+
{
|
| 198 |
+
"name": "stdout",
|
| 199 |
+
"output_type": "stream",
|
| 200 |
+
"text": [
|
| 201 |
+
"||u+v|| = 2.0\n"
|
| 202 |
+
]
|
| 203 |
+
}
|
| 204 |
+
],
|
| 205 |
+
"source": [
|
| 206 |
+
"print('||u+v|| = ',norma(u+v))"
|
| 207 |
+
]
|
| 208 |
+
},
|
| 209 |
+
{
|
| 210 |
+
"cell_type": "code",
|
| 211 |
+
"execution_count": 9,
|
| 212 |
+
"metadata": {},
|
| 213 |
+
"outputs": [
|
| 214 |
+
{
|
| 215 |
+
"name": "stdout",
|
| 216 |
+
"output_type": "stream",
|
| 217 |
+
"text": [
|
| 218 |
+
"||v|| = 1.4142135623730951\n"
|
| 219 |
+
]
|
| 220 |
+
}
|
| 221 |
+
],
|
| 222 |
+
"source": [
|
| 223 |
+
"print('||v|| = ',norma(v))"
|
| 224 |
+
]
|
| 225 |
+
},
|
| 226 |
+
{
|
| 227 |
+
"cell_type": "code",
|
| 228 |
+
"execution_count": 10,
|
| 229 |
+
"metadata": {},
|
| 230 |
+
"outputs": [
|
| 231 |
+
{
|
| 232 |
+
"name": "stdout",
|
| 233 |
+
"output_type": "stream",
|
| 234 |
+
"text": [
|
| 235 |
+
"¿Es verdad que ||u+v|| menor o igual que ||u||+||v|| True\n"
|
| 236 |
+
]
|
| 237 |
+
}
|
| 238 |
+
],
|
| 239 |
+
"source": [
|
| 240 |
+
"print('¿Es verdad que ||u+v|| menor o igual que ||u||+||v||', norma(u+v) <= norma(v)+norma(u))"
|
| 241 |
+
]
|
| 242 |
+
},
|
| 243 |
+
{
|
| 244 |
+
"cell_type": "markdown",
|
| 245 |
+
"metadata": {},
|
| 246 |
+
"source": [
|
| 247 |
+
" "
|
| 248 |
+
]
|
| 249 |
+
},
|
| 250 |
+
{
|
| 251 |
+
"cell_type": "markdown",
|
| 252 |
+
"metadata": {},
|
| 253 |
+
"source": [
|
| 254 |
+
"## 8.1 Distancia entre vectores"
|
| 255 |
+
]
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"cell_type": "markdown",
|
| 259 |
+
"metadata": {},
|
| 260 |
+
"source": [
|
| 261 |
+
"Podemos usar la norma pora definir la distancia entre dos vectores $\\mathbf{a}$ y $\\mathbf{b}$ como la norma de la diferencia de los vectores\n",
|
| 262 |
+
"\n",
|
| 263 |
+
"$$\n",
|
| 264 |
+
"dist(\\mathbf{a},\\mathbf{b}) = ||\\mathbf{a} - \\mathbf{b}|| = \\displaystyle\\sqrt{(a_{0}-b_{0})^2 + (a_{1}-b_{1})^2 + \\cdots + (a_{n-1}-b_{n-1})^2}\n",
|
| 265 |
+
"$$"
|
| 266 |
+
]
|
| 267 |
+
},
|
| 268 |
+
{
|
| 269 |
+
"cell_type": "code",
|
| 270 |
+
"execution_count": 11,
|
| 271 |
+
"metadata": {},
|
| 272 |
+
"outputs": [],
|
| 273 |
+
"source": [
|
| 274 |
+
"a = np.array([1,1])\n",
|
| 275 |
+
"b = np.array([-2,3])"
|
| 276 |
+
]
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"cell_type": "code",
|
| 280 |
+
"execution_count": 12,
|
| 281 |
+
"metadata": {},
|
| 282 |
+
"outputs": [],
|
| 283 |
+
"source": [
|
| 284 |
+
"c = a - b"
|
| 285 |
+
]
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"cell_type": "code",
|
| 289 |
+
"execution_count": 15,
|
| 290 |
+
"metadata": {},
|
| 291 |
+
"outputs": [
|
| 292 |
+
{
|
| 293 |
+
"data": {
|
| 294 |
+
"text/plain": [
|
| 295 |
+
"3.605551275463989"
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
"execution_count": 15,
|
| 299 |
+
"metadata": {},
|
| 300 |
+
"output_type": "execute_result"
|
| 301 |
+
}
|
| 302 |
+
],
|
| 303 |
+
"source": [
|
| 304 |
+
"norma(a-b)"
|
| 305 |
+
]
|
| 306 |
+
},
|
| 307 |
+
{
|
| 308 |
+
"cell_type": "code",
|
| 309 |
+
"execution_count": 16,
|
| 310 |
+
"metadata": {},
|
| 311 |
+
"outputs": [
|
| 312 |
+
{
|
| 313 |
+
"data": {
|
| 314 |
+
"text/plain": [
|
| 315 |
+
"3.605551275463989"
|
| 316 |
+
]
|
| 317 |
+
},
|
| 318 |
+
"execution_count": 16,
|
| 319 |
+
"metadata": {},
|
| 320 |
+
"output_type": "execute_result"
|
| 321 |
+
}
|
| 322 |
+
],
|
| 323 |
+
"source": [
|
| 324 |
+
"np.linalg.norm(a-b)"
|
| 325 |
+
]
|
| 326 |
+
},
|
| 327 |
+
{
|
| 328 |
+
"cell_type": "markdown",
|
| 329 |
+
"metadata": {},
|
| 330 |
+
"source": [
|
| 331 |
+
"A esto se el llama _norma Euclidiana_ o *distancia Euclidiana* y tiene ese nombre porque es como se infiere la forma de medir distancias de los [postulados de Euclides](https://es.wikipedia.org/wiki/Postulados_de_Euclides). Ahora, la realidad es que siempre que nuestro espacio admita una $\\mathbf{L^p}$-norma entonces podremos generalizar la norma anterior como\n",
|
| 332 |
+
"\n",
|
| 333 |
+
"$$\n",
|
| 334 |
+
"||x||_{p} = \\left(|x_{0}|^p + |x_{1}|^p + \\cdots + |x_{n-1}|^p\\right)^{1/p} \\qquad con \\;\\; 1\\le p\n",
|
| 335 |
+
"$$"
|
| 336 |
+
]
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"cell_type": "markdown",
|
| 340 |
+
"metadata": {},
|
| 341 |
+
"source": [
|
| 342 |
+
"Por eso es que la norma Euclidiana también es conocida como la *norma $L_{2}$*. Hay otras normas que recibe nombres. Por ejemplo, si $p=1$ tenemos la norma $L_{1}$ y esta es llamada _la métrica del taxista_ o _la métrica de Manhattan_. Si tomamos $p \\to \\infty$ entonces tenemos $L_{\\infty}$ y esta es llamada _la métrica del máximo_. Es muy importante saber qué métrica estamos usando para medir distancias ya que la forma en la que medimos distancias está en total correspondencia en con configuración y la percepción el espacio. Por ejemplo, mientras que en la métrica Euclidiana la distancia corresponde a la más corta entre los dos vectores en el espacio planeo en el caso de la métrica del taxista es la más corta pero no será es segmento más directo sino por _bloques_."
|
| 343 |
+
]
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"cell_type": "markdown",
|
| 347 |
+
"metadata": {},
|
| 348 |
+
"source": [
|
| 349 |
+
"Para poder simplificar las cosas tomemos dos vectores $\\mathbf{x}$ y $\\mathbf{y}$ en $\\mathbb{R}^2$\n",
|
| 350 |
+
"\n",
|
| 351 |
+
"$$\n",
|
| 352 |
+
"\\mathbf{x} = \\begin{bmatrix} 2\\\\1 \\end{bmatrix},\\; \\qquad \\mathbf{y} = \\begin{bmatrix} 1\\\\2 \\end{bmatrix}\n",
|
| 353 |
+
"$$\n",
|
| 354 |
+
"\n",
|
| 355 |
+
"La distancia en el caso de norma $L_{2}$ tenemos que la distancia entre los vectores es $||\\mathbf{x}-\\mathbf{y}||_{2} = \\displaystyle\\sqrt{(2-1)^{2} + (1-2)^{2}} = \\displaystyle\\sqrt{2}$ mientras que bajo la norma $L_{1}$ obtenemos que $||\\mathbf{x}-\\mathbf{y}||_{1} = |2-1|+|1-2| = 2$. "
|
| 356 |
+
]
|
| 357 |
+
},
|
| 358 |
+
{
|
| 359 |
+
"cell_type": "markdown",
|
| 360 |
+
"metadata": {},
|
| 361 |
+
"source": [
|
| 362 |
+
"Ahora, si $\\mathbf{x}$ y $\\mathbf{y}$ son $n$-vectores hay una medida quer después cobrará importancia, *la desviación cuadrática media*\n",
|
| 363 |
+
"\n",
|
| 364 |
+
"$$\n",
|
| 365 |
+
"rms_{dev}(\\mathbf{x},\\mathbf{y}) = \\displaystyle\\frac{||\\mathbf{x}-\\mathbf{y}||}{\\sqrt{n}}\n",
|
| 366 |
+
"$$"
|
| 367 |
+
]
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"cell_type": "markdown",
|
| 371 |
+
"metadata": {},
|
| 372 |
+
"source": [
|
| 373 |
+
" "
|
| 374 |
+
]
|
| 375 |
+
},
|
| 376 |
+
{
|
| 377 |
+
"cell_type": "markdown",
|
| 378 |
+
"metadata": {},
|
| 379 |
+
"source": [
|
| 380 |
+
"Algo muy imporante es que a pesar de que medimos distancias no existen propiamente nociones de *cerca* y *lejos*. Si tomamos los siguientes $4$-vectores\n",
|
| 381 |
+
"\n",
|
| 382 |
+
"$$\n",
|
| 383 |
+
"\\mathbf{u} = \\begin{bmatrix}1.8 \\\\ 2.8 \\\\ -3.7 \\\\ 4.7 \\end{bmatrix}, \\qquad \\mathbf{v} = \\begin{bmatrix}0.6 \\\\ 2.1 \\\\ 1.9 \\\\ -1.4 \\end{bmatrix}, \\qquad \\mathbf{w} = \\begin{bmatrix}2.0 \\\\ 1.9 \\\\ -4.0 \\\\ 4.6 \\end{bmatrix}\n",
|
| 384 |
+
"$$\n",
|
| 385 |
+
"\n",
|
| 386 |
+
"Tenemos que las distancia entre los vectores es:\n",
|
| 387 |
+
"\n",
|
| 388 |
+
"$$\n",
|
| 389 |
+
"||\\mathbf{u}-\\mathbf{v}|| = 8.36, \\qquad ||\\mathbf{u}-\\mathbf{w}|| = 0.38, \\qquad ||\\mathbf{v}-\\mathbf{w}|| = 8.63\n",
|
| 390 |
+
"$$\n",
|
| 391 |
+
"\n",
|
| 392 |
+
"Entonces así ya tenemos noción de cercanía o lontanaza, de no ser porque comparamos no tendríamos estas nociones. "
|
| 393 |
+
]
|
| 394 |
+
},
|
| 395 |
+
{
|
| 396 |
+
"cell_type": "markdown",
|
| 397 |
+
"metadata": {},
|
| 398 |
+
"source": [
|
| 399 |
+
" "
|
| 400 |
+
]
|
| 401 |
+
},
|
| 402 |
+
{
|
| 403 |
+
"cell_type": "markdown",
|
| 404 |
+
"metadata": {},
|
| 405 |
+
"source": [
|
| 406 |
+
"**Desigualdad del triángulo.** Debido a que la distancia la definimos a partir de la norma entonces la distancia también está sujeta a cumplir la desigualdad del triángulo. Considemos entonces tres $n$-vectores $\\mathbf{a}$,$\\mathbf{b}$ y $\\mathbf{c}$ entonces tenemos\n",
|
| 407 |
+
"\n",
|
| 408 |
+
"$$\n",
|
| 409 |
+
"||\\mathbf{a}-\\mathbf{c}|| = ||\\mathbf{a}-\\mathbf{b}+\\mathbf{b}-\\mathbf{c}|| \\le ||\\mathbf{a}-\\mathbf{b}|| + ||\\mathbf{b}-\\mathbf{c}||\n",
|
| 410 |
+
"$$"
|
| 411 |
+
]
|
| 412 |
+
},
|
| 413 |
+
{
|
| 414 |
+
"cell_type": "markdown",
|
| 415 |
+
"metadata": {},
|
| 416 |
+
"source": [
|
| 417 |
+
"Vamos a partir de los siguientes $2$-vectores:\n",
|
| 418 |
+
"$$\n",
|
| 419 |
+
"\\mathbf{a} = \\begin{bmatrix} 1\\\\ 1 \\end{bmatrix}, \\qquad \\mathbf{b} = \\begin{bmatrix} 2\\\\ 3 \\end{bmatrix}, \\qquad \\mathbf{c} = \\begin{bmatrix} 4\\\\ 2 \\end{bmatrix}\n",
|
| 420 |
+
"$$"
|
| 421 |
+
]
|
| 422 |
+
},
|
| 423 |
+
{
|
| 424 |
+
"cell_type": "markdown",
|
| 425 |
+
"metadata": {},
|
| 426 |
+
"source": [
|
| 427 |
+
" "
|
| 428 |
+
]
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"cell_type": "markdown",
|
| 432 |
+
"metadata": {},
|
| 433 |
+
"source": [
|
| 434 |
+
"## 8.3 Una aplicación"
|
| 435 |
+
]
|
| 436 |
+
},
|
| 437 |
+
{
|
| 438 |
+
"cell_type": "markdown",
|
| 439 |
+
"metadata": {},
|
| 440 |
+
"source": [
|
| 441 |
+
"**Visita óptima de apartamentos para arrendar.** Supongamos que estamos en búsqueda de alquilar un apartamento. Comenzamos buscando caracacterísticas como cantidad de recámaras, cantidad de baños, estacionamientos, zona y tamaño. Un problema es que algunas veces llegamos a colectar una gran cantidad de anuncios y contactos y organizarnos para ir a las visitas puede parecer prácticamte imposible y puede que dejemos escapar una gran oportunidad. Afortunadamente en este curso vamos a proponer una solución: vamos a partir de nuestro departamento ideal y vamos a representarlo como un vector de caracteristicas, construimos el mismo vector para los apartamentos que ya tengamos localizados y calculamos la distancia entre estos vectores y el vector que representa al departamento ideal. Los ordenamos por de manera ascendente y ya tendríamos una lista ordenada en prioridad de contacto y visita de apartamentos según nuestro apartamento ideal. \n",
|
| 442 |
+
"\n",
|
| 443 |
+
"Para esto, supongamos que las características que queremos tomar en cuenta son tamaño del apartamento, número de recámaras, número de baños y número de estacionamientos. Notemos que en el caso de tamaño del apartamento regularmente se nos da en metros cuadrados (área) pero el gran problema es que puede variar mucho y usar estos números *tan grandes* puede introducir una gran cantidad de ruido. Para resolver el problema anterior vamos a catalogar los tamaños de apartametos en categorias:\n",
|
| 444 |
+
"1. Si el área es menor que 60 metros cuadrados\n",
|
| 445 |
+
"2. Si el área es mayor o igual que 60 metros cuadrados pero menor que 80 metros cuadrados\n",
|
| 446 |
+
"3. Si el área es mayor o igual que 80 metros cuadrados pero menor que 110 metros cuadrados\n",
|
| 447 |
+
"4. Si el área es mayor o igual que 110 metros cuadrados pero menor que 130 metros cuadrados\n",
|
| 448 |
+
"5. Si el área es mayor o igual que 130 metros cuadrados. "
|
| 449 |
+
]
|
| 450 |
+
},
|
| 451 |
+
{
|
| 452 |
+
"cell_type": "markdown",
|
| 453 |
+
"metadata": {},
|
| 454 |
+
"source": [
|
| 455 |
+
"Supongamos también que el orden de las características en el vector es categoria de tamaño, número de recámaras, número de baños y número estacionamientos. Nuestro apartamento ideal viene dado por el siguiente vector:\n",
|
| 456 |
+
"\n",
|
| 457 |
+
"$$\n",
|
| 458 |
+
"\\mathbf{I} = \\begin{bmatrix} 3\\\\ 2\\\\ 2\\\\1 \\end{bmatrix}\n",
|
| 459 |
+
"$$\n",
|
| 460 |
+
"\n",
|
| 461 |
+
"Y nostros encontramos los siguientes apartamentos:\n",
|
| 462 |
+
"\n",
|
| 463 |
+
"$$\n",
|
| 464 |
+
"\\mathbf{A_{1}} = \\begin{bmatrix}4 \\\\3 \\\\ 3\\\\3 \\end{bmatrix}, \\qquad \\mathbf{A_{2}} = \\begin{bmatrix}3 \\\\3 \\\\ 1\\\\0 \\end{bmatrix}, \\qquad \\mathbf{A_{3}} = \\begin{bmatrix}5 \\\\4 \\\\ 3\\\\0 \\end{bmatrix}\n",
|
| 465 |
+
"$$"
|
| 466 |
+
]
|
| 467 |
+
},
|
| 468 |
+
{
|
| 469 |
+
"cell_type": "code",
|
| 470 |
+
"execution_count": 21,
|
| 471 |
+
"metadata": {},
|
| 472 |
+
"outputs": [],
|
| 473 |
+
"source": [
|
| 474 |
+
"I = np.array([3,2,2,1])\n",
|
| 475 |
+
"A_1 = np.array([4,3,3,3])\n",
|
| 476 |
+
"A_2 = np.array([3,3,2,1])\n",
|
| 477 |
+
"A_3 = np.array([5,4,3,0])"
|
| 478 |
+
]
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"cell_type": "code",
|
| 482 |
+
"execution_count": 22,
|
| 483 |
+
"metadata": {},
|
| 484 |
+
"outputs": [
|
| 485 |
+
{
|
| 486 |
+
"name": "stdout",
|
| 487 |
+
"output_type": "stream",
|
| 488 |
+
"text": [
|
| 489 |
+
"||I-A_1|| = 2.6457513110645907\n",
|
| 490 |
+
"||I-A_2|| = 1.0\n",
|
| 491 |
+
"||I-A_3|| = 3.1622776601683795\n"
|
| 492 |
+
]
|
| 493 |
+
}
|
| 494 |
+
],
|
| 495 |
+
"source": [
|
| 496 |
+
"print('||I-A_1|| =',np.linalg.norm(I-A_1))\n",
|
| 497 |
+
"print('||I-A_2|| =',np.linalg.norm(I-A_2))\n",
|
| 498 |
+
"print('||I-A_3|| =',np.linalg.norm(I-A_3))"
|
| 499 |
+
]
|
| 500 |
+
},
|
| 501 |
+
{
|
| 502 |
+
"cell_type": "markdown",
|
| 503 |
+
"metadata": {},
|
| 504 |
+
"source": [
|
| 505 |
+
"Este problema es el problema de encontrar el vector más cercano. Básicamte si tenemos una colección de N $n$-vectores $z_{0},z_{1},\\dots,z_{N-1}$ vamos a decir que $z_{i}$ es el vecino más cercano del vector $x$ si \n",
|
| 506 |
+
"\n",
|
| 507 |
+
"$$\n",
|
| 508 |
+
"||x-z_{i}|| \\le ||x - z_{j}|| \\quad con \\; \\; j = 0,\\dots, N-1\n",
|
| 509 |
+
"$$"
|
| 510 |
+
]
|
| 511 |
+
}
|
| 512 |
+
],
|
| 513 |
+
"metadata": {
|
| 514 |
+
"kernelspec": {
|
| 515 |
+
"display_name": "Python 3",
|
| 516 |
+
"language": "python",
|
| 517 |
+
"name": "python3"
|
| 518 |
+
},
|
| 519 |
+
"language_info": {
|
| 520 |
+
"codemirror_mode": {
|
| 521 |
+
"name": "ipython",
|
| 522 |
+
"version": 3
|
| 523 |
+
},
|
| 524 |
+
"file_extension": ".py",
|
| 525 |
+
"mimetype": "text/x-python",
|
| 526 |
+
"name": "python",
|
| 527 |
+
"nbconvert_exporter": "python",
|
| 528 |
+
"pygments_lexer": "ipython3",
|
| 529 |
+
"version": "3.7.3"
|
| 530 |
+
}
|
| 531 |
+
},
|
| 532 |
+
"nbformat": 4,
|
| 533 |
+
"nbformat_minor": 4
|
| 534 |
+
}
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://colab.research.google.com/drive/1pg6fxVEmEDlpou3JbEtnlZzcVckPGS8F?usp=sharing
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-Optimización de Visitas para Arrendar Departamentos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:93888c599c9db109c45abdd00119d35e9aac7579b7567a0ba582369a73d144ee
|
| 3 |
+
size 101123414
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-Optimización de Visitas para Arrendar Departamentos.vtt
ADDED
|
@@ -0,0 +1,595 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00:03.120 --> 00:00:05.040
|
| 4 |
+
En esta clase vamos a ver una aplicación
|
| 5 |
+
|
| 6 |
+
00:00:05.040 --> 00:00:07.120
|
| 7 |
+
de lo que aprendimos en las clases de
|
| 8 |
+
|
| 9 |
+
00:00:07.120 --> 00:00:10.559
|
| 10 |
+
norma y de distancia entre vectores. Vamos allá
|
| 11 |
+
|
| 12 |
+
00:00:10.559 --> 00:00:14.420
|
| 13 |
+
sin más. Esta aplicación se llama visita óptima
|
| 14 |
+
|
| 15 |
+
00:00:14.480 --> 00:00:17.175
|
| 16 |
+
de apartamentos para arrendar, y el problema es
|
| 17 |
+
|
| 18 |
+
00:00:17.175 --> 00:00:19.975
|
| 19 |
+
este, supongamos que tú quieres alquilar un nuevo
|
| 20 |
+
|
| 21 |
+
00:00:19.975 --> 00:00:23.655
|
| 22 |
+
departamento, te quieres cambiar de apartamento y entonces
|
| 23 |
+
|
| 24 |
+
00:00:23.655 --> 00:00:26.615
|
| 25 |
+
tú empiezas a buscar características como cantidad de
|
| 26 |
+
|
| 27 |
+
00:00:26.615 --> 00:00:29.654
|
| 28 |
+
recámaras, cantidad de baños, estacionamientos, la zona en
|
| 29 |
+
|
| 30 |
+
00:00:29.654 --> 00:00:32.739
|
| 31 |
+
la que está, el tamaño. Y un gran
|
| 32 |
+
|
| 33 |
+
00:00:32.739 --> 00:00:34.579
|
| 34 |
+
problema es que a veces podemos llegar a
|
| 35 |
+
|
| 36 |
+
00:00:34.579 --> 00:00:36.820
|
| 37 |
+
colectar una gran gran cantidad de anuncios y
|
| 38 |
+
|
| 39 |
+
00:00:36.820 --> 00:00:39.300
|
| 40 |
+
contactos y organizarnos para ir a a las
|
| 41 |
+
|
| 42 |
+
00:00:39.300 --> 00:00:42.600
|
| 43 |
+
visitas puede ser complicado, e incluso priorizar cuáles
|
| 44 |
+
|
| 45 |
+
00:00:42.660 --> 00:00:45.879
|
| 46 |
+
deberíamos de hacer antes y después. Y puede
|
| 47 |
+
|
| 48 |
+
00:00:46.055 --> 00:00:48.934
|
| 49 |
+
que por todo este enredo que tenemos, perdamos
|
| 50 |
+
|
| 51 |
+
00:00:48.934 --> 00:00:52.315
|
| 52 |
+
una gran gran oportunidad de un departamento. Entonces,
|
| 53 |
+
|
| 54 |
+
00:00:52.454 --> 00:00:54.394
|
| 55 |
+
por eso se me ocurrió hacer esta clase,
|
| 56 |
+
|
| 57 |
+
00:00:54.614 --> 00:00:56.695
|
| 58 |
+
porque además es un ejemplo que nos podrá
|
| 59 |
+
|
| 60 |
+
00:00:56.695 --> 00:01:00.840
|
| 61 |
+
ayudar en la vida real realmente. Ahora, por
|
| 62 |
+
|
| 63 |
+
00:01:00.840 --> 00:01:03.000
|
| 64 |
+
eso, afortunadamente, en este curso les vamos a
|
| 65 |
+
|
| 66 |
+
00:01:03.000 --> 00:01:05.019
|
| 67 |
+
dar la solución para esa clase de problemas.
|
| 68 |
+
|
| 69 |
+
00:01:06.040 --> 00:01:08.760
|
| 70 |
+
Aquí voy a asumir que nosotros ya tenemos
|
| 71 |
+
|
| 72 |
+
00:01:08.760 --> 00:01:10.840
|
| 73 |
+
en nuestra mente cuál va a ser nuestro
|
| 74 |
+
|
| 75 |
+
00:01:10.840 --> 00:01:14.565
|
| 76 |
+
apartamento ideal y además que vamos a poder
|
| 77 |
+
|
| 78 |
+
00:01:14.565 --> 00:01:19.685
|
| 79 |
+
presentar ese apartamento con características bien claras. Y
|
| 80 |
+
|
| 81 |
+
00:01:19.685 --> 00:01:22.585
|
| 82 |
+
a partir de ese ideal vamos a buscar
|
| 83 |
+
|
| 84 |
+
00:01:23.205 --> 00:01:26.320
|
| 85 |
+
describir los otros de los otros apartamentos con
|
| 86 |
+
|
| 87 |
+
00:01:26.320 --> 00:01:29.360
|
| 88 |
+
esas mismas características, y ya los tenemos que
|
| 89 |
+
|
| 90 |
+
00:01:29.360 --> 00:01:33.759
|
| 91 |
+
tener localizados. Eso está, esto es un súper
|
| 92 |
+
|
| 93 |
+
00:01:33.759 --> 00:01:36.340
|
| 94 |
+
importante, tenemos que tener toda la información disponible.
|
| 95 |
+
|
| 96 |
+
00:01:36.479 --> 00:01:38.775
|
| 97 |
+
Todo lo que queramos en nuestro departamento ideal
|
| 98 |
+
|
| 99 |
+
00:01:38.775 --> 00:01:41.415
|
| 100 |
+
para que esto funcione, tenemos que tenemos que
|
| 101 |
+
|
| 102 |
+
00:01:41.415 --> 00:01:44.695
|
| 103 |
+
ya saberlo a priori de los departamentos que
|
| 104 |
+
|
| 105 |
+
00:01:44.695 --> 00:01:46.615
|
| 106 |
+
que ya que ya que ya obtuvimos, de
|
| 107 |
+
|
| 108 |
+
00:01:46.615 --> 00:01:48.855
|
| 109 |
+
la información que ya obtuvimos. ¿Qué es lo
|
| 110 |
+
|
| 111 |
+
00:01:48.855 --> 00:01:51.095
|
| 112 |
+
que vamos a hacer? Vamos a calcular la
|
| 113 |
+
|
| 114 |
+
00:01:51.095 --> 00:01:54.229
|
| 115 |
+
distancia entre esos vectores y el vector que
|
| 116 |
+
|
| 117 |
+
00:01:54.229 --> 00:01:58.070
|
| 118 |
+
para nosotros representa el departamento ideal. Lo vamos
|
| 119 |
+
|
| 120 |
+
00:01:58.070 --> 00:02:00.229
|
| 121 |
+
los vamos a ordenar al final después de
|
| 122 |
+
|
| 123 |
+
00:02:00.229 --> 00:02:03.030
|
| 124 |
+
manera ascendente y ya tendremos una lista de
|
| 125 |
+
|
| 126 |
+
00:02:03.030 --> 00:02:05.350
|
| 127 |
+
prioridad de cuáles son los que están más
|
| 128 |
+
|
| 129 |
+
00:02:05.350 --> 00:02:07.190
|
| 130 |
+
cerca, es decir, los que tienen la menor
|
| 131 |
+
|
| 132 |
+
00:02:07.190 --> 00:02:11.055
|
| 133 |
+
distancia a nuestro vector, a nuestro apartamento ideal.
|
| 134 |
+
|
| 135 |
+
00:02:11.595 --> 00:02:14.895
|
| 136 |
+
Ya sabríamos a quién contactar primero, cómo contactarlo
|
| 137 |
+
|
| 138 |
+
00:02:15.035 --> 00:02:17.435
|
| 139 |
+
quizá, y si ese departamento nos conviene o
|
| 140 |
+
|
| 141 |
+
00:02:17.435 --> 00:02:21.915
|
| 142 |
+
no. Para esto, vamos a suponer este caso
|
| 143 |
+
|
| 144 |
+
00:02:21.915 --> 00:02:25.900
|
| 145 |
+
súper hipotético, en el que las características que
|
| 146 |
+
|
| 147 |
+
00:02:25.900 --> 00:02:28.640
|
| 148 |
+
tenemos o queremos tomar en cuenta son únicamente
|
| 149 |
+
|
| 150 |
+
00:02:28.780 --> 00:02:31.760
|
| 151 |
+
el tamaño del apartamento, el número de recámaras,
|
| 152 |
+
|
| 153 |
+
00:02:31.980 --> 00:02:33.819
|
| 154 |
+
el número de baños y el número de
|
| 155 |
+
|
| 156 |
+
00:02:33.819 --> 00:02:37.754
|
| 157 |
+
estacionamientos. Ahora, notemos que el tamaño del apartamento
|
| 158 |
+
|
| 159 |
+
00:02:37.754 --> 00:02:40.875
|
| 160 |
+
regularmente se nos da en metros cuadrados, se
|
| 161 |
+
|
| 162 |
+
00:02:40.875 --> 00:02:42.795
|
| 163 |
+
nos da el área total que tiene, y
|
| 164 |
+
|
| 165 |
+
00:02:42.795 --> 00:02:44.474
|
| 166 |
+
eso es un gran problema porque el área
|
| 167 |
+
|
| 168 |
+
00:02:44.474 --> 00:02:48.155
|
| 169 |
+
nos puede variar mucho. Ahora, si metemos en
|
| 170 |
+
|
| 171 |
+
00:02:48.155 --> 00:02:50.406
|
| 172 |
+
un vector el número sesenta aquí, o el
|
| 173 |
+
|
| 174 |
+
00:02:50.406 --> 00:02:52.300
|
| 175 |
+
número ochenta, o el número cien, o el
|
| 176 |
+
|
| 177 |
+
00:02:52.300 --> 00:02:55.500
|
| 178 |
+
número ciento veinte, y después aquí tenemos un
|
| 179 |
+
|
| 180 |
+
00:02:55.500 --> 00:02:57.840
|
| 181 |
+
tres, un dos y un uno, cuando saquemos
|
| 182 |
+
|
| 183 |
+
00:02:57.900 --> 00:03:00.320
|
| 184 |
+
la magnitud de este vector, va a dominar
|
| 185 |
+
|
| 186 |
+
00:03:00.380 --> 00:03:02.865
|
| 187 |
+
totalmente ese término de aquí, y entonces va
|
| 188 |
+
|
| 189 |
+
00:03:02.865 --> 00:03:05.345
|
| 190 |
+
a estar totalmente influenciado por los metros que
|
| 191 |
+
|
| 192 |
+
00:03:05.345 --> 00:03:07.505
|
| 193 |
+
tenga, lo cual no queremos que pase así,
|
| 194 |
+
|
| 195 |
+
00:03:07.505 --> 00:03:10.165
|
| 196 |
+
queremos que cuenten todas las características del vector.
|
| 197 |
+
|
| 198 |
+
00:03:10.785 --> 00:03:13.185
|
| 199 |
+
Entonces, lo que vamos a hacer es que,
|
| 200 |
+
|
| 201 |
+
00:03:13.185 --> 00:03:16.460
|
| 202 |
+
para resolver este problema, vamos a a catalogar
|
| 203 |
+
|
| 204 |
+
00:03:16.760 --> 00:03:20.120
|
| 205 |
+
los tamaños de los departamentos, es decir, vamos
|
| 206 |
+
|
| 207 |
+
00:03:20.120 --> 00:03:23.640
|
| 208 |
+
a hacer categorías para áreas grandes, no vamos
|
| 209 |
+
|
| 210 |
+
00:03:23.640 --> 00:03:25.900
|
| 211 |
+
a estar metiendo las áreas de manera directa.
|
| 212 |
+
|
| 213 |
+
00:03:26.280 --> 00:03:29.420
|
| 214 |
+
Entonces, en el primero va a ser categoría
|
| 215 |
+
|
| 216 |
+
00:03:29.560 --> 00:03:34.485
|
| 217 |
+
uno, si tiene menos de sesenta metros cuadrados.
|
| 218 |
+
|
| 219 |
+
00:03:34.485 --> 00:03:37.285
|
| 220 |
+
Va a ser categoría dos, si el área
|
| 221 |
+
|
| 222 |
+
00:03:37.285 --> 00:03:40.165
|
| 223 |
+
es mayor o igual que sesenta metros cuadrados,
|
| 224 |
+
|
| 225 |
+
00:03:40.165 --> 00:03:43.140
|
| 226 |
+
pero menor que ochenta metros cuadrados. Va a
|
| 227 |
+
|
| 228 |
+
00:03:43.140 --> 00:03:46.560
|
| 229 |
+
ser categoría tres, sí es de ochenta metros
|
| 230 |
+
|
| 231 |
+
00:03:46.739 --> 00:03:49.540
|
| 232 |
+
cuadrados o más, pero que tiene menos de
|
| 233 |
+
|
| 234 |
+
00:03:49.540 --> 00:03:52.520
|
| 235 |
+
ciento diez metros cuadrados. Va a ser categoría
|
| 236 |
+
|
| 237 |
+
00:03:52.900 --> 00:03:55.720
|
| 238 |
+
cuatro si tiene más de ciento, tiene más
|
| 239 |
+
|
| 240 |
+
00:03:55.860 --> 00:03:59.105
|
| 241 |
+
o ciento diez metros cuadrados, pero tiene menos
|
| 242 |
+
|
| 243 |
+
00:03:59.105 --> 00:04:01.425
|
| 244 |
+
de ciento treinta metros cuadrados, y va a
|
| 245 |
+
|
| 246 |
+
00:04:01.425 --> 00:04:05.285
|
| 247 |
+
ser categoría cinco si tiene más de ciento
|
| 248 |
+
|
| 249 |
+
00:04:05.505 --> 00:04:07.825
|
| 250 |
+
ciento treinta metros cuadrados, no importa cuánto más
|
| 251 |
+
|
| 252 |
+
00:04:07.825 --> 00:04:11.525
|
| 253 |
+
tenga. Estas van a ser nuestras cinco categorías
|
| 254 |
+
|
| 255 |
+
00:04:11.665 --> 00:04:13.540
|
| 256 |
+
y, entonces, ya no tenemos que escribir, por
|
| 257 |
+
|
| 258 |
+
00:04:13.540 --> 00:04:15.140
|
| 259 |
+
ejemplo, en el caso de la categoría dos,
|
| 260 |
+
|
| 261 |
+
00:04:15.140 --> 00:04:18.820
|
| 262 |
+
iremos desde sesenta hasta ochenta metros, simplemente, todos
|
| 263 |
+
|
| 264 |
+
00:04:18.820 --> 00:04:22.840
|
| 265 |
+
caerían dentro de la categoría dos. Ahora, supongamos
|
| 266 |
+
|
| 267 |
+
00:04:22.980 --> 00:04:25.780
|
| 268 |
+
que el orden de las características en el
|
| 269 |
+
|
| 270 |
+
00:04:25.780 --> 00:04:29.215
|
| 271 |
+
vector es categoría de tamaño, número de recámaras,
|
| 272 |
+
|
| 273 |
+
00:04:29.514 --> 00:04:33.115
|
| 274 |
+
número de baños y número de estacionamientos. Para
|
| 275 |
+
|
| 276 |
+
00:04:33.115 --> 00:04:35.514
|
| 277 |
+
esto, nuestro apartamento ideal va a venir dado
|
| 278 |
+
|
| 279 |
+
00:04:35.514 --> 00:04:40.330
|
| 280 |
+
por el siguiente vector. Va a ser de
|
| 281 |
+
|
| 282 |
+
00:04:40.330 --> 00:04:43.849
|
| 283 |
+
la categoría tres, es decir, el área va
|
| 284 |
+
|
| 285 |
+
00:04:43.849 --> 00:04:47.690
|
| 286 |
+
a ser mayor o igual que ochenta metros
|
| 287 |
+
|
| 288 |
+
00:04:47.690 --> 00:04:50.009
|
| 289 |
+
cuadrados y además va a ser menor el
|
| 290 |
+
|
| 291 |
+
00:04:50.009 --> 00:04:53.235
|
| 292 |
+
área que ciento diez metros cuadrados. Ese sería
|
| 293 |
+
|
| 294 |
+
00:04:53.235 --> 00:04:59.315
|
| 295 |
+
nuestro ideal. Luego tendría dos recámaras, tendría dos
|
| 296 |
+
|
| 297 |
+
00:04:59.315 --> 00:05:03.794
|
| 298 |
+
baños y tendría solamente un estacionamiento. Ese sería
|
| 299 |
+
|
| 300 |
+
00:05:03.794 --> 00:05:09.870
|
| 301 |
+
nuestro apartamento ideal. Ahora, nosotros la información que
|
| 302 |
+
|
| 303 |
+
00:05:09.870 --> 00:05:13.950
|
| 304 |
+
encontramos de departamentos fue esta. Encontramos un cuatro
|
| 305 |
+
|
| 306 |
+
00:05:13.950 --> 00:05:17.230
|
| 307 |
+
tres tres tres, recordemos, esto significa que es
|
| 308 |
+
|
| 309 |
+
00:05:17.230 --> 00:05:20.030
|
| 310 |
+
de categoría cuatro, significa que el apartamento A
|
| 311 |
+
|
| 312 |
+
00:05:20.030 --> 00:05:22.805
|
| 313 |
+
uno tiene un área mayor que ciento diez
|
| 314 |
+
|
| 315 |
+
00:05:22.805 --> 00:05:25.285
|
| 316 |
+
metros cuadrados, pero menor que ciento treinta metros
|
| 317 |
+
|
| 318 |
+
00:05:25.285 --> 00:05:29.765
|
| 319 |
+
cuadrados. Luego está que tiene tres recámaras, tiene
|
| 320 |
+
|
| 321 |
+
00:05:29.765 --> 00:05:34.370
|
| 322 |
+
tres baños y tiene tres estacionamientos. Luego tenemos
|
| 323 |
+
|
| 324 |
+
00:05:34.510 --> 00:05:37.170
|
| 325 |
+
el apartamento dos, que es de la categoría
|
| 326 |
+
|
| 327 |
+
00:05:37.230 --> 00:05:39.570
|
| 328 |
+
tres, que es la categoría que nos interesaba
|
| 329 |
+
|
| 330 |
+
00:05:41.550 --> 00:05:44.510
|
| 331 |
+
justamente. Tiene tres recámaras, tiene solo un baño
|
| 332 |
+
|
| 333 |
+
00:05:44.510 --> 00:05:48.155
|
| 334 |
+
y no tiene estacionamiento. Y por último, está
|
| 335 |
+
|
| 336 |
+
00:05:48.155 --> 00:05:51.375
|
| 337 |
+
el apartamento tres, que tiene es de categoría
|
| 338 |
+
|
| 339 |
+
00:05:51.835 --> 00:05:53.995
|
| 340 |
+
cinco, es súper grande, más de ciento treinta
|
| 341 |
+
|
| 342 |
+
00:05:53.995 --> 00:05:58.155
|
| 343 |
+
metros cuadrados. Tiene cuatro recámaras, tres baños y
|
| 344 |
+
|
| 345 |
+
00:05:58.155 --> 00:06:01.690
|
| 346 |
+
tampoco tiene estacionamiento. Entonces, la pregunta es, si
|
| 347 |
+
|
| 348 |
+
00:06:01.690 --> 00:06:04.730
|
| 349 |
+
yo tengo estos tres apartamentos, ¿a cuál debería
|
| 350 |
+
|
| 351 |
+
00:06:04.730 --> 00:06:06.490
|
| 352 |
+
de hablar primero o cuál es el que
|
| 353 |
+
|
| 354 |
+
00:06:06.490 --> 00:06:09.770
|
| 355 |
+
realmente me interesa? Porque todos son buenas ofertas
|
| 356 |
+
|
| 357 |
+
00:06:09.770 --> 00:06:12.810
|
| 358 |
+
al final. Bueno, si lo comparamos contra nuestro
|
| 359 |
+
|
| 360 |
+
00:06:12.810 --> 00:06:16.335
|
| 361 |
+
vector ideal obtendríamos esto. Para poder hacer esto,
|
| 362 |
+
|
| 363 |
+
00:06:16.335 --> 00:06:20.015
|
| 364 |
+
primero tenemos que declarar nuestros arrays, y va
|
| 365 |
+
|
| 366 |
+
00:06:20.015 --> 00:06:22.255
|
| 367 |
+
a ser nuestro vector ideal, a uno es
|
| 368 |
+
|
| 369 |
+
00:06:22.255 --> 00:06:23.775
|
| 370 |
+
a uno, a dos es a dos y
|
| 371 |
+
|
| 372 |
+
00:06:23.775 --> 00:06:25.775
|
| 373 |
+
a tres es a tres. Los podemos verificar
|
| 374 |
+
|
| 375 |
+
00:06:25.775 --> 00:06:29.270
|
| 376 |
+
aquí. Y lo que vamos a hacer es
|
| 377 |
+
|
| 378 |
+
00:06:29.270 --> 00:06:32.490
|
| 379 |
+
calcular la magnitud del vector de distancia entre
|
| 380 |
+
|
| 381 |
+
00:06:33.430 --> 00:06:36.970
|
| 382 |
+
IYA uno. Entre más pequeña sea esta distancia,
|
| 383 |
+
|
| 384 |
+
00:06:37.030 --> 00:06:39.430
|
| 385 |
+
significa que están más cerca y están más
|
| 386 |
+
|
| 387 |
+
00:06:39.430 --> 00:06:41.930
|
| 388 |
+
cerca de lo que yo quiero tener. Entre
|
| 389 |
+
|
| 390 |
+
00:06:42.470 --> 00:06:45.295
|
| 391 |
+
más lejos esté, entre entre estos, acuérdense que
|
| 392 |
+
|
| 393 |
+
00:06:45.295 --> 00:06:47.935
|
| 394 |
+
necesito algo para poder compararlo y decir, ah,
|
| 395 |
+
|
| 396 |
+
00:06:47.935 --> 00:06:50.495
|
| 397 |
+
ese es el que está más cerca y
|
| 398 |
+
|
| 399 |
+
00:06:50.495 --> 00:06:52.035
|
| 400 |
+
ah, este es el que está más lejos,
|
| 401 |
+
|
| 402 |
+
00:06:52.175 --> 00:06:54.175
|
| 403 |
+
entonces los vamos a poder ordenar y darles
|
| 404 |
+
|
| 405 |
+
00:06:54.175 --> 00:06:56.975
|
| 406 |
+
prioridad en contacto. Si lo calculamos, lo que
|
| 407 |
+
|
| 408 |
+
00:06:56.975 --> 00:07:00.160
|
| 409 |
+
obtenemos es que el que está más cerca
|
| 410 |
+
|
| 411 |
+
00:07:00.160 --> 00:07:01.940
|
| 412 |
+
de lo que yo quiero de mi departamento
|
| 413 |
+
|
| 414 |
+
00:07:02.639 --> 00:07:06.400
|
| 415 |
+
ideal es el departamento A dos. Entonces, el
|
| 416 |
+
|
| 417 |
+
00:07:06.400 --> 00:07:08.160
|
| 418 |
+
primero que me debería de contactar y el
|
| 419 |
+
|
| 420 |
+
00:07:08.160 --> 00:07:09.840
|
| 421 |
+
que le debería de dar prioridad si ya
|
| 422 |
+
|
| 423 |
+
00:07:09.840 --> 00:07:12.320
|
| 424 |
+
no quiero seguir buscando departamentos es el A
|
| 425 |
+
|
| 426 |
+
00:07:12.320 --> 00:07:16.055
|
| 427 |
+
dos. Ahora, otra cosa que podríamos hacer es
|
| 428 |
+
|
| 429 |
+
00:07:16.055 --> 00:07:19.115
|
| 430 |
+
tratar de disminuir este número, encontrar un departamento
|
| 431 |
+
|
| 432 |
+
00:07:19.575 --> 00:07:21.575
|
| 433 |
+
que quede por debajo de esta cota, es
|
| 434 |
+
|
| 435 |
+
00:07:21.575 --> 00:07:23.095
|
| 436 |
+
decir, que esté más cerca de lo que
|
| 437 |
+
|
| 438 |
+
00:07:23.095 --> 00:07:26.710
|
| 439 |
+
nosotros estamos buscando. Imagínense, voy a hacer ese
|
| 440 |
+
|
| 441 |
+
00:07:26.710 --> 00:07:30.090
|
| 442 |
+
ejercicio, ¿cómo cambiaría si encontráramos este mismo departamento,
|
| 443 |
+
|
| 444 |
+
00:07:30.630 --> 00:07:33.510
|
| 445 |
+
pero que si tuviera estacionamiento? Vamos a ponerle
|
| 446 |
+
|
| 447 |
+
00:07:33.510 --> 00:07:38.070
|
| 448 |
+
al lado estacionamiento. Corro esta celda, corro esta
|
| 449 |
+
|
| 450 |
+
00:07:38.070 --> 00:07:43.355
|
| 451 |
+
celda y bajó exactamente este número de aquí,
|
| 452 |
+
|
| 453 |
+
00:07:43.355 --> 00:07:46.155
|
| 454 |
+
la distancia se hizo más pequeña. Entonces, justo
|
| 455 |
+
|
| 456 |
+
00:07:46.155 --> 00:07:49.035
|
| 457 |
+
lo que estamos buscando ahorita es minimizar estas
|
| 458 |
+
|
| 459 |
+
00:07:49.035 --> 00:07:51.514
|
| 460 |
+
distancias, no maximizarlas. Este número queremos que se
|
| 461 |
+
|
| 462 |
+
00:07:51.514 --> 00:07:55.250
|
| 463 |
+
haga lo más pequeños posible. Entonces, al agregar
|
| 464 |
+
|
| 465 |
+
00:07:55.250 --> 00:07:57.729
|
| 466 |
+
un estacionamiento, lo que pasó fue que se
|
| 467 |
+
|
| 468 |
+
00:07:57.729 --> 00:08:00.210
|
| 469 |
+
redujo a cuarenta y uno, pero ¿qué pasa
|
| 470 |
+
|
| 471 |
+
00:08:00.210 --> 00:08:02.449
|
| 472 |
+
si en lugar de agregar el estacionamiento yo
|
| 473 |
+
|
| 474 |
+
00:08:02.449 --> 00:08:07.505
|
| 475 |
+
le pido que tenga los dos baños? Se
|
| 476 |
+
|
| 477 |
+
00:08:07.505 --> 00:08:09.765
|
| 478 |
+
disminuye a uno punto cuarenta y uno también.
|
| 479 |
+
|
| 480 |
+
00:08:10.625 --> 00:08:12.725
|
| 481 |
+
¿Y qué pasa si en lugar de tener
|
| 482 |
+
|
| 483 |
+
00:08:12.945 --> 00:08:17.505
|
| 484 |
+
dos baños tiene ves de categoría tres, tiene
|
| 485 |
+
|
| 486 |
+
00:08:17.505 --> 00:08:21.289
|
| 487 |
+
las tres recámaras, tiene dos baños y además
|
| 488 |
+
|
| 489 |
+
00:08:21.289 --> 00:08:25.789
|
| 490 |
+
tiene un estacionamiento. Bueno, pues lo que obtendríamos
|
| 491 |
+
|
| 492 |
+
00:08:25.930 --> 00:08:28.330
|
| 493 |
+
es que se disminuye bastante la distancia. La
|
| 494 |
+
|
| 495 |
+
00:08:28.330 --> 00:08:30.970
|
| 496 |
+
distancia ahora ya es uno, y este para
|
| 497 |
+
|
| 498 |
+
00:08:30.970 --> 00:08:33.745
|
| 499 |
+
nosotros comparado con nosotros dos sería una señal
|
| 500 |
+
|
| 501 |
+
00:08:33.745 --> 00:08:38.464
|
| 502 |
+
de ir a buscarlo totalmente. Este problema que
|
| 503 |
+
|
| 504 |
+
00:08:38.464 --> 00:08:40.625
|
| 505 |
+
está aquí, que les estoy exponiendo, es un
|
| 506 |
+
|
| 507 |
+
00:08:40.625 --> 00:08:42.544
|
| 508 |
+
problema que vamos a ver un poco más
|
| 509 |
+
|
| 510 |
+
00:08:42.544 --> 00:08:45.024
|
| 511 |
+
adelante, y es el problema de encontrar el
|
| 512 |
+
|
| 513 |
+
00:08:45.024 --> 00:08:47.980
|
| 514 |
+
vector más cercano, Y esto, básicamente, es que
|
| 515 |
+
|
| 516 |
+
00:08:47.980 --> 00:08:50.940
|
| 517 |
+
si tenemos una colección de n vectores, que
|
| 518 |
+
|
| 519 |
+
00:08:50.940 --> 00:08:53.840
|
| 520 |
+
son n vectores, es decir, n n vectores,
|
| 521 |
+
|
| 522 |
+
00:08:54.700 --> 00:08:56.460
|
| 523 |
+
desde el z cero hasta el z n
|
| 524 |
+
|
| 525 |
+
00:08:56.460 --> 00:08:58.380
|
| 526 |
+
menos uno, donde cada una de esos z
|
| 527 |
+
|
| 528 |
+
00:08:58.380 --> 00:09:01.145
|
| 529 |
+
es un e vector, vamos a decir que
|
| 530 |
+
|
| 531 |
+
00:09:01.145 --> 00:09:03.225
|
| 532 |
+
z I es el vecino más cercano al
|
| 533 |
+
|
| 534 |
+
00:09:03.225 --> 00:09:07.305
|
| 535 |
+
vector x si cuando comparamos la distancia contra
|
| 536 |
+
|
| 537 |
+
00:09:07.305 --> 00:09:10.345
|
| 538 |
+
todos, z I me da el número menor
|
| 539 |
+
|
| 540 |
+
00:09:10.345 --> 00:09:13.899
|
| 541 |
+
que todas las otras distancias de estos zetas.
|
| 542 |
+
|
| 543 |
+
00:09:13.899 --> 00:09:15.740
|
| 544 |
+
Es decir, que el z I que yo
|
| 545 |
+
|
| 546 |
+
00:09:15.740 --> 00:09:19.820
|
| 547 |
+
me agarré dentro de estos n z vectores,
|
| 548 |
+
|
| 549 |
+
00:09:19.820 --> 00:09:23.339
|
| 550 |
+
estos n n vectores z, va a ser
|
| 551 |
+
|
| 552 |
+
00:09:23.339 --> 00:09:25.420
|
| 553 |
+
para z I el más pequeño. Este es
|
| 554 |
+
|
| 555 |
+
00:09:25.420 --> 00:09:27.175
|
| 556 |
+
el que me va a minimizar justamente esta
|
| 557 |
+
|
| 558 |
+
00:09:27.175 --> 00:09:33.175
|
| 559 |
+
distancia, esta longitud. Este ejercicio, sin duda, es
|
| 560 |
+
|
| 561 |
+
00:09:33.175 --> 00:09:35.655
|
| 562 |
+
un ejercicio muy simplificado de un problema de
|
| 563 |
+
|
| 564 |
+
00:09:35.655 --> 00:09:38.615
|
| 565 |
+
la vida real, lo podemos hacer más completo
|
| 566 |
+
|
| 567 |
+
00:09:38.615 --> 00:09:41.735
|
| 568 |
+
y más complejo. ¿Qué características crees que le
|
| 569 |
+
|
| 570 |
+
00:09:41.735 --> 00:09:44.830
|
| 571 |
+
faltan? Te pido que dejes en los comentarios
|
| 572 |
+
|
| 573 |
+
00:09:45.050 --> 00:09:47.550
|
| 574 |
+
cómo complementarías tú este modelo y qué características
|
| 575 |
+
|
| 576 |
+
00:09:47.770 --> 00:09:50.650
|
| 577 |
+
agregarías para que ayudes a la comunidad a
|
| 578 |
+
|
| 579 |
+
00:09:50.650 --> 00:09:53.050
|
| 580 |
+
poder decidir mucho más rápido en el futuro
|
| 581 |
+
|
| 582 |
+
00:09:53.050 --> 00:09:56.410
|
| 583 |
+
un departamento. Y aún más, nos queda un
|
| 584 |
+
|
| 585 |
+
00:09:56.410 --> 00:09:59.524
|
| 586 |
+
problema que podremos hacer de aquí. ¿Cómo llevarías
|
| 587 |
+
|
| 588 |
+
00:09:59.745 --> 00:10:02.385
|
| 589 |
+
a este problema a cómo elegir el mejor
|
| 590 |
+
|
| 591 |
+
00:10:02.385 --> 00:10:06.545
|
| 592 |
+
súper cerca de tu casa? Espero verlo en
|
| 593 |
+
|
| 594 |
+
00:10:06.545 --> 00:10:09.204
|
| 595 |
+
los comentarios. Nos vemos la próxima clase.
|
a/Curso de Introducción al Álgebra Lineal Vectores/04-Norma y distancia/03-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/04-Norma y distancia/03-distancias_7eb83b35-ba4b-431d-9a1a-bd49eeaaf232.ipynb
ADDED
|
@@ -0,0 +1,534 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {},
|
| 6 |
+
"source": [
|
| 7 |
+
"# 8. Distancia y Norma"
|
| 8 |
+
]
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"cell_type": "markdown",
|
| 12 |
+
"metadata": {},
|
| 13 |
+
"source": [
|
| 14 |
+
"En clases pasadas hablamos de la magnitud de un vector pero no dimos una forma de poder medirla, esa magnitud la podremos calcular a través de la *norma Euclidiana*:\n",
|
| 15 |
+
"\n",
|
| 16 |
+
"$$\n",
|
| 17 |
+
"||x|| = \\displaystyle\\sqrt{x_{0}^2 + x_{1}^2 + \\cdots + x_{n-1}^{2}} = \\displaystyle\\sqrt(x^Tx)\n",
|
| 18 |
+
"$$\n",
|
| 19 |
+
"\n",
|
| 20 |
+
"Hay que notar que $x$ en la expresión anterior es un $n$-vector. \n",
|
| 21 |
+
"Pongamos un ejemplo con $x^T = [1,2,3]$\n",
|
| 22 |
+
"\n",
|
| 23 |
+
"$$\n",
|
| 24 |
+
"||x|| = \\displaystyle\\sqrt{1^2 + 2^2 + 3^2} = \\sqrt{14} \\approx 3.74\n",
|
| 25 |
+
"$$\n",
|
| 26 |
+
"\n",
|
| 27 |
+
"Realizaremos otro con $x^T = [2,-1,2]$\n",
|
| 28 |
+
"\n",
|
| 29 |
+
"$$\n",
|
| 30 |
+
"||x|| = \\displaystyle\\sqrt{2^2 + (-1)^2 + 2^2} = \\sqrt{9} = 3\n",
|
| 31 |
+
"$$"
|
| 32 |
+
]
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"cell_type": "markdown",
|
| 36 |
+
"metadata": {},
|
| 37 |
+
"source": [
|
| 38 |
+
"## 8.1 Propieades de la norma"
|
| 39 |
+
]
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"cell_type": "markdown",
|
| 43 |
+
"metadata": {},
|
| 44 |
+
"source": [
|
| 45 |
+
"Como todas las operaciones con las que trabajamos hasta ahora la norma también cumple una serie de propiedades. Sean $x$, $y$ son $n$-vectores y $\\beta$ un escalar cualquiera, tenemos que la norma cumple:\n",
|
| 46 |
+
"* Homogeneídad no negativa: $||\\beta x|| = |\\beta|\\cdot ||x||$\n",
|
| 47 |
+
"\n",
|
| 48 |
+
"* Desigualdad del triángulo: $||x+y|| \\le ||x|| + ||y||$ \n",
|
| 49 |
+
"\n",
|
| 50 |
+
"* No-negatividad: $||x||\\ge 0$ y además $||x|| = 0$ si y solamente si $x = \\mathbf{0}$"
|
| 51 |
+
]
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"cell_type": "markdown",
|
| 55 |
+
"metadata": {},
|
| 56 |
+
"source": [
|
| 57 |
+
"La norma es ampliamente usada, en particular podemos señalar los siguientes ejemplos:\n",
|
| 58 |
+
"\n",
|
| 59 |
+
"**Valor cuadrático medio.** Algunas veces también es llamado simplemente **RMS** y se define como sigue:\n",
|
| 60 |
+
"\n",
|
| 61 |
+
"$$\n",
|
| 62 |
+
"rms(x) = \\displaystyle\\sqrt{\\frac{x_{0}^2 + x_{1}^2 + \\cdots + x_{n-1}^{2}}{n}} = \\frac{||x||}{\\sqrt{n}}\n",
|
| 63 |
+
"$$"
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"cell_type": "markdown",
|
| 68 |
+
"metadata": {},
|
| 69 |
+
"source": [
|
| 70 |
+
"**Norma de una suma.** Si tenemos dos vectores $x$ y $y$ entonces la norma de la suma es\n",
|
| 71 |
+
"\n",
|
| 72 |
+
"$$\n",
|
| 73 |
+
"||x+y|| = \\displaystyle\\sqrt{||x||^{2} + 2x^{T}y + ||y||^{2}}\n",
|
| 74 |
+
"$$"
|
| 75 |
+
]
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"cell_type": "markdown",
|
| 79 |
+
"metadata": {},
|
| 80 |
+
"source": [
|
| 81 |
+
"**Norma de una bloque de vectores.** La norma de bloque de vectores será simplemente la raíz cuadrada de la suma de sus componentes. Si tenemos $d$ un $k$-vector con componentes $d_{i}$ que son $n$-vectores entonces tenemos que:\n",
|
| 82 |
+
"\n",
|
| 83 |
+
"$$\n",
|
| 84 |
+
"||d|| = \\displaystyle\\sqrt{||d_{0}||^{2}+||d_{1}||^{2}+\\cdots + ||d_{n-1}||^{2}}\n",
|
| 85 |
+
"$$"
|
| 86 |
+
]
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"cell_type": "code",
|
| 90 |
+
"execution_count": 1,
|
| 91 |
+
"metadata": {},
|
| 92 |
+
"outputs": [],
|
| 93 |
+
"source": [
|
| 94 |
+
"import numpy as np"
|
| 95 |
+
]
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"cell_type": "code",
|
| 99 |
+
"execution_count": 2,
|
| 100 |
+
"metadata": {},
|
| 101 |
+
"outputs": [],
|
| 102 |
+
"source": [
|
| 103 |
+
"u = np.array([1,1])"
|
| 104 |
+
]
|
| 105 |
+
},
|
| 106 |
+
{
|
| 107 |
+
"cell_type": "code",
|
| 108 |
+
"execution_count": 3,
|
| 109 |
+
"metadata": {},
|
| 110 |
+
"outputs": [],
|
| 111 |
+
"source": [
|
| 112 |
+
"def norma(x):\n",
|
| 113 |
+
" return np.sqrt(x@x)"
|
| 114 |
+
]
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"cell_type": "code",
|
| 118 |
+
"execution_count": 4,
|
| 119 |
+
"metadata": {},
|
| 120 |
+
"outputs": [
|
| 121 |
+
{
|
| 122 |
+
"data": {
|
| 123 |
+
"text/plain": [
|
| 124 |
+
"1.4142135623730951"
|
| 125 |
+
]
|
| 126 |
+
},
|
| 127 |
+
"execution_count": 4,
|
| 128 |
+
"metadata": {},
|
| 129 |
+
"output_type": "execute_result"
|
| 130 |
+
}
|
| 131 |
+
],
|
| 132 |
+
"source": [
|
| 133 |
+
"norma(u)"
|
| 134 |
+
]
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"cell_type": "markdown",
|
| 138 |
+
"metadata": {},
|
| 139 |
+
"source": [
|
| 140 |
+
"$2*u^T = [2,2]$ entonces la norma será $||2u|| = \\displaystyle\\sqrt{2^2 + 2^2} = \\displaystyle\\sqrt{8}$"
|
| 141 |
+
]
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"cell_type": "code",
|
| 145 |
+
"execution_count": 5,
|
| 146 |
+
"metadata": {},
|
| 147 |
+
"outputs": [
|
| 148 |
+
{
|
| 149 |
+
"data": {
|
| 150 |
+
"text/plain": [
|
| 151 |
+
"2.8284271247461903"
|
| 152 |
+
]
|
| 153 |
+
},
|
| 154 |
+
"execution_count": 5,
|
| 155 |
+
"metadata": {},
|
| 156 |
+
"output_type": "execute_result"
|
| 157 |
+
}
|
| 158 |
+
],
|
| 159 |
+
"source": [
|
| 160 |
+
"norma(2*u)"
|
| 161 |
+
]
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"cell_type": "code",
|
| 165 |
+
"execution_count": 6,
|
| 166 |
+
"metadata": {},
|
| 167 |
+
"outputs": [
|
| 168 |
+
{
|
| 169 |
+
"data": {
|
| 170 |
+
"text/plain": [
|
| 171 |
+
"2.8284271247461903"
|
| 172 |
+
]
|
| 173 |
+
},
|
| 174 |
+
"execution_count": 6,
|
| 175 |
+
"metadata": {},
|
| 176 |
+
"output_type": "execute_result"
|
| 177 |
+
}
|
| 178 |
+
],
|
| 179 |
+
"source": [
|
| 180 |
+
"2*norma(u)"
|
| 181 |
+
]
|
| 182 |
+
},
|
| 183 |
+
{
|
| 184 |
+
"cell_type": "code",
|
| 185 |
+
"execution_count": 7,
|
| 186 |
+
"metadata": {},
|
| 187 |
+
"outputs": [],
|
| 188 |
+
"source": [
|
| 189 |
+
"v = np.array([-1,1])"
|
| 190 |
+
]
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"cell_type": "code",
|
| 194 |
+
"execution_count": 8,
|
| 195 |
+
"metadata": {},
|
| 196 |
+
"outputs": [
|
| 197 |
+
{
|
| 198 |
+
"name": "stdout",
|
| 199 |
+
"output_type": "stream",
|
| 200 |
+
"text": [
|
| 201 |
+
"||u+v|| = 2.0\n"
|
| 202 |
+
]
|
| 203 |
+
}
|
| 204 |
+
],
|
| 205 |
+
"source": [
|
| 206 |
+
"print('||u+v|| = ',norma(u+v))"
|
| 207 |
+
]
|
| 208 |
+
},
|
| 209 |
+
{
|
| 210 |
+
"cell_type": "code",
|
| 211 |
+
"execution_count": 9,
|
| 212 |
+
"metadata": {},
|
| 213 |
+
"outputs": [
|
| 214 |
+
{
|
| 215 |
+
"name": "stdout",
|
| 216 |
+
"output_type": "stream",
|
| 217 |
+
"text": [
|
| 218 |
+
"||v|| = 1.4142135623730951\n"
|
| 219 |
+
]
|
| 220 |
+
}
|
| 221 |
+
],
|
| 222 |
+
"source": [
|
| 223 |
+
"print('||v|| = ',norma(v))"
|
| 224 |
+
]
|
| 225 |
+
},
|
| 226 |
+
{
|
| 227 |
+
"cell_type": "code",
|
| 228 |
+
"execution_count": 10,
|
| 229 |
+
"metadata": {},
|
| 230 |
+
"outputs": [
|
| 231 |
+
{
|
| 232 |
+
"name": "stdout",
|
| 233 |
+
"output_type": "stream",
|
| 234 |
+
"text": [
|
| 235 |
+
"¿Es verdad que ||u+v|| menor o igual que ||u||+||v|| True\n"
|
| 236 |
+
]
|
| 237 |
+
}
|
| 238 |
+
],
|
| 239 |
+
"source": [
|
| 240 |
+
"print('¿Es verdad que ||u+v|| menor o igual que ||u||+||v||', norma(u+v) <= norma(v)+norma(u))"
|
| 241 |
+
]
|
| 242 |
+
},
|
| 243 |
+
{
|
| 244 |
+
"cell_type": "markdown",
|
| 245 |
+
"metadata": {},
|
| 246 |
+
"source": [
|
| 247 |
+
" "
|
| 248 |
+
]
|
| 249 |
+
},
|
| 250 |
+
{
|
| 251 |
+
"cell_type": "markdown",
|
| 252 |
+
"metadata": {},
|
| 253 |
+
"source": [
|
| 254 |
+
"## 8.1 Distancia entre vectores"
|
| 255 |
+
]
|
| 256 |
+
},
|
| 257 |
+
{
|
| 258 |
+
"cell_type": "markdown",
|
| 259 |
+
"metadata": {},
|
| 260 |
+
"source": [
|
| 261 |
+
"Podemos usar la norma pora definir la distancia entre dos vectores $\\mathbf{a}$ y $\\mathbf{b}$ como la norma de la diferencia de los vectores\n",
|
| 262 |
+
"\n",
|
| 263 |
+
"$$\n",
|
| 264 |
+
"dist(\\mathbf{a},\\mathbf{b}) = ||\\mathbf{a} - \\mathbf{b}|| = \\displaystyle\\sqrt{(a_{0}-b_{0})^2 + (a_{1}-b_{1})^2 + \\cdots + (a_{n-1}-b_{n-1})^2}\n",
|
| 265 |
+
"$$"
|
| 266 |
+
]
|
| 267 |
+
},
|
| 268 |
+
{
|
| 269 |
+
"cell_type": "code",
|
| 270 |
+
"execution_count": 11,
|
| 271 |
+
"metadata": {},
|
| 272 |
+
"outputs": [],
|
| 273 |
+
"source": [
|
| 274 |
+
"a = np.array([1,1])\n",
|
| 275 |
+
"b = np.array([-2,3])"
|
| 276 |
+
]
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"cell_type": "code",
|
| 280 |
+
"execution_count": 12,
|
| 281 |
+
"metadata": {},
|
| 282 |
+
"outputs": [],
|
| 283 |
+
"source": [
|
| 284 |
+
"c = a - b"
|
| 285 |
+
]
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"cell_type": "code",
|
| 289 |
+
"execution_count": 15,
|
| 290 |
+
"metadata": {},
|
| 291 |
+
"outputs": [
|
| 292 |
+
{
|
| 293 |
+
"data": {
|
| 294 |
+
"text/plain": [
|
| 295 |
+
"3.605551275463989"
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
"execution_count": 15,
|
| 299 |
+
"metadata": {},
|
| 300 |
+
"output_type": "execute_result"
|
| 301 |
+
}
|
| 302 |
+
],
|
| 303 |
+
"source": [
|
| 304 |
+
"norma(a-b)"
|
| 305 |
+
]
|
| 306 |
+
},
|
| 307 |
+
{
|
| 308 |
+
"cell_type": "code",
|
| 309 |
+
"execution_count": 16,
|
| 310 |
+
"metadata": {},
|
| 311 |
+
"outputs": [
|
| 312 |
+
{
|
| 313 |
+
"data": {
|
| 314 |
+
"text/plain": [
|
| 315 |
+
"3.605551275463989"
|
| 316 |
+
]
|
| 317 |
+
},
|
| 318 |
+
"execution_count": 16,
|
| 319 |
+
"metadata": {},
|
| 320 |
+
"output_type": "execute_result"
|
| 321 |
+
}
|
| 322 |
+
],
|
| 323 |
+
"source": [
|
| 324 |
+
"np.linalg.norm(a-b)"
|
| 325 |
+
]
|
| 326 |
+
},
|
| 327 |
+
{
|
| 328 |
+
"cell_type": "markdown",
|
| 329 |
+
"metadata": {},
|
| 330 |
+
"source": [
|
| 331 |
+
"A esto se el llama _norma Euclidiana_ o *distancia Euclidiana* y tiene ese nombre porque es como se infiere la forma de medir distancias de los [postulados de Euclides](https://es.wikipedia.org/wiki/Postulados_de_Euclides). Ahora, la realidad es que siempre que nuestro espacio admita una $\\mathbf{L^p}$-norma entonces podremos generalizar la norma anterior como\n",
|
| 332 |
+
"\n",
|
| 333 |
+
"$$\n",
|
| 334 |
+
"||x||_{p} = \\left(|x_{0}|^p + |x_{1}|^p + \\cdots + |x_{n-1}|^p\\right)^{1/p} \\qquad con \\;\\; 1\\le p\n",
|
| 335 |
+
"$$"
|
| 336 |
+
]
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"cell_type": "markdown",
|
| 340 |
+
"metadata": {},
|
| 341 |
+
"source": [
|
| 342 |
+
"Por eso es que la norma Euclidiana también es conocida como la *norma $L_{2}$*. Hay otras normas que recibe nombres. Por ejemplo, si $p=1$ tenemos la norma $L_{1}$ y esta es llamada _la métrica del taxista_ o _la métrica de Manhattan_. Si tomamos $p \\to \\infty$ entonces tenemos $L_{\\infty}$ y esta es llamada _la métrica del máximo_. Es muy importante saber qué métrica estamos usando para medir distancias ya que la forma en la que medimos distancias está en total correspondencia en con configuración y la percepción el espacio. Por ejemplo, mientras que en la métrica Euclidiana la distancia corresponde a la más corta entre los dos vectores en el espacio planeo en el caso de la métrica del taxista es la más corta pero no será es segmento más directo sino por _bloques_."
|
| 343 |
+
]
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"cell_type": "markdown",
|
| 347 |
+
"metadata": {},
|
| 348 |
+
"source": [
|
| 349 |
+
"Para poder simplificar las cosas tomemos dos vectores $\\mathbf{x}$ y $\\mathbf{y}$ en $\\mathbb{R}^2$\n",
|
| 350 |
+
"\n",
|
| 351 |
+
"$$\n",
|
| 352 |
+
"\\mathbf{x} = \\begin{bmatrix} 2\\\\1 \\end{bmatrix},\\; \\qquad \\mathbf{y} = \\begin{bmatrix} 1\\\\2 \\end{bmatrix}\n",
|
| 353 |
+
"$$\n",
|
| 354 |
+
"\n",
|
| 355 |
+
"La distancia en el caso de norma $L_{2}$ tenemos que la distancia entre los vectores es $||\\mathbf{x}-\\mathbf{y}||_{2} = \\displaystyle\\sqrt{(2-1)^{2} + (1-2)^{2}} = \\displaystyle\\sqrt{2}$ mientras que bajo la norma $L_{1}$ obtenemos que $||\\mathbf{x}-\\mathbf{y}||_{1} = |2-1|+|1-2| = 2$. "
|
| 356 |
+
]
|
| 357 |
+
},
|
| 358 |
+
{
|
| 359 |
+
"cell_type": "markdown",
|
| 360 |
+
"metadata": {},
|
| 361 |
+
"source": [
|
| 362 |
+
"Ahora, si $\\mathbf{x}$ y $\\mathbf{y}$ son $n$-vectores hay una medida quer después cobrará importancia, *la desviación cuadrática media*\n",
|
| 363 |
+
"\n",
|
| 364 |
+
"$$\n",
|
| 365 |
+
"rms_{dev}(\\mathbf{x},\\mathbf{y}) = \\displaystyle\\frac{||\\mathbf{x}-\\mathbf{y}||}{\\sqrt{n}}\n",
|
| 366 |
+
"$$"
|
| 367 |
+
]
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"cell_type": "markdown",
|
| 371 |
+
"metadata": {},
|
| 372 |
+
"source": [
|
| 373 |
+
" "
|
| 374 |
+
]
|
| 375 |
+
},
|
| 376 |
+
{
|
| 377 |
+
"cell_type": "markdown",
|
| 378 |
+
"metadata": {},
|
| 379 |
+
"source": [
|
| 380 |
+
"Algo muy imporante es que a pesar de que medimos distancias no existen propiamente nociones de *cerca* y *lejos*. Si tomamos los siguientes $4$-vectores\n",
|
| 381 |
+
"\n",
|
| 382 |
+
"$$\n",
|
| 383 |
+
"\\mathbf{u} = \\begin{bmatrix}1.8 \\\\ 2.8 \\\\ -3.7 \\\\ 4.7 \\end{bmatrix}, \\qquad \\mathbf{v} = \\begin{bmatrix}0.6 \\\\ 2.1 \\\\ 1.9 \\\\ -1.4 \\end{bmatrix}, \\qquad \\mathbf{w} = \\begin{bmatrix}2.0 \\\\ 1.9 \\\\ -4.0 \\\\ 4.6 \\end{bmatrix}\n",
|
| 384 |
+
"$$\n",
|
| 385 |
+
"\n",
|
| 386 |
+
"Tenemos que las distancia entre los vectores es:\n",
|
| 387 |
+
"\n",
|
| 388 |
+
"$$\n",
|
| 389 |
+
"||\\mathbf{u}-\\mathbf{v}|| = 8.36, \\qquad ||\\mathbf{u}-\\mathbf{w}|| = 0.38, \\qquad ||\\mathbf{v}-\\mathbf{w}|| = 8.63\n",
|
| 390 |
+
"$$\n",
|
| 391 |
+
"\n",
|
| 392 |
+
"Entonces así ya tenemos noción de cercanía o lontanaza, de no ser porque comparamos no tendríamos estas nociones. "
|
| 393 |
+
]
|
| 394 |
+
},
|
| 395 |
+
{
|
| 396 |
+
"cell_type": "markdown",
|
| 397 |
+
"metadata": {},
|
| 398 |
+
"source": [
|
| 399 |
+
" "
|
| 400 |
+
]
|
| 401 |
+
},
|
| 402 |
+
{
|
| 403 |
+
"cell_type": "markdown",
|
| 404 |
+
"metadata": {},
|
| 405 |
+
"source": [
|
| 406 |
+
"**Desigualdad del triángulo.** Debido a que la distancia la definimos a partir de la norma entonces la distancia también está sujeta a cumplir la desigualdad del triángulo. Considemos entonces tres $n$-vectores $\\mathbf{a}$,$\\mathbf{b}$ y $\\mathbf{c}$ entonces tenemos\n",
|
| 407 |
+
"\n",
|
| 408 |
+
"$$\n",
|
| 409 |
+
"||\\mathbf{a}-\\mathbf{c}|| = ||\\mathbf{a}-\\mathbf{b}+\\mathbf{b}-\\mathbf{c}|| \\le ||\\mathbf{a}-\\mathbf{b}|| + ||\\mathbf{b}-\\mathbf{c}||\n",
|
| 410 |
+
"$$"
|
| 411 |
+
]
|
| 412 |
+
},
|
| 413 |
+
{
|
| 414 |
+
"cell_type": "markdown",
|
| 415 |
+
"metadata": {},
|
| 416 |
+
"source": [
|
| 417 |
+
"Vamos a partir de los siguientes $2$-vectores:\n",
|
| 418 |
+
"$$\n",
|
| 419 |
+
"\\mathbf{a} = \\begin{bmatrix} 1\\\\ 1 \\end{bmatrix}, \\qquad \\mathbf{b} = \\begin{bmatrix} 2\\\\ 3 \\end{bmatrix}, \\qquad \\mathbf{c} = \\begin{bmatrix} 4\\\\ 2 \\end{bmatrix}\n",
|
| 420 |
+
"$$"
|
| 421 |
+
]
|
| 422 |
+
},
|
| 423 |
+
{
|
| 424 |
+
"cell_type": "markdown",
|
| 425 |
+
"metadata": {},
|
| 426 |
+
"source": [
|
| 427 |
+
" "
|
| 428 |
+
]
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"cell_type": "markdown",
|
| 432 |
+
"metadata": {},
|
| 433 |
+
"source": [
|
| 434 |
+
"## 8.3 Una aplicación"
|
| 435 |
+
]
|
| 436 |
+
},
|
| 437 |
+
{
|
| 438 |
+
"cell_type": "markdown",
|
| 439 |
+
"metadata": {},
|
| 440 |
+
"source": [
|
| 441 |
+
"**Visita óptima de apartamentos para arrendar.** Supongamos que estamos en búsqueda de alquilar un apartamento. Comenzamos buscando caracacterísticas como cantidad de recámaras, cantidad de baños, estacionamientos, zona y tamaño. Un problema es que algunas veces llegamos a colectar una gran cantidad de anuncios y contactos y organizarnos para ir a las visitas puede parecer prácticamte imposible y puede que dejemos escapar una gran oportunidad. Afortunadamente en este curso vamos a proponer una solución: vamos a partir de nuestro departamento ideal y vamos a representarlo como un vector de caracteristicas, construimos el mismo vector para los apartamentos que ya tengamos localizados y calculamos la distancia entre estos vectores y el vector que representa al departamento ideal. Los ordenamos por de manera ascendente y ya tendríamos una lista ordenada en prioridad de contacto y visita de apartamentos según nuestro apartamento ideal. \n",
|
| 442 |
+
"\n",
|
| 443 |
+
"Para esto, supongamos que las características que queremos tomar en cuenta son tamaño del apartamento, número de recámaras, número de baños y número de estacionamientos. Notemos que en el caso de tamaño del apartamento regularmente se nos da en metros cuadrados (área) pero el gran problema es que puede variar mucho y usar estos números *tan grandes* puede introducir una gran cantidad de ruido. Para resolver el problema anterior vamos a catalogar los tamaños de apartametos en categorias:\n",
|
| 444 |
+
"1. Si el área es menor que 60 metros cuadrados\n",
|
| 445 |
+
"2. Si el área es mayor o igual que 60 metros cuadrados pero menor que 80 metros cuadrados\n",
|
| 446 |
+
"3. Si el área es mayor o igual que 80 metros cuadrados pero menor que 110 metros cuadrados\n",
|
| 447 |
+
"4. Si el área es mayor o igual que 110 metros cuadrados pero menor que 130 metros cuadrados\n",
|
| 448 |
+
"5. Si el área es mayor o igual que 130 metros cuadrados. "
|
| 449 |
+
]
|
| 450 |
+
},
|
| 451 |
+
{
|
| 452 |
+
"cell_type": "markdown",
|
| 453 |
+
"metadata": {},
|
| 454 |
+
"source": [
|
| 455 |
+
"Supongamos también que el orden de las características en el vector es categoria de tamaño, número de recámaras, número de baños y número estacionamientos. Nuestro apartamento ideal viene dado por el siguiente vector:\n",
|
| 456 |
+
"\n",
|
| 457 |
+
"$$\n",
|
| 458 |
+
"\\mathbf{I} = \\begin{bmatrix} 3\\\\ 2\\\\ 2\\\\1 \\end{bmatrix}\n",
|
| 459 |
+
"$$\n",
|
| 460 |
+
"\n",
|
| 461 |
+
"Y nostros encontramos los siguientes apartamentos:\n",
|
| 462 |
+
"\n",
|
| 463 |
+
"$$\n",
|
| 464 |
+
"\\mathbf{A_{1}} = \\begin{bmatrix}4 \\\\3 \\\\ 3\\\\3 \\end{bmatrix}, \\qquad \\mathbf{A_{2}} = \\begin{bmatrix}3 \\\\3 \\\\ 1\\\\0 \\end{bmatrix}, \\qquad \\mathbf{A_{3}} = \\begin{bmatrix}5 \\\\4 \\\\ 3\\\\0 \\end{bmatrix}\n",
|
| 465 |
+
"$$"
|
| 466 |
+
]
|
| 467 |
+
},
|
| 468 |
+
{
|
| 469 |
+
"cell_type": "code",
|
| 470 |
+
"execution_count": 21,
|
| 471 |
+
"metadata": {},
|
| 472 |
+
"outputs": [],
|
| 473 |
+
"source": [
|
| 474 |
+
"I = np.array([3,2,2,1])\n",
|
| 475 |
+
"A_1 = np.array([4,3,3,3])\n",
|
| 476 |
+
"A_2 = np.array([3,3,2,1])\n",
|
| 477 |
+
"A_3 = np.array([5,4,3,0])"
|
| 478 |
+
]
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"cell_type": "code",
|
| 482 |
+
"execution_count": 22,
|
| 483 |
+
"metadata": {},
|
| 484 |
+
"outputs": [
|
| 485 |
+
{
|
| 486 |
+
"name": "stdout",
|
| 487 |
+
"output_type": "stream",
|
| 488 |
+
"text": [
|
| 489 |
+
"||I-A_1|| = 2.6457513110645907\n",
|
| 490 |
+
"||I-A_2|| = 1.0\n",
|
| 491 |
+
"||I-A_3|| = 3.1622776601683795\n"
|
| 492 |
+
]
|
| 493 |
+
}
|
| 494 |
+
],
|
| 495 |
+
"source": [
|
| 496 |
+
"print('||I-A_1|| =',np.linalg.norm(I-A_1))\n",
|
| 497 |
+
"print('||I-A_2|| =',np.linalg.norm(I-A_2))\n",
|
| 498 |
+
"print('||I-A_3|| =',np.linalg.norm(I-A_3))"
|
| 499 |
+
]
|
| 500 |
+
},
|
| 501 |
+
{
|
| 502 |
+
"cell_type": "markdown",
|
| 503 |
+
"metadata": {},
|
| 504 |
+
"source": [
|
| 505 |
+
"Este problema es el problema de encontrar el vector más cercano. Básicamte si tenemos una colección de N $n$-vectores $z_{0},z_{1},\\dots,z_{N-1}$ vamos a decir que $z_{i}$ es el vecino más cercano del vector $x$ si \n",
|
| 506 |
+
"\n",
|
| 507 |
+
"$$\n",
|
| 508 |
+
"||x-z_{i}|| \\le ||x - z_{j}|| \\quad con \\; \\; j = 0,\\dots, N-1\n",
|
| 509 |
+
"$$"
|
| 510 |
+
]
|
| 511 |
+
}
|
| 512 |
+
],
|
| 513 |
+
"metadata": {
|
| 514 |
+
"kernelspec": {
|
| 515 |
+
"display_name": "Python 3",
|
| 516 |
+
"language": "python",
|
| 517 |
+
"name": "python3"
|
| 518 |
+
},
|
| 519 |
+
"language_info": {
|
| 520 |
+
"codemirror_mode": {
|
| 521 |
+
"name": "ipython",
|
| 522 |
+
"version": 3
|
| 523 |
+
},
|
| 524 |
+
"file_extension": ".py",
|
| 525 |
+
"mimetype": "text/x-python",
|
| 526 |
+
"name": "python",
|
| 527 |
+
"nbconvert_exporter": "python",
|
| 528 |
+
"pygments_lexer": "ipython3",
|
| 529 |
+
"version": "3.7.3"
|
| 530 |
+
}
|
| 531 |
+
},
|
| 532 |
+
"nbformat": 4,
|
| 533 |
+
"nbformat_minor": 4
|
| 534 |
+
}
|