diff --git a/Lecc01-Secc1.1.ipynb b/Lecc01-Secc1.1.ipynb index b252963..b42d9d8 100644 --- a/Lecc01-Secc1.1.ipynb +++ b/Lecc01-Secc1.1.ipynb @@ -1 +1,1372 @@ -{"cells":[{"cell_type":"markdown","metadata":{},"source":"Lección 01 - Sección 1.1\n========================\n\n**Author:** Marcos Bujosa\n\n"},{"cell_type":"markdown","metadata":{},"source":["[NAcAL](https://github.com/mbujosab/nacallib) es un módulo de Python que implementa literalmente lo expuesto\nen el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf). Así, usted puede experimentar con Python empleando una\nnotación similar a la empleada en clase. El [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) y el módulo [NAcAL](https://github.com/mbujosab/nacallib)\nson dependientes el uno del otro y se complementan mutuamente (la\nescritura de libro ha condicionado la escritura del módulo y\nviceversa).\n\n"]},{"cell_type":"markdown","metadata":{},"source":["$\n\\newcommand{\\R}[1][{}]{{\\mathbb{R}}^{#1}}\n\\newcommand{\\Z}[1][{}]{{\\mathbb{Z}}^{#1}}\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\getItem}{\\pmb{\\mid}}\n\\newcommand{\\getitemR}[1]{\\getItem{#1}}\n\\newcommand{\\getitemL}[1]{{#1}\\getItem}\n\\newcommand{\\elemR}[2]{{#1}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n\\newcommand{\\elemRP}[2]{{\\big(#1\\big)}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n\\newcommand{\\elemRPE}[2]{\\big({#1}^{\\phantom{\\T}}_{\\getitemR{#2}}\\big)}\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\Vect}[2][{}]{{\\boldsymbol{#2}}_{#1}}\n\\newcommand{\\eleVR}[2] {\\elemR {\\Vect{#1}}{#2}}\t % con subindices\n\\newcommand{\\eleVRP}[2] {\\elemRP {\\Vect{#1}}{#2}} % con subindices y paréntesis interior\n\\newcommand{\\eleVRPE}[2]{\\elemRPE{\\Vect{#1}}{#2}} % con subindices y paréntesis exterior\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\VectC}[2][{}] {\\elemR {\\Mat{#2}}{#1}} % con subindices\n\\newcommand{\\VectCP}[2][{}] {\\elemRP {\\Mat{#2}}{#1}} % con subindices y paréntesis\n\\newcommand{\\VectCPE}[2][{}]{\\elemRPE{\\Mat{#2}}{#1}} % con subindices y paréntesis exterior\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\mat}[1]{\\mathbf{#1}}\n\\newcommand{\\Mat} [2][{}]{{\\mat{#2}}_{#1}} \n\\newcommand{\\T}{\\intercal}\n\\newcommand{\\MatT}[2][{}]{{\\mat{#2}}^{\\T}_{#1}}\n\\newcommand{\\VectCC}[2][{}] {\\elemRR {\\Mat{#2}}{#1}} % con ()\n\\newcommand{\\VectCCC}[2][{}] {\\elemRRR{\\Mat{#2}}{#1}} % con texto \"col\"\n%SELECCIÓNA de FILAS y COlUMNAS DE UNA MATRIZ TRANSPUESTA PARA GENERAR UN VECTOR DE Rn\n\\newcommand{\\VectTC}[2][{}] {\\elemR{\\MatT{#2}\\!}{#1}} % con subindices\n\\newcommand{\\VectTCC}[2][{}] {\\elemRR{ \\MatT{#2}}{#1}} % con ()\n\\newcommand{\\VectTCCC}[2][{}] {\\elemRRR{\\MatT{#2}}{#1}} % con texto \"col\"\n\\newcommand{\\dotprod}[2][{}] {\\Vect{#1}\\cdot\\Vect{#2}}\n$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Primer paso para usar [NAcAL](https://github.com/mbujosab/nacallib)\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Para poder usar [NAcAL](https://github.com/mbujosab/nacallib) es necesario importar el módulo:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["from nacal import *"]},{"cell_type":"markdown","metadata":{},"source":["*Lea primero la Sección 1.4 de la Lección 1 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)* \n\n([https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf))\n\n"]},{"cell_type":"markdown","metadata":{},"source":["## Los vectores son listas de números\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Definiendo vectores\n\n"]},{"cell_type":"markdown","metadata":{},"source":["En el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se indica que encerrando entre paréntesis una lista de $n$\nnúmeros expresamos un vector de $\\R[n]$; por ejemplo encerrando la\nlista 20, 10, 15 entre paréntesis expresamos un vector de $\\R[3]$\n\n$$\\begin{pmatrix}20,&10,&15,\\end{pmatrix}$$\n\nAquí hemos implementado dicha operación poniendo una [lista](https://docs.python.org/es/3/tutorial/introduction.html#lists) o una [tupla](https://ellibrodepython.com/tuplas-python)\nde números como argumento de `Vector()`. Por ejemplo, con la lista\n`[20, 10, 15]` obtenemos\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["Vector( [20, 10, 15] )"]},{"cell_type":"markdown","metadata":{},"source":["Obtendremos idéntico resultado si en lugar de usar una [lista](https://ellibrodepython.com/listas-en-python), usamos\nla tupla `(20, 10, 15)`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["a = (20, 10, 15)\nVector( a )"]},{"cell_type":"markdown","metadata":{},"source":["La lista de números correspondiente a cada `Vector` está almacenada en\nel atributo `.lista`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"[0, 1, 2, 3, 4, 5]"}],"source":["v = Vector( [0,1,2,3,4,5] )\nprint(v.lista)"]},{"cell_type":"markdown","metadata":{},"source":["No es necesario usar la función `print()`, basta con escribir\n`v.lista`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Haciendo copias de un vector\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Si al invocar `Vector` usamos como argumento otro vector (en lugar de\nuna lista o una tupla) obtenemos una copia\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["b = Vector( a )\nb"]},{"cell_type":"markdown","metadata":{},"source":["La función `type()` de Python devuelve el tipo de cada objeto\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"nacal.Vector"}],"source":["type(b)"]},{"cell_type":"markdown","metadata":{},"source":["#### Representación de Vectores: el atributo `.rpr` de la clase `Vector`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Cuando el entorno de trabajo es un Notebook de Jupyter, [NAcAL](https://github.com/mbujosab/nacallib) muestra\nlos vectores en forma de columna. Aunque podemos indicar a Python que\nqueremos una representación horizontal del `Vector` asignando el valor\n`'fila'` al atributo `rpr`. *Tenga en cuenta que esto solo afecta a la\nrepresentación* (el vector no cambia, ya que la lista de números\nasociada no cambia).\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"fila"}],"source":["x = Vector( a, rpr='fila' )\nprint(x.rpr)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAGcAAAAUCAIAAAAflbTBAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC6klEQVRYw+1Y7XWjOhCd9UkBQAlyB5gSRCrALkHpQKEEJRVwXALpQFEJQAVIJQg6YH9MVtbKhn3PdsjZPbm/QB9cdGeYD35M0wS/oLXebrfwjd8xDEMcx/7Ixl29vb11Xfet0TniOH5+fh6G4TQ0TdM0TX3fM8YmD1LKNE0BgFLa930wRQgRQkx3gpTynGUdIsaYLxAh5OJGa21RFO72Q7U0Ta21brSqKiFE0zRCCABI09RNCSHquuacA0Bd17cfgxCCbxyotg4RYwyJEE3TzD0Bl51Uk1IGjuYrSCl1Liml5JzjdVEUURTdxQVQGp90NaLg4Mtwngioi5Rygcm9tO+STdMAwMLG/466roPDrEb0v1SjlKIzbgBAKZXn+VwsNMYcDgdMJRgacXy32xFCPiOBrEaEeHp6yvM8juM8z7XWCysppcfjEQAe2rZ1H/xFdF2H1lZKJUkSPMUYc/djrEaEIZtSut1uh2HIsuzx8XFBuDRN0Vs3xpgoiubWvby8cM7R7NZaa22QcRb2Xo3ViNDRsESN45hzbox5f3+fW5wkCRrvwVobGNahbVullP+Uc4PP7b0RqxH5yLIMAMZxnFsQRRHObsZxnDNjWZbokM7g4zj6xZ4xpiiKuzhX4FnrEF2cXYhXznIbp1+APM+FEH4ngRkDKzhHg+7dtm3btvey+WpEWms/inVdRwjZ7XZzRE70hyRJzi2w3+8BoGkazAMo836/L4ri9fU1yzJCyPF4LMsSZxljXddZa4N+7WqsQ1SW5TiOGIK01kIIpdQC0em77Ps+qCGxFAyAdY21FtusNE39AgrFrarqujKqqqqgOVmHCPskSiljjDHm9wwXieq6ppR+VLlRFPlvfB2wNZk+H19IxDnHkQ0AHA4H55lXI4oi7L0+G19IpJTCpLTBrw9L3huBcXQFfAmR1jpJko//j84bF9r9P+KWvX8LkS8RuFH//9E3zn80+THupFrf91fnpn8b1togLfwE62bUKzhqxXMAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["x"]},{"cell_type":"markdown","metadata":{},"source":["Para cambiar la representación de un vector basta cambiar el valor del\natributo `rpr`.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"col"}],"source":["x.rpr = 'col' # cualquier valor distinto de la cadena 'fila' representará en columna\nprint(x.rpr)"]},{"cell_type":"markdown","metadata":{},"source":["Como el atributo `rpr` ya no es `'fila'` ahora el vector $\\Vect{x}$\nes representado en vertical\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["x"]},{"cell_type":"markdown","metadata":{},"source":["##### Representación de `Vector()` en una consola de Python\n\n"]},{"cell_type":"markdown","metadata":{},"source":["La representación en consola se limita a indicar con texto que el\nobjeto es un vector, y muestra la lista de números correspondiente a\ncada vector. Podemos ver dicha representación con la función `print()`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"Vector([20, 10, 15])"}],"source":["print(x)"]},{"cell_type":"markdown","metadata":{},"source":["#### Atributos `.lista` y `.n`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Como ya hemos visto, [NAcAL](https://github.com/mbujosab/nacallib) almacena la lista ordenada de números de\ncada `Vector` su atributo `.lista`.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"[20, 10, 15]"}],"source":["print(x.lista)"]},{"cell_type":"markdown","metadata":{},"source":["El atributo `.n` indica el número de elementos de la lista del\n`Vector`.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"3"}],"source":["v = Vector( (2, 4, 6) )\nv.n"]},{"cell_type":"markdown","metadata":{},"source":["#### Método `.sis()`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["En el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se indica que un vector es sistema (lista ordenada);\npodemos recuperar el `Vector` en forma de `Sistema` genérico con el\nmétodo `.sis()`. [NAcAL](https://github.com/mbujosab/nacallib) representa los sistemas con la misma notación\nque el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf), es decir, entre corchetes y con los elementos seguidos\npor puntos y comas.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAFUAAAAQCAIAAADoAqTSAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACeklEQVRIx+WX3/GiMBDH925+BYAlLB0gJQQriJYQrQBTAliBUoIlQEpAKhBKCHTAPayXYSKiCHMv931ikvhJNpv946+u6y6XCwAEQbBer+H/EJmMiNB1HWPsfr93f5Vlme/7AGCN0xQixnHcTVSWZc+0OcBBphCibyQivvqt1rooCiHEDwA4juN5nrmYtm3TNFVKSSl3u93tdqOpJEkQkXMupUTE7Xb7yU3neX44HOq6fp76DjjOjOMYEY39rwiu6z4ee9d1nPP+xZhvxhgtoMuOooi+OeeO40zyVRRFANCHzwQOMoUQkwhCCNt+awNzLN/3zU5FUQBAlmWf73S9Xq2zzgQOMr+w//fIM6vrerfbAUDTNPRmaHy9XiNiWZYA4Hke5ZJJWhxotN/vwzB0XTcMw6qqaHCE+TPCKsuSPKOUWq1W/SnGGIWf4zhfnHJxIMn3fcaY53lN0wRBsNls6ApGmC/tT5IkiiJykdZaa22lVhox2XGSFgca55v0FkXR4XDI8zwMwxHmsP23200pled5PxasNZYDp2pxoKUgCACgbdvxZcPxL6Wk7GKc07YtBa05Ped8ksMtb88EPjMHZ0dK4Ev7wzCM49gkJxqh0tqnm5bhCy0OBICqqkzCo+SFiG87Wvv9UxNSFAVlPnqW2+2Wc346nYIgQMQ0TaWUJuSEEF80zosDpZRt21LMVlUVx7FS6j2zX/+po7BERVVrTU2x7/v9Qs0YY4y9rbTn87lf8OcDn5laa845Y0wIIYTo98WvmG/6n090v9+/aN3+JXCE+ej/y7I8Ho+MMQrLqbL+dczX4sBnZpIkjwJk9fxTdT6fl/XV4sBx5h+TzTCzdk3VCwAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["x.sis()"]},{"cell_type":"markdown","metadata":{},"source":["La representación en modo consola indica explícitamente que `x.sis()`\nes un sistema\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"Sistema([20; 10; 15;])"}],"source":["print(x.sis())"]},{"cell_type":"markdown","metadata":{},"source":["La función `type()` también nos lo dice\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"nacal.Sistema"}],"source":["type(x.sis())"]},{"cell_type":"markdown","metadata":{},"source":["#### Componentes no enteras: fracciones y números irracionales\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Por una parte, con `fracc(a,b)` generamos la fracción\n$\\frac{a}{b}$. Por otra, el módulo [Sympy](https://www.sympy.org/es/index.html) (que [NAcAL](https://github.com/mbujosab/nacallib) carga por defecto)\ntiene implementados muchos números irracionales. Generemos un vector\ncon distintos tipos de números:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAJgAAAAVCAIAAAA1jrBwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADjElEQVRo3uVa67WiMBDOeiwAKQFuBdESYgdICZQQKCHXCpASYgeBEoAKgBIgHbA/xsUsD/VcL4HdO3/0BHSGeXwz8+mvtm3RHynL0rZt9LOlaRrTNKeuqu5a1sjdbqeebLp31+s1z/OVePNyuRyPx/1+r1+167rttKzEP7vdzvf9pmn+SrG2bYui8DyvM7eu63YF4jgO51ynRiEEY6z9F6Sua8dx7hkGLxhjNXjDFDAMQ390HccpikKnRkKIGlSMMUKIEKLZjBeFMdYl+hYhFMfx4XBQMZdzrkaRc04I6YHyrBLHcRRFQRDo7NlxHBNCOmyXUkZRlCRJEASu62ZZtrZ27vu+bdun0+kGrYQQIcSLeapNiqIghFBKFylHFX4guusEWEJImqY3aH1sJaUUbl0klpZlLd4dKaWGYawzkIwxGG42WZZZljVVvGVZSik1T48diOV53mHd3HI+n33fH71UVZXrujpXC1XKsvR9fwrYMcZpmiKEtlVVGYYx9aVBEDDGNEN/kiSMMUKIlPJyuXz79w/X5SzLYK4ZlTzPwVlzi23bVVUNx0zXdadqyTTN20fCMJxqgWmaqgPufyDQdzHGw/F4aiZnjIVhqME2zjko4pzDyFLX9VNIL4oCOuNWSjlVkUEQhGH4PlB4nvfghsPhMIVpc0gYhh8fH1mWdTkOzWV0Js+yLEmSOI41eMAwDJg/OefX6xUhVNf1A46pq8j7g41WpBBC/7D6il++ZdJTH+1BORJCNG/P6povhHg663UVuTFNs67r0XJ0HGeYobOuUy8G+00zGGNJkpRl+bgcj8cjY6x3aW4PwHAA76WUamhGVd8BtSiKIRBDbx8mI0wEsyYpkIVqWxqevG8Gxhim9qlydByHEBIqAhzKrB7oNUUhBCAtrH+jqoGrue2RQ/rN87zRMQcCPGvz55xjjFUVw5P3zQAfCSFGCQdK6bBWIPCzeiAMw57bMcYYY5h9RlVTSmH9RRC217lpz/PmppUppUNzeyfvm2FZ1tcIZA0eeF01xhh44A3kWhRFL4K4YRjalvRZzQBO5AsE8oIe6Kkuy9I0TdiJNwih/X5vWdbrPXxuokdK+fTkfTNOp9Pn5+fXPrvID6VD1efz+U7XqO39aWnrIV17o83wZCnud1Wqe+TwRoWap3zYgpm4woJYUHXTNHmeq0TKViX61vOHnSGj8ZTj+FECf/VQT34D16mta4B47XAAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["v = Vector( [7, fracc(-3, 11), sympy.sqrt(2), -sympy.pi], 'fila' )\nv"]},{"cell_type":"markdown","metadata":{},"source":["### Seleccionando componentes de un `Vector`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Podemos seleccionar componentes con el operador **barra vertical** \n(en un teclado español es la combinación de teclas `[Alt Gr] + [1]`).\n\nPor ejemplo, seleccionemos la tercera componente del vector\n$\\Vect{a}$, es decir $\\eleVR{a}{3}$\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"30"}],"source":["a = Vector( [10, 20, 30, 40, 50] )\nprint(a|3)"]},{"cell_type":"markdown","metadata":{},"source":["Y ahora su quinta componente\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"50"}],"source":["a|5"]},{"cell_type":"markdown","metadata":{},"source":["La barra vertical funciona por ambos lados del `Vector()` como\nselector de sus componentes\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"30"}],"source":["3|a"]},{"cell_type":"markdown","metadata":{},"source":["Cada elemento de un vector es un número. Con la función `type()`\npodemos ver qué el tipo de número es cada uno de los elementos. Por\nejemplo, podemos ver el tipo de cada elemento de $\\Vect{v}$ (todos\nellos distintos tipos de números).\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAANAAAAAVCAIAAAC44/ckAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEoElEQVRo3u1b7XmqMBROfToAMkLsBNER4gbREdINwBFSJ4gdIW5gGQGYIDBCZAPvj3Mv5vIlhRLt054/bQMmh5eT97znxD5dLhf0z7IsWywW6Gfb+Xz2fb/tqg3Xr/UBcz6f2yOz8rfj8Zim6YM4ejgc1uv1crl0v/R2u720228Mfcrm83kYhufz+b8te7lctNac8xJWY8zlAYwxppRyueLpdBJCXH7t68wYwxi77lj4QQixg6weqp7nuY9CxpjW2uWKlFI7+AghCCFKqWM3pthIGOObe+l0OtUftg0HpRTGGCFkx1OjCSFK4kAwo01vMJdtjDEppWOAGGNxHN+L3qSUQog4joUQCCFCyPeNNnjfQRAghNoyBkQkkIsdVW04SCmVUlprGL8Zyhjja8BRSk+nU89978y01pTSIAjuQm82nVNKS+3xHbmtxJAx5nlex80QlPaz98GBEHLzNVFKgT7+ll3dTjhmGjvmyp1xR/UWBEH3e3pks8VSHMcIoQ5yUUpVAq4PDp7ndRMWsCxk0VmSJCWX1i3LsqIoHFeLSZLAL2mawq5yYPv9PgzDxkt5nm+3W5etBNuyLAvDsMTks1NBqQh/LpdLjPHgXkQjDq+vr7vdbr1ed3+WEALhPsvz3PO8tvt2ux3QrEuLomiz2RwOhzzPD4fDl8+fZVk9xEEXN1qapqBUprbFYvH09OT/b6vVavCej6Ko0lOklOZ5Psy9Cg5hGM7nc4wxY+zmZ33f/7uulLJNosVxfLMA+V4GurBeATDG2vKIEMJNwaSUgoWUUpChjDEjU7mUsvKwQogOvdWRUhtx0FoDH1WKzkbkQbk9F0XRxnC73U5KOT5BcM47blitVm25bAqTUr68vCRJUnIGiIpKQ7y8FEXRx8eHAwQ8z9tsNlBIHo9HePEdZx7982CdbAaInEYcFovF29sbCBLOeQcNXxdtYzhoyThmoD4P/yXVqP1oHfRGKXXcfbTbpNCqGFkJVRiLc97RUwR+qT9yNw43axGb4Wa+7xtjGumtnpuTJBmmXntaz6Ac6YYQIooiUHId9LZer4UQlUtTIyCEKOukoijsVzNgadDytvAyxpTH5T1na8TBPq0CEl2tVh1OXhOp1rouFCBm60ENynrSTQ+HbLZcqI+Md4MQArKjjd4YY5RSaRm0TCdFoCLagJ+UUtCWGrY0sAZMwjkvO1yQ5St94DrDNeIghCiloTEGY1zO0+akUgqyCoI+SuUOznljuQCBOKmIVkoRQuwl6iPj3YB3aTdF6/3PikGAToqAlLICOyGEEALZatjSxhgIgnIeG9VKeoUiowyGNhy01owxqE8rB0JtTgZBAG1OBOHV/4yccz718XYQBBWP6yPj3cAYDzsgdoDAAy490skyuGcQs+/v7z1lged5zpqxk7oBve9G9fawCDwI+J91Mssy3/dBO87KBnR/QTr1wUNRFDdHxrux2WygpB9gd/mi3t2XHuzkfr+/Fi62PLzJlm4OVSslQn3kXme7P3bpMU5WDqlndoq5eY70INvrZxLMd+S28/mcpqnd2H+2u8aP8w8N9W74+J77r7k3+Iq5PfIHJ365DKBnkbAAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["v = Vector( [7, fracc(-3, 11), sympy.sqrt(2), -sympy.pi, 0.123], 'fila' )\nv"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"int"}],"source":["type( v|1 )"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"sympy.core.numbers.Rational"}],"source":["type( v|2 )"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"sympy.core.power.Pow"}],"source":["type( v|3 )"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"sympy.core.mul.Mul"}],"source":["type( v|4 )"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"float"}],"source":["type( v|5 )"]},{"cell_type":"markdown","metadata":{},"source":["### Definiendo un vector a partir de las componentes de otro\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Cuando seleccionamos varios componentes de un `Vector` con una tupla\nobtenemos un `Vector`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"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","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["a"]},{"cell_type":"markdown","metadata":{},"source":["Definamos un *sub-vector* de `a`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEcElEQVRYw71Z7326PhBO+XQAcITQCbAjxE6QOkLYgDJC7ATKCOgEwgiUCTAjRDbo78X5ideQYOy3/u6VRLknl/v35CTffum67vt+0VprrX3fRsQju92urmvyK2GMeb/zWUYptRaPxyNjbBiG6TqlVEppVqSUQginZjcepfR4PFoaYX8WnpSyruuiKAghdV2b9SzL8OMcnpSSMTZdB6XYN8fjsSgK+Mw5j+MYnxB+9OJprQkhzkgBd2K8LMvMY9d1hBB8KowxsxsvnhDCadwUT2udZZnlBexF2IEVqz/i83w+V1UlpQwJwrZtF4uFFZZKKfO4XC4ZY2VZ4t/8wJNSUkqXy2UIHuQZXqGUxnGMV4QQVVWdz2c3XlVVQojwPMPWgFgWv7+/g1oH3n6/H8dxBm9qzTiOeO9KKc659RbnHNeNK15d15TSJEkCjVutVuACvKE0Ta2frdfrvu9Pp5NdXwgh0/DFst1urXgDa+q67rpOCOHMIjgVE7fEZK6VPU48nHAmJQghWZbNvEspNZlDcO34foxATPzIv77vrVD+Q4EzaJrmGi9t25qK/OcCmvu+v+BB8Ly+vj4UD8pbZJAfZx8kydU+KBOPwwPlgHLFA68+9EjP5/MVb1oa/jxElVKRs+xOZb/fp2n69PQEJRhL0zRpmm42m5nXoY5f8LTW88m32+2g+kgpD4cDVr3ZbMZx5JyXZbnf730aQL/WmkDlnLIxn2RZZsrsDH9x1l4p5aXLhOPFcWxK5Tx/mXKRoigibO9NyfO8LEvoRND5TP9aLpeUUkgy33mO4xhZXdQnHx8fSZJQSk1HvclfnBI5ecBUNptN13Va65eXlzzPA/mLFZ9a6+fw8zRB//n5CS3mJn/x2odpyLys12vYaSB/wfZc6gt2u1MspdBMAvkLliRJyDAM4GpfAkgpDRsAs8xFJIS/4GwRQjzfPEDOedd1aZpCDazr2hDiqqqUUuv1OssyKWUIUX6+6eE0TX2FKkmSr6+vQDIOXozAc4FZ+O9yiZdxHB8KA/oXi0UEZj7aPlOlI4D9f+yL4zh6NHPBWXuxD/CuV4qHnWeaple8EFbxazH8PcJkZqbtPSGxilYIf1FKgVXPgfbBVRuTO9OnoCmWZUkpnbIpm78bljBTQn3DokD+Ape97XZ7vY8xxmbYjg8vkL9AD4HBVGSogNXMpi5crVZJkqxWKzifcP4CsybweoQnem3b+thxURRN0yillFJvb2938Ze2bc3lKzK7i+PYh5fnOewuSZKiKJRSTdME8pfT6YTHHhEmCiEDT9gp1KcQ/nI4HPBENMJ9dRzHm1XGVN5A/tK2LWPsylcs7jwdiQzDgGeekIjOEQrn3DkMwYNQYgXuNCs45yY1h2GI49jwlJv8ZaqQTLdj5ZDWGiCFEEIIbOvN+Ys1obxv/nmvQFmx5p+O+S4+sX8Rxphl3H3z63uNC5pfO+fzvxCfBjfeMAzhN1DnCU1zYw4PbsDz48mZ/3OsOXoQHvjgF3jDMMz8f/QfxXuSeuEAoJAAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["a|(1,3,5)"]},{"cell_type":"markdown","metadata":{},"source":["Definamos ahora otro vector completamente nuevo\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACUAAACNCAIAAAC/syTXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFOklEQVRo3u1bPXLyPBDe12FSZmRmcgFxA0OfRnAChyOYGzgcQbwncDiCyQlsN+kZTmDUpzGedCkyfMXyCUX+wdg48xbaCktYj3a1u3pgduFYLdvt9ni9ZFmWZVnVrAUV8vr6GoYhtBLGWOVclWaUUvnoeZ76ijp1PB6jKKKUcs7lCOfc87zSlQelm5jP50EQqCOcc0qpxJPjq9WKUuq67nK5pJQ+Pz8DwMvLy3g83mw2+HhBP845Y0wdqdpsFEW+7+Nn13UJIaqF1EcpUDxtANA8pQrPcRzpGtvtFgCiKJKzjDG5m0o8z/M05XAQxwkhjLE0TXFnjuOoX9NOEXeg+SpcVO54PAZBIDEopegvYRgWza5ZgjGmjfzA831f872ioB9FURQEgaYf51wzIEaUquKP+Fuv15rrF2UymQBAnucAIITQZofDofqI/rler0v8s7iXKp9Em+MH9fue56HZVXFdVzUDqBOlxkzTVF0FA/H0MoBqQNd1i6+jGnKFM572srqK9Is0TQkh0qFc1wWAMAy3263neaX5Fn1Q+i2oVlKjR30BIdH9VF0xJADAcZzSd2WcSJOC9MyqXNpd0Ad/+OdutyOEQD+CNojjGABOeEmSqFn4toIr73a7E95+v5eB1R8epjdLIven32g0+qEfpon+8HBxRDnj4an2atLD4XDGQ617dVEhhFWadksljuPpdIrOpY2PRqPValXzLubxE16WZfXBhyvOZrMkSbSp1WqV5znyl81mU7UCrp9lGWDmvHjtyRykXgg1/KX01uScW4fDoeEZFAN0uVwul0v5Oc9zTCJV9syyzFL1vUpwo7Zt4+N4PKaUYpBV2TPPcwvvixaSJIl2mzPGLrqeVcoDmgj+TtCCrMpOZ3t+fn4CwNfXVwsVL/IXTT4+PqyHhwcAuL+/b6KQpk2e56q7CSHwxq86v/v7+5M95bE3l+l0ii6ubqg+Sdm2PeiSpVzX/fv372QyoZSu12sZGzUyaJEGVb4qhJjP547jcM7H4/HlJdI0xZ0e+xSJYsHvisG7Md7d3d3T01N/5EzmHUQZfH9/v7+/Pz4+9oqXZRmi/MPn14W/XIfXnb+0yS9d+Eub/NKFv9wg/q7iLzfA68Rf2oVUc/5ym/zSnL+0yS9V/EUeoRACfbiX/NKCv1zNJwx/MfzF8BfDXwx/MfzF8BfDXwx/MfzF8AnDXwx/MfzF8BfDXwx/MfzF8BeDZ/iL4S+Gvxj+8u/xl8FwOPR9v67i/Ub85YTS3D+xxkr6Z8P63Zvdf534C9Y398dfcP3hcPjr/AV9rFgzf1vBw/Z938KAbV2F1vJ+aHd+zUWenwUAhJC+9cP1KaUWwv6OfoQQC3qu3FUz0Uk/xCte3De352g0OuM1rKptJ7J+3QKlmLfq24vF4o8iWtJqwl+EEKjVoKF+V/UfafKjfh3jHxtvagr8r+0/KiaXIAjO/QjY63MtXn3/kdoSAv+3eFiSCmjFnMUjnE6ntm1LCtqcv2CvFZ76GQ8pSdW14Pt+HMdCCCHEbDa7ir8kSSK5nSV3RwipwlssFrg727Z93xdCxHHckL/s9/s8z2Wb0fl+n8/nTRr+ruo/AoC3tzdQOgIt9bLO8/xilpGZt2H9bpIkjLFzva7qSISQYktQl/4j3FwYhuX9Y5zzYlR06T8qLljSH6fFUJf+I61Dr2n/XxfOUtf/h1tWLdZFGGOaciV4pf2b7ZRr1L8p7V7TD9ZEqlaAKrrfpOOjSjjnVT9IoObXSWl7XpN+Zq3PshEenkG7vwJrmiT/A510EywfM+hPAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["a|(5,1,1,1,1,1,5)"]},{"cell_type":"markdown","metadata":{},"source":["De esta manera podemos reordenar las componentes de un vector de manera muy sencilla\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACUAAABlCAIAAABFpL04AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGGklEQVRo3u1aPXLyPBDeOBnKjGEmF5BzAkyfRuQEhiM4N3B8BMEJwEcwnADcpHc4gXGfxnjSpcjwFcu3KPKfTOLMW2QrLGM92tVq9Wi1cKyWOI6P7SXLsizLqt4aUCHL5TIMQ7hIOOeV76o0Y4zRo+u68ifyq+PxuNlsGGNCCGoRQriuW9rzTekgptPpYrGQW4QQjDHCo/bZbMYYcxzH933G2GQyAYDn52fbtlerFT426CeE4JzLLVWD3Ww2nufhb8dxTNOULSQ/kkBxtgFA8ZQqvOFwSK4RxzEAbDYbess5p9FU4rmuqyiHjdhumibnPEkSHNlwOJT/pswijkDxVWhU7ng8LhYLwmCMob+EYVg0u2IJzrnS8gXP8zzF94qCfrTZbBaLhaKfEEIxIK4oWcUv6y8IAsX1izIajQAgz3MASNNUeTsYDORH9M8gCEr8sziWKp9Em+MP+f+u66LZZXEcRzYDyC9KjZkkidwLLsTTxwCyAR3HKX6OalAPZzzlY7kX8oskSUzTJIdyHAcAwjCM49h13dJ4iz5IfguyleTVI3+AkOh+sq64JABgOByWfkvrhEwK5JlVsfT7gj74xT93u51pmtCNoA222y0AnPCiKJKj8M8K9rzb7U54+/2eFlZ3eBjeDELuTj/Lsr7oh2GiOzzsHFHOeDirnZr0cDic8VDrTl00TVOjNOxWyX6/t237cDjIjdvt1rKs2WxW8yHG8RNelmWai+/x8RGnXeYveZ4jf1mtVlUfYv9Zlhm4uSj7SKnMZjNlt9put1mWTSaT2WzmOE7jXpbnuaEYp8aSWZYpxNL3fd/36Xee5xhEqux50o/0rRHf95UZwoH2+318tG2bMaZYW7FnnucG7hf1slwui7aKokiZBc55o+sZpTxA0SOKovF4rLTjOUFZZFV2Otvz/f0dAD4+PqrwptMpTZIijfxFkbe3t5vb21sA6PV69ZNHOqHdUPI8PxwONIVpmuI+WjV/vV4PkiQBgFLqUXqOkTmSDn8hIoIoN9+JUo7jzOfz0WjEGAuCoMrssrTG45yTAYMgSNN0Op0Oh0MhhG3bP4xn27a8ovv9/uvra6seDPhd+cP7Ybzr6+uHh4fuyBnFHUS5+fz8fHl5ubu76xQvyzJE+Vfnb7VaWZZ1dXVVTHHo8Jd2eMvlEk9PQoj1ei13rclfztIqXmMOhGJ0Tf6lKl63xjNNk4569fmXUrx2/vL09OT7Pu71rfhLa395fn7u9/uYKvsB/qJDPuM4zrLs/v7+6empLX8570f68YWcfj6fI13T5y8UXwyMLzjbOjKdTlE5xhjyF5k+kbVL40scx1r2VDrFwzB6jRBC7rT5kNW4HoQQlM1AtcIw1M+/tOZLjuPEcWxZFp7hwjAkntIJf7EsqypQ/fGXP/7yx19+Zf62261t21dXV+PxGPN73fKX3W4XBIEQIooiDNkd8hc5CY8pkYv5i5Z+RBowE0abqn7+5fL1hwH6Yv7S+ny72+1wc+6Wv5B3eJ6HOl3IXwaDged5dTeu/8vr62sURfIMteIvJxR9vss5lx1V8/7oQr47Ho+FELKjXsZfbigzWfMnPBPFcUw0bjAYTCYT/fwL9j8YDE72LN6hypeQxe/x1lLz/ohOF67rnlNixy4FJ9vzPIOc+1f3h/r5+77Q/BmYLOxaP+yfMWYg7O/oZ5qmAR3fHMmR6KQf4im7dhf2tCzrjKd/q3OB0P2pAdJlUiOFKZIXTf6SpilqpaUf9vj4+BhFUXGHauQvX+5PKcvRGGIwsClbhA5/weCyWCzO9+FYa1KPVyx40My/4B6CW5VBVEA5jGsesnX4C9b64FZ1xkNKoo+nz1+iKKLziUGjM02zFZ4mf9nv93me03WXISc62hac6fCX9XoNUkWaIecF8jyviTJFbXTyL1EUyVckoOT+SktS5Eoi2T+h6f4Ih0j5E7V+SQhRsyqKeI35l2KHJfVZVUwEC6RkvEb+olSI6daffYez1NWf4ZDliqHvCOdcUa4Er7R+8DLltOoHye71fLJRqnqAKrrfWGhXI0KIqgMJ1Hh/zVqsP3wrdX5aeDgHF+AlSVJTpPcfwFAuFSw1MP8AAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["a|(5,4,3,2,1)"]},{"cell_type":"markdown","metadata":{},"source":["## Definición de algunos vectores especiales\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Con `V0(n)` generamos un vector nulo de `n` componentes\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAB0AAAA9CAIAAADeXfVuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADh0lEQVRYw61Y73XCIBC/x+sA6Ahkg+gIdAN0BEbIcwTSCWxGSDtBzAipE8SMgGxgP5yPIIGEVu+TIfjLcf9+3MEtLl3XzbzVWmutY28JROTz87Oua5gVznn0XUxTxpi32DQNY0wpZVeUUlLKIEIYlzHWNI27opSq67ooCgCo69qu53nuPs7hKqU4556mRVHgbyEEpdQ9mfsYxdVaA4DnsTzPrYu6rgMA9zScc/vVKK6U0lNWa53nuWcl18r4JS82YFHZuq69L0kpPXdxzr2VhzhTSjHGNpuNu4hx6q4wxiil7oqUsqqq6/VqVx5wq6qSUk5jcRgGb2W9XruPu90O/x6IX8yCaQo1TeOtSyn7vve2CSFcN4D7YpoL900ArseFENM9qJb9HsT+7OmC6dB1nZQyWDfQBzZOwD2sl2NeqAFAnuexPRh/1hR3XEzQ23OCPn+Is/P57IXOPwTPdDqdxjhr25Yx9iQuIpzP5zvu5XIBgO12+xJcTGtiv/C8vlmWPeiL6fQ8LoIg2oiLVn+JKa7X64iLp3hJSAzDQIJlJSin0ynLsrIsZ/ZgPbrjaq0Xg7csS2OMEOJwOHx9fcW2IY7WmgCAMcare1NNtda73a4sSyFEsJa6YowBrBexSpbCb9OqVhQFcfUPCrLAarXCx81mwxjDII3ZwRhDPI6ZStu2npU454uuJkFe+Su/efFw99u8HVL4LaqvS6XTFDLGuBuGYUAGidn3nm+uW6by/v6OBONaZj45V6vV2xhxcRFCfHx8bLdbxlhVVYfDYS5yAdbr9VtKBldVNQzDfr/P81wp5V1cgvK26AE818/PT4oGGDmUUoKWXYzivwpJsW+6WPsSVPtV+tpqQxD+tfpSSsmrmM3NzLu+iIts/xI7ZFk24iay0bzYexNxye55fhuGAbVM1TeF3x7uTcgflFKvOUns36Y3++PxON5TOeex3en8hjUPr+zEUotXZP/Bb9h7Ygklbmfetu0z/Na2rb2UEqsFpTSIm8hvl8vFGGOvFmP/tt/vYwOHFH77/v52JxLEJQVjzDTrEvmtbVvO+chnrkMppcFWa7F/Q0O5gwjwAiUYbYv92/SPgX5+GpuL/Zs3OUiaPyzKtIEOz0sopfMTLk84556yqfOdeWWT5juxedRMTxzcGcbt+37+pm1PFpwZRHFvt9vxeIyNDWLzpCRctN3M277vZ+aTv9eihjZxChHiAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["V0(3)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAQkAAAAUCAIAAAARNV/CAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACpklEQVRo3u2bP7LqIBTGz817TTqSJWBpR7ZAdqAugSWopXa6A7W8ZdxBZAkkKzCxtCPZAa/gvlwmzrxRL48GvooE+AW/mTNy+POhlIK/appmMplAUJB/6rouSRLzTTSUzudzXdfBoyA/lSTJarXqum4cG03TcM7n87nZ+nK5TCaT/X5v5dt2aR4Cg4H/m7Zerxljw+OvzWYDAHmef35+xnE8VOz3+ziOEULb7XY6nU6n058Myy7NQ2Aw0IGBcRzfbrf7/f5Vq5Qqy5IxpgyVZblcLnV5NpshhNQPZJfmITAY6NJAjLEugFKKUlqWpVlNCJFS6rIQAgBGDV6SXZqHwGCgSwMppUIIpVQEAJzzPM/NhF2nJvoxyzKM8dtpul2ah8BgoGMDKaWn0wkAoqqqMMZmHec8TdNR67Zt3xuZXZqHwGCgYwMJIfq/JWrbFiFk1kkppZTmG4zxqM3zskvzEBgMdGxgmqY6ciIp5SiqAOAxqh7bPC+7NA+BwUCXBiKE+r4HgKjv+1EMYYz7vjc3Qdq2nc1m7w3LLs1DYDDQsYHfYXM4HCilo1QdAIY1L73sNeT4OoV/SXZpHgKDgS4NvF6vem8DiqIghIyqdVQVRSGEYIwN/QkhegL30sjs0jwEBgNdGiiE0BsgcL1eH7dCpJS6GyHEXAnW+fvhcHhpZHZpHgKDgS4NLIpCz6R+64O3o0OISZJUVfU4FcuyjDGmM5XnZZfmITAY6NJAIQSlFPRZw8ViwTl/8jMIId3TiuzSPAQGA63TOOd6DhYBAGNMbwQ+qSzLLP5UuzQPgcFAi7SmadI0/brFpOdYZoLyD7235uCG5iEwGGidZgbCx3Dvbz6fn89nCAryVZfLpa7r1WqlH7/v/e12u+PxGAwK8lNd15mBAQB/AIt/uxHbxDs0AAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["V0(10, 'fila')"]},{"cell_type":"markdown","metadata":{},"source":["Con con el signo `-` delante de un vector, obtenemos su opuesto\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACkAAAA9CAIAAAC/RdcsAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADyElEQVRYw71Z23WDMAxVOR3AYQSzAWQEZwPDCIxAM4LpBIERaCYIjECYgDKCYQP6oRxwCKRgEvSV8LqWfCXL19BOW57n7TqTUkopp+4aMGFRFCVJAquNMTZ5b8pjSqmGo5fLxbZthCzLsm1bIYTv+6MPj2NTSi+Xy1Lg0+kkhMjzXAgBALZt43XbtpMkmYUthGCM6c1u9xtD3UWREPI/tpQSANazLAgCFY8xFgTBP9i+7+s5PTDOuTrNeZ4DwIDz8A6nkTEDJMbYgHQwCJQevR8ZczqdBhcxY9UBfar5Fsfx8XgcJGFd177vP8ng/X7/9fXV/b1er1mWpWk6eMx1XYToH34yLj1jjE19hHPeJd5dzDnn6wPOGHtCF3QPa85dzM/ncxAEa8onRjXPc2Q1AJimiRfV+no+n29h72ohAGjUMpWnj6N5rKaU0i7soL7Zvt+QtnfrWFEUhBB4v+FKg1lww86yjFK6ATaiFEVxw/79/cU03QwbyWh0o9jGb8uy7vyuqmozbARCxB4bWbBZ2Ou67rExGptRvaqqHlvD0jS1LCsMw0VvmabZY0spNZI7DMOmaTjnx+Px5+dn/ouIJaU0AKBpGhzLIo+llK7rhmGILcrSoTdNA9irLF3BbNvuFkpM1vlrAa5mQRAYahxmWl3XALDb7fCv4ziUUkzZ+TFvmsZAvxdZlmWDOWKMaRDWULk303CXNUjZ+ZFDrBvXlsZ8NC2XsrX3G6dwfmFqmkZ9paoqzvmi+b7VNZU4c+xwOAAAbrq6WVhaFne73WefbUuMc/79/b3f7ymlo531P5kNYJrmp141jeO4qirP82zbFkI4jqPxkU8NjmDErter3rgxRwghBs60RpavN0NvvtdYN98Gur+l390KYuAQtvebEGJs2ampNfHmN2Jjp7xZzC3L6rG1O6el1u2BDLV5W//dNE0dx/n4+DgcDlOBrKoKvX2l31EUFUURx7EQIssyz/Men7nbA2EfQwhZLy9N6WsD4REAUI0xOs2k27Brm7oY2rY92hNga4UjM7qmZ7Akr0+k0ZijxnhbcNVec1T1fJW+9ji5oF6dEnxfoq+1bVuWpephv357npckSRRFb9LXUOW5U9QHDOwEqHfoa4wxNZtgMBmPau+r9DUspSqlPtq2Vbd3Qghttruui7tDtXHu9LWRjz8OTU9l+1dfo5QKIbbQz0fL2TP9HF0nhLxEQh/wYOD0i89Lnjg967xkzTnRkxo3+rVx7LIsX3KAgFHknC84H8PDrpW5juxRxfq52DhPK7HLsnxyEPEHoQuHdkYmJIIAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["a = Vector( [2, 0, 2] )\n-a"]},{"cell_type":"markdown","metadata":{},"source":["## Igualdad de vectores\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Dos vectores son iguales si lo son las correspondientes listas\nordenadas de números (independientemente de si la representación es\nvertical u horizontal).\n\nCon `==` comprobamos si es verdadero que dos vectores son iguales\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"True"}],"source":["v = Vector( a )\nw = Vector( a, rpr='fila' )\nv == w"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"True"}],"source":["b = Vector( [-2, 0, -2] )\na == -b"]},{"cell_type":"markdown","metadata":{},"source":["Dos vectores nulos con diferente número de componentes no son iguales\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"False"}],"source":["V0(2) == V0(3)"]},{"cell_type":"markdown","metadata":{},"source":["Con `!=` comprobamos si es verdadero que dos vectores son distintos\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"True"}],"source":["a != b # ¿son distintos?"]},{"cell_type":"markdown","metadata":{},"source":["## Ayuda\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Con el comando `help(objeto)` obtenemos ayuda sobre el `objeto` y sus\nprocedimientos asociados\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["help(Vector)"]}],"metadata":{"org":[null,null],"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lección 01 - Sección 1.1\n", + "========================\n", + "\n", + "**Author:** Marcos Bujosa\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\n", + "\\newcommand{\\R}[1][{}]{{\\mathbb{R}}^{#1}}\n", + "\\newcommand{\\Z}[1][{}]{{\\mathbb{Z}}^{#1}}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\getItem}{\\pmb{\\mid}}\n", + "\\newcommand{\\getitemR}[1]{\\getItem{#1}}\n", + "\\newcommand{\\getitemL}[1]{{#1}\\getItem}\n", + "\\newcommand{\\elemR}[2]{{#1}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRP}[2]{{\\big(#1\\big)}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRPE}[2]{\\big({#1}^{\\phantom{\\T}}_{\\getitemR{#2}}\\big)}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\Vect}[2][{}]{{\\boldsymbol{#2}}_{#1}}\n", + "\\newcommand{\\eleVR}[2] {\\elemR {\\Vect{#1}}{#2}}\t % con subindices\n", + "\\newcommand{\\eleVRP}[2] {\\elemRP {\\Vect{#1}}{#2}} % con subindices y paréntesis interior\n", + "\\newcommand{\\eleVRPE}[2]{\\elemRPE{\\Vect{#1}}{#2}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\VectC}[2][{}] {\\elemR {\\Mat{#2}}{#1}} % con subindices\n", + "\\newcommand{\\VectCP}[2][{}] {\\elemRP {\\Mat{#2}}{#1}} % con subindices y paréntesis\n", + "\\newcommand{\\VectCPE}[2][{}]{\\elemRPE{\\Mat{#2}}{#1}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\mat}[1]{\\mathbf{#1}}\n", + "\\newcommand{\\Mat} [2][{}]{{\\mat{#2}}_{#1}} \n", + "\\newcommand{\\T}{\\intercal}\n", + "\\newcommand{\\MatT}[2][{}]{{\\mat{#2}}^{\\T}_{#1}}\n", + "\\newcommand{\\VectCC}[2][{}] {\\elemRR {\\Mat{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectCCC}[2][{}] {\\elemRRR{\\Mat{#2}}{#1}} % con texto \"col\"\n", + "%SELECCIÓNA de FILAS y COlUMNAS DE UNA MATRIZ TRANSPUESTA PARA GENERAR UN VECTOR DE Rn\n", + "\\newcommand{\\VectTC}[2][{}] {\\elemR{\\MatT{#2}\\!}{#1}} % con subindices\n", + "\\newcommand{\\VectTCC}[2][{}] {\\elemRR{ \\MatT{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectTCCC}[2][{}] {\\elemRRR{\\MatT{#2}}{#1}} % con texto \"col\"\n", + "\\newcommand{\\dotprod}[2][{}] {\\Vect{#1}\\cdot\\Vect{#2}}\n", + "$\n", + "\n", + "[NAcAL](https://github.com/mbujosab/nacallib) es un módulo de Python que implementa literalmente lo expuesto\n", + "en el [libro](https://mbujosab.github.io/CursoDeAlgebraLineal/libro.pdf). Así, usted puede experimentar con Python empleando una\n", + "notación similar a la empleada en clase. El [libro](https://mbujosab.github.io/CursoDeAlgebraLineal/libro.pdf) y el módulo [NAcAL](https://github.com/mbujosab/nacallib)\n", + "son dependientes el uno del otro y se complementan mutuamente (la\n", + "escritura de libro ha condicionado la escritura del módulo y\n", + "viceversa).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Primer paso para usar [NAcAL](https://github.com/mbujosab/nacallib)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para poder usar [NAcAL](https://github.com/mbujosab/nacallib) es necesario importar el módulo:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from nacal import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Los vectores son listas de números\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Antes de empezar, vea el vídeo:* [Definición de vector de $\\R[n]$ y\n", + " notación](https://ucmdrive.ucm.es/s/y8GHw7tF46XNsgY) *y lea la introducción a la Lección 1 así como la Sección\n", + " 1.1 del [libro](https://mbujosab.github.io/CursoDeAlgebraLineal/libro.pdf#chapter.1).*\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Definiendo vectores\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En el [libro](https://mbujosab.github.io/CursoDeAlgebraLineal/libro.pdf#section.1.1) se indica que encerrando entre paréntesis una lista de $n$\n", + "números expresamos un vector de $\\R[n]$; por ejemplo encerrando la\n", + "lista 20, 10, 15 entre paréntesis expresamos un vector de $\\R[3]$\n", + "\n", + "$$\\begin{pmatrix}20,&10,&15,\\end{pmatrix}$$\n", + "\n", + "Para definir un vector en [NAcAL](https://github.com/mbujosab/nacallib) es necesario indicar la\n", + "correspondiente [lista](https://docs.python.org/es/3/tutorial/introduction.html#lists) de números como argumento de la clase\n", + "`Vector()`. Por ejemplo, con la lista `[20, 10, 15]` obtenemos\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([20, 10, 15])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Vector( [20, 10, 15] )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Obtendremos idéntico resultado si en lugar de usar una [lista](https://ellibrodepython.com/listas-en-python), usamos\n", + "la siguiente [tupla](https://ellibrodepython.com/tuplas-python) `(20, 10, 15)`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([20, 10, 15])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = (20, 10, 15)\n", + "Vector( a )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La lista de números correspondiente a cada `Vector` está almacenada en\n", + "el atributo `.lista`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 2, 3, 4, 5]\n" + ] + } + ], + "source": [ + "v = Vector( [0,1,2,3,4,5] )\n", + "print(v.lista)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Realmente no es necesario usar la función `print()`, basta con escribir\n", + "`v.lista` para ver la lista asociada al vector `v`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v.lista" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Haciendo copias de un vector\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si al invocar `Vector` usamos como argumento otro vector obtenemos una copia de éste\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([20, 10, 15])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = Vector( a )\n", + "b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La función `type()` de Python devuelve el tipo de cada objeto\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "nacal.nacal.Vector" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Representación de Vectores: el atributo `.rpr` de la clase `Vector`\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cuando el entorno de trabajo es un Notebook de Jupyter, [NAcAL](https://github.com/mbujosab/nacallib) muestra\n", + "los vectores en forma de columna por defecto. Pero podemos indicar a\n", + "Python que queremos una representación horizontal del `Vector`, basta\n", + "asignar el valor `'fila'` al atributo `rpr`. *Tenga en cuenta que esto\n", + "solo afecta a la representación* (el vector no cambia ya que la lista\n", + "de números asociada sigue siendo la misma).\n", + "\n", + "Hagamos una copia de `a` con representación `fila`:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fila\n" + ] + } + ], + "source": [ + "x = Vector( a, rpr='fila' )\n", + "print(x.rpr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pintemos el vector:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGcAAAAUCAIAAAAflbTBAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC6klEQVRYw+1Y7XWjOhCd9UkBQAlyB5gSRCrALkHpQKEEJRVwXALpQFEJQAVIJQg6YH9MVtbKhn3PdsjZPbm/QB9cdGeYD35M0wS/oLXebrfwjd8xDEMcx/7Ixl29vb11Xfet0TniOH5+fh6G4TQ0TdM0TX3fM8YmD1LKNE0BgFLa930wRQgRQkx3gpTynGUdIsaYLxAh5OJGa21RFO72Q7U0Ta21brSqKiFE0zRCCABI09RNCSHquuacA0Bd17cfgxCCbxyotg4RYwyJEE3TzD0Bl51Uk1IGjuYrSCl1Liml5JzjdVEUURTdxQVQGp90NaLg4Mtwngioi5Rygcm9tO+STdMAwMLG/466roPDrEb0v1SjlKIzbgBAKZXn+VwsNMYcDgdMJRgacXy32xFCPiOBrEaEeHp6yvM8juM8z7XWCysppcfjEQAe2rZ1H/xFdF2H1lZKJUkSPMUYc/djrEaEIZtSut1uh2HIsuzx8XFBuDRN0Vs3xpgoiubWvby8cM7R7NZaa22QcRb2Xo3ViNDRsESN45hzbox5f3+fW5wkCRrvwVobGNahbVullP+Uc4PP7b0RqxH5yLIMAMZxnFsQRRHObsZxnDNjWZbokM7g4zj6xZ4xpiiKuzhX4FnrEF2cXYhXznIbp1+APM+FEH4ngRkDKzhHg+7dtm3btvey+WpEWms/inVdRwjZ7XZzRE70hyRJzi2w3+8BoGkazAMo836/L4ri9fU1yzJCyPF4LMsSZxljXddZa4N+7WqsQ1SW5TiOGIK01kIIpdQC0em77Ps+qCGxFAyAdY21FtusNE39AgrFrarqujKqqqqgOVmHCPskSiljjDHm9wwXieq6ppR+VLlRFPlvfB2wNZk+H19IxDnHkQ0AHA4H55lXI4oi7L0+G19IpJTCpLTBrw9L3huBcXQFfAmR1jpJko//j84bF9r9P+KWvX8LkS8RuFH//9E3zn80+THupFrf91fnpn8b1togLfwE62bUKzhqxXMAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\begin{pmatrix}20,& 10,& 15,\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}20,& 10,& 15,\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([20, 10, 15])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para cambiar la representación de un vector previamente definido,\n", + "basta cambiar el valor de su atributo `rpr`.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "col\n" + ] + } + ], + "source": [ + "x.rpr = 'col' # cualquier valor distinto de la cadena 'fila' representará en columna\n", + "print(x.rpr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Como el atributo `rpr` ya no es `'fila'` ahora el vector `x` es\n", + "representado en vertical:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEPElEQVRYw71Z732yMBDOy68DgCOEDZARQieIjoCdgDJC7ATUESgTKCNQJkBGiGzQ98P5i2dCUqSlz6cS5C73N5en5MuOpmm+HoeUUkppe+sRC97f38uyJLPAGLO+s1lGKcUrx+MxiiKQ1XWd9opSKoRQK0KINE1HJY/ro5Qej0f1WBSFEKJpGiEEISSKIiy6LMssywghZVmq9SiK8KNLnxCCMaaFRP0NvlKWZVkGf3POfd/HHsKPVn1SSkKII1OyLFOCoihSW2mahhCCvcIYU7ux6kvTVDNOA+ccYiOlxI6FKOAowg60XCUPGQdCQURZltrO0jTV0oQxpq3c1YMQglK6Xq9tybzf77MsC4IANg77U6CU+r6PV9I0PRwOl8tFrdzpOxwOaZralH1+ftZ1vdvt1Erf99pvVqsVftxsNiB2pP6guh2tgTGG3x6PR+33aZpqpQnxxmEm+IVW45oyM66EEJyBnHPzQzBD7eNJGVpVFZStCXBL0zSQcuC3zWbDOX97e4vjmFJ6OBzyPLf1tqqqXl9fCa5crXpwwZlScElAxxn9VqW0cinBQr+WAeTgXT20baul8i8CfHA6nW71UNc1pXQhfSC5bdurvvP5TAiJ43hRfZBrntK8nH1hGN7ZB21iOX0gHLTc9EFUF3Xp5XK56QOrF03Rvu+90bY7itPplCQJJJe2Hobhfr93fAt9/KpPSukuPpD4/Pxc17V5Qg3DwDnP8/zj48MmAeRLKQm0XUen1hqbdkTY5hcNRVHA+erhw9ANs0DzPFc9Os/zYRigidj8KaX0sL0PATYKZz0hZL1eU0qhyGz+HIbB02aC6ajrWjvNGWPfpp43OgdMwZT55Tf9OWV+sdo3JWtMa4ZhwB/2fc85d8Tv2l9w2KcjSRJIcbwhd5MKguA6vwzDMMOfU+YXLH+1Wj3NaIN4Xu37frvdRlEkhHAMynpU3HeGnwPmsSzLPDWckz+B95P4TYeKnwfJurR9IJ9S6oHav7HP931v6ckFd6KrfaDPPLh/3Z9hGN70TZwq5kHN7x4eZh6dX3a73T8ERzPr+x6seppi3+l0enl5Gf0BXMHx0Gfibn6H+vd9/9sWY84vNhJptLkURXG7H8VxrO6S0+eX6cFTF09PjQLaYTYRu90uSZIgCEZHUwBwTdfoYm5mlPFyEApFUcDFXEpJKbUNlThYBK+64+EmMGDCNG/VXddhS278y3a7nU14quiafbGqKsyIeviwHobB0WXcPV11ZHNsZIypecXD84jv+3dckBPn8xlvrm1bkwu7XC51Xd9xVhrz+e0dQMWPc66yoOs63/dNQsgUOMIP2piUoigw4SmlBJVAC5pMlslQzuE/H51ZXPwn7HrUMzPAGNOMm8pfzzNuEn89ys/PgE3CuL6u66bceG0QQoxyk1Z9kI0muz7x/zkajz5JH8Rghr6u6xwk8X+QILbYHYwiBAAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}20\\\\ 10\\\\ 15\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([20, 10, 15])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Representación de `Vector()` en una consola\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La representación en consola se limita a indicar en modo texto que\n", + "el objeto es un vector, y muestra la lista de números correspondiente\n", + "a cada vector. Podemos ver dicha representación con la función\n", + "`print()`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Vector([20, 10, 15])\n" + ] + } + ], + "source": [ + "print(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Atributos `.lista` y `.n`\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ya hemos visto que [NAcAL](https://github.com/mbujosab/nacallib) almacena la lista ordenada de números de cada\n", + "`Vector` en el correspondiente atributo `.lista` de dicho `Vector`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[20, 10, 15]\n" + ] + } + ], + "source": [ + "print(x.lista)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Además, el atributo `.n` indica el número de elementos de la lista del\n", + "`Vector`.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = Vector( (2, 4, 6) )\n", + "v.n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Método `.sis()`\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En el [libro](https://mbujosab.github.io/CursoDeAlgebraLineal/libro.pdf#section.1.1) se define un vector como un sistema (i.e., una lista\n", + "ordenada) de números y se describe la correspondiente notación para\n", + "los sistemas en general.\n", + "\n", + "Podemos recuperar la representación de un `Vector` como `Sistema`\n", + "genérico con el método `.sis()`. El método `.sis()` devuelve el vector\n", + "en forma de `Sistema` genérico y por tanto usa la correspondiente\n", + "representación (es decir, entre corchetes y con los elementos seguidos\n", + "por puntos y comas tal y como se indica en el [libro](https://mbujosab.github.io/CursoDeAlgebraLineal/libro.pdf#chapter.1)).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGAAAAAUCAIAAAD9Sa+4AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACaklEQVRYw+2Y0Y2rMBBFzWoLgJRgOgBKMKnAUIKhAsslQCqAlJB0AC4BqAAowbiDfR+WkAUEbULktx+5XyNGcJJhPL7YKoqCcw4AiOM4iiLwEQBlWc41sTDG9/v9U5S1pmnKsuxrnajr2vd9y7LCMByGYZFyXTfP87f8grqu1wgDlCRJLE2u6+7c/r3uLinl9XrlnDPG4jhu21al8jyHEGKMGWMQwiPrsa7rNE3HcVynzFCyLIMQqngOtoUx/tEkhJhjhBAAQMVVVVFKVYwxtm3757AopQAAnWiGQgj5zY1CCErpcok5jjPHnufZtq1ixhhjbI6llHVdH2z+IAgWV8xQntLXTm4cxziO1bjSa+f7PoSw6zoAgOu6ZVm+aygaoMxjKAxDx3H08bRJ+d55Std1TdMAADjnp9NJTyGE1NqeW+y4zFDUykAIua47TVMQBOfzWdVok/KwQHmeU0rV+xRCCCH0LIRQXZlH+HGZoaj2mecJpTRNU7XTbVK2C9S2LedcX//rvWDxtt8iM5T1hJJSPjeDGGO3201/k1JKNSPmf4IxPt4yi34xQNnM7uz0GwUKwzDLMn07C8NQeQf9ufv+6gWZoQzDoJvGrusghL7v/9YoKmPWNI0az6rJoyjCGF8ulyAIIITX63XejJMkIYTsAJ6SAYruHoZhyLJMfXY9pOhGUXmqhZStEkJ4nqe2gKqqdDOJEHrNwhVF4XmebuEMUIQQGGOEECGEENL3/SOKMopLJ/2s+r5/i9/9g5RtJ/2CCCEGvq3/F+VogTjn7/rs/puUz3nQ8+dBHy07SEWfI9fFkauU0vO8fy2MOI9H8TSIAAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{bmatrix}20;& 10;& 15;\\end{bmatrix}$

" + ], + "text/latex": [ + "$\\begin{bmatrix}20;& 10;& 15;\\end{bmatrix}$" + ], + "text/plain": [ + "Sistema([20; 10; 15;])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.sis()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La representación en modo consola indica explícitamente que `x.sis()`\n", + "es un sistema\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sistema([20; 10; 15;])\n" + ] + } + ], + "source": [ + "print(x.sis())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La función `type()` también nos lo dice\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "nacal.nacal.Sistema" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(x.sis())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Componentes no enteras: fracciones y números irracionales\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por una parte, con `fracc(a,b)` generamos la fracción\n", + "$\\frac{a}{b}$. Por otra, el módulo [Sympy](https://www.sympy.org/es/index.html) (que [NAcAL](https://github.com/mbujosab/nacallib) carga por defecto)\n", + "tiene implementados muchos números irracionales. Generemos un vector\n", + "con distintos tipos de números:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJgAAAAVCAIAAAA1jrBwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADjElEQVRo3uVa67WiMBDOeiwAKQFuBdESYgdICZQQKCHXCpASYgeBEoAKgBIgHbA/xsUsD/VcL4HdO3/0BHSGeXwz8+mvtm3RHynL0rZt9LOlaRrTNKeuqu5a1sjdbqeebLp31+s1z/OVePNyuRyPx/1+r1+167rttKzEP7vdzvf9pmn+SrG2bYui8DyvM7eu63YF4jgO51ynRiEEY6z9F6Sua8dx7hkGLxhjNXjDFDAMQ390HccpikKnRkKIGlSMMUKIEKLZjBeFMdYl+hYhFMfx4XBQMZdzrkaRc04I6YHyrBLHcRRFQRDo7NlxHBNCOmyXUkZRlCRJEASu62ZZtrZ27vu+bdun0+kGrYQQIcSLeapNiqIghFBKFylHFX4guusEWEJImqY3aH1sJaUUbl0klpZlLd4dKaWGYawzkIwxGG42WZZZljVVvGVZSik1T48diOV53mHd3HI+n33fH71UVZXrujpXC1XKsvR9fwrYMcZpmiKEtlVVGYYx9aVBEDDGNEN/kiSMMUKIlPJyuXz79w/X5SzLYK4ZlTzPwVlzi23bVVUNx0zXdadqyTTN20fCMJxqgWmaqgPufyDQdzHGw/F4aiZnjIVhqME2zjko4pzDyFLX9VNIL4oCOuNWSjlVkUEQhGH4PlB4nvfghsPhMIVpc0gYhh8fH1mWdTkOzWV0Js+yLEmSOI41eMAwDJg/OefX6xUhVNf1A46pq8j7g41WpBBC/7D6il++ZdJTH+1BORJCNG/P6povhHg663UVuTFNs67r0XJ0HGeYobOuUy8G+00zGGNJkpRl+bgcj8cjY6x3aW4PwHAA76WUamhGVd8BtSiKIRBDbx8mI0wEsyYpkIVqWxqevG8Gxhim9qlydByHEBIqAhzKrB7oNUUhBCAtrH+jqoGrue2RQ/rN87zRMQcCPGvz55xjjFUVw5P3zQAfCSFGCQdK6bBWIPCzeiAMw57bMcYYY5h9RlVTSmH9RRC217lpz/PmppUppUNzeyfvm2FZ1tcIZA0eeF01xhh44A3kWhRFL4K4YRjalvRZzQBO5AsE8oIe6Kkuy9I0TdiJNwih/X5vWdbrPXxuokdK+fTkfTNOp9Pn5+fXPrvID6VD1efz+U7XqO39aWnrIV17o83wZCnud1Wqe+TwRoWap3zYgpm4woJYUHXTNHmeq0TKViX61vOHnSGj8ZTj+FECf/VQT34D16mta4B47XAAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\begin{pmatrix}7,& - \\frac{3}{11},& \\sqrt{2},& - \\pi,\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}7,& - \\frac{3}{11},& \\sqrt{2},& - \\pi,\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([7, -3/11, sqrt(2), -pi])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = Vector( [7, fracc(-3, 11), sympy.sqrt(2), -sympy.pi], 'fila' )\n", + "v" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Seleccionando componentes de un `Vector`\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos seleccionar componentes con el operador **barra vertical** \n", + "(en un teclado español es la combinación de teclas `[Alt Gr] + [1]`).\n", + "\n", + "Por ejemplo, seleccionemos la tercera componente del vector\n", + "$\\Vect{a}$, es decir $\\eleVR{a}{3}$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30\n" + ] + } + ], + "source": [ + "a = Vector( [10, 20, 30, 40, 50] )\n", + "print(a|3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Y ahora su quinta componente\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "50" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a|5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La barra vertical funciona por ambos lados del `Vector()` como\n", + "selector de sus componentes\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "3|a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cada elemento de un vector es un número. Con la función `type()`\n", + "podemos ver qué el tipo de número es cada uno de los elementos. Por\n", + "ejemplo, podemos ver el tipo de cada elemento de $\\Vect{v}$ (todos\n", + "ellos distintos tipos de números).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAANAAAAAVCAIAAAC44/ckAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEoElEQVRo3u1b7XmqMBROfToAMkLsBNER4gbREdINwBFSJ4gdIW5gGQGYIDBCZAPvj3Mv5vIlhRLt054/bQMmh5eT97znxD5dLhf0z7IsWywW6Gfb+Xz2fb/tqg3Xr/UBcz6f2yOz8rfj8Zim6YM4ejgc1uv1crl0v/R2u720228Mfcrm83kYhufz+b8te7lctNac8xJWY8zlAYwxppRyueLpdBJCXH7t68wYwxi77lj4QQixg6weqp7nuY9CxpjW2uWKlFI7+AghCCFKqWM3pthIGOObe+l0OtUftg0HpRTGGCFkx1OjCSFK4kAwo01vMJdtjDEppWOAGGNxHN+L3qSUQog4joUQCCFCyPeNNnjfQRAghNoyBkQkkIsdVW04SCmVUlprGL8Zyhjja8BRSk+nU89978y01pTSIAjuQm82nVNKS+3xHbmtxJAx5nlex80QlPaz98GBEHLzNVFKgT7+ll3dTjhmGjvmyp1xR/UWBEH3e3pks8VSHMcIoQ5yUUpVAq4PDp7ndRMWsCxk0VmSJCWX1i3LsqIoHFeLSZLAL2mawq5yYPv9PgzDxkt5nm+3W5etBNuyLAvDsMTks1NBqQh/LpdLjPHgXkQjDq+vr7vdbr1ed3+WEALhPsvz3PO8tvt2ux3QrEuLomiz2RwOhzzPD4fDl8+fZVk9xEEXN1qapqBUprbFYvH09OT/b6vVavCej6Ko0lOklOZ5Psy9Cg5hGM7nc4wxY+zmZ33f/7uulLJNosVxfLMA+V4GurBeATDG2vKIEMJNwaSUgoWUUpChjDEjU7mUsvKwQogOvdWRUhtx0FoDH1WKzkbkQbk9F0XRxnC73U5KOT5BcM47blitVm25bAqTUr68vCRJUnIGiIpKQ7y8FEXRx8eHAwQ8z9tsNlBIHo9HePEdZx7982CdbAaInEYcFovF29sbCBLOeQcNXxdtYzhoyThmoD4P/yXVqP1oHfRGKXXcfbTbpNCqGFkJVRiLc97RUwR+qT9yNw43axGb4Wa+7xtjGumtnpuTJBmmXntaz6Ac6YYQIooiUHId9LZer4UQlUtTIyCEKOukoijsVzNgadDytvAyxpTH5T1na8TBPq0CEl2tVh1OXhOp1rouFCBm60ENynrSTQ+HbLZcqI+Md4MQArKjjd4YY5RSaRm0TCdFoCLagJ+UUtCWGrY0sAZMwjkvO1yQ5St94DrDNeIghCiloTEGY1zO0+akUgqyCoI+SuUOznljuQCBOKmIVkoRQuwl6iPj3YB3aTdF6/3PikGAToqAlLICOyGEEALZatjSxhgIgnIeG9VKeoUiowyGNhy01owxqE8rB0JtTgZBAG1OBOHV/4yccz718XYQBBWP6yPj3cAYDzsgdoDAAy490skyuGcQs+/v7z1lged5zpqxk7oBve9G9fawCDwI+J91Mssy3/dBO87KBnR/QTr1wUNRFDdHxrux2WygpB9gd/mi3t2XHuzkfr+/Fi62PLzJlm4OVSslQn3kXme7P3bpMU5WDqlndoq5eY70INvrZxLMd+S28/mcpqnd2H+2u8aP8w8N9W74+J77r7k3+Iq5PfIHJ365DKBnkbAAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\begin{pmatrix}7,& - \\frac{3}{11},& \\sqrt{2},& - \\pi,& 0.123,\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}7,& - \\frac{3}{11},& \\sqrt{2},& - \\pi,& 0.123,\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([7, -3/11, sqrt(2), -pi, 0.123])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = Vector( [7, fracc(-3, 11), sympy.sqrt(2), -sympy.pi, 0.123], 'fila' )\n", + "v" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type( v|1 )" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "sympy.core.numbers.Rational" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type( v|2 )" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "sympy.core.power.Pow" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type( v|3 )" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "sympy.core.mul.Mul" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type( v|4 )" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "float" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type( v|5 )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Definiendo un vector a partir de las componentes de otro\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Léase la Sección 1.A del apéndice de la Lección 1 del [libro](https://mbujosab.github.io/CursoDeAlgebraLineal/libro.pdf#section.alph1.1.Alph1).*\n", + "\n", + "Cuando seleccionamos varios componentes de un `Vector` con una tupla\n", + "obtenemos un `Vector`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\begin{pmatrix}10\\\\ 20\\\\ 30\\\\ 40\\\\ 50\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}10\\\\ 20\\\\ 30\\\\ 40\\\\ 50\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([10, 20, 30, 40, 50])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Definamos un *sub-vector* de `a`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAAA9CAIAAACleTeiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEcElEQVRYw71Z7326PhBO+XQAcITQCbAjxE6QOkLYgDJC7ATKCOgEwgiUCTAjRDbo78X5ideQYOy3/u6VRLknl/v35CTffum67vt+0VprrX3fRsQju92urmvyK2GMeb/zWUYptRaPxyNjbBiG6TqlVEppVqSUQginZjcepfR4PFoaYX8WnpSyruuiKAghdV2b9SzL8OMcnpSSMTZdB6XYN8fjsSgK+Mw5j+MYnxB+9OJprQkhzkgBd2K8LMvMY9d1hBB8KowxsxsvnhDCadwUT2udZZnlBexF2IEVqz/i83w+V1UlpQwJwrZtF4uFFZZKKfO4XC4ZY2VZ4t/8wJNSUkqXy2UIHuQZXqGUxnGMV4QQVVWdz2c3XlVVQojwPMPWgFgWv7+/g1oH3n6/H8dxBm9qzTiOeO9KKc659RbnHNeNK15d15TSJEkCjVutVuACvKE0Ta2frdfrvu9Pp5NdXwgh0/DFst1urXgDa+q67rpOCOHMIjgVE7fEZK6VPU48nHAmJQghWZbNvEspNZlDcO34foxATPzIv77vrVD+Q4EzaJrmGi9t25qK/OcCmvu+v+BB8Ly+vj4UD8pbZJAfZx8kydU+KBOPwwPlgHLFA68+9EjP5/MVb1oa/jxElVKRs+xOZb/fp2n69PQEJRhL0zRpmm42m5nXoY5f8LTW88m32+2g+kgpD4cDVr3ZbMZx5JyXZbnf730aQL/WmkDlnLIxn2RZZsrsDH9x1l4p5aXLhOPFcWxK5Tx/mXKRoigibO9NyfO8LEvoRND5TP9aLpeUUkgy33mO4xhZXdQnHx8fSZJQSk1HvclfnBI5ecBUNptN13Va65eXlzzPA/mLFZ9a6+fw8zRB//n5CS3mJn/x2odpyLys12vYaSB/wfZc6gt2u1MspdBMAvkLliRJyDAM4GpfAkgpDRsAs8xFJIS/4GwRQjzfPEDOedd1aZpCDazr2hDiqqqUUuv1OssyKWUIUX6+6eE0TX2FKkmSr6+vQDIOXozAc4FZ+O9yiZdxHB8KA/oXi0UEZj7aPlOlI4D9f+yL4zh6NHPBWXuxD/CuV4qHnWeaple8EFbxazH8PcJkZqbtPSGxilYIf1FKgVXPgfbBVRuTO9OnoCmWZUkpnbIpm78bljBTQn3DokD+Ape97XZ7vY8xxmbYjg8vkL9AD4HBVGSogNXMpi5crVZJkqxWKzifcP4CsybweoQnem3b+thxURRN0yillFJvb2938Ze2bc3lKzK7i+PYh5fnOewuSZKiKJRSTdME8pfT6YTHHhEmCiEDT9gp1KcQ/nI4HPBENMJ9dRzHm1XGVN5A/tK2LWPsylcs7jwdiQzDgGeekIjOEQrn3DkMwYNQYgXuNCs45yY1h2GI49jwlJv8ZaqQTLdj5ZDWGiCFEEIIbOvN+Ys1obxv/nmvQFmx5p+O+S4+sX8Rxphl3H3z63uNC5pfO+fzvxCfBjfeMAzhN1DnCU1zYw4PbsDz48mZ/3OsOXoQHvjgF3jDMMz8f/QfxXuSeuEAoJAAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\begin{pmatrix}10\\\\ 30\\\\ 50\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}10\\\\ 30\\\\ 50\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([10, 30, 50])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a|(1,3,5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Definamos ahora otro vector completamente nuevo\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAACNCAIAAAC/syTXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFOklEQVRo3u1bPXLyPBDe12FSZmRmcgFxA0OfRnAChyOYGzgcQbwncDiCyQlsN+kZTmDUpzGedCkyfMXyCUX+wdg48xbaCktYj3a1u3pgduFYLdvt9ni9ZFmWZVnVrAUV8vr6GoYhtBLGWOVclWaUUvnoeZ76ijp1PB6jKKKUcs7lCOfc87zSlQelm5jP50EQqCOcc0qpxJPjq9WKUuq67nK5pJQ+Pz8DwMvLy3g83mw2+HhBP845Y0wdqdpsFEW+7+Nn13UJIaqF1EcpUDxtANA8pQrPcRzpGtvtFgCiKJKzjDG5m0o8z/M05XAQxwkhjLE0TXFnjuOoX9NOEXeg+SpcVO54PAZBIDEopegvYRgWza5ZgjGmjfzA831f872ioB9FURQEgaYf51wzIEaUquKP+Fuv15rrF2UymQBAnucAIITQZofDofqI/rler0v8s7iXKp9Em+MH9fue56HZVXFdVzUDqBOlxkzTVF0FA/H0MoBqQNd1i6+jGnKFM572srqK9Is0TQkh0qFc1wWAMAy3263neaX5Fn1Q+i2oVlKjR30BIdH9VF0xJADAcZzSd2WcSJOC9MyqXNpd0Ad/+OdutyOEQD+CNojjGABOeEmSqFn4toIr73a7E95+v5eB1R8epjdLIven32g0+qEfpon+8HBxRDnj4an2atLD4XDGQ617dVEhhFWadksljuPpdIrOpY2PRqPValXzLubxE16WZfXBhyvOZrMkSbSp1WqV5znyl81mU7UCrp9lGWDmvHjtyRykXgg1/KX01uScW4fDoeEZFAN0uVwul0v5Oc9zTCJV9syyzFL1vUpwo7Zt4+N4PKaUYpBV2TPPcwvvixaSJIl2mzPGLrqeVcoDmgj+TtCCrMpOZ3t+fn4CwNfXVwsVL/IXTT4+PqyHhwcAuL+/b6KQpk2e56q7CSHwxq86v/v7+5M95bE3l+l0ii6ubqg+Sdm2PeiSpVzX/fv372QyoZSu12sZGzUyaJEGVb4qhJjP547jcM7H4/HlJdI0xZ0e+xSJYsHvisG7Md7d3d3T01N/5EzmHUQZfH9/v7+/Pz4+9oqXZRmi/MPn14W/XIfXnb+0yS9d+Eub/NKFv9wg/q7iLzfA68Rf2oVUc/5ym/zSnL+0yS9V/EUeoRACfbiX/NKCv1zNJwx/MfzF8BfDXwx/MfzF8BfDXwx/MfzF8AnDXwx/MfzF8BfDXwx/MfzF8BeDZ/iL4S+Gvxj+8u/xl8FwOPR9v67i/Ub85YTS3D+xxkr6Z8P63Zvdf534C9Y398dfcP3hcPjr/AV9rFgzf1vBw/Z938KAbV2F1vJ+aHd+zUWenwUAhJC+9cP1KaUWwv6OfoQQC3qu3FUz0Uk/xCte3De352g0OuM1rKptJ7J+3QKlmLfq24vF4o8iWtJqwl+EEKjVoKF+V/UfafKjfh3jHxtvagr8r+0/KiaXIAjO/QjY63MtXn3/kdoSAv+3eFiSCmjFnMUjnE6ntm1LCtqcv2CvFZ76GQ8pSdW14Pt+HMdCCCHEbDa7ir8kSSK5nSV3RwipwlssFrg727Z93xdCxHHckL/s9/s8z2Wb0fl+n8/nTRr+ruo/AoC3tzdQOgIt9bLO8/xilpGZt2H9bpIkjLFzva7qSISQYktQl/4j3FwYhuX9Y5zzYlR06T8qLljSH6fFUJf+I61Dr2n/XxfOUtf/h1tWLdZFGGOaciV4pf2b7ZRr1L8p7V7TD9ZEqlaAKrrfpOOjSjjnVT9IoObXSWl7XpN+Zq3PshEenkG7vwJrmiT/A510EywfM+hPAAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{pmatrix}50\\\\ 10\\\\ 10\\\\ 10\\\\ 10\\\\ 10\\\\ 50\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}50\\\\ 10\\\\ 10\\\\ 10\\\\ 10\\\\ 10\\\\ 50\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([50, 10, 10, 10, 10, 10, 50])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a|(5,1,1,1,1,1,5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De esta manera podemos reordenar las componentes de un vector de manera muy sencilla\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\begin{pmatrix}50\\\\ 40\\\\ 30\\\\ 20\\\\ 10\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}50\\\\ 40\\\\ 30\\\\ 20\\\\ 10\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([50, 40, 30, 20, 10])" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a|(5,4,3,2,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definición de algunos vectores especiales\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Con `V0(n)` generamos un vector nulo de `n` componentes\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAAA9CAIAAADeXfVuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADh0lEQVRYw61Y73XCIBC/x+sA6Ahkg+gIdAN0BEbIcwTSCWxGSDtBzAipE8SMgGxgP5yPIIGEVu+TIfjLcf9+3MEtLl3XzbzVWmutY28JROTz87Oua5gVznn0XUxTxpi32DQNY0wpZVeUUlLKIEIYlzHWNI27opSq67ooCgCo69qu53nuPs7hKqU4556mRVHgbyEEpdQ9mfsYxdVaA4DnsTzPrYu6rgMA9zScc/vVKK6U0lNWa53nuWcl18r4JS82YFHZuq69L0kpPXdxzr2VhzhTSjHGNpuNu4hx6q4wxiil7oqUsqqq6/VqVx5wq6qSUk5jcRgGb2W9XruPu90O/x6IX8yCaQo1TeOtSyn7vve2CSFcN4D7YpoL900ArseFENM9qJb9HsT+7OmC6dB1nZQyWDfQBzZOwD2sl2NeqAFAnuexPRh/1hR3XEzQ23OCPn+Is/P57IXOPwTPdDqdxjhr25Yx9iQuIpzP5zvu5XIBgO12+xJcTGtiv/C8vlmWPeiL6fQ8LoIg2oiLVn+JKa7X64iLp3hJSAzDQIJlJSin0ynLsrIsZ/ZgPbrjaq0Xg7csS2OMEOJwOHx9fcW2IY7WmgCAMcare1NNtda73a4sSyFEsJa6YowBrBexSpbCb9OqVhQFcfUPCrLAarXCx81mwxjDII3ZwRhDPI6ZStu2npU454uuJkFe+Su/efFw99u8HVL4LaqvS6XTFDLGuBuGYUAGidn3nm+uW6by/v6OBONaZj45V6vV2xhxcRFCfHx8bLdbxlhVVYfDYS5yAdbr9VtKBldVNQzDfr/P81wp5V1cgvK26AE818/PT4oGGDmUUoKWXYzivwpJsW+6WPsSVPtV+tpqQxD+tfpSSsmrmM3NzLu+iIts/xI7ZFk24iay0bzYexNxye55fhuGAbVM1TeF3x7uTcgflFKvOUns36Y3++PxON5TOeex3en8hjUPr+zEUotXZP/Bb9h7Ygklbmfetu0z/Na2rb2UEqsFpTSIm8hvl8vFGGOvFmP/tt/vYwOHFH77/v52JxLEJQVjzDTrEvmtbVvO+chnrkMppcFWa7F/Q0O5gwjwAiUYbYv92/SPgX5+GpuL/Zs3OUiaPyzKtIEOz0sopfMTLk84556yqfOdeWWT5juxedRMTxzcGcbt+37+pm1PFpwZRHFvt9vxeIyNDWLzpCRctN3M277vZ+aTv9eihjZxChHiAAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{pmatrix}0\\\\ 0\\\\ 0\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}0\\\\ 0\\\\ 0\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([0, 0, 0])" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "V0(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQkAAAAUCAIAAAARNV/CAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACpklEQVRo3u2bP7LqIBTGz817TTqSJWBpR7ZAdqAugSWopXa6A7W8ZdxBZAkkKzCxtCPZAa/gvlwmzrxRL48GvooE+AW/mTNy+POhlIK/appmMplAUJB/6rouSRLzTTSUzudzXdfBoyA/lSTJarXqum4cG03TcM7n87nZ+nK5TCaT/X5v5dt2aR4Cg4H/m7Zerxljw+OvzWYDAHmef35+xnE8VOz3+ziOEULb7XY6nU6n058Myy7NQ2Aw0IGBcRzfbrf7/f5Vq5Qqy5IxpgyVZblcLnV5NpshhNQPZJfmITAY6NJAjLEugFKKUlqWpVlNCJFS6rIQAgBGDV6SXZqHwGCgSwMppUIIpVQEAJzzPM/NhF2nJvoxyzKM8dtpul2ah8BgoGMDKaWn0wkAoqqqMMZmHec8TdNR67Zt3xuZXZqHwGCgYwMJIfq/JWrbFiFk1kkppZTmG4zxqM3zskvzEBgMdGxgmqY6ciIp5SiqAOAxqh7bPC+7NA+BwUCXBiKE+r4HgKjv+1EMYYz7vjc3Qdq2nc1m7w3LLs1DYDDQsYHfYXM4HCilo1QdAIY1L73sNeT4OoV/SXZpHgKDgS4NvF6vem8DiqIghIyqdVQVRSGEYIwN/QkhegL30sjs0jwEBgNdGiiE0BsgcL1eH7dCpJS6GyHEXAnW+fvhcHhpZHZpHgKDgS4NLIpCz6R+64O3o0OISZJUVfU4FcuyjDGmM5XnZZfmITAY6NJAIQSlFPRZw8ViwTl/8jMIId3TiuzSPAQGA63TOOd6DhYBAGNMbwQ+qSzLLP5UuzQPgcFAi7SmadI0/brFpOdYZoLyD7235uCG5iEwGGidZgbCx3Dvbz6fn89nCAryVZfLpa7r1WqlH7/v/e12u+PxGAwK8lNd15mBAQB/AIt/uxHbxDs0AAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{pmatrix}0,& 0,& 0,& 0,& 0,& 0,& 0,& 0,& 0,& 0,\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}0,& 0,& 0,& 0,& 0,& 0,& 0,& 0,& 0,& 0,\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "V0(10, 'fila')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Con con el signo `-` delante de un vector, obtenemos su opuesto\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACkAAAA9CAIAAAC/RdcsAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADyElEQVRYw71Z23WDMAxVOR3AYQSzAWQEZwPDCIxAM4LpBIERaCYIjECYgDKCYQP6oRxwCKRgEvSV8LqWfCXL19BOW57n7TqTUkopp+4aMGFRFCVJAquNMTZ5b8pjSqmGo5fLxbZthCzLsm1bIYTv+6MPj2NTSi+Xy1Lg0+kkhMjzXAgBALZt43XbtpMkmYUthGCM6c1u9xtD3UWREPI/tpQSANazLAgCFY8xFgTBP9i+7+s5PTDOuTrNeZ4DwIDz8A6nkTEDJMbYgHQwCJQevR8ZczqdBhcxY9UBfar5Fsfx8XgcJGFd177vP8ng/X7/9fXV/b1er1mWpWk6eMx1XYToH34yLj1jjE19hHPeJd5dzDnn6wPOGHtCF3QPa85dzM/ncxAEa8onRjXPc2Q1AJimiRfV+no+n29h72ohAGjUMpWnj6N5rKaU0i7soL7Zvt+QtnfrWFEUhBB4v+FKg1lww86yjFK6ATaiFEVxw/79/cU03QwbyWh0o9jGb8uy7vyuqmozbARCxB4bWbBZ2Ou67rExGptRvaqqHlvD0jS1LCsMw0VvmabZY0spNZI7DMOmaTjnx+Px5+dn/ouIJaU0AKBpGhzLIo+llK7rhmGILcrSoTdNA9irLF3BbNvuFkpM1vlrAa5mQRAYahxmWl3XALDb7fCv4ziUUkzZ+TFvmsZAvxdZlmWDOWKMaRDWULk303CXNUjZ+ZFDrBvXlsZ8NC2XsrX3G6dwfmFqmkZ9paoqzvmi+b7VNZU4c+xwOAAAbrq6WVhaFne73WefbUuMc/79/b3f7ymlo531P5kNYJrmp141jeO4qirP82zbFkI4jqPxkU8NjmDErter3rgxRwghBs60RpavN0NvvtdYN98Gur+l390KYuAQtvebEGJs2ampNfHmN2Jjp7xZzC3L6rG1O6el1u2BDLV5W//dNE0dx/n4+DgcDlOBrKoKvX2l31EUFUURx7EQIssyz/Men7nbA2EfQwhZLy9N6WsD4REAUI0xOs2k27Brm7oY2rY92hNga4UjM7qmZ7Akr0+k0ZijxnhbcNVec1T1fJW+9ji5oF6dEnxfoq+1bVuWpephv357npckSRRFb9LXUOW5U9QHDOwEqHfoa4wxNZtgMBmPau+r9DUspSqlPtq2Vbd3Qghttruui7tDtXHu9LWRjz8OTU9l+1dfo5QKIbbQz0fL2TP9HF0nhLxEQh/wYOD0i89Lnjg967xkzTnRkxo3+rVx7LIsX3KAgFHknC84H8PDrpW5juxRxfq52DhPK7HLsnxyEPEHoQuHdkYmJIIAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\begin{pmatrix}-2\\\\ 0\\\\ -2\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}-2\\\\ 0\\\\ -2\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([-2, 0, -2])" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = Vector( [2, 0, 2] )\n", + "-a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Igualdad de vectores\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dos vectores son iguales si lo son las correspondientes listas\n", + "ordenadas de números (independientemente de si la representación es\n", + "vertical u horizontal).\n", + "\n", + "Con `==` comprobamos si es verdadero que dos vectores son iguales\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = Vector( a )\n", + "w = Vector( a, rpr='fila' )\n", + "v == w" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = Vector( [-2, 0, -2] )\n", + "a == -b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dos vectores nulos con diferente número de componentes no son iguales\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "V0(2) == V0(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Con `!=` comprobamos si es verdadero que dos vectores son distintos\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a != b # ¿son distintos?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ayuda\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Con el comando `help(objeto)` obtenemos ayuda sobre el `objeto` y sus\n", + "procedimientos asociados\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "help(Vector)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "org": [ + null, + null + ] + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/Lecc01-Secc1.2.ipynb b/Lecc01-Secc1.2.ipynb index 73c6869..989b529 100644 --- a/Lecc01-Secc1.2.ipynb +++ b/Lecc01-Secc1.2.ipynb @@ -93,15 +93,18 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "10" - ] + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -124,15 +127,18 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "10" - ] + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -159,13 +165,13 @@ "de la expresión introducida, es decir, trata de sumar el vector\n", "$\\Vect{b}$… pero no tiene sentido sumar a un número un\n", "vector. Consecuentemente ejecutar el siguiente código da un error\n", - "(*pero quite la almohadilla `#` para que Jupyter ejecute el código*).\n", + "(*quite la almohadilla `#` para que Jupyter ejecute el código*).\n", "\n" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -219,12 +225,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "#" - ] + "source": [] }, { "cell_type": "markdown", @@ -237,18 +241,25 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAABRCAIAAADaT/iDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEhElEQVRo3u1avXWjQBCeW7uAZd9zA6sOkHIHRlSAXYLsCpBKQK5AuARZFSAS55gKELmTRc+ZAz9dMHorzJ9m0XHvgpvozsB8Oz87++2M4NAuSZIczEUppZRqe8qgRcIwXK/X0Escx2l91maZlLJtjVEU2baNerMsq78QBMFsNmv8thlPShlFUeOj1WoVBEGSJEEQAIBt242v2ba9Xq9JeEEQOI7TER79b/Rbm4c45+fxlFIAQMwU3/cblerV+L5/Bm82m3UYVxHP89rihCYCQCVXobdxGOaO1EcTKwuCin860rIe5tVq1f0O7qjymn7gcc6DIKCAJUlCdDsAlHVCx1q6HUV80/O88p6B8gOiMx3HoccYzdBl4VoXms1m4/v+2Vp1f3+POYXpBwBCCPxjR23bbDbz+fxUz6IoAoC2mlJOqLrGji2h01i7FMqKDsPIbDbTyo/nQ5qmnHMYRrC4b7dbADjixXEspRwIDzWnaXrE2+12ADCZTAbFw/xiGnk4+0aj0Q/78jwfFA+VI8oJD6M6qEuLojjhodWDpmie5yc8uhRFMZ/PLcsaj8fv7++UT4QQJzylFH3zFUUxmUwWi0VRFEIIYlajfqUUA4D9fo/4FFmv15xzy7IAAKsSbieK7Pd7VhSFaTDSNEWMPM+llJTAoz1H+7S9FHl4eJBSTiaT7Xa72Wyw0BP9ud/vGXIWuliWlSSJEMJ1XcdxTLP6umwvUZCgKqUWi0We52EYGvjz8/MTAL6+vohg0+lUCBGG4evraxAELy8vFDyUj48PyLIMAO7u7og0qcJxOOdnz9vD4aBRmI4KZYEY7HLIhRD0QmhZFjOKNu7u5+dn/C8eoY+Pj8b5Ql9gFEVPT0/j8VhKKaXUrGkQPMwXekGpC4O/K//x/jDe1dXV7e3tcORMb1NEuf7+/n57e7u5uRkUTymFKP9w/LbbbX3zmXIZRkQajUau68ZxfCGXYfSagmylfFL24DIG/mxcvimXuShfenCZi/B6cJnrC/PbmMsopXzfP3tzb2yYOI6jeyvYLmzrAGmUI3/xPO8s3mq1KuMZcRmNwi4pUT24DNPM3hTPiMugfiGEWb6Ul9+Ty6BD6D3PfoJb0/d9htXI9BZx6fnQI35GouPH8LI0tH2oX0rJEPbv2Mc5Z0N3XlB0i+eEdwlrJvpzNBqd8Ey7IqZXfrxSs3IzxkjFbrcbj8fEdgOexsfzqJ99rusSPyn3Hxm6lXOO/TuiLJdL7NrSkwW9yHTxpd/kdrudUqpryFcLHuihYPm0pI8U2sZDbe/rsdbRPgSv0MtGCcOQ7kmUOI5P3M6o06CU0kyAaB+e7Hr2COWufccwrz5ZIeJVIvULR0p4QLuum2VZB62bTqflkpGmqW3bjuMsl8vuT/D0/+FPdGl9Imk0TmyclpYHuVCx/axLjfDqChvmmxQuShwBSikrA8WL5rcUztI1v0UTOef9fslQT+b6tNR4/k43jjR/P/v7AvroulEDtBUF+qC60UNtFxLouJ3Q92IlA9p+VNGFhzHogZdlWcem/A3pwyZnHB3xjQAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAABRCAIAAADaT/iDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEhElEQVRo3u1avXWjQBCeW7uAZd9zA6sOkHIHRlSAXYLsCpBKQK5AuARZFSAS55gKELmTRc+ZAz9dMHorzJ9m0XHvgpvozsB8Oz87++2M4NAuSZIczEUppZRqe8qgRcIwXK/X0Escx2l91maZlLJtjVEU2baNerMsq78QBMFsNmv8thlPShlFUeOj1WoVBEGSJEEQAIBt242v2ba9Xq9JeEEQOI7TER79b/Rbm4c45+fxlFIAQMwU3/cblerV+L5/Bm82m3UYVxHP89rihCYCQCVXobdxGOaO1EcTKwuCin860rIe5tVq1f0O7qjymn7gcc6DIKCAJUlCdDsAlHVCx1q6HUV80/O88p6B8gOiMx3HoccYzdBl4VoXms1m4/v+2Vp1f3+POYXpBwBCCPxjR23bbDbz+fxUz6IoAoC2mlJOqLrGji2h01i7FMqKDsPIbDbTyo/nQ5qmnHMYRrC4b7dbADjixXEspRwIDzWnaXrE2+12ADCZTAbFw/xiGnk4+0aj0Q/78jwfFA+VI8oJD6M6qEuLojjhodWDpmie5yc8uhRFMZ/PLcsaj8fv7++UT4QQJzylFH3zFUUxmUwWi0VRFEIIYlajfqUUA4D9fo/4FFmv15xzy7IAAKsSbieK7Pd7VhSFaTDSNEWMPM+llJTAoz1H+7S9FHl4eJBSTiaT7Xa72Wyw0BP9ud/vGXIWuliWlSSJEMJ1XcdxTLP6umwvUZCgKqUWi0We52EYGvjz8/MTAL6+vohg0+lUCBGG4evraxAELy8vFDyUj48PyLIMAO7u7og0qcJxOOdnz9vD4aBRmI4KZYEY7HLIhRD0QmhZFjOKNu7u5+dn/C8eoY+Pj8b5Ql9gFEVPT0/j8VhKKaXUrGkQPMwXekGpC4O/K//x/jDe1dXV7e3tcORMb1NEuf7+/n57e7u5uRkUTymFKP9w/LbbbX3zmXIZRkQajUau68ZxfCGXYfSagmylfFL24DIG/mxcvimXuShfenCZi/B6cJnrC/PbmMsopXzfP3tzb2yYOI6jeyvYLmzrAGmUI3/xPO8s3mq1KuMZcRmNwi4pUT24DNPM3hTPiMugfiGEWb6Ul9+Ty6BD6D3PfoJb0/d9htXI9BZx6fnQI35GouPH8LI0tH2oX0rJEPbv2Mc5Z0N3XlB0i+eEdwlrJvpzNBqd8Ey7IqZXfrxSs3IzxkjFbrcbj8fEdgOexsfzqJ99rusSPyn3Hxm6lXOO/TuiLJdL7NrSkwW9yHTxpd/kdrudUqpryFcLHuihYPm0pI8U2sZDbe/rsdbRPgSv0MtGCcOQ7kmUOI5P3M6o06CU0kyAaB+e7Hr2COWufccwrz5ZIeJVIvULR0p4QLuum2VZB62bTqflkpGmqW3bjuMsl8vuT/D0/+FPdGl9Imk0TmyclpYHuVCx/axLjfDqChvmmxQuShwBSikrA8WL5rcUztI1v0UTOef9fslQT+b6tNR4/k43jjR/P/v7AvroulEDtBUF+qC60UNtFxLouJ3Q92IlA9p+VNGFhzHogZdlWcem/A3pwyZnHB3xjQAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}2\\\\ 8\\\\ 18\\\\ 4\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}2\\\\ 8\\\\ 18\\\\ 4\\end{pmatrix}$" + ], "text/plain": [ - "" + "Vector([2, 8, 18, 4])" ] }, + "execution_count": 5, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -268,18 +279,25 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAABRCAIAAADaT/iDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEhElEQVRo3u1avXWjQBCeW7uAZd9zA6sOkHIHRlSAXYLsCpBKQK5AuARZFSAS55gKELmTRc+ZAz9dMHorzJ9m0XHvgpvozsB8Oz87++2M4NAuSZIczEUppZRqe8qgRcIwXK/X0Escx2l91maZlLJtjVEU2baNerMsq78QBMFsNmv8thlPShlFUeOj1WoVBEGSJEEQAIBt242v2ba9Xq9JeEEQOI7TER79b/Rbm4c45+fxlFIAQMwU3/cblerV+L5/Bm82m3UYVxHP89rihCYCQCVXobdxGOaO1EcTKwuCin860rIe5tVq1f0O7qjymn7gcc6DIKCAJUlCdDsAlHVCx1q6HUV80/O88p6B8gOiMx3HoccYzdBl4VoXms1m4/v+2Vp1f3+POYXpBwBCCPxjR23bbDbz+fxUz6IoAoC2mlJOqLrGji2h01i7FMqKDsPIbDbTyo/nQ5qmnHMYRrC4b7dbADjixXEspRwIDzWnaXrE2+12ADCZTAbFw/xiGnk4+0aj0Q/78jwfFA+VI8oJD6M6qEuLojjhodWDpmie5yc8uhRFMZ/PLcsaj8fv7++UT4QQJzylFH3zFUUxmUwWi0VRFEIIYlajfqUUA4D9fo/4FFmv15xzy7IAAKsSbieK7Pd7VhSFaTDSNEWMPM+llJTAoz1H+7S9FHl4eJBSTiaT7Xa72Wyw0BP9ud/vGXIWuliWlSSJEMJ1XcdxTLP6umwvUZCgKqUWi0We52EYGvjz8/MTAL6+vohg0+lUCBGG4evraxAELy8vFDyUj48PyLIMAO7u7og0qcJxOOdnz9vD4aBRmI4KZYEY7HLIhRD0QmhZFjOKNu7u5+dn/C8eoY+Pj8b5Ql9gFEVPT0/j8VhKKaXUrGkQPMwXekGpC4O/K//x/jDe1dXV7e3tcORMb1NEuf7+/n57e7u5uRkUTymFKP9w/LbbbX3zmXIZRkQajUau68ZxfCGXYfSagmylfFL24DIG/mxcvimXuShfenCZi/B6cJnrC/PbmMsopXzfP3tzb2yYOI6jeyvYLmzrAGmUI3/xPO8s3mq1KuMZcRmNwi4pUT24DNPM3hTPiMugfiGEWb6Ul9+Ty6BD6D3PfoJb0/d9htXI9BZx6fnQI35GouPH8LI0tH2oX0rJEPbv2Mc5Z0N3XlB0i+eEdwlrJvpzNBqd8Ey7IqZXfrxSs3IzxkjFbrcbj8fEdgOexsfzqJ99rusSPyn3Hxm6lXOO/TuiLJdL7NrSkwW9yHTxpd/kdrudUqpryFcLHuihYPm0pI8U2sZDbe/rsdbRPgSv0MtGCcOQ7kmUOI5P3M6o06CU0kyAaB+e7Hr2COWufccwrz5ZIeJVIvULR0p4QLuum2VZB62bTqflkpGmqW3bjuMsl8vuT/D0/+FPdGl9Imk0TmyclpYHuVCx/axLjfDqChvmmxQuShwBSikrA8WL5rcUztI1v0UTOef9fslQT+b6tNR4/k43jjR/P/v7AvroulEDtBUF+qC60UNtFxLouJ3Q92IlA9p+VNGFhzHogZdlWcem/A3pwyZnHB3xjQAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACUAAABRCAIAAADaT/iDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEhElEQVRo3u1avXWjQBCeW7uAZd9zA6sOkHIHRlSAXYLsCpBKQK5AuARZFSAS55gKELmTRc+ZAz9dMHorzJ9m0XHvgpvozsB8Oz87++2M4NAuSZIczEUppZRqe8qgRcIwXK/X0Escx2l91maZlLJtjVEU2baNerMsq78QBMFsNmv8thlPShlFUeOj1WoVBEGSJEEQAIBt242v2ba9Xq9JeEEQOI7TER79b/Rbm4c45+fxlFIAQMwU3/cblerV+L5/Bm82m3UYVxHP89rihCYCQCVXobdxGOaO1EcTKwuCin860rIe5tVq1f0O7qjymn7gcc6DIKCAJUlCdDsAlHVCx1q6HUV80/O88p6B8gOiMx3HoccYzdBl4VoXms1m4/v+2Vp1f3+POYXpBwBCCPxjR23bbDbz+fxUz6IoAoC2mlJOqLrGji2h01i7FMqKDsPIbDbTyo/nQ5qmnHMYRrC4b7dbADjixXEspRwIDzWnaXrE2+12ADCZTAbFw/xiGnk4+0aj0Q/78jwfFA+VI8oJD6M6qEuLojjhodWDpmie5yc8uhRFMZ/PLcsaj8fv7++UT4QQJzylFH3zFUUxmUwWi0VRFEIIYlajfqUUA4D9fo/4FFmv15xzy7IAAKsSbieK7Pd7VhSFaTDSNEWMPM+llJTAoz1H+7S9FHl4eJBSTiaT7Xa72Wyw0BP9ud/vGXIWuliWlSSJEMJ1XcdxTLP6umwvUZCgKqUWi0We52EYGvjz8/MTAL6+vohg0+lUCBGG4evraxAELy8vFDyUj48PyLIMAO7u7og0qcJxOOdnz9vD4aBRmI4KZYEY7HLIhRD0QmhZFjOKNu7u5+dn/C8eoY+Pj8b5Ql9gFEVPT0/j8VhKKaXUrGkQPMwXekGpC4O/K//x/jDe1dXV7e3tcORMb1NEuf7+/n57e7u5uRkUTymFKP9w/LbbbX3zmXIZRkQajUau68ZxfCGXYfSagmylfFL24DIG/mxcvimXuShfenCZi/B6cJnrC/PbmMsopXzfP3tzb2yYOI6jeyvYLmzrAGmUI3/xPO8s3mq1KuMZcRmNwi4pUT24DNPM3hTPiMugfiGEWb6Ul9+Ty6BD6D3PfoJb0/d9htXI9BZx6fnQI35GouPH8LI0tH2oX0rJEPbv2Mc5Z0N3XlB0i+eEdwlrJvpzNBqd8Ey7IqZXfrxSs3IzxkjFbrcbj8fEdgOexsfzqJ99rusSPyn3Hxm6lXOO/TuiLJdL7NrSkwW9yHTxpd/kdrudUqpryFcLHuihYPm0pI8U2sZDbe/rsdbRPgSv0MtGCcOQ7kmUOI5P3M6o06CU0kyAaB+e7Hr2COWufccwrz5ZIeJVIvULR0p4QLuum2VZB62bTqflkpGmqW3bjuMsl8vuT/D0/+FPdGl9Imk0TmyclpYHuVCx/axLjfDqChvmmxQuShwBSikrA8WL5rcUztI1v0UTOef9fslQT+b6tNR4/k43jjR/P/v7AvroulEDtBUF+qC60UNtFxLouJ3Q92IlA9p+VNGFhzHogZdlWcem/A3pwyZnHB3xjQAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}2\\\\ 8\\\\ 18\\\\ 4\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}2\\\\ 8\\\\ 18\\\\ 4\\end{pmatrix}$" + ], "text/plain": [ - "" + "Vector([2, 8, 18, 4])" ] }, + "execution_count": 6, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -301,12 +319,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "#" - ] + "source": [] }, { "cell_type": "markdown", @@ -319,12 +335,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "#" - ] + "source": [] }, { "cell_type": "markdown", @@ -361,12 +375,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "#" - ] + "source": [] }, { "cell_type": "markdown", @@ -378,12 +390,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "#" - ] + "source": [] } ], "metadata": { diff --git a/Lecc01-Secc1.4.ipynb b/Lecc01-Secc1.4.ipynb index 81493c0..6e7f26b 100644 --- a/Lecc01-Secc1.4.ipynb +++ b/Lecc01-Secc1.4.ipynb @@ -1 +1,1314 @@ -{"cells":[{"cell_type":"markdown","metadata":{},"source":"Lección 01 - Sección 1.4\n========================\n\n**Author:** Marcos Bujosa\n\n"},{"cell_type":"markdown","metadata":{},"source":["*Lea primero la Sección 1.4 de la Lección 1 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)* \n\n([https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf))\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["from nacal import *"]},{"cell_type":"markdown","metadata":{},"source":["$\n\\newcommand{\\R}[1][{}]{{\\mathbb{R}}^{#1}}\n\\newcommand{\\Z}[1][{}]{{\\mathbb{Z}}^{#1}}\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\getItem}{\\pmb{\\mid}}\n\\newcommand{\\getitemR}[1]{\\getItem{#1}}\n\\newcommand{\\getitemL}[1]{{#1}\\getItem}\n\\newcommand{\\elemR}[2]{{#1}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n\\newcommand{\\elemRP}[2]{{\\big(#1\\big)}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n\\newcommand{\\elemRPE}[2]{\\big({#1}^{\\phantom{\\T}}_{\\getitemR{#2}}\\big)}\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\Vect}[2][{}]{{\\boldsymbol{#2}}_{#1}}\n\\newcommand{\\eleVR}[2] {\\elemR {\\Vect{#1}}{#2}}\t % con subindices\n\\newcommand{\\eleVRP}[2] {\\elemRP {\\Vect{#1}}{#2}} % con subindices y paréntesis interior\n\\newcommand{\\eleVRPE}[2]{\\elemRPE{\\Vect{#1}}{#2}} % con subindices y paréntesis exterior\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\VectC}[2][{}] {\\elemR {\\Mat{#2}}{#1}} % con subindices\n\\newcommand{\\VectCP}[2][{}] {\\elemRP {\\Mat{#2}}{#1}} % con subindices y paréntesis\n\\newcommand{\\VectCPE}[2][{}]{\\elemRPE{\\Mat{#2}}{#1}} % con subindices y paréntesis exterior\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\mat}[1]{\\mathbf{#1}}\n\\newcommand{\\Mat} [2][{}]{{\\mat{#2}}_{#1}} \n\\newcommand{\\T}{\\intercal}\n\\newcommand{\\MatT}[2][{}]{{\\mat{#2}}^{\\T}_{#1}}\n\\newcommand{\\VectCC}[2][{}] {\\elemRR {\\Mat{#2}}{#1}} % con ()\n\\newcommand{\\VectCCC}[2][{}] {\\elemRRR{\\Mat{#2}}{#1}} % con texto \"col\"\n%SELECCIÓNA de FILAS y COlUMNAS DE UNA MATRIZ TRANSPUESTA PARA GENERAR UN VECTOR DE Rn\n\\newcommand{\\VectTC}[2][{}] {\\elemR{\\MatT{#2}\\!}{#1}} % con subindices\n\\newcommand{\\VectTCC}[2][{}] {\\elemRR{ \\MatT{#2}}{#1}} % con ()\n\\newcommand{\\VectTCCC}[2][{}] {\\elemRRR{\\MatT{#2}}{#1}} % con texto \"col\"\n\\newcommand{\\dotprod}[2][{}] {\\Vect{#1}\\cdot\\Vect{#2}}\n$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["## Matrices de $\\R[m\\times n]$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Definiendo matrices\n\n"]},{"cell_type":"markdown","metadata":{},"source":["En el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se dice que al encerrar entre corchetes una lista de\nvectores (con el mismo número de componentes) *expresamos* la matriz\ncuyas columnas son los vectores de la citada lista. Aquí hemos\nimplementado dicha operación poniendo una lista o tupla de vectores\ncon el mismo número de componentes como argumento de la clase\n`Matrix()`.\n\nAsí, si en el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se dice que al encerrar la lista de vectores $(1,\n2,)$, $(1, 0,)$, y $(9, 2,)$ entre corchetes expresamos la matriz de\n$\\R[2\\times 3]$\n\n$$\\begin{bmatrix}1&1&9\\\\2&0&2\\end{bmatrix}$$\n\nCon [NAcAL](https://github.com/mbujosab/nacallib) lograremos lo mismo poniendo la lista de vectores como\nargumento de la clase `Matrix( )`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"Matrix([Vector([1, 2]), Vector([1, 0]), Vector([9, 2])])"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAEwAAAAoCAIAAADbkIswAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACiklEQVRo3u1Z7a2rMAw11R0g7QhhA2CEZAPaEVAniDJC6AS9jAAbkIwATAAZAdig70d0EeqT3k3C+2qFfyFUW+fUjrFPIIoi9GVCiMdbGCFkIcUYCzDGwzDAm1pVVUqpg5OPlJJSuuVP2RhhGAZKaRAEcRxXVWXrhjG2KYC6rjHGxqXve48S2h7hfr8TQh6PR9/3hBAAqOv61y5lWWZZZkvSGGMMAMZx9D4t3hHGcQSAsiyXNwihLMtsSLqVa5IkGw+Jd4SmaQAgiiKPUIfXaiRKqeV5HEdTtO9DklKKEOKct21r2qbW+nw+2/h+vFAam6a5Xq+EEJPAoijesFzDMJRSTtNk6Fmm0ZmkaXFbbHsEAMiyTAhh//sXazwAkOd5kiRhGNq7fLwWw7ZthRDTNDl5OWdy/aXysy0ROOecc1evfUB/F9tJ7iR3kjvJneQ/JimljOM4CIItIo2UMgzDPM+93T0w2JL8/Pzsuq4oCiGEUupyufiNnfM8p2nKOXeQobZjsNR41qqMWec8hCzGmHlO0xQh5CHzuGJw03iOx+N6+EQIbRk7OefzPEspnSJ4Y/BpPFpr13I1e8OCMo5jjHHXdd69xAmDz6rVdZ3RzuxNKXU6ndZvCCFaa2+SThgOHs2DMbauHEtB4EkTwBh71LwfBrdMtm2rlHI9S0uBPb15yu2fw3BwbR5lWXogwxjP87ze6LXWaZr67c2uGBxIUkqFEK6FuvgCwFp9GsfRSafZgsG2XI3+1zTNctxPp5O9KAgAaZrebrckSTDGRVF4qBj+GGyGAXNL82TfXrb8/Ck36k4URd/eRv0uDGYY2DWefdXaSe4k/z5JhNDxy7x32f/NKKWGUZZlCKEf/F/W9B+c2rwAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["a = Vector( [1,2] )\nb = Vector( [1,0] )\nc = Vector( [9,2] )\nD = Matrix( [a,b,c] )\nprint(D) # representación de la matriz en consola\nD # representación de la matriz en Jupyter Notebook"]},{"cell_type":"markdown","metadata":{},"source":["También podemos instanciar una matriz mediante una lista (o tupla) de\nlistas o tuplas. En este caso, estaremos describiendo la matriz fila a\nfila:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADEUlEQVRo3u2aTW6jMBSATZRtJeAIdU8Qs+3OVD1AwhEMJyAcAecGcASHE9Q+AnCCwq5b+wgzC3cilNHM4MekaiveJlEUnj/5/fi9ZxBjDE3E9/0fn0B8359SMca29iPPc/SZpG3by/fT6YQQ2thdxBP5uwopZRzHwzCAIeZomPLY3d06LZBl2TiOSxDBGjbz/2q3wTpJGIaAxZZo2LguFkXRQv+DadigLyIr6Ao6V7TWC5eEaVhN/xlAd7vdwlUBGpxB0zTtui4IAjAlTMPqoyvoCrqCfgtQKSUhxPO8hW3TMAyEEGPMTUCrqur7vq7rsiyVUkmSgEGfnp76vnd6xKG5S5LEHieEEKWUUgpGyTlnjBVFcSvTTw+93W53NSOYb3StNaX0g4JpHEeY6Yui4JwDHtzCQPu+nw4z5nv51QTptjvKOc/z3LX8McYopeI4hoE672jXdUopKaXrg0mSlGUJThTbx8fHu7s7JycTQsAWu0S6bZsopZTSf7rs8/Pz29vb+yhv5jSQUtq27fKpovVvrfWcP+d5/j52nCmHwwEh1LbtJYzCMLQ/foDMBT0ej03TIISmeZ4xBgallDqF42Z+pP9ulKqqYJSEENdwXMu8FXQFXUG/Bej5fMYYe54HzvPDMMRx7HkeIeR8Pt+qZ0IIvby8lGXZNA2g/q2qKssyKeXr62sYhkmSzE/7Dmd9mqaX41QI4To4NsZkWWYrL4yxlDIIgqZpZlao8FbEte+xpcx0Mup04QQBTdO0KApYrT6taZy6PDfQ4/EYBMH9/f1+v3dFjOPY9/2iKLqus3E5juP8oHQD5Zy3bau1fnh4uLisk/WjKKKUHg4HIURd1zc0PcbYNnd1Xdu9cXpWSmmMsYhOOQ4YTLapB985McZcG72NU36ZRj2C3hNzzqMo+ucbDMA8yjkXQlhbG2NsLwq4G+m6rixLpzmeG+h+v2/bFmNsE6EQghAC65hdx2NuoBhjp6P5TwKYXKxl3gr6dUBPp5P3S5bcxv5HCYLggmTfJPO01lcHjGsqvoVcXbmEYfgTeleMITfjXacAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["A = Matrix( ( [1,1], [2,4], [3,9] ) )\nA"]},{"cell_type":"markdown","metadata":{},"source":["Esta segunda forma de construir matrices (*fila a fila* en lugar de\n*columna a columna*) resulta cómoda en la práctica (pero no es la\ndescrita por la notación del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)).\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Atributo: `.lista`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["[NAcAL](https://github.com/mbujosab/nacallib) almacena la lista ordenada de vectores (*de columnas*) de cada\n`Matrix()` en su atributo `.lista`.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"[Vector([1, 2, 3]), Vector([1, 4, 9])]"}],"source":["print( A.lista )"]},{"cell_type":"markdown","metadata":{},"source":["#### Orden de la matriz. Atributos: `.m` y `.n`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["El atributo `.m` nos indica el número de filas de la matriz y el\natributo `.n` su número de columnas. Así, el orden de $\\Mat{A}$ es\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"3\n2"}],"source":["print( A.m )\nprint( A.n )"]},{"cell_type":"markdown","metadata":{},"source":["#### Método: `.sis()`\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Se puede expresar una matriz en forma de `Sistema()` genérico con el\nmétodo `.sis()`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"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","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["A.sis()"]},{"cell_type":"markdown","metadata":{},"source":["### Seleccionando filas, columnas y componentes.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Obtengamos el vector correspondiente a la *j*-ésima columna de\n$\\Mat{A}$ (donde $j=2$)\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAB0AAAA9CAIAAADeXfVuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADTUlEQVRYw7VY7ZGqMBS9y2wBgRJiB0AJcSvIUAKzFTiWgB1IC6wVICUgFURLCHTA+3GdECGJUXnnlxI4Obm5yf2A0Y62bR2jUkoppW00AAvKsqyqCpxgjFnHbEoppbOHdV0zxoQQ6klRFHmeGxnMvJTSuq51Rkop6tB5x3GM47iqKi/eoigYY8vnu90OAGY2bduWEPKcV0oJAMYdQ3Mv94oxttvtnvDmeW4U6+Bt23b5HDzFOnhR8mwDYWbBpRv48C6HHngJIUVRvME7jiMA6N+C52fjOB6PR8cLnPM4jg3nraoqSmkYhvAWsizruu56veLfifd0OnHO4V3gmT6dTg+85/P5yXkHAIA4jm1DYRhSSqcrRT9L42fI81yR3PV2XUcIgc+Aq8Gl33mbplE3y9tAhq7r7ry4iWmarsKLxzpQM3yud7PZPOi93W6r8CIJsk28Dh961RR930+8uIpVXOJ2u028Prher0mS9H1veyGKIiT8xqvE03l/fn7cIpBHShkAwDAMOI8bh8MBT9RTDMMQOBY1s4CU8ukFgvruepV+B/b7/eFweDo98gzDEGBMc6MsS08LKAS6fiP6vm+aZrvd+tC9YIcsy/b7/auO/K1EuY2LP9BojDHGmNHcqK/v+29129tI8T5FXC6XNE2bpnGHwTAMA+VxsAaQJ4qi4I346BOzA5+TppAkiW6WJXADCCEBTu7jxe/473+xLyFkLb3IQykNkH5dvYSQYK3IhlChcuJVKdvndthsNhOvfzRyQOVNgR7s3Pf6drv9+vpKkuTv789hB1Tppbcsy9/f3/P5LISIoijLMuPpeMibVAVgK4PQZHrxRwgxlpl1XQPA8Xic8sk0TTGvWgKf61mLLZPDDApjYKBuk2EYHLdw0zT6phsDKNae9/xGr+2MlS4unBCCdV1VVcbCdWZMeGq1cRyFEIwxQgjnnHNunF4IoSsDPYu3CdH3kHNuHCqKQq/CYLabszbAskizvYBBz1pvLitzXZGtGl36Isy+tJnC1mewfWio5/VOib5MR+lMKZ2NvtB/sAE3xtV/QMnKVT1hXMoL/R2bWK/+jrEf5YDtTbAdMEfjRF+Z7ZiAo4vh8GXcCb2R4cuLtnOMCiEczZV/yUe2H34VDvIAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["A|2"]},{"cell_type":"markdown","metadata":{},"source":["y el vector correspondiente a la *i*-ésima fila de $\\Mat{A}$ (donde\n$i=1$)\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADMAAAAUCAIAAACvapLzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABhElEQVRIx81W4a3CIBi8MAEyAm6AHQE3aByBEeoKjRMYR6gbEEYoTqCMgN2A9wMf7Ws1El+Tev/40lyP4zv4EAa4Xq9hIXjvRxWCX5zP58vlgoWwWq32+/39fu9LyS2l1Ei11lpKOZeRb9m892VZpuVDmRBi6KfWmnMepf9fWT5bXddN0/TKtNZTw0IIVVUBmHbAZ8hk45z3fXY4HMqynJ59URQzdlImG+fcWguAADDGbLdbfAeklKfTCQCx1qYm+AYIIdq2BUCcc5TS71HGGHPOASDee8bY9yijlHZdB4B0XffKM+/9jL/MZEs2kaQxB9baGJxZ8JQtbYAwxvK9UUoVRfHnDfkHnrKlMyRCiNhxr5IyXMY8N03zce7esjnnHjdfCIFSmn/RK6Xqup5rxJiyVVUVKwTAbrczxuRnR0o5YxJHbMaY+CCReN7R2ExsNpsZMztku91ujLH1et1PQUqptm3fmp/zTT6mbEMZSNXhbLQItNbDnsNw1D4ejwtO26Mo/AAMSeNebKYNmQAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["1|A"]},{"cell_type":"markdown","metadata":{},"source":["Podemos seleccionar la componente situada en la tercera fila y segunda \ncolumna de $\\Mat{A}$ del siguiente modo:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["3|A|2"]},{"cell_type":"markdown","metadata":{},"source":["Cuando seleccionamos un elemento de una matriz obtenemos un número.\n(recuerde que Python implementa distintos tipos de números: tipo `int`\nes un número entero, tipo `float` es un número con decimales y tipo\n`Fraction` es un número racionales decir, un entero dividido por otro\nentero, y el su módulo [Sympy](https://www.sympy.org/es/index.html) implementa muchos números irracionales).\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"int"}],"source":["type(1|A|1)"]},{"cell_type":"markdown","metadata":{},"source":["Cuando seleccionamos una fila o una columna de una matriz obtenemos un\n`Vector()`\n\nConsecuentemente tenemos varias formas de seleccionar un elemento de\nuna `Matrix()` (véase la Sección \"****1.4.4 Extensión de la notación\nvectorial y reglas de reescritura****\" del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf))\n\nPor ejemplo, para obtener la componente situada en la tercera fila y\nsegunda columna de $\\Mat{A}$ podemos seguir estas tres vías (entre\notras):\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["3|A|2"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["(A|2)|3"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["2|(3|A)"]},{"cell_type":"markdown","metadata":{},"source":["#### El orden de ejecución de las operaciones y la necesidad de poner paréntesis.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["En Python, la [operación booleana](https://docs.python.org/3/reference/expressions.html#boolean-operations) `3|2` da como resultado `3`. Sabiendo\nque Python ejecuta las operaciones de izquierda a derecha ¿Cuál de las\ndos últimas alternativas no funcionará bien si quitamos los\nparéntesis?\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["### Definiendo una matriz a partir de las componentes de otra\n\n"]},{"cell_type":"markdown","metadata":{},"source":["(*Esta parte corresponde al Apéndice **3.B** de la Lección 3 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)*)\n\nCuando seleccionamos varios componentes con una tupla obtenemos una \nsubmatriz. Veámoslo\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAE4AAAA9CAIAAACMfsglAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEQElEQVRo3u1bQXKjOhAVLh9A6AhyTmDpCMLbbDBHkH0C0BFkbgBb78CLLFNAZZMt5gRjjiC4Qf5C9Sl+puqPJFcmmQy9scsVtfSkVqv7dQdwzsFMIIRv30IghHNcnPO1/ojjGHwvadt2+p6mKQBgpU9yM5P/V1HXdRAEt9vNeRG/R8MckT7htdUEx+Ox7/t7lviJGlbmf6o3Ups6Qshhss/VsLKdjFJ65y36LA0r8NfIAnWB+ndBVUrdOeVnaVhOdYGqZbvd3jnrp2jwOOcQwtPp9I3PM0mScRwXA16gLlAXqAvUBeoXg1rXNSHE87w7yaHb7UYIGYbBYewwDEmS+L5PCLlerx8CNcuyruvyPJdSNk0TRZEz1N1u13WdG05KqRBiGAaEkBUdYQE1iqIkSQghSZIwxtzWCgA4nU7vyGdzKYoCQuj7PgBAM0zmxmUBVU8whaDvOGVz01VKMcacLaLrOg2v73uM8S/Z3HvdUt/3bgYshLgn3o6iCGNMKa3r+nK5VFX14R646zoppe2oLMucTXeyrLZtEUK73Y4xZn6kwIrynl+2OI7n9mzoUZqmKcvyzjdDSskYU0oJIfq+z7Lso071er02TXM4HBxsTwhxJ84gCBBCWZaVZSmlzPPcHCo4n89PT0/mFS69ow6lMTYTnVhvt9s4js016IrTfHYIIef8lwNfXl7O5/P69fUVQvj4+Gi4qVJKW9Odwo+5aVBKm6axUqXZM6XUNAohZEJHPD8/j+NocVf3+z0AoG3bqZ6HENI//h7RAUOaptpo9d6ZXyVTqEmSXC4XAEDTNNOPnHNnqIwxW+vwfb+qquPxSAjBGGOM50XUhVtauKUF6gJ1gbpAXaB+WahlWW42G8/znCOH2+0WBIHneYQQ5yynruvNZmMbC9hxSwCAqqqklJfLxSHqyLLseDzWdf3jxw+EUBRF88DYPIUcxzEMQyGE3WbprjvbNMU2KXl7e9PBelEUtnnJXKqqmuYNw9CwIzKOY865O+Fiyw/peHWeiDi0HwkhpqRXCDGOo7lduEA9HA5CiCAIHMbOswVbPk3zxlOSoIN+c+LSDqrmmjHGYRg6EAgQQiGE5qnLsuz73sq9NU3zrtmOMWbeb7iydQlt2yqlHh4eHDiXtm0ppYyx/X5fFEWe51bDlVLvelswxuYcrbUBay8fx3Ge51Z1BD22ruthGDRIhxfr5zM0b6p0dEuaBHbuQOKcO3CrGONxHOeVnr7vza/SytYrzHfXrYPzdDpRSq0o3Om2AwDme6SUMtezNl9fURTaYodhEEIUReHAp12vVymlWw0OABCGYZqmlFKMcZ7nVmzr2nyOtm03m41+GIuiIIQ4rHX+MDpInue6hrLdbqWUVmtYm3uU+4l58F+K1EF837f1hUtms0BdoP6BUNM09f4Vt3rMFxTf9ydQ+r+nvJ8DS4fH/QvKux4JhNA/MZpf1ToQNnQAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["B = Matrix( ( [1,1,1], [2,4,8], [3,9,0] ) )\nB"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADXUlEQVRo3u1azY2rMBA20RYALsFsBUAJZCsglACpAFyCoQO45gYc9rgCay+R9gR0EEowdPDewXoI5f3ZJki7K+YShOLxl/GMPd/ngCAIwMJ0Xf/xCUzX9SWqIAie+EcUReAzWdu283OapgCAA4+iubB/u2ia5ng83m43ZRAiHpZ4eHSfpCY4n8/DMKyBqOzhIP5VHgaeJBBChcnWeDjITuY4zsr8U/NwAF/EdqA7UFFjjK2cUs3DvvSfAahlWStnVfAgDTQMw67rDMNQRqnmYc/RHegOdAf6LYA2TWPbtqZpyrRpHMc4jg3DsG2767pNgGZZ1vd9nueEEEqp7/sKKB3HwRiP4wghlGr1Jcid7/v8OLFtm1JKKZUFWhSFruvcSRRFlNLb7fZf3isd0eWhZ1nWnUYgaH3f85wZhgEhJIhSvZiGYVBYet/3EUKO4zRNU1VVXdebV33f94QQ2VGGYbRtCyF8eXlxXVc8nHI5OluSJFEUqTVQhBDXdRljGONhGLIs2yqiXddRSsMwVBMgIIRZlpVlSQjJ81wcKLhcLq+vr+I6G4+HgkDHda/lWF3XgyD478D39/fL5XK4Xq8fHx/iISGEqC0653RLZgchFGn1397erterRI6eTicAQNu2syYIIeQvxZWcNE35cjdNw7v9BxdTHMdVVQEAlvt8EATiQA3DqOv6fD7bto0QQggtRdCHAU2SJEmSlY3FGmF1b/N2oDvQHei3AFqWpWmamqaJ7/N/JF6macruynKcCQBQ1zUhpKoqtf0/SZJpmjzPwxiXZblJPzqfy3EcF0WhIBw3TcMYi+P4dDoNwyB1AqtTEdd1ZUdhjDHG8/M0Tbw12QpoGIYY4+PxKMuVlwyRtyZ9328ClGsHCCHP82R/HqX07lrRdV3xe9GDbCm0bcsYe35+lmUjjLG7tEYIiXNu6aXnO0sURXmeS2kyPLPv3ohf3SoWEyf1UoWPEJqmiWfqjFs8hQ6y1bCMjZR4xItvqQYwxh6vlCRJMu9H4zhijIuikGV5nuelaVqWZdd1fOt4/IbveV7btqZpct5YFIVt27IJk+c514IsyyKESHl4Eq8hqRPvb/xOtv72Nm8H+qWApmmq/bI1t7EPNMMwZkj8n2Ta70ewlL66kd0JKhDCn1zFrqCPoPnhAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["B|(1,3,)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAEwAAAAoCAIAAADbkIswAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADeklEQVRo3u1Z0Y2kOBA1owsACMFMBEAI9kRAE4K7I6AJwUwE0CEAEQAhuIkACMGQwd1HaSzUu6uxPb27pxHvAyGksnnlcrnqGYVh6H6Ac/7vtwAhRJHKsszBGM/zjL4pmqYZhuFF36Dv+yiKHMehlH7FL/M8R1G0rquF7bqu1+vV87woiu73u64ZxlgnAMqy5JwLITjnCKEwDK1jCWOMEJJSmhpKKTHGYEgIQQh9alLXNWNMl+T+nzQn+Ck45+AmC5JlWSrndl2HEJqmSYekbrh6nqfeIVfZBaqUEnxkh3EcYacsy4IxDoJAx+rFYqZlWdI0tTDM87woCmuGaZpijOM47vu+bVtYzN9FchxHCDkjVFXFGPtKqvQ8Twjh+/7b2xshRHMZEUL/mM5UFEWWZfvo1cyKwzA0TfPFI4FzTgiRUuZ5vixLVVXPzK4AIQQhxO50FkKoQewSDyFElSsQSmVZPjO7qmksfg4MFcIwhOyVZZmRfx9c47ouY0yHpEG4Uko556aBqgoJ9X6/3+M4HobBaCgpJTyVle/74K+n7cnT6YQQEkKAR2EO+PhnEMcxQuj9/R32IXjtfD4/jeT1em3bFiE0DIP6yBizJkkIMY0Iz/O6rrtcLlEUYYwxxsrdn+Io0L8LDpIHyYPkQfIg+ZdJNk0TBIHjONY1wDzPlFLHcaIosu5I+r4PgsCoL9UlCcVU13Wc87ZtLXrfqqoul0vf99M0+b6fpum+oNVv9LZtS5Ikz3MDNxl1IQDTBgIkIoRQXddGPcQDuq5T8yZJ4rquppBlKX+Y6jRQZ+6bBii4TdWTPM/V+7ZtmrFgTPJ8Pud5Tim18M6+vjdVtECnVWU9lOnjOD6ZJKi6GOMkSUzpUUpd183zHBThpmmWZTFKYMMw+L7/0Mosy/JkkkVRCCGklK+vr5qN3EPExnFMCDmdTnVd3243I3MpJWzsfTbRVEbNwhVyd5Zlt9vNQKX/sO37fl1XoGdxDv24bg9r+8xiAETXB7/qgzFmoWhijLdt29+gLMuiuXFejPb93qMW6RFiPo5jfcl0v6tBktwHsO44Ouck51xdQsCty/7EM1LcdA63XwHWra5rIQRjTGmcz5Ekp2lKkgTyapIkOqN/KpxaQEqp5Myu63RMgOSh8Ryt1kHyIPnnSbqu633gKzek/ytQSoERY8x13f8AqH2GJY9A3ksAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["(2,3,)|B"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADYAAAAoCAIAAAA6+55hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACw0lEQVRYw+1Y7Y2jMBAdVluATQkmFRhKMFsBmxKcVEAowaSChBKACgwleKlglxKcdHD3Y7QIRXcXG3G61V7eD4QsDTzPl+cZOOfkE0qpH18AQoiJUp7nAWPs4+MDviSapun7/sndoOu6OI6DIEjTdNmuLpfL4XCglMZx/Pb25mjlSvF8Pg/DUFWVUqrv++12u4BfkiRFUVwulzAMkyRxtWSMueSHtXaeKwDgm2Gn04lzju9aawB4f3//s0ld11JKVy9SSqd3rLAFgR6GATNkHEfGWBRFawZ6jnEcFwR6u90yxpIk6bqubVt05N+iOAyDUsrXilJqjAnD8OXlRQjh6EIAePb9U1mWeZ7P4+4OpZQQwlpbFMU4jufzec1yQRhjhBCLG/J0NGAQTqeTS7n4UUQfLOBnjAGAuS0hREq5ZkUDQJqmSqllIbbWTk9EGIac8zVz8fX1FQCMMegP/AcuugAb9fF4xPzrug4AdrvdahQPh0PbtgDQ9/20KKV0p0gp1Vrv9/s4jhljjLFpq3fxvcaIf4UHxQfFB8X/lGLTNFEUBUHg3rF/KYCiKCrLcn2KeHBprZVSbdt6/WM+yF2v1yzLiqJommZl7TIH5zzPc18rrfVklWUZIeSuyZJhbJqjtNYLNjYNY3hA3/2I9zCG2O12RVGkaeqrUOcaDYeJYRhWLhdU6YyxLMt8N9b3fRiG8xUhxDiOK1Msy9IYY63dbDaOo958pJ3Ps1gDjkrXL9DYL/I8r6rK/cZjkrY3Kzd+XbN1o4i+8crdvnG9XjEjJ8aOCfPkle9zf3hcygBgec3Vt7XWVUq7NB2l1HQdY61ljNV17dt00Gd1XRtjpJTGGMe+6KRdsiwzxkRRhJqtrus4jn3To6oqvGnhnCul3L/w7FglHufV7xWWb4U9hrEHxS9GkRBCP7FsClwdaZoiHyklIeQnOS/gtyVp97sAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["(2,3,)|B|(1,3,)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAACIAAAA9CAIAAABHpSzbAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACRElEQVRYw+2Ywa2jMBCGvVEKsF2C0wG4BEgFDiUAFQSXAHQA19xCDjlGEOWClBPQAS7B0MHuwRJi83YVk0ee3q6YQyAI+8Njj+cfA9d1wcgghD8/bRDCcZ+u667VZb/fg/msqqrhPo5jAMBajWCz2Wh2URSF7/uu6wZB8Ld3xr1BCPu+X036zCiK+r5njHHOsyzTbzgBUxSFlHK320VRxBh7mNTZMJxzzvlw3/d9URQzY7quAwAghNRf0zQJIU3TzIy5Xq8Y4/ETy7KEEDNjpJRSyvETQshDfMwzNx+//WF8M2AIIX3fqxkaqIyxmTG2bQMAwjAcu1E/qNf6TmOMxXFMKSWEpGk6LO6ZMWmaCiEcxzEMIwxD0zTfgkEI1XX92ma6Al9iC2bBfEdM13VBECCETNOcFEOrSQxKKee86zqMMaX0LZjj8QghVAlUCa62bd/itKZpVNdCCEKI/g49AeM4DiGEUloUxel0yvP8LU5DCFVVhTHebreWZekPZdoOrdKaZVlSSs65ECJJkvlHY9s2xjhJkizLwjBM01QfAw6Hw/l8firylfqWUo5lv+u6TxvebrfD4bAqy/J+v+sIqOF3kDWGYTxteLlcyrLUdZoKRlVFKD0NAPA8b+YlgBDK89z3fSVrCSHjImbOlWbbtn7YL4lgwSyY3+vpFwJoPQng+75+vfl6ImjbVqkA/XLwRadNEjTLSvsfMQ9nHYvTNE1H0HwW43leXdfDwdoyN/88BnzN4f2Pj4eYk+qjP9pDbsUY/wJEFscz1/Kv9QAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["(3,2,1,)|B|(3,)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAHsAAAA9CAIAAAACpIFZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC5klEQVR42u2cMbKiQBCGB9dAMyA0lHcCMDSUG6BHGD3B6BGE0ExTM03MoTzByA3kCKOh2W4wtRTlbu1jet5zq9r+Ey0Lv576aWZ0uoFxzllDruv+JH2dXNdt2ss57+oXIQQjfYOklPX7LMsYYx2d10FD/0bkeR7H8fV6BQ8CB6ElpGmszveuUYDFYlFVlc0QERAsIZ32h+rzqecf3/cBwXAQLCEd02Cj0chyasNBAEM6jPRakePkODlO+s+OK6UsQ+IggCGU4zSrkON/KgxDy6g4CDCIwzl3XTdNU8q+79Zyubzf7zSr0DxOjpPIcXKcRI6T4ySo43meR1HkOA64SIiDYAMxcHy73ZZludvt1ut1URSz2cx0lDgIthDdOtGm9UIpVb+fTCaMMdPmDRwEMEQIwTk3yHHP85r7CU+9L+9DsIQAV86qqmDXIzICANKFhSnLstlt9LYEAASS42maCiGaV9Z7EmAQ4xy/XC5FUeR5Dh4lDgIcst/vT6dT+2V6Mpk0V2qAcBAAkPP5vN/vDX4d6hhSSstRIiDAIPrXocGsMp1OGWNSynqh8H1ff/hWBFtIyxz/a4M559zoDCMg2EB0jlOd83WiOift1pLjJHKcHCeR4+Q4yc7x4/EYBIHjOKZ/0pARbCA/oijq9XpxHH966Ha77ff7QojBYLDZbPr9/ng8NgqGgwCGFEXxeDzMdrJqhWEI+BY+ghHEuM7ZVFVVuqIKFg4CAAJxfD6fr1arNhMRbgIMYub4crn0PG84HCZJAt7NQUCwgZg5nqaplFIp9fHxMZ/PAQPFQbCCwFZOvUdsU0nBQTCCWK2cukPD5q5IHAQAxMDx2+3WXKCZ+cMXcBBsIS1nlfV6HYZh3XU3HA4Ph4PR1YeDYAMxqywnSSKlDIJA38F4OByiKDLKCxwEewjVOV8nqnPSbi05TiLHsTieZZnzW5bdvaQneZ5Xe6uf6ekopZ7+L336WE9Sez3dBuf7/i/bho3IK5UaxgAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["B|(1,1,1,1,1,)"]},{"cell_type":"markdown","metadata":{},"source":["Tenga en cuenta que en Python `(2)` es el número `2` entre paréntesis,\npero `(2,)` es una tupla con un único componente (el `2`). La\ndiferencia es la coma \"`,`\" detrás del número. En el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se ha\nadoptado el mismo convenio de notación para poder distinguir entre\nnúmeros y vectores de $\\R[1]$.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"int"}],"source":["type( (2) )"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"tuple"}],"source":["type( (2,) )"]},{"cell_type":"markdown","metadata":{},"source":["## La transpuesta\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Usando las herramientas descritas más arriba disponemos de una forma\nde transponer $\\Mat{A}$: introducir como argumento de `Matrix()` la\nlista de las listas correspondientes a sus columnas (que es la forma\nde describir en [NAcAL](https://github.com/mbujosab/nacallib) una matriz fila a fila).\n\nSi la matriz es: $$\\Mat{D}=\\begin{bmatrix}1&1&9\\\\2&0&2\\end{bmatrix}$$\nentonces su transpuesta es:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHElEQVRo3u1aQW6jMBQ1UbaVgCOQG2C23UHVAxCO4HCC4CMYboCP0OYAlexdpK4CJ2jYdQu+wczCmshKZlobCqUj3iYIxfjl29/8934AQggosG371wxg27bKCiG0lh/7/R7MCafT6XJdFAUAYCWjuFHw8SMYY1EUnc/nfgwYYxBCy7I+fojKR0Z3bTRHmqZN0/SOU1mWQghKKeccY5wkSVVVmmMNiMoYZFlWFIXruj2IJkniOA4AAELIOeec649dmU4WBEHviEqWEr7vX2XMFxP9KjRNkySJ/vfX30W0rms1tWca0TzP9/u9uhPmGNGqqjjnjDGjUcYRbdt2IFGM8dPTk+moqZc+iiJCiNGif8PSb7db+Xq8pJHruvLmKER93+8xKsuyw+EAAFDPeYSQJlELIWTbdp7nYK7IskwIsQI/BAvRhehCdCH6uSAZopnkEzabjenJvTKd4OHhwUhC3BZ4Qog4jjHGz8/PoxCVgZTCup9mYoy1bbvdbvM8j+P4ylKYkWbCGGOML9dCCP2qdLpk6rpO1XcQQs/z6rqeHVHO+dWGCcNQ3yWYjmjbtlfqwPM8fcU86Tl6Gz/9pFzf39/f3d1NoJk8zxNCdF132aZN0+iYc4+Pj+/v76vj8fj6+jqNWgIAEELU3/ypJwcAeHl5OR6Pk2qmOI6LogiCwPM8SunlqJqXZgIAUEqlk+P7PiEEQjgi0d1ut9vt+hF1HEffZ1zKvIXoQnQh+j8SPZ/PURRZlgUhNBISapGv02caRLQsyzRNGWNvb2+u6yZJYuoal2VZ1zWllBDCOR+l2dB1XZqm0inebDaMMcdxDoeDLDU0MUWfSVqv6lu+h3iars+kxqBt2zAMhxTRoyx9FEW2bWOMgyCQmdQ0jaZZ/FeY9pkMqqfT6ZSmaRiGMpCU0iE2xIh9JplDMrH0vfdbTNRnAgAghFRF0cOGmKLPlOd5EAQ6Wudfe32KPlNVVYQQ6Xn0wHR9JtU8MsXAPpMZUdMMuNozQ7pZS5m3EP0JRIuisP6gxwk3BhzHuVCS/ySzbm3L3of5F+Kq+Hdd9zc6egmcBNkSogAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["Matrix( [ (D|1).lista, (D|2).lista, (D|3).lista ] )"]},{"cell_type":"markdown","metadata":{},"source":["Esto se puede automatizar con un bucle que recorra las filas de la\nmatriz (usando [list comprehension](https://ellibrodepython.com/list-comprehension-python)):\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHElEQVRo3u1aQW6jMBQ1UbaVgCOQG2C23UHVAxCO4HCC4CMYboCP0OYAlexdpK4CJ2jYdQu+wczCmshKZlobCqUj3iYIxfjl29/8934AQggosG371wxg27bKCiG0lh/7/R7MCafT6XJdFAUAYCWjuFHw8SMYY1EUnc/nfgwYYxBCy7I+fojKR0Z3bTRHmqZN0/SOU1mWQghKKeccY5wkSVVVmmMNiMoYZFlWFIXruj2IJkniOA4AAELIOeec649dmU4WBEHviEqWEr7vX2XMFxP9KjRNkySJ/vfX30W0rms1tWca0TzP9/u9uhPmGNGqqjjnjDGjUcYRbdt2IFGM8dPTk+moqZc+iiJCiNGif8PSb7db+Xq8pJHruvLmKER93+8xKsuyw+EAAFDPeYSQJlELIWTbdp7nYK7IskwIsQI/BAvRhehCdCH6uSAZopnkEzabjenJvTKd4OHhwUhC3BZ4Qog4jjHGz8/PoxCVgZTCup9mYoy1bbvdbvM8j+P4ylKYkWbCGGOML9dCCP2qdLpk6rpO1XcQQs/z6rqeHVHO+dWGCcNQ3yWYjmjbtlfqwPM8fcU86Tl6Gz/9pFzf39/f3d1NoJk8zxNCdF132aZN0+iYc4+Pj+/v76vj8fj6+jqNWgIAEELU3/ypJwcAeHl5OR6Pk2qmOI6LogiCwPM8SunlqJqXZgIAUEqlk+P7PiEEQjgi0d1ut9vt+hF1HEffZ1zKvIXoQnQh+j8SPZ/PURRZlgUhNBISapGv02caRLQsyzRNGWNvb2+u6yZJYuoal2VZ1zWllBDCOR+l2dB1XZqm0inebDaMMcdxDoeDLDU0MUWfSVqv6lu+h3iars+kxqBt2zAMhxTRoyx9FEW2bWOMgyCQmdQ0jaZZ/FeY9pkMqqfT6ZSmaRiGMpCU0iE2xIh9JplDMrH0vfdbTNRnAgAghFRF0cOGmKLPlOd5EAQ6Wudfe32KPlNVVYQQ6Xn0wHR9JtU8MsXAPpMZUdMMuNozQ7pZS5m3EP0JRIuisP6gxwk3BhzHuVCS/ySzbm3L3of5F+Kq+Hdd9zc6egmcBNkSogAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["B = Matrix ( [ (D|j).lista for j in range(1,D.n+1) ] )\nB"]},{"cell_type":"markdown","metadata":{},"source":["Si estudia el código de [NAcAL](https://github.com/mbujosab/nacallib) verá que la transposición está\nprogramada con dicho procedimiento.\n\nHe buscado un símbolo en Python para indicar la operación de la\n*transposición* al estilo del símbolo $^\\T$ usado en el\ncurso. Desgraciadamente Python tiene una fuerte limitación en cuanto a\nla disponibilidad de símbolos, así que nos vemos obligados a emplear\nel símbolo (`~`) para la transposición (en lugar del símbolo\n$^\\T$). Además dicho símbolo ha de situarse *delante* de la matriz que\nse quiere transponer (créame, no he encontrado ninguna alternativa\nmejor). Consecuentemente en [NAcAL](https://github.com/mbujosab/nacallib) la transpuesta $\\MatT{D}$ se escribe\nasí: `~D`\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHElEQVRo3u1aQW6jMBQ1UbaVgCOQG2C23UHVAxCO4HCC4CMYboCP0OYAlexdpK4CJ2jYdQu+wczCmshKZlobCqUj3iYIxfjl29/8934AQggosG371wxg27bKCiG0lh/7/R7MCafT6XJdFAUAYCWjuFHw8SMYY1EUnc/nfgwYYxBCy7I+fojKR0Z3bTRHmqZN0/SOU1mWQghKKeccY5wkSVVVmmMNiMoYZFlWFIXruj2IJkniOA4AAELIOeec649dmU4WBEHviEqWEr7vX2XMFxP9KjRNkySJ/vfX30W0rms1tWca0TzP9/u9uhPmGNGqqjjnjDGjUcYRbdt2IFGM8dPTk+moqZc+iiJCiNGif8PSb7db+Xq8pJHruvLmKER93+8xKsuyw+EAAFDPeYSQJlELIWTbdp7nYK7IskwIsQI/BAvRhehCdCH6uSAZopnkEzabjenJvTKd4OHhwUhC3BZ4Qog4jjHGz8/PoxCVgZTCup9mYoy1bbvdbvM8j+P4ylKYkWbCGGOML9dCCP2qdLpk6rpO1XcQQs/z6rqeHVHO+dWGCcNQ3yWYjmjbtlfqwPM8fcU86Tl6Gz/9pFzf39/f3d1NoJk8zxNCdF132aZN0+iYc4+Pj+/v76vj8fj6+jqNWgIAEELU3/ypJwcAeHl5OR6Pk2qmOI6LogiCwPM8SunlqJqXZgIAUEqlk+P7PiEEQjgi0d1ut9vt+hF1HEffZ1zKvIXoQnQh+j8SPZ/PURRZlgUhNBISapGv02caRLQsyzRNGWNvb2+u6yZJYuoal2VZ1zWllBDCOR+l2dB1XZqm0inebDaMMcdxDoeDLDU0MUWfSVqv6lu+h3iars+kxqBt2zAMhxTRoyx9FEW2bWOMgyCQmdQ0jaZZ/FeY9pkMqqfT6ZSmaRiGMpCU0iE2xIh9JplDMrH0vfdbTNRnAgAghFRF0cOGmKLPlOd5EAQ6Wudfe32KPlNVVYQQ6Xn0wHR9JtU8MsXAPpMZUdMMuNozQ7pZS5m3EP0JRIuisP6gxwk3BhzHuVCS/ySzbm3L3of5F+Kq+Hdd9zc6egmcBNkSogAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["~D"]},{"cell_type":"markdown","metadata":{},"source":["Verifiquemos que al trasponer cambian de lado los índices de los\nelementos de la matriz:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["1|(D)|3"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["3|(~D)|1"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"True"}],"source":["3|(~D) == D|3"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"True"}],"source":["(~D)|2 == 2|D"]},{"cell_type":"markdown","metadata":{},"source":["## Definición de algunas matrices especiales\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Matriz nula\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Con `M0(m,n)` generamos una matriz nula de orden $m$ por $n$. Por ejemplo\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAEwAAAAoCAIAAADbkIswAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABb0lEQVRo3u2Y0Y2DMAyGfdUN4DBC2CCsABtkhoyAGAFWgQ2AEUI3gBECG/QeolZV78VpH1y19lNA4o+/yInJD8YYvEbbtpePiLIsb1B1Xf9ordd1hQ+NYRjmeT4lfTNNU57nXdc9PSuLQgJk13XHcVhrm6YZhuGJ/NgUtNaUKh/Hsa7rOLbWImLqPmFR6PveOUeFNMaEEOLYew8A4zgmpciiECFJ5brvOwAopeJjURRa6/P5TC8zXgUS5DzPWZbdvynLcts2eoq8CiTIEEII4WEnIyI9RV4F6un6f80e1vWdFU7EE/g4jrgrbvNZa+n58SqQIKuqAoC2be+LJ89zeorMCsQWEtes73vvvXPOe5/a5VgU0vpkCMEYAwDGmNT+xqgQIX+J1aKUWpbllX9lRoUTfEEIpEAKpEAKJD+keDzi8YjHIx6PeDzi8YjHIx6PeDzi8YjHIx6PXLUE8psgEVFd45W77FtFVVWRyDmHiH9SOj2fZbAruAAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["M0(2,3)"]},{"cell_type":"markdown","metadata":{},"source":["### Matriz identidad\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Con `I(m)` generamos una matriz identidad de orden $m$. Por ejemplo\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADYAAAAoCAIAAAA6+55hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABl0lEQVRYw+2Y0W2DMBCGr1EHMBnh2MAwAmQCKyMwguURDCMwQtgg9gzZIIzgeIP0AQVF9KHGhyhq+Z8A6dDns7H8AZxz9orW+rmBFEUxIkkpPxDxfr/DJtN1nbX2MKvGGFOWJWVIxpg0Teu6Di85zHr16XSy1kbz1XXtvRdCKKW6rgstQ8TwVSKlBADnXMQKu16vUsrhWgjBGPux5HK5VFU1b6LzPI9uoVJKKTVee++NMUtONDGPxwMAkiQZbrMsQ8Tb7bYhRGvt8Xh8f1IURd/3G0J0zjnnJt8AY2xDiADwvWeTvi6DOOlEeBDRez+syJFYCLGhLpZlCQBa6/fRpmkaUvu52kQLIZqmyfMcEdu2HTeg5RE553GIbdv2fX8+nznnWussywIL/9wx4leyI+6IO+L/RYwwD7r9zECMNA+6/QS6S4R50O1nnrtEmwfdfoIQKeax0udCMY+VECnmsd6mE20eKyFSzINuP0GIFPOgJ1QMos1jPcRo86Dbz+4u+2FsRwxHZIwlr1DOqsv+ABp4qqpijH0BPcR1n8QHIgsAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["I(2)"]},{"cell_type":"markdown","metadata":{},"source":["### Matriz opuesta\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Con con el signo `-` delante de una matriz, obtenemos su opuesta\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAFEAAAA9CAIAAABa2xJAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADXklEQVRo3u2bTW6jMBTHTdRtJeAIdU+AOQJ0203CEQwnAB8Bc4Nk253DCQpSLwCcoLDr1hxhZuFOhFJp6rg2rRr/N42iJs+/2O/lfTgAYwwWcl33z++S67pLQIzxjfiT5zn4peq67vS4qioAwEbsLVxIi6WmaeI4HsfRNNKnhpZoYs9vTCwiy7JpmlagVTO00b4U8akLZ/F93xyzsqGNoQWFYbiOuyoY2oDrk2W+DsnG7Xmez7KXj35VFMXXF7SCIVlmz/OOx6P8+3LO1Ra0giHrz5b5iwqCYB2GSw2ZYk7TtO97z/NMAysYsmfbMltmy2yZLfNVMjdNgxByHGedltg4jgiheZ6/jXm/3w/DcDgcyrJs2zZJEtPMDw8PwzDor6vklSSJyIoQQm3btm1rFJhSijEmhHzn2V6mgUEQnLXUtZ9qznkURT8ohk3TZPRsE0IopaZ6BmoahmE5RtAeOP7fUfmGfaaU5nluqLSa57lt2ziOFV5rqh/W933btk3TKMDIGEqSpCxLtc/LeXp6ur29fXx81LsPcRwzxszVz8sd5pwPwxAEQRRF/3fvl5eXt7e396Gk3vFnFEVd1602bRUhg3P+6X/mef4+i9Wr3W4HAOi67hS9fN8XT/4QaWYuiqKuawDAMhXBGJtmjqJI3o80x21K6ccTtd/vjQIjhC4KlraussyW2TJbZst8lczH4xFC6DiO6VRkHMc4jh3HQQjJT62N9MMAAM/Pz2VZ1nWtUNPLG8qyrGma19dX3/eTJJHMTPTn22manvJQxpjyhYNPS84syxhjAAAIYdM0nufVdS1TURvvDV3arJKUKGCWk2f5i2IGmdM0JYSotTIktaxk5JuBRpiLovA87+7ubrvdmusZuK5LCOn7XkTNaZokQ6YRZkpp13Wc8/v7+5N7mzjeYRhGUbTb7Rhjh8NBc/18aT8MQigidlVVGGOEkHZDInSdXiL/vWjqfphQkiRVVV0UuhUMYYwv6gfqP9vLWZm4XG30ji+lNAzDi67a32hfAWNMxJV5ngkhRruffd+XZSk/kTTCvN1uu66DEIpvTsaYvCcriBBy0XTOCDOEUMHtlaUwM7B1lWW2zL+Ouaoq559WuJW6sjzPO9GJ39E5nPOzPEnXT+l+iM4uLvm+/xdSNlH8cgTPWgAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["-A"]},{"cell_type":"markdown","metadata":{},"source":["### Matriz diagonal\n\n"]},{"cell_type":"markdown","metadata":{},"source":["El método `.diag()` de `Vector()` devuelve una matriz diagonal\ncuadrada cuya diagonal principal contiene las componentes del vector\nempleando.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAGUAAABRCAIAAABE9f8jAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEr0lEQVR42u1csW6rOhh2cjM0QyUTKVLVEbplg4ztRqJuXdw8gvMGlLUbMHYqPAJ5gSqwdSV5giRbp0iEMdu9g89BiF412OYQnONvaYPgy58P/Nv+fmOAMQYFQAj/lfgNCGFRHIxxj/yxLAtIfEOSJPn/nucBALrkmdIK+JkiiqLJZLLdbpmDiKJI0zTXddvPUJSFPGtd2u+YTqdxHDMH6rpulmUIIdu2F4uFeAykMVZv0qTlpmnKkA6Wy2X+XQghhlx5RgbLsjDG1HqFYcisl67r+YUkNSyXS1EYiF7dxnLn4XAAACiKQj4ahqGq6nq9FouhOb3iOB4MBsUjpmnudjuxGJrTK03TNE2LR1RVLQ1w2s/QnF4AgO93snS328/QZXhM2MRSVTXLMpJB8tARQmIxNPd8TSYTAIDjOEXpTw6P28bQa7I9IoQ8zxuPx6qqBkFg27Z4DLTjr/f39+IQhgppmuq6DgDQdZ123HR2BjL+6mCMIYQ8c7G/BC8vL1mWdaUQVJB6Sb2kXlIvqZfUS6IGvTi98yiKDMPodDo8RYAzVgDo9OL0zn3fX6/XQRA4jhPH8Ww2Y/ipwvj3/N55cRZlmiYA4JL9e37vvPT1DL9WGP+e3/n+7tvRtsc2+PdV/Rx+57uE9XpdrB43E0Nz/j2/813KuJZl5fe5sRj4GXr7/b56CyodofXOCVarVRzHURSxtWLOGJgZsizb7/ddAMDxeDx5Nr/zncO2bVL0pUUr/PvhcHhzc3PyPH7nO+dxHIe2JdYVAw8DhHA4HFL49/ze+fPzMwAgSZI80w8GA3KwsRia8+85vfP/XWKGMZb+/WVC+vfSz5F6Sb3ERu/h4eH6+loKcRKPj49fX1+9z89PCOHT05NU5Gd8fHzI/vHP56+zr55fLBaapnU6HaqJQV0x/GMYxtXVFZlYVfFh+v0+hPD19XU0Go1GIwYnh4fB9/1+v29Z1u3t7dvbW7/fv7+/byaGOI6Px2Oj/j0/Q8lZplqJJZ5/X28FAELIcLkw/n29FYD5fG7bdsU0UmMMVfVqg3eez3sVRVFVlcGtFMm/r6sC4LpukiRpmt7d3c3nc6pra/DvS++L/oA2rJ4nyIcCnudhjA3DaCAGjPGv8WoVgdvgnZdAypdU7wPU4N8HQRAEwcnz2rD2PU/YxSdlPB43E8MvoaqPJ8h9CMMwSRKMcZIktH05J4PjOLqu57ayqqphGDYWA/X46+yr5zebDUKI9IwIIYYbxu/fU9SHFEVZrVY8k1VOBk3T2BYw1RiD9CekXlIvqZfUS+olIfVqXC+Bdr/5Gdvt1jCM4gSrfr2E3/2mgOl0yuJWiuXf11UBcByHzLqrv1gtpH9fSwVgs9lYlkUup9VLJP++rgqAbdvMuU8k/76WCoDv+9UtZXa9LmP3m8PhEMcxbVWJsX+8gN1vZrMZwxLhIqr6X7nznaeP3W5HtUtkGxhI8sqfVtKiTdOkSGfV+0cAQPFMhBBtx9QGhhxs/WOj6+/bwMALgfz7WhiKz5dpmpfs39fCkMMwDIZ3vqQ/IfWSekm9RNbL87zOb7C9mXipUBQlV4bsT975PiljeAv0UlHagWUwGPwHbmDz0YLHCzcAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["v = Vector( [1,2,3,4] )\nv.diag()"]},{"cell_type":"markdown","metadata":{},"source":["A su vez, el método `.diag()` de `Matrix()` devuelve un `Vector()` con\nlas componentes de la diagonal principal de la matriz.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAB0AAAA9CAIAAADeXfVuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADaUlEQVRYw7VY7bGqMBDdydwCgiWEDsAScm8FGUugBIcSoANtgWsFmhK4VACUENIB78c6AcmHqLzzS5NwOGw2u9mF0Y+6rgOzSimllG+WgAfn87mqKgiCc+6d8ylljC0Gr9cr57xtWzNSFEWWZU4GNy9j7Hq9zhkZY6hjzjuOY5IkVVWt4i2KgnNujx+PRwBY2LSua0rpc16lFAA4dwzNbe8V5/x4PD7hzbLMKTbAW9e1PQ4rxQZ4UfJiA2FhQdsN1vDaUw+8lNKiKN7gHccRAObPwsrHxnE8nU6BBUKIJEkc562qKsZYFEXwFg6HQ9M0Xdfh34n3crkIIeBd4Jm+XC4PvLfb7cl5BwCAJEl8U1EUMcamkDI/S+NnyLLMkNz1Nk1DKYXPgF+Dn37nlVKayPI2kKFpmjsvbuJ+v9+EF481MW/4XG8cxw96+77fhBdJkG3iDfjQq6YYhmHixa/YxCX6vp9416DrujRNh2HwLdjtdkj4haFkpfP+/PyERSCPUooAgNYa3xNGWZZ4op5Ca00CH7WwgFLqaQBBfXe9Rn8AeZ6XZfn09cijtSaY08I4n88rLWBA5vqdGIZBSvn9/b2G7gU7HA6HPM9fdeQvIypsXPyBRuOcc86d5kZ9wzB8mWjvI8V4ivj7+9vv91LKcBqMoogYj4MtgDy73Y68kR/X5Gyy5qQZpGk6N4sN3ABKKcGXr/Hid/z3v9iXUrqVXuRhjBGk31YvpZRsldkQJlVOvObK9rkd4jieeNdnowDMvYnMk134mdvtFsdxOAr3fY8q1+oty1JrLYTI8/z399eXU6Z7k6kAfGUQ1oWmkhJCOAs2XAYAp9NpqgM4577VWFSa6z9ev+bV6LygNAUpMdFEa+2MwjhoYk2apowxvIQtgLUn3m/I/BYvpbRXSykXsYlz7twMKaW5lBKjglLq5MU+w+ISZuetruu01ia9knke8zUcbHV2dMWKxVwwJl4hhNbaPnWMsYXp+763Kycp5UPIX9SbdmWOteR8XAjh7ALMGxGwcBSnt6G6qqrqus6yzC7M7Qcd9bztm0opPOtJkjg9lzG2KKxf6D8ETuOT/gNKo5SGO1x288HuArzQ3/GJXdXfcfajAvCtdPO2bRtonMy/zPa5EC92MZy+vHAS3yyEbReYbds20Fz5B5RV+3SM+rNGAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["Matrix( ( [1,1,1],[2,4,8], [3,9,0] ) ).diag()"]},{"cell_type":"markdown","metadata":{},"source":["## Métodos que indican la forma de la matriz\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Disponemos de algunos métodos que nos indican si es cierto que una\nmatriz es cuadrada o si es simétrica\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"False"}],"source":["A.es_cuadrada()"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"True"}],"source":["I(6).es_simetrica()"]}],"metadata":{"org":[null,null],"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lección 01 - Sección 1.4\n", + "========================\n", + "\n", + "**Author:** Marcos Bujosa\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Lea primero la Sección 1.4 de la Lección 1 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)* \n", + "\n", + "([https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from nacal import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\n", + "\\newcommand{\\R}[1][{}]{{\\mathbb{R}}^{#1}}\n", + "\\newcommand{\\Z}[1][{}]{{\\mathbb{Z}}^{#1}}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\getItem}{\\pmb{\\mid}}\n", + "\\newcommand{\\getitemR}[1]{\\getItem{#1}}\n", + "\\newcommand{\\getitemL}[1]{{#1}\\getItem}\n", + "\\newcommand{\\elemR}[2]{{#1}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRP}[2]{{\\big(#1\\big)}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRPE}[2]{\\big({#1}^{\\phantom{\\T}}_{\\getitemR{#2}}\\big)}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\Vect}[2][{}]{{\\boldsymbol{#2}}_{#1}}\n", + "\\newcommand{\\eleVR}[2] {\\elemR {\\Vect{#1}}{#2}}\t % con subindices\n", + "\\newcommand{\\eleVRP}[2] {\\elemRP {\\Vect{#1}}{#2}} % con subindices y paréntesis interior\n", + "\\newcommand{\\eleVRPE}[2]{\\elemRPE{\\Vect{#1}}{#2}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\VectC}[2][{}] {\\elemR {\\Mat{#2}}{#1}} % con subindices\n", + "\\newcommand{\\VectCP}[2][{}] {\\elemRP {\\Mat{#2}}{#1}} % con subindices y paréntesis\n", + "\\newcommand{\\VectCPE}[2][{}]{\\elemRPE{\\Mat{#2}}{#1}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\mat}[1]{\\mathbf{#1}}\n", + "\\newcommand{\\Mat} [2][{}]{{\\mat{#2}}_{#1}} \n", + "\\newcommand{\\T}{\\intercal}\n", + "\\newcommand{\\MatT}[2][{}]{{\\mat{#2}}^{\\T}_{#1}}\n", + "\\newcommand{\\VectCC}[2][{}] {\\elemRR {\\Mat{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectCCC}[2][{}] {\\elemRRR{\\Mat{#2}}{#1}} % con texto \"col\"\n", + "%SELECCIÓNA de FILAS y COlUMNAS DE UNA MATRIZ TRANSPUESTA PARA GENERAR UN VECTOR DE Rn\n", + "\\newcommand{\\VectTC}[2][{}] {\\elemR{\\MatT{#2}\\!}{#1}} % con subindices\n", + "\\newcommand{\\VectTCC}[2][{}] {\\elemRR{ \\MatT{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectTCCC}[2][{}] {\\elemRRR{\\MatT{#2}}{#1}} % con texto \"col\"\n", + "\\newcommand{\\dotprod}[2][{}] {\\Vect{#1}\\cdot\\Vect{#2}}\n", + "$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Matrices de $\\R[m\\times n]$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Definiendo matrices\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se dice que al encerrar entre corchetes una lista de\n", + "vectores (con el mismo número de componentes) *expresamos* la matriz\n", + "cuyas columnas son los vectores de la citada lista. Aquí hemos\n", + "implementado dicha operación poniendo una lista o tupla de vectores\n", + "con el mismo número de componentes como argumento de la clase\n", + "`Matrix()`.\n", + "\n", + "Así, si en el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se dice que al encerrar la lista de vectores $(1,\n", + "2,)$, $(1, 0,)$, y $(9, 2,)$ entre corchetes expresamos la matriz de\n", + "$\\R[2\\times 3]$\n", + "\n", + "$$\\begin{bmatrix}1&1&9\\\\2&0&2\\end{bmatrix}$$\n", + "\n", + "Con [NAcAL](https://github.com/mbujosab/nacallib) lograremos lo mismo poniendo la lista de vectores como\n", + "argumento de la clase `Matrix( )`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matrix([Vector([1, 2]), Vector([1, 0]), Vector([9, 2])])\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEwAAAAoCAIAAADbkIswAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACiklEQVRo3u1Z7a2rMAw11R0g7QhhA2CEZAPaEVAniDJC6AS9jAAbkIwATAAZAdig70d0EeqT3k3C+2qFfyFUW+fUjrFPIIoi9GVCiMdbGCFkIcUYCzDGwzDAm1pVVUqpg5OPlJJSuuVP2RhhGAZKaRAEcRxXVWXrhjG2KYC6rjHGxqXve48S2h7hfr8TQh6PR9/3hBAAqOv61y5lWWZZZkvSGGMMAMZx9D4t3hHGcQSAsiyXNwihLMtsSLqVa5IkGw+Jd4SmaQAgiiKPUIfXaiRKqeV5HEdTtO9DklKKEOKct21r2qbW+nw+2/h+vFAam6a5Xq+EEJPAoijesFzDMJRSTtNk6Fmm0ZmkaXFbbHsEAMiyTAhh//sXazwAkOd5kiRhGNq7fLwWw7ZthRDTNDl5OWdy/aXysy0ROOecc1evfUB/F9tJ7iR3kjvJneQ/JimljOM4CIItIo2UMgzDPM+93T0w2JL8/Pzsuq4oCiGEUupyufiNnfM8p2nKOXeQobZjsNR41qqMWec8hCzGmHlO0xQh5CHzuGJw03iOx+N6+EQIbRk7OefzPEspnSJ4Y/BpPFpr13I1e8OCMo5jjHHXdd69xAmDz6rVdZ3RzuxNKXU6ndZvCCFaa2+SThgOHs2DMbauHEtB4EkTwBh71LwfBrdMtm2rlHI9S0uBPb15yu2fw3BwbR5lWXogwxjP87ze6LXWaZr67c2uGBxIUkqFEK6FuvgCwFp9GsfRSafZgsG2XI3+1zTNctxPp5O9KAgAaZrebrckSTDGRVF4qBj+GGyGAXNL82TfXrb8/Ck36k4URd/eRv0uDGYY2DWefdXaSe4k/z5JhNDxy7x32f/NKKWGUZZlCKEf/F/W9B+c2rwAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{ccc}1&1&9\\\\2&0&2\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{ccc}1&1&9\\\\2&0&2\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 2]), Vector([1, 0]), Vector([9, 2])])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = Vector( [1,2] )\n", + "b = Vector( [1,0] )\n", + "c = Vector( [9,2] )\n", + "D = Matrix( [a,b,c] )\n", + "print(D) # representación de la matriz en consola\n", + "D # representación de la matriz en Jupyter Notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "También podemos instanciar una matriz mediante una lista (o tupla) de\n", + "listas o tuplas. En este caso, estaremos describiendo la matriz fila a\n", + "fila:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADEUlEQVRo3u2aTW6jMBSATZRtJeAIdU8Qs+3OVD1AwhEMJyAcAecGcASHE9Q+AnCCwq5b+wgzC3cilNHM4MekaiveJlEUnj/5/fi9ZxBjDE3E9/0fn0B8359SMca29iPPc/SZpG3by/fT6YQQ2thdxBP5uwopZRzHwzCAIeZomPLY3d06LZBl2TiOSxDBGjbz/2q3wTpJGIaAxZZo2LguFkXRQv+DadigLyIr6Ao6V7TWC5eEaVhN/xlAd7vdwlUBGpxB0zTtui4IAjAlTMPqoyvoCrqCfgtQKSUhxPO8hW3TMAyEEGPMTUCrqur7vq7rsiyVUkmSgEGfnp76vnd6xKG5S5LEHieEEKWUUgpGyTlnjBVFcSvTTw+93W53NSOYb3StNaX0g4JpHEeY6Yui4JwDHtzCQPu+nw4z5nv51QTptjvKOc/z3LX8McYopeI4hoE672jXdUopKaXrg0mSlGUJThTbx8fHu7s7JycTQsAWu0S6bZsopZTSf7rs8/Pz29vb+yhv5jSQUtq27fKpovVvrfWcP+d5/j52nCmHwwEh1LbtJYzCMLQ/foDMBT0ej03TIISmeZ4xBgallDqF42Z+pP9ulKqqYJSEENdwXMu8FXQFXUG/Bej5fMYYe54HzvPDMMRx7HkeIeR8Pt+qZ0IIvby8lGXZNA2g/q2qKssyKeXr62sYhkmSzE/7Dmd9mqaX41QI4To4NsZkWWYrL4yxlDIIgqZpZlao8FbEte+xpcx0Mup04QQBTdO0KApYrT6taZy6PDfQ4/EYBMH9/f1+v3dFjOPY9/2iKLqus3E5juP8oHQD5Zy3bau1fnh4uLisk/WjKKKUHg4HIURd1zc0PcbYNnd1Xdu9cXpWSmmMsYhOOQ4YTLapB985McZcG72NU36ZRj2C3hNzzqMo+ucbDMA8yjkXQlhbG2NsLwq4G+m6rixLpzmeG+h+v2/bFmNsE6EQghAC65hdx2NuoBhjp6P5TwKYXKxl3gr6dUBPp5P3S5bcxv5HCYLggmTfJPO01lcHjGsqvoVcXbmEYfgTeleMITfjXacAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}1&1\\\\2&4\\\\3&9\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}1&1\\\\2&4\\\\3&9\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 2, 3]), Vector([1, 4, 9])])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = Matrix( ( [1,1], [2,4], [3,9] ) )\n", + "A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Esta segunda forma de construir matrices (*fila a fila* en lugar de\n", + "*columna a columna*) resulta cómoda en la práctica (pero no es la\n", + "descrita por la notación del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Atributo: `.lista`\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[NAcAL](https://github.com/mbujosab/nacallib) almacena la lista ordenada de vectores (*de columnas*) de cada\n", + "`Matrix()` en su atributo `.lista`.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Vector([1, 2, 3]), Vector([1, 4, 9])]\n" + ] + } + ], + "source": [ + "print( A.lista )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Orden de la matriz. Atributos: `.m` y `.n`\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El atributo `.m` nos indica el número de filas de la matriz y el\n", + "atributo `.n` su número de columnas. Así, el orden de $\\Mat{A}$ es\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "2\n" + ] + } + ], + "source": [ + "print( A.m )\n", + "print( A.n )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Método: `.sis()`\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Se puede expresar una matriz en forma de `Sistema()` genérico con el\n", + "método `.sis()`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 2\\\\ 3\\end{pmatrix};& \\begin{pmatrix}1\\\\ 4\\\\ 9\\end{pmatrix};\\end{bmatrix}$

" + ], + "text/latex": [ + "$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 2\\\\ 3\\end{pmatrix};& \\begin{pmatrix}1\\\\ 4\\\\ 9\\end{pmatrix};\\end{bmatrix}$" + ], + "text/plain": [ + "Sistema([Vector([1, 2, 3]); Vector([1, 4, 9]);])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.sis()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Seleccionando filas, columnas y componentes.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Obtengamos el vector correspondiente a la *j*-ésima columna de\n", + "$\\Mat{A}$ (donde $j=2$)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAAA9CAIAAADeXfVuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADTUlEQVRYw7VY7ZGqMBS9y2wBgRJiB0AJcSvIUAKzFTiWgB1IC6wVICUgFURLCHTA+3GdECGJUXnnlxI4Obm5yf2A0Y62bR2jUkoppW00AAvKsqyqCpxgjFnHbEoppbOHdV0zxoQQ6klRFHmeGxnMvJTSuq51Rkop6tB5x3GM47iqKi/eoigYY8vnu90OAGY2bduWEPKcV0oJAMYdQ3Mv94oxttvtnvDmeW4U6+Bt23b5HDzFOnhR8mwDYWbBpRv48C6HHngJIUVRvME7jiMA6N+C52fjOB6PR8cLnPM4jg3nraoqSmkYhvAWsizruu56veLfifd0OnHO4V3gmT6dTg+85/P5yXkHAIA4jm1DYRhSSqcrRT9L42fI81yR3PV2XUcIgc+Aq8Gl33mbplE3y9tAhq7r7ry4iWmarsKLxzpQM3yud7PZPOi93W6r8CIJsk28Dh961RR930+8uIpVXOJ2u028Prher0mS9H1veyGKIiT8xqvE03l/fn7cIpBHShkAwDAMOI8bh8MBT9RTDMMQOBY1s4CU8ukFgvruepV+B/b7/eFweDo98gzDEGBMc6MsS08LKAS6fiP6vm+aZrvd+tC9YIcsy/b7/auO/K1EuY2LP9BojDHGmNHcqK/v+29129tI8T5FXC6XNE2bpnGHwTAMA+VxsAaQJ4qi4I346BOzA5+TppAkiW6WJXADCCEBTu7jxe/473+xLyFkLb3IQykNkH5dvYSQYK3IhlChcuJVKdvndthsNhOvfzRyQOVNgR7s3Pf6drv9+vpKkuTv789hB1Tppbcsy9/f3/P5LISIoijLMuPpeMibVAVgK4PQZHrxRwgxlpl1XQPA8Xic8sk0TTGvWgKf61mLLZPDDApjYKBuk2EYHLdw0zT6phsDKNae9/xGr+2MlS4unBCCdV1VVcbCdWZMeGq1cRyFEIwxQgjnnHNunF4IoSsDPYu3CdH3kHNuHCqKQq/CYLabszbAskizvYBBz1pvLitzXZGtGl36Isy+tJnC1mewfWio5/VOib5MR+lMKZ2NvtB/sAE3xtV/QMnKVT1hXMoL/R2bWK/+jrEf5YDtTbAdMEfjRF+Z7ZiAo4vh8GXcCb2R4cuLtnOMCiEczZV/yUe2H34VDvIAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\begin{pmatrix}1\\\\ 4\\\\ 9\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}1\\\\ 4\\\\ 9\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([1, 4, 9])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A|2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "y el vector correspondiente a la *i*-ésima fila de $\\Mat{A}$ (donde\n", + "$i=1$)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADMAAAAUCAIAAACvapLzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABhElEQVRIx81W4a3CIBi8MAEyAm6AHQE3aByBEeoKjRMYR6gbEEYoTqCMgN2A9wMf7Ws1El+Tev/40lyP4zv4EAa4Xq9hIXjvRxWCX5zP58vlgoWwWq32+/39fu9LyS2l1Ei11lpKOZeRb9m892VZpuVDmRBi6KfWmnMepf9fWT5bXddN0/TKtNZTw0IIVVUBmHbAZ8hk45z3fXY4HMqynJ59URQzdlImG+fcWguAADDGbLdbfAeklKfTCQCx1qYm+AYIIdq2BUCcc5TS71HGGHPOASDee8bY9yijlHZdB4B0XffKM+/9jL/MZEs2kaQxB9baGJxZ8JQtbYAwxvK9UUoVRfHnDfkHnrKlMyRCiNhxr5IyXMY8N03zce7esjnnHjdfCIFSmn/RK6Xqup5rxJiyVVUVKwTAbrczxuRnR0o5YxJHbMaY+CCReN7R2ExsNpsZMztku91ujLH1et1PQUqptm3fmp/zTT6mbEMZSNXhbLQItNbDnsNw1D4ejwtO26Mo/AAMSeNebKYNmQAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}1,& 1,\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}1,& 1,\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([1, 1])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1|A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos seleccionar la componente situada en la tercera fila y segunda \n", + "columna de $\\Mat{A}$ del siguiente modo:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "3|A|2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cuando seleccionamos un elemento de una matriz obtenemos un número.\n", + "(recuerde que Python implementa distintos tipos de números: tipo `int`\n", + "es un número entero, tipo `float` es un número con decimales y tipo\n", + "`Fraction` es un número racionales decir, un entero dividido por otro\n", + "entero, y el su módulo [Sympy](https://www.sympy.org/es/index.html) implementa muchos números irracionales).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(1|A|1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cuando seleccionamos una fila o una columna de una matriz obtenemos un\n", + "`Vector()`\n", + "\n", + "Consecuentemente tenemos varias formas de seleccionar un elemento de\n", + "una `Matrix()` (véase la Sección \"****1.4.4 Extensión de la notación\n", + "vectorial y reglas de reescritura****\" del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf))\n", + "\n", + "Por ejemplo, para obtener la componente situada en la tercera fila y\n", + "segunda columna de $\\Mat{A}$ podemos seguir estas tres vías (entre\n", + "otras):\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "3|A|2" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(A|2)|3" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2|(3|A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### El orden de ejecución de las operaciones y la necesidad de poner paréntesis.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En Python, la [operación booleana](https://docs.python.org/3/reference/expressions.html#boolean-operations) `3|2` da como resultado `3`. Sabiendo\n", + "que Python ejecuta las operaciones de izquierda a derecha ¿Cuál de las\n", + "dos últimas alternativas no funcionará bien si quitamos los\n", + "paréntesis?\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Definiendo una matriz a partir de las componentes de otra\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(*Esta parte corresponde al Apéndice **3.B** de la Lección 3 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)*)\n", + "\n", + "Cuando seleccionamos varios componentes con una tupla obtenemos una \n", + "submatriz. Veámoslo\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAE4AAAA9CAIAAACMfsglAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEQElEQVRo3u1bQXKjOhAVLh9A6AhyTmDpCMLbbDBHkH0C0BFkbgBb78CLLFNAZZMt5gRjjiC4Qf5C9Sl+puqPJFcmmQy9scsVtfSkVqv7dQdwzsFMIIRv30IghHNcnPO1/ojjGHwvadt2+p6mKQBgpU9yM5P/V1HXdRAEt9vNeRG/R8MckT7htdUEx+Ox7/t7lviJGlbmf6o3Ups6Qshhss/VsLKdjFJ65y36LA0r8NfIAnWB+ndBVUrdOeVnaVhOdYGqZbvd3jnrp2jwOOcQwtPp9I3PM0mScRwXA16gLlAXqAvUBeoXg1rXNSHE87w7yaHb7UYIGYbBYewwDEmS+L5PCLlerx8CNcuyruvyPJdSNk0TRZEz1N1u13WdG05KqRBiGAaEkBUdYQE1iqIkSQghSZIwxtzWCgA4nU7vyGdzKYoCQuj7PgBAM0zmxmUBVU8whaDvOGVz01VKMcacLaLrOg2v73uM8S/Z3HvdUt/3bgYshLgn3o6iCGNMKa3r+nK5VFX14R646zoppe2oLMucTXeyrLZtEUK73Y4xZn6kwIrynl+2OI7n9mzoUZqmKcvyzjdDSskYU0oJIfq+z7Lso071er02TXM4HBxsTwhxJ84gCBBCWZaVZSmlzPPcHCo4n89PT0/mFS69ow6lMTYTnVhvt9s4js016IrTfHYIIef8lwNfXl7O5/P69fUVQvj4+Gi4qVJKW9Odwo+5aVBKm6axUqXZM6XUNAohZEJHPD8/j+NocVf3+z0AoG3bqZ6HENI//h7RAUOaptpo9d6ZXyVTqEmSXC4XAEDTNNOPnHNnqIwxW+vwfb+qquPxSAjBGGOM50XUhVtauKUF6gJ1gbpAXaB+WahlWW42G8/znCOH2+0WBIHneYQQ5yynruvNZmMbC9hxSwCAqqqklJfLxSHqyLLseDzWdf3jxw+EUBRF88DYPIUcxzEMQyGE3WbprjvbNMU2KXl7e9PBelEUtnnJXKqqmuYNw9CwIzKOY865O+Fiyw/peHWeiDi0HwkhpqRXCDGOo7lduEA9HA5CiCAIHMbOswVbPk3zxlOSoIN+c+LSDqrmmjHGYRg6EAgQQiGE5qnLsuz73sq9NU3zrtmOMWbeb7iydQlt2yqlHh4eHDiXtm0ppYyx/X5fFEWe51bDlVLvelswxuYcrbUBay8fx3Ge51Z1BD22ruthGDRIhxfr5zM0b6p0dEuaBHbuQOKcO3CrGONxHOeVnr7vza/SytYrzHfXrYPzdDpRSq0o3Om2AwDme6SUMtezNl9fURTaYodhEEIUReHAp12vVymlWw0OABCGYZqmlFKMcZ7nVmzr2nyOtm03m41+GIuiIIQ4rHX+MDpInue6hrLdbqWUVmtYm3uU+4l58F+K1EF837f1hUtms0BdoP6BUNM09f4Vt3rMFxTf9ydQ+r+nvJ8DS4fH/QvKux4JhNA/MZpf1ToQNnQAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{ccc}1&1&1\\\\2&4&8\\\\3&9&0\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{ccc}1&1&1\\\\2&4&8\\\\3&9&0\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 2, 3]), Vector([1, 4, 9]), Vector([1, 8, 0])])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B = Matrix( ( [1,1,1], [2,4,8], [3,9,0] ) )\n", + "B" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADXUlEQVRo3u1azY2rMBA20RYALsFsBUAJZCsglACpAFyCoQO45gYc9rgCay+R9gR0EEowdPDewXoI5f3ZJki7K+YShOLxl/GMPd/ngCAIwMJ0Xf/xCUzX9SWqIAie+EcUReAzWdu283OapgCAA4+iubB/u2ia5ng83m43ZRAiHpZ4eHSfpCY4n8/DMKyBqOzhIP5VHgaeJBBChcnWeDjITuY4zsr8U/NwAF/EdqA7UFFjjK2cUs3DvvSfAahlWStnVfAgDTQMw67rDMNQRqnmYc/RHegOdAf6LYA2TWPbtqZpyrRpHMc4jg3DsG2767pNgGZZ1vd9nueEEEqp7/sKKB3HwRiP4wghlGr1Jcid7/v8OLFtm1JKKZUFWhSFruvcSRRFlNLb7fZf3isd0eWhZ1nWnUYgaH3f85wZhgEhJIhSvZiGYVBYet/3EUKO4zRNU1VVXdebV33f94QQ2VGGYbRtCyF8eXlxXVc8nHI5OluSJFEUqTVQhBDXdRljGONhGLIs2yqiXddRSsMwVBMgIIRZlpVlSQjJ81wcKLhcLq+vr+I6G4+HgkDHda/lWF3XgyD478D39/fL5XK4Xq8fHx/iISGEqC0653RLZgchFGn1397erterRI6eTicAQNu2syYIIeQvxZWcNE35cjdNw7v9BxdTHMdVVQEAlvt8EATiQA3DqOv6fD7bto0QQggtRdCHAU2SJEmSlY3FGmF1b/N2oDvQHei3AFqWpWmamqaJ7/N/JF6macruynKcCQBQ1zUhpKoqtf0/SZJpmjzPwxiXZblJPzqfy3EcF0WhIBw3TcMYi+P4dDoNwyB1AqtTEdd1ZUdhjDHG8/M0Tbw12QpoGIYY4+PxKMuVlwyRtyZ9328ClGsHCCHP82R/HqX07lrRdV3xe9GDbCm0bcsYe35+lmUjjLG7tEYIiXNu6aXnO0sURXmeS2kyPLPv3ohf3SoWEyf1UoWPEJqmiWfqjFs8hQ6y1bCMjZR4xItvqQYwxh6vlCRJMu9H4zhijIuikGV5nuelaVqWZdd1fOt4/IbveV7btqZpct5YFIVt27IJk+c514IsyyKESHl4Eq8hqRPvb/xOtv72Nm8H+qWApmmq/bI1t7EPNMMwZkj8n2Ta70ewlL66kd0JKhDCn1zFrqCPoPnhAAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}1&1\\\\2&8\\\\3&0\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}1&1\\\\2&8\\\\3&0\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 2, 3]), Vector([1, 8, 0])])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B|(1,3,)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEwAAAAoCAIAAADbkIswAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADeklEQVRo3u1Z0Y2kOBA1owsACMFMBEAI9kRAE4K7I6AJwUwE0CEAEQAhuIkACMGQwd1HaSzUu6uxPb27pxHvAyGksnnlcrnqGYVh6H6Ac/7vtwAhRJHKsszBGM/zjL4pmqYZhuFF36Dv+yiKHMehlH7FL/M8R1G0rquF7bqu1+vV87woiu73u64ZxlgnAMqy5JwLITjnCKEwDK1jCWOMEJJSmhpKKTHGYEgIQQh9alLXNWNMl+T+nzQn+Ck45+AmC5JlWSrndl2HEJqmSYekbrh6nqfeIVfZBaqUEnxkh3EcYacsy4IxDoJAx+rFYqZlWdI0tTDM87woCmuGaZpijOM47vu+bVtYzN9FchxHCDkjVFXFGPtKqvQ8Twjh+/7b2xshRHMZEUL/mM5UFEWWZfvo1cyKwzA0TfPFI4FzTgiRUuZ5vixLVVXPzK4AIQQhxO50FkKoQewSDyFElSsQSmVZPjO7qmksfg4MFcIwhOyVZZmRfx9c47ouY0yHpEG4Uko556aBqgoJ9X6/3+M4HobBaCgpJTyVle/74K+n7cnT6YQQEkKAR2EO+PhnEMcxQuj9/R32IXjtfD4/jeT1em3bFiE0DIP6yBizJkkIMY0Iz/O6rrtcLlEUYYwxxsrdn+Io0L8LDpIHyYPkQfIg+ZdJNk0TBIHjONY1wDzPlFLHcaIosu5I+r4PgsCoL9UlCcVU13Wc87ZtLXrfqqoul0vf99M0+b6fpum+oNVv9LZtS5Ikz3MDNxl1IQDTBgIkIoRQXddGPcQDuq5T8yZJ4rquppBlKX+Y6jRQZ+6bBii4TdWTPM/V+7ZtmrFgTPJ8Pud5Tim18M6+vjdVtECnVWU9lOnjOD6ZJKi6GOMkSUzpUUpd183zHBThpmmWZTFKYMMw+L7/0Mosy/JkkkVRCCGklK+vr5qN3EPExnFMCDmdTnVd3243I3MpJWzsfTbRVEbNwhVyd5Zlt9vNQKX/sO37fl1XoGdxDv24bg9r+8xiAETXB7/qgzFmoWhijLdt29+gLMuiuXFejPb93qMW6RFiPo5jfcl0v6tBktwHsO44Ouck51xdQsCty/7EM1LcdA63XwHWra5rIQRjTGmcz5Ekp2lKkgTyapIkOqN/KpxaQEqp5Myu63RMgOSh8Ryt1kHyIPnnSbqu633gKzek/ytQSoERY8x13f8AqH2GJY9A3ksAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{ccc}2&4&8\\\\3&9&0\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{ccc}2&4&8\\\\3&9&0\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([2, 3]), Vector([4, 9]), Vector([8, 0])])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(2,3,)|B" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADYAAAAoCAIAAAA6+55hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACw0lEQVRYw+1Y7Y2jMBAdVluATQkmFRhKMFsBmxKcVEAowaSChBKACgwleKlglxKcdHD3Y7QIRXcXG3G61V7eD4QsDTzPl+cZOOfkE0qpH18AQoiJUp7nAWPs4+MDviSapun7/sndoOu6OI6DIEjTdNmuLpfL4XCglMZx/Pb25mjlSvF8Pg/DUFWVUqrv++12u4BfkiRFUVwulzAMkyRxtWSMueSHtXaeKwDgm2Gn04lzju9aawB4f3//s0ld11JKVy9SSqd3rLAFgR6GATNkHEfGWBRFawZ6jnEcFwR6u90yxpIk6bqubVt05N+iOAyDUsrXilJqjAnD8OXlRQjh6EIAePb9U1mWeZ7P4+4OpZQQwlpbFMU4jufzec1yQRhjhBCLG/J0NGAQTqeTS7n4UUQfLOBnjAGAuS0hREq5ZkUDQJqmSqllIbbWTk9EGIac8zVz8fX1FQCMMegP/AcuugAb9fF4xPzrug4AdrvdahQPh0PbtgDQ9/20KKV0p0gp1Vrv9/s4jhljjLFpq3fxvcaIf4UHxQfFB8X/lGLTNFEUBUHg3rF/KYCiKCrLcn2KeHBprZVSbdt6/WM+yF2v1yzLiqJommZl7TIH5zzPc18rrfVklWUZIeSuyZJhbJqjtNYLNjYNY3hA3/2I9zCG2O12RVGkaeqrUOcaDYeJYRhWLhdU6YyxLMt8N9b3fRiG8xUhxDiOK1Msy9IYY63dbDaOo958pJ3Ps1gDjkrXL9DYL/I8r6rK/cZjkrY3Kzd+XbN1o4i+8crdvnG9XjEjJ8aOCfPkle9zf3hcygBgec3Vt7XWVUq7NB2l1HQdY61ljNV17dt00Gd1XRtjpJTGGMe+6KRdsiwzxkRRhJqtrus4jn3To6oqvGnhnCul3L/w7FglHufV7xWWb4U9hrEHxS9GkRBCP7FsClwdaZoiHyklIeQnOS/gtyVp97sAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}2&8\\\\3&0\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}2&8\\\\3&0\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([2, 3]), Vector([8, 0])])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(2,3,)|B|(1,3,)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACIAAAA9CAIAAABHpSzbAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACRElEQVRYw+2Ywa2jMBCGvVEKsF2C0wG4BEgFDiUAFQSXAHQA19xCDjlGEOWClBPQAS7B0MHuwRJi83YVk0ee3q6YQyAI+8Njj+cfA9d1wcgghD8/bRDCcZ+u667VZb/fg/msqqrhPo5jAMBajWCz2Wh2URSF7/uu6wZB8Ld3xr1BCPu+X036zCiK+r5njHHOsyzTbzgBUxSFlHK320VRxBh7mNTZMJxzzvlw3/d9URQzY7quAwAghNRf0zQJIU3TzIy5Xq8Y4/ETy7KEEDNjpJRSyvETQshDfMwzNx+//WF8M2AIIX3fqxkaqIyxmTG2bQMAwjAcu1E/qNf6TmOMxXFMKSWEpGk6LO6ZMWmaCiEcxzEMIwxD0zTfgkEI1XX92ma6Al9iC2bBfEdM13VBECCETNOcFEOrSQxKKee86zqMMaX0LZjj8QghVAlUCa62bd/itKZpVNdCCEKI/g49AeM4DiGEUloUxel0yvP8LU5DCFVVhTHebreWZekPZdoOrdKaZVlSSs65ECJJkvlHY9s2xjhJkizLwjBM01QfAw6Hw/l8firylfqWUo5lv+u6TxvebrfD4bAqy/J+v+sIqOF3kDWGYTxteLlcyrLUdZoKRlVFKD0NAPA8b+YlgBDK89z3fSVrCSHjImbOlWbbtn7YL4lgwSyY3+vpFwJoPQng+75+vfl6ImjbVqkA/XLwRadNEjTLSvsfMQ9nHYvTNE1H0HwW43leXdfDwdoyN/88BnzN4f2Pj4eYk+qjP9pDbsUY/wJEFscz1/Kv9QAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{c}0\\\\8\\\\1\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{c}0\\\\8\\\\1\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([0, 8, 1])])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(3,2,1,)|B|(3,)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHsAAAA9CAIAAAACpIFZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC5klEQVR42u2cMbKiQBCGB9dAMyA0lHcCMDSUG6BHGD3B6BGE0ExTM03MoTzByA3kCKOh2W4wtRTlbu1jet5zq9r+Ey0Lv576aWZ0uoFxzllDruv+JH2dXNdt2ss57+oXIQQjfYOklPX7LMsYYx2d10FD/0bkeR7H8fV6BQ8CB6ElpGmszveuUYDFYlFVlc0QERAsIZ32h+rzqecf3/cBwXAQLCEd02Cj0chyasNBAEM6jPRakePkODlO+s+OK6UsQ+IggCGU4zSrkON/KgxDy6g4CDCIwzl3XTdNU8q+79Zyubzf7zSr0DxOjpPIcXKcRI6T4ySo43meR1HkOA64SIiDYAMxcHy73ZZludvt1ut1URSz2cx0lDgIthDdOtGm9UIpVb+fTCaMMdPmDRwEMEQIwTk3yHHP85r7CU+9L+9DsIQAV86qqmDXIzICANKFhSnLstlt9LYEAASS42maCiGaV9Z7EmAQ4xy/XC5FUeR5Dh4lDgIcst/vT6dT+2V6Mpk0V2qAcBAAkPP5vN/vDX4d6hhSSstRIiDAIPrXocGsMp1OGWNSynqh8H1ff/hWBFtIyxz/a4M559zoDCMg2EB0jlOd83WiOift1pLjJHKcHCeR4+Q4yc7x4/EYBIHjOKZ/0pARbCA/oijq9XpxHH966Ha77ff7QojBYLDZbPr9/ng8NgqGgwCGFEXxeDzMdrJqhWEI+BY+ghHEuM7ZVFVVuqIKFg4CAAJxfD6fr1arNhMRbgIMYub4crn0PG84HCZJAt7NQUCwgZg5nqaplFIp9fHxMZ/PAQPFQbCCwFZOvUdsU0nBQTCCWK2cukPD5q5IHAQAxMDx2+3WXKCZ+cMXcBBsIS1nlfV6HYZh3XU3HA4Ph4PR1YeDYAMxqywnSSKlDIJA38F4OByiKDLKCxwEewjVOV8nqnPSbi05TiLHsTieZZnzW5bdvaQneZ5Xe6uf6ekopZ7+L336WE9Sez3dBuf7/i/bho3IK5UaxgAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{ccccc}1&1&1&1&1\\\\2&2&2&2&2\\\\3&3&3&3&3\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{ccccc}1&1&1&1&1\\\\2&2&2&2&2\\\\3&3&3&3&3\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 2, 3]), Vector([1, 2, 3]), Vector([1, 2, 3]), Vector([1, 2, 3]), Vector([1, 2, 3])])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B|(1,1,1,1,1,)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tenga en cuenta que en Python `(2)` es el número `2` entre paréntesis,\n", + "pero `(2,)` es una tupla con un único componente (el `2`). La\n", + "diferencia es la coma \"`,`\" detrás del número. En el [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf) se ha\n", + "adoptado el mismo convenio de notación para poder distinguir entre\n", + "números y vectores de $\\R[1]$.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type( (2) )" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tuple" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type( (2,) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## La transpuesta\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Usando las herramientas descritas más arriba disponemos de una forma\n", + "de transponer $\\Mat{A}$: introducir como argumento de `Matrix()` la\n", + "lista de las listas correspondientes a sus columnas (que es la forma\n", + "de describir en [NAcAL](https://github.com/mbujosab/nacallib) una matriz fila a fila).\n", + "\n", + "Si la matriz es: $$\\Mat{D}=\\begin{bmatrix}1&1&9\\\\2&0&2\\end{bmatrix}$$\n", + "entonces su transpuesta es:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHElEQVRo3u1aQW6jMBQ1UbaVgCOQG2C23UHVAxCO4HCC4CMYboCP0OYAlexdpK4CJ2jYdQu+wczCmshKZlobCqUj3iYIxfjl29/8934AQggosG371wxg27bKCiG0lh/7/R7MCafT6XJdFAUAYCWjuFHw8SMYY1EUnc/nfgwYYxBCy7I+fojKR0Z3bTRHmqZN0/SOU1mWQghKKeccY5wkSVVVmmMNiMoYZFlWFIXruj2IJkniOA4AAELIOeec649dmU4WBEHviEqWEr7vX2XMFxP9KjRNkySJ/vfX30W0rms1tWca0TzP9/u9uhPmGNGqqjjnjDGjUcYRbdt2IFGM8dPTk+moqZc+iiJCiNGif8PSb7db+Xq8pJHruvLmKER93+8xKsuyw+EAAFDPeYSQJlELIWTbdp7nYK7IskwIsQI/BAvRhehCdCH6uSAZopnkEzabjenJvTKd4OHhwUhC3BZ4Qog4jjHGz8/PoxCVgZTCup9mYoy1bbvdbvM8j+P4ylKYkWbCGGOML9dCCP2qdLpk6rpO1XcQQs/z6rqeHVHO+dWGCcNQ3yWYjmjbtlfqwPM8fcU86Tl6Gz/9pFzf39/f3d1NoJk8zxNCdF132aZN0+iYc4+Pj+/v76vj8fj6+jqNWgIAEELU3/ypJwcAeHl5OR6Pk2qmOI6LogiCwPM8SunlqJqXZgIAUEqlk+P7PiEEQjgi0d1ut9vt+hF1HEffZ1zKvIXoQnQh+j8SPZ/PURRZlgUhNBISapGv02caRLQsyzRNGWNvb2+u6yZJYuoal2VZ1zWllBDCOR+l2dB1XZqm0inebDaMMcdxDoeDLDU0MUWfSVqv6lu+h3iars+kxqBt2zAMhxTRoyx9FEW2bWOMgyCQmdQ0jaZZ/FeY9pkMqqfT6ZSmaRiGMpCU0iE2xIh9JplDMrH0vfdbTNRnAgAghFRF0cOGmKLPlOd5EAQ6Wudfe32KPlNVVYQQ6Xn0wHR9JtU8MsXAPpMZUdMMuNozQ7pZS5m3EP0JRIuisP6gxwk3BhzHuVCS/ySzbm3L3of5F+Kq+Hdd9zc6egmcBNkSogAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}1&2\\\\1&0\\\\9&2\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}1&2\\\\1&0\\\\9&2\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 9]), Vector([2, 0, 2])])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Matrix( [ (D|1).lista, (D|2).lista, (D|3).lista ] )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Esto se puede automatizar con un bucle que recorra las filas de la\n", + "matriz (usando [list comprehension](https://ellibrodepython.com/list-comprehension-python)):\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHElEQVRo3u1aQW6jMBQ1UbaVgCOQG2C23UHVAxCO4HCC4CMYboCP0OYAlexdpK4CJ2jYdQu+wczCmshKZlobCqUj3iYIxfjl29/8934AQggosG371wxg27bKCiG0lh/7/R7MCafT6XJdFAUAYCWjuFHw8SMYY1EUnc/nfgwYYxBCy7I+fojKR0Z3bTRHmqZN0/SOU1mWQghKKeccY5wkSVVVmmMNiMoYZFlWFIXruj2IJkniOA4AAELIOeec649dmU4WBEHviEqWEr7vX2XMFxP9KjRNkySJ/vfX30W0rms1tWca0TzP9/u9uhPmGNGqqjjnjDGjUcYRbdt2IFGM8dPTk+moqZc+iiJCiNGif8PSb7db+Xq8pJHruvLmKER93+8xKsuyw+EAAFDPeYSQJlELIWTbdp7nYK7IskwIsQI/BAvRhehCdCH6uSAZopnkEzabjenJvTKd4OHhwUhC3BZ4Qog4jjHGz8/PoxCVgZTCup9mYoy1bbvdbvM8j+P4ylKYkWbCGGOML9dCCP2qdLpk6rpO1XcQQs/z6rqeHVHO+dWGCcNQ3yWYjmjbtlfqwPM8fcU86Tl6Gz/9pFzf39/f3d1NoJk8zxNCdF132aZN0+iYc4+Pj+/v76vj8fj6+jqNWgIAEELU3/ypJwcAeHl5OR6Pk2qmOI6LogiCwPM8SunlqJqXZgIAUEqlk+P7PiEEQjgi0d1ut9vt+hF1HEffZ1zKvIXoQnQh+j8SPZ/PURRZlgUhNBISapGv02caRLQsyzRNGWNvb2+u6yZJYuoal2VZ1zWllBDCOR+l2dB1XZqm0inebDaMMcdxDoeDLDU0MUWfSVqv6lu+h3iars+kxqBt2zAMhxTRoyx9FEW2bWOMgyCQmdQ0jaZZ/FeY9pkMqqfT6ZSmaRiGMpCU0iE2xIh9JplDMrH0vfdbTNRnAgAghFRF0cOGmKLPlOd5EAQ6Wudfe32KPlNVVYQQ6Xn0wHR9JtU8MsXAPpMZUdMMuNozQ7pZS5m3EP0JRIuisP6gxwk3BhzHuVCS/ySzbm3L3of5F+Kq+Hdd9zc6egmcBNkSogAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}1&2\\\\1&0\\\\9&2\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}1&2\\\\1&0\\\\9&2\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 9]), Vector([2, 0, 2])])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B = Matrix ( [ (D|j).lista for j in range(1,D.n+1) ] )\n", + "B" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si estudia el código de [NAcAL](https://github.com/mbujosab/nacallib) verá que la transposición está\n", + "programada con dicho procedimiento.\n", + "\n", + "He buscado un símbolo en Python para indicar la operación de la\n", + "*transposición* al estilo del símbolo $^\\T$ usado en el\n", + "curso. Desgraciadamente Python tiene una fuerte limitación en cuanto a\n", + "la disponibilidad de símbolos, así que nos vemos obligados a emplear\n", + "el símbolo (`~`) para la transposición (en lugar del símbolo\n", + "$^\\T$). Además dicho símbolo ha de situarse *delante* de la matriz que\n", + "se quiere transponer (créame, no he encontrado ninguna alternativa\n", + "mejor). Consecuentemente en [NAcAL](https://github.com/mbujosab/nacallib) la transpuesta $\\MatT{D}$ se escribe\n", + "así: `~D`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADgAAAA9CAIAAAB3KT36AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADHElEQVRo3u1aQW6jMBQ1UbaVgCOQG2C23UHVAxCO4HCC4CMYboCP0OYAlexdpK4CJ2jYdQu+wczCmshKZlobCqUj3iYIxfjl29/8934AQggosG371wxg27bKCiG0lh/7/R7MCafT6XJdFAUAYCWjuFHw8SMYY1EUnc/nfgwYYxBCy7I+fojKR0Z3bTRHmqZN0/SOU1mWQghKKeccY5wkSVVVmmMNiMoYZFlWFIXruj2IJkniOA4AAELIOeec649dmU4WBEHviEqWEr7vX2XMFxP9KjRNkySJ/vfX30W0rms1tWca0TzP9/u9uhPmGNGqqjjnjDGjUcYRbdt2IFGM8dPTk+moqZc+iiJCiNGif8PSb7db+Xq8pJHruvLmKER93+8xKsuyw+EAAFDPeYSQJlELIWTbdp7nYK7IskwIsQI/BAvRhehCdCH6uSAZopnkEzabjenJvTKd4OHhwUhC3BZ4Qog4jjHGz8/PoxCVgZTCup9mYoy1bbvdbvM8j+P4ylKYkWbCGGOML9dCCP2qdLpk6rpO1XcQQs/z6rqeHVHO+dWGCcNQ3yWYjmjbtlfqwPM8fcU86Tl6Gz/9pFzf39/f3d1NoJk8zxNCdF132aZN0+iYc4+Pj+/v76vj8fj6+jqNWgIAEELU3/ypJwcAeHl5OR6Pk2qmOI6LogiCwPM8SunlqJqXZgIAUEqlk+P7PiEEQjgi0d1ut9vt+hF1HEffZ1zKvIXoQnQh+j8SPZ/PURRZlgUhNBISapGv02caRLQsyzRNGWNvb2+u6yZJYuoal2VZ1zWllBDCOR+l2dB1XZqm0inebDaMMcdxDoeDLDU0MUWfSVqv6lu+h3iars+kxqBt2zAMhxTRoyx9FEW2bWOMgyCQmdQ0jaZZ/FeY9pkMqqfT6ZSmaRiGMpCU0iE2xIh9JplDMrH0vfdbTNRnAgAghFRF0cOGmKLPlOd5EAQ6Wudfe32KPlNVVYQQ6Xn0wHR9JtU8MsXAPpMZUdMMuNozQ7pZS5m3EP0JRIuisP6gxwk3BhzHuVCS/ySzbm3L3of5F+Kq+Hdd9zc6egmcBNkSogAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}1&2\\\\1&0\\\\9&2\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}1&2\\\\1&0\\\\9&2\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 9]), Vector([2, 0, 2])])" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "~D" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verifiquemos que al trasponer cambian de lado los índices de los\n", + "elementos de la matriz:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1|(D)|3" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "3|(~D)|1" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "3|(~D) == D|3" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(~D)|2 == 2|D" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definición de algunas matrices especiales\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matriz nula\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Con `M0(m,n)` generamos una matriz nula de orden $m$ por $n$. Por ejemplo\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEwAAAAoCAIAAADbkIswAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABb0lEQVRo3u2Y0Y2DMAyGfdUN4DBC2CCsABtkhoyAGAFWgQ2AEUI3gBECG/QeolZV78VpH1y19lNA4o+/yInJD8YYvEbbtpePiLIsb1B1Xf9ordd1hQ+NYRjmeT4lfTNNU57nXdc9PSuLQgJk13XHcVhrm6YZhuGJ/NgUtNaUKh/Hsa7rOLbWImLqPmFR6PveOUeFNMaEEOLYew8A4zgmpciiECFJ5brvOwAopeJjURRa6/P5TC8zXgUS5DzPWZbdvynLcts2eoq8CiTIEEII4WEnIyI9RV4F6un6f80e1vWdFU7EE/g4jrgrbvNZa+n58SqQIKuqAoC2be+LJ89zeorMCsQWEtes73vvvXPOe5/a5VgU0vpkCMEYAwDGmNT+xqgQIX+J1aKUWpbllX9lRoUTfEEIpEAKpEAKJD+keDzi8YjHIx6PeDzi8YjHIx6PeDzi8YjHIx6PXLUE8psgEVFd45W77FtFVVWRyDmHiH9SOj2fZbAruAAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{ccc}0&0&0\\\\0&0&0\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{ccc}0&0&0\\\\0&0&0\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([0, 0]), Vector([0, 0]), Vector([0, 0])])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M0(2,3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matriz identidad\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Con `I(m)` generamos una matriz identidad de orden $m$. Por ejemplo\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADYAAAAoCAIAAAA6+55hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABl0lEQVRYw+2Y0W2DMBCGr1EHMBnh2MAwAmQCKyMwguURDCMwQtgg9gzZIIzgeIP0AQVF9KHGhyhq+Z8A6dDns7H8AZxz9orW+rmBFEUxIkkpPxDxfr/DJtN1nbX2MKvGGFOWJWVIxpg0Teu6Di85zHr16XSy1kbz1XXtvRdCKKW6rgstQ8TwVSKlBADnXMQKu16vUsrhWgjBGPux5HK5VFU1b6LzPI9uoVJKKTVee++NMUtONDGPxwMAkiQZbrMsQ8Tb7bYhRGvt8Xh8f1IURd/3G0J0zjnnJt8AY2xDiADwvWeTvi6DOOlEeBDRez+syJFYCLGhLpZlCQBa6/fRpmkaUvu52kQLIZqmyfMcEdu2HTeg5RE553GIbdv2fX8+nznnWussywIL/9wx4leyI+6IO+L/RYwwD7r9zECMNA+6/QS6S4R50O1nnrtEmwfdfoIQKeax0udCMY+VECnmsd6mE20eKyFSzINuP0GIFPOgJ1QMos1jPcRo86Dbz+4u+2FsRwxHZIwlr1DOqsv+ABp4qqpijH0BPcR1n8QHIgsAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}1&0\\\\0&1\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}1&0\\\\0&1\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 0]), Vector([0, 1])])" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "I(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matriz opuesta\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Con con el signo `-` delante de una matriz, obtenemos su opuesta\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFEAAAA9CAIAAABa2xJAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADXklEQVRo3u2bTW6jMBTHTdRtJeAIdU+AOQJ0203CEQwnAB8Bc4Nk253DCQpSLwCcoLDr1hxhZuFOhFJp6rg2rRr/N42iJs+/2O/lfTgAYwwWcl33z++S67pLQIzxjfiT5zn4peq67vS4qioAwEbsLVxIi6WmaeI4HsfRNNKnhpZoYs9vTCwiy7JpmlagVTO00b4U8akLZ/F93xyzsqGNoQWFYbiOuyoY2oDrk2W+DsnG7Xmez7KXj35VFMXXF7SCIVlmz/OOx6P8+3LO1Ra0giHrz5b5iwqCYB2GSw2ZYk7TtO97z/NMAysYsmfbMltmy2yZLfNVMjdNgxByHGedltg4jgiheZ6/jXm/3w/DcDgcyrJs2zZJEtPMDw8PwzDor6vklSSJyIoQQm3btm1rFJhSijEmhHzn2V6mgUEQnLXUtZ9qznkURT8ohk3TZPRsE0IopaZ6BmoahmE5RtAeOP7fUfmGfaaU5nluqLSa57lt2ziOFV5rqh/W933btk3TKMDIGEqSpCxLtc/LeXp6ur29fXx81LsPcRwzxszVz8sd5pwPwxAEQRRF/3fvl5eXt7e396Gk3vFnFEVd1602bRUhg3P+6X/mef4+i9Wr3W4HAOi67hS9fN8XT/4QaWYuiqKuawDAMhXBGJtmjqJI3o80x21K6ccTtd/vjQIjhC4KlraussyW2TJbZst8lczH4xFC6DiO6VRkHMc4jh3HQQjJT62N9MMAAM/Pz2VZ1nWtUNPLG8qyrGma19dX3/eTJJHMTPTn22manvJQxpjyhYNPS84syxhjAAAIYdM0nufVdS1TURvvDV3arJKUKGCWk2f5i2IGmdM0JYSotTIktaxk5JuBRpiLovA87+7ubrvdmusZuK5LCOn7XkTNaZokQ6YRZkpp13Wc8/v7+5N7mzjeYRhGUbTb7Rhjh8NBc/18aT8MQigidlVVGGOEkHZDInSdXiL/vWjqfphQkiRVVV0UuhUMYYwv6gfqP9vLWZm4XG30ji+lNAzDi67a32hfAWNMxJV5ngkhRruffd+XZSk/kTTCvN1uu66DEIpvTsaYvCcriBBy0XTOCDOEUMHtlaUwM7B1lWW2zL+Ouaoq559WuJW6sjzPO9GJ39E5nPOzPEnXT+l+iM4uLvm+/xdSNlH8cgTPWgAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc}-1&-1\\\\-2&-4\\\\-3&-9\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc}-1&-1\\\\-2&-4\\\\-3&-9\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([-1, -2, -3]), Vector([-1, -4, -9])])" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "-A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matriz diagonal\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El método `.diag()` de `Vector()` devuelve una matriz diagonal\n", + "cuadrada cuya diagonal principal contiene las componentes del vector\n", + "empleando.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGUAAABRCAIAAABE9f8jAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEr0lEQVR42u1csW6rOhh2cjM0QyUTKVLVEbplg4ztRqJuXdw8gvMGlLUbMHYqPAJ5gSqwdSV5giRbp0iEMdu9g89BiF412OYQnONvaYPgy58P/Nv+fmOAMQYFQAj/lfgNCGFRHIxxj/yxLAtIfEOSJPn/nucBALrkmdIK+JkiiqLJZLLdbpmDiKJI0zTXddvPUJSFPGtd2u+YTqdxHDMH6rpulmUIIdu2F4uFeAykMVZv0qTlpmnKkA6Wy2X+XQghhlx5RgbLsjDG1HqFYcisl67r+YUkNSyXS1EYiF7dxnLn4XAAACiKQj4ahqGq6nq9FouhOb3iOB4MBsUjpmnudjuxGJrTK03TNE2LR1RVLQ1w2s/QnF4AgO93snS328/QZXhM2MRSVTXLMpJB8tARQmIxNPd8TSYTAIDjOEXpTw6P28bQa7I9IoQ8zxuPx6qqBkFg27Z4DLTjr/f39+IQhgppmuq6DgDQdZ123HR2BjL+6mCMIYQ8c7G/BC8vL1mWdaUQVJB6Sb2kXlIvqZfUS6IGvTi98yiKDMPodDo8RYAzVgDo9OL0zn3fX6/XQRA4jhPH8Ww2Y/ipwvj3/N55cRZlmiYA4JL9e37vvPT1DL9WGP+e3/n+7tvRtsc2+PdV/Rx+57uE9XpdrB43E0Nz/j2/813KuJZl5fe5sRj4GXr7/b56CyodofXOCVarVRzHURSxtWLOGJgZsizb7/ddAMDxeDx5Nr/zncO2bVL0pUUr/PvhcHhzc3PyPH7nO+dxHIe2JdYVAw8DhHA4HFL49/ze+fPzMwAgSZI80w8GA3KwsRia8+85vfP/XWKGMZb+/WVC+vfSz5F6Sb3ERu/h4eH6+loKcRKPj49fX1+9z89PCOHT05NU5Gd8fHzI/vHP56+zr55fLBaapnU6HaqJQV0x/GMYxtXVFZlYVfFh+v0+hPD19XU0Go1GIwYnh4fB9/1+v29Z1u3t7dvbW7/fv7+/byaGOI6Px2Oj/j0/Q8lZplqJJZ5/X28FAELIcLkw/n29FYD5fG7bdsU0UmMMVfVqg3eez3sVRVFVlcGtFMm/r6sC4LpukiRpmt7d3c3nc6pra/DvS++L/oA2rJ4nyIcCnudhjA3DaCAGjPGv8WoVgdvgnZdAypdU7wPU4N8HQRAEwcnz2rD2PU/YxSdlPB43E8MvoaqPJ8h9CMMwSRKMcZIktH05J4PjOLqu57ayqqphGDYWA/X46+yr5zebDUKI9IwIIYYbxu/fU9SHFEVZrVY8k1VOBk3T2BYw1RiD9CekXlIvqZfUS+olIfVqXC+Bdr/5Gdvt1jCM4gSrfr2E3/2mgOl0yuJWiuXf11UBcByHzLqrv1gtpH9fSwVgs9lYlkUup9VLJP++rgqAbdvMuU8k/76WCoDv+9UtZXa9LmP3m8PhEMcxbVWJsX+8gN1vZrMZwxLhIqr6X7nznaeP3W5HtUtkGxhI8sqfVtKiTdOkSGfV+0cAQPFMhBBtx9QGhhxs/WOj6+/bwMALgfz7WhiKz5dpmpfs39fCkMMwDIZ3vqQ/IfWSekm9RNbL87zOb7C9mXipUBQlV4bsT975PiljeAv0UlHagWUwGPwHbmDz0YLHCzcAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{cccc}1&0&0&0\\\\0&2&0&0\\\\0&0&3&0\\\\0&0&0&4\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cccc}1&0&0&0\\\\0&2&0&0\\\\0&0&3&0\\\\0&0&0&4\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 0, 0, 0]), Vector([0, 2, 0, 0]), Vector([0, 0, 3, 0]), Vector([0, 0, 0, 4])])" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = Vector( [1,2,3,4] )\n", + "v.diag()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A su vez, el método `.diag()` de `Matrix()` devuelve un `Vector()` con\n", + "las componentes de la diagonal principal de la matriz.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAAA9CAIAAADeXfVuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADaUlEQVRYw7VY7bGqMBDdydwCgiWEDsAScm8FGUugBIcSoANtgWsFmhK4VACUENIB78c6AcmHqLzzS5NwOGw2u9mF0Y+6rgOzSimllG+WgAfn87mqKgiCc+6d8ylljC0Gr9cr57xtWzNSFEWWZU4GNy9j7Hq9zhkZY6hjzjuOY5IkVVWt4i2KgnNujx+PRwBY2LSua0rpc16lFAA4dwzNbe8V5/x4PD7hzbLMKTbAW9e1PQ4rxQZ4UfJiA2FhQdsN1vDaUw+8lNKiKN7gHccRAObPwsrHxnE8nU6BBUKIJEkc562qKsZYFEXwFg6HQ9M0Xdfh34n3crkIIeBd4Jm+XC4PvLfb7cl5BwCAJEl8U1EUMcamkDI/S+NnyLLMkNz1Nk1DKYXPgF+Dn37nlVKayPI2kKFpmjsvbuJ+v9+EF481MW/4XG8cxw96+77fhBdJkG3iDfjQq6YYhmHixa/YxCX6vp9416DrujRNh2HwLdjtdkj4haFkpfP+/PyERSCPUooAgNYa3xNGWZZ4op5Ca00CH7WwgFLqaQBBfXe9Rn8AeZ6XZfn09cijtSaY08I4n88rLWBA5vqdGIZBSvn9/b2G7gU7HA6HPM9fdeQvIypsXPyBRuOcc86d5kZ9wzB8mWjvI8V4ivj7+9vv91LKcBqMoogYj4MtgDy73Y68kR/X5Gyy5qQZpGk6N4sN3ABKKcGXr/Hid/z3v9iXUrqVXuRhjBGk31YvpZRsldkQJlVOvObK9rkd4jieeNdnowDMvYnMk134mdvtFsdxOAr3fY8q1+oty1JrLYTI8/z399eXU6Z7k6kAfGUQ1oWmkhJCOAs2XAYAp9NpqgM4577VWFSa6z9ev+bV6LygNAUpMdFEa+2MwjhoYk2apowxvIQtgLUn3m/I/BYvpbRXSykXsYlz7twMKaW5lBKjglLq5MU+w+ISZuetruu01ia9knke8zUcbHV2dMWKxVwwJl4hhNbaPnWMsYXp+763Kycp5UPIX9SbdmWOteR8XAjh7ALMGxGwcBSnt6G6qqrqus6yzC7M7Qcd9bztm0opPOtJkjg9lzG2KKxf6D8ETuOT/gNKo5SGO1x288HuArzQ3/GJXdXfcfajAvCtdPO2bRtonMy/zPa5EC92MZy+vHAS3yyEbReYbds20Fz5B5RV+3SM+rNGAAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{pmatrix}1\\\\ 4\\\\ 0\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}1\\\\ 4\\\\ 0\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([1, 4, 0])" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Matrix( ( [1,1,1],[2,4,8], [3,9,0] ) ).diag()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Métodos que indican la forma de la matriz\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Disponemos de algunos métodos que nos indican si es cierto que una\n", + "matriz es cuadrada o si es simétrica\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.es_cuadrada()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "I(6).es_simetrica()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "org": [ + null, + null + ] + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/Lecc01-Secc1.5.ipynb b/Lecc01-Secc1.5.ipynb index 8a98db0..48143f9 100644 --- a/Lecc01-Secc1.5.ipynb +++ b/Lecc01-Secc1.5.ipynb @@ -1 +1,568 @@ -{"cells":[{"cell_type":"markdown","metadata":{},"source":"Lección 01 - Sección 1.5\n========================\n\n**Author:** Marcos Bujosa\n\n"},{"cell_type":"markdown","metadata":{},"source":["*Lea primero las Secciones 1.5 y 1.6 de la Lección 1 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)* \n\n([https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf))\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["from nacal import *"]},{"cell_type":"markdown","metadata":{},"source":["$\n\\newcommand{\\R}[1][{}]{{\\mathbb{R}}^{#1}}\n\\newcommand{\\Z}[1][{}]{{\\mathbb{Z}}^{#1}}\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\getItem}{\\pmb{\\mid}}\n\\newcommand{\\getitemR}[1]{\\getItem{#1}}\n\\newcommand{\\getitemL}[1]{{#1}\\getItem}\n\\newcommand{\\elemR}[2]{{#1}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n\\newcommand{\\elemRP}[2]{{\\big(#1\\big)}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n\\newcommand{\\elemRPE}[2]{\\big({#1}^{\\phantom{\\T}}_{\\getitemR{#2}}\\big)}\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\Vect}[2][{}]{{\\boldsymbol{#2}}_{#1}}\n\\newcommand{\\eleVR}[2] {\\elemR {\\Vect{#1}}{#2}}\t % con subindices\n\\newcommand{\\eleVRP}[2] {\\elemRP {\\Vect{#1}}{#2}} % con subindices y paréntesis interior\n\\newcommand{\\eleVRPE}[2]{\\elemRPE{\\Vect{#1}}{#2}} % con subindices y paréntesis exterior\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\VectC}[2][{}] {\\elemR {\\Mat{#2}}{#1}} % con subindices\n\\newcommand{\\VectCP}[2][{}] {\\elemRP {\\Mat{#2}}{#1}} % con subindices y paréntesis\n\\newcommand{\\VectCPE}[2][{}]{\\elemRPE{\\Mat{#2}}{#1}} % con subindices y paréntesis exterior\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n\\newcommand{\\mat}[1]{\\mathbf{#1}}\n\\newcommand{\\Mat} [2][{}]{{\\mat{#2}}_{#1}} \n\\newcommand{\\T}{\\intercal}\n\\newcommand{\\MatT}[2][{}]{{\\mat{#2}}^{\\T}_{#1}}\n\\newcommand{\\VectCC}[2][{}] {\\elemRR {\\Mat{#2}}{#1}} % con ()\n\\newcommand{\\VectCCC}[2][{}] {\\elemRRR{\\Mat{#2}}{#1}} % con texto \"col\"\n%SELECCIÓNA de FILAS y COlUMNAS DE UNA MATRIZ TRANSPUESTA PARA GENERAR UN VECTOR DE Rn\n\\newcommand{\\VectTC}[2][{}] {\\elemR{\\MatT{#2}\\!}{#1}} % con subindices\n\\newcommand{\\VectTCC}[2][{}] {\\elemRR{ \\MatT{#2}}{#1}} % con ()\n\\newcommand{\\VectTCCC}[2][{}] {\\elemRRR{\\MatT{#2}}{#1}} % con texto \"col\"\n\\newcommand{\\dotprod}[2][{}] {\\Vect{#1}\\cdot\\Vect{#2}}\n$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["## Suma de matrices y producto por un escalar\n\n"]},{"cell_type":"markdown","metadata":{},"source":["El comportamiento de la suma de matrices y el producto de una matriz\npor un escalar es similar al caso de los vectores.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAGAAAAAoCAIAAACO8WhuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADLUlEQVRo3u2Y4XGjMBCF5ZsUIFIC6gBUgtQBuATSgUwJsiuwKUFOBaAShCswKgHowPdjJzrGyRAnBjk34f3SGA/GT7tPy4eiKMJvklJefr0YY84QIcQqDMOmadCidzoej1rrP/fcomkazvlqtYrj+Hg8Xl2t65pzHgTBy8uLzz9WVVUcx6vVinN+tfdVVRFCttvtF24XhuH3SnG/3zPGLpfL+XxmjCGEyrIcXhVCnM9nzw2y3++llMYYKSVCKIoid0lKqZQSQiCElFKf3koplWXZNw1q2/bqZzDGWZYNH+UhCdK27TBNEEKwLstSCAHrJEkwxjca9M0WM8bA/rhPKKWus4wxaZo+JDiCIHBrOH9gned5nudu3fd9VVW33PCuDNJau3XbtrBjeZ6v1+ufkLLWWniSruuG3sVxHIbh6XSa0SDOOcY4z/O6riHwrbVQNVprjPFmsyGE+E/ooU6nEySR1vr5+Xl4iTFmrZ23gowxlFLGWJqmSqmiKOBcQwgVRcEYK8tyvV4XRXE4HPy7s91uhRBQNW3bQmgOjybXfeN6+vYTEEKgjbuuy7IMyqfve+iyOI4RQofDwRjz+vp6Zx3BT4x8gVK62WyGE4bWepgy7+vlqqamN8gpyzKoZIQQbIu1Fgz6UjGPR+/7OWtEeZ4rpYb10vd913Uuhqy1cN7PG9JQyZRSQogrK4zxMLyttRDe3sQ5l1IOjzPOOULI7SI0nXvmGSuormspJZwRw4La7XZCCEJI0zR93/vMaeh0YwwMItBKaZomSbLb7SilYRgWReGO/BknaZjEPny/FUKEYZgkiZvN/OjDroHxtW1bmNqiKBpO/J8OisvL6pwvq79Bi0GLQYtBi0GLQYtBi0H/NDESHpUPKH7PJD0rEn44FL+LSXtAwg+H4ncx6REu4daTIOERXIe8QPEZQ3oSJDwuD1B8RoMmQcIj0McPFJ/LoKmQ8HiXeYDiNwGzByLhEfmB4jcZ9EAkfItmheLTt9i0SPiWXp4Vij9N6870SHhUPqD4hIPitEj44VB8YdKfaGHSC+5YDFoM+gEGYYyDN02Isv5fAWMLgiDLMozxX0enuq2pJF1tAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["I(2)*100 - 4*Matrix( [ [1,5], [5,1] ] )"]},{"cell_type":"markdown","metadata":{},"source":["Verifique con algún ejemplo que el operador selector es lineal.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["## Igualdad de matrices\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Dos matrices son iguales si lo son los correspondientes sistemas.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["a = Vector( [1,2] )\nb = Vector( [1,0] )\nc = Vector( [9,2] )"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"True"}],"source":["A = Matrix( [a,b,c] )\nB = Matrix( [a,b,c] )\nA == B"]},{"cell_type":"markdown","metadata":{},"source":["## Jugando con la librería.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["la primera fila de $\\Mat{A}$ es la primera columna de su transpuesta\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAB0AAAA9CAIAAADeXfVuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADGUlEQVRYw7VY3dWqMBBcc24BCyXEDtASYgc5lIBWYA2UoC2gFYAlIBVES0A6yH1YD0RIYlS+eYPAZLI/SXZBu1HXtWe0bdu2bV2jDBw4Ho9FUYAXQgjnmEsp53z0sixLIYRSqn+T53mWZVYGOy/nvCxLk5FzTjpMXq11kiRFUQTx5nkuhJi+3+/3ADCyaV3XiPiet21bALB6jMw99ZUQYr/fv+HNsswq1sNb1/X0PQSK9fCS5JEDYWTBaRiE8E6HXngRMc/zL3i11gBg/guBv2mtD4eD5wMpZZIklnwrioJzHkURfIU0TZumud1u9Djwns9nKSV8C8rp8/n8wltV1Zt8BwCAJElcQ1EUcc6HLcXMJf0bsizrSZ56m6ZBRPgNtBpa+pP3crn0O8vXIIamaZ685MT1ej0LL6U162f4Xe9yuXzRe7/fZ+ElEmIbeD0x9KkpHo/HwEurmCUk7vf7wPsWVVVtNps+U62I45gI/9FW4g/eqqp2u13I9MTTti0DgK7raB4XSCblpP9LQtd17PF4BNouJMBp1qfeXv/vIJ6u6xidabODmfp/x1/ZYaw3xHshFiN9z3yj3X5GsVEUsT7iZmEknjiO2RfpH2Tf8EjYbrfX69VvMfIBIjL6bvYo/kv7IuJceomHc86Ifl69iMjmOtkI/VE58PoPgo/ssFwuB97A08iP/t7EzMPO88PtdttsNovFYrVanU4njx1IZZDe4/G42+2qqlJKxXGcpildwqZzD8dKXwG4yiAymVn8IaK1zCzLEgAOh8Nwn1yv13SvmoLemzuD66CjGxRdoll/2+66zrMLXy4X0+nWGzjVns/7jVnbWStdWjgiUl1XFIW1cB0ZE95aTWutlBJCIKKUUkppnV4pZSoD8xbvEmL6UEppHcrz3KzCYOTNURtgWqS5PhBCmBE1rjenlbmpyFWNTmMRRn+6TOHqM7h+tNTzZqfEXKandOacj0Y/6D+4QI7x9R9Ich+qgbAu5YP+jktsUH/H2o/ywPUluBLM0zgxV+ZKE/B0MTyxTJ4wGxmhvGQ7z6hSytNc+Q87M5sYBqOTJAAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["(~A)|1"]},{"cell_type":"markdown","metadata":{},"source":["Si además queremos que la representación de la primera fila sea en\nforma de fila, podemos hacerlo del siguiente modo:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAE4AAAAUCAIAAACs3ZzbAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACHElEQVRYw91X262jMBCdRVuAoQTowKEE0wFJCSgVEEogqQClBOiAUIJJBeASDB14Pybr6+UalL3xT3K+zGh05JkzD/NLKQV/MY5jFEXwEZimyfd90+LpU9M09/sdPgW+759Op2mavkxKKaXUMAxZlql/0bYtY2wYBuUCbtmGYWCMAQCltK5rq4+UMk1T/fkIlVIqpTSvFYYh5uL1y7llU0pVVcUYMwNu29bqWZalTgTgVb5LqpTK8xwAzBS8AldsUkoAMJUkhFjvjwjDEA8eAFwulzRNv5d7HMcOm8cVG+cc6/ZJ5jAM+75/jKWu65Ikea+p03WdPkspsYytYIxdr1cA8Pq+1430FkiShBBSFAVq1TSNEGK/36/5U0qxEH4LIQgh7yUp5/x4PDLGUEwUbQ1BEAghAMCTUgZB8F6hRlF0u92macIgNyQFAELIPM8A4M3zvKYqzjpXcMuGyLKsLMttHy2kp4N+Bn3fY4c4wYts5/M5jmPzJWsl/EpxXdeU0rVNvdiEOOJ/thvdsnHOCSELo5VQe3qUUuzatfFlfmJv1HX9Mx0cshVFURTFwmglFEI8Fi++Np5PLbaHcgS3bFbCPM/R4gHA4XAwN/I2CCEb+/p/4ZbNSth1Hb4FPZxj26tpgd1u5/BybtkWhOM4BkHwGF1ad875M8PAYbG5ZbMSmnGBtpq/dp+Btm3NvgXzZ7eqqo+JU0q5mE9/AN6cVbR7xax1AAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["Vector( (~A)|1, rpr='fila')"]},{"cell_type":"markdown","metadata":{},"source":["Siguiendo el método del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf), definamos una matriz cuya única fila es\nla primera fila de $\\Mat{A}$:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAEoAAAAUCAIAAAClNjyhAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRElEQVRYw+1Y0bFFMBRcd24BaqADlJB0EEowKjApgQ5QgnQQSqADUULowP3IzJ3394L38Rj7Zcw5O7Nn10mGU1VV3/cAkiSJ4xjXR13XX0VgjG13hNY6z/OX/VS6rqOUKqUOz/Ukg1KKUuo4ThiGQgirHhv3pJSe55n6aZoOzPI8Q1VVhJBt26ZpIoQAkFL+6t6OcOZ5DkBrfTgwhxm01gDatv2+cV03TdO/DGcURSc/+sMMwzAACIJgL9XrQivR7EMDrbWJ6B3kUUpd1+Wcj+MIQAgxz7PNMfa+inXDMGRZRggxpjVNc6tw+r7fdd2yLEaY5Q1khzyzvs7gPAOANE2LorAsvtJqAVCWZRRFvu9b1r8vpG0cx6IolmWxb9nn3s+T5xjOMHDOOef7ep4r9YXxyHvk/Vs4jDHzdLOfEeu6BkHwAY17lm6sjXkYAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["~Matrix( [ 1|A ] )"]},{"cell_type":"markdown","metadata":{},"source":["Fíjese que es más sencillo usando el operador selector y una tupla con\nun único elemento\n\n(*Recuerde que si el argumento empleado con el selector es un índice obtenemos un vector, pero cuando seleccionamos una tupla de índices obtenemos una matriz*.)\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAEoAAAAUCAIAAAClNjyhAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRElEQVRYw+1Y0bFFMBRcd24BaqADlJB0EEowKjApgQ5QgnQQSqADUULowP3IzJ3394L38Rj7Zcw5O7Nn10mGU1VV3/cAkiSJ4xjXR13XX0VgjG13hNY6z/OX/VS6rqOUKqUOz/Ukg1KKUuo4ThiGQgirHhv3pJSe55n6aZoOzPI8Q1VVhJBt26ZpIoQAkFL+6t6OcOZ5DkBrfTgwhxm01gDatv2+cV03TdO/DGcURSc/+sMMwzAACIJgL9XrQivR7EMDrbWJ6B3kUUpd1+Wcj+MIQAgxz7PNMfa+inXDMGRZRggxpjVNc6tw+r7fdd2yLEaY5Q1khzyzvs7gPAOANE2LorAsvtJqAVCWZRRFvu9b1r8vpG0cx6IolmWxb9nn3s+T5xjOMHDOOef7ep4r9YXxyHvk/Vs4jDHzdLOfEeu6BkHwAY17lm6sjXkYAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["(1,)|A"]},{"cell_type":"markdown","metadata":{},"source":["El elemento que está en la primera fila y tercera columna es:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["1|A|3"]},{"cell_type":"markdown","metadata":{},"source":["Pero si transponemos la matriz, hay que intercambiar los índices de\ndicho componente:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"9"}],"source":["3|(~A)|1"]},{"cell_type":"markdown","metadata":{},"source":["Y si transponemos dos veces obtenemos la matriz original:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAEwAAAAoCAIAAADbkIswAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACiklEQVRo3u1Z7a2rMAw11R0g7QhhA2CEZAPaEVAniDJC6AS9jAAbkIwATAAZAdig70d0EeqT3k3C+2qFfyFUW+fUjrFPIIoi9GVCiMdbGCFkIcUYCzDGwzDAm1pVVUqpg5OPlJJSuuVP2RhhGAZKaRAEcRxXVWXrhjG2KYC6rjHGxqXve48S2h7hfr8TQh6PR9/3hBAAqOv61y5lWWZZZkvSGGMMAMZx9D4t3hHGcQSAsiyXNwihLMtsSLqVa5IkGw+Jd4SmaQAgiiKPUIfXaiRKqeV5HEdTtO9DklKKEOKct21r2qbW+nw+2/h+vFAam6a5Xq+EEJPAoijesFzDMJRSTtNk6Fmm0ZmkaXFbbHsEAMiyTAhh//sXazwAkOd5kiRhGNq7fLwWw7ZthRDTNDl5OWdy/aXysy0ROOecc1evfUB/F9tJ7iR3kjvJneQ/JimljOM4CIItIo2UMgzDPM+93T0w2JL8/Pzsuq4oCiGEUupyufiNnfM8p2nKOXeQobZjsNR41qqMWec8hCzGmHlO0xQh5CHzuGJw03iOx+N6+EQIbRk7OefzPEspnSJ4Y/BpPFpr13I1e8OCMo5jjHHXdd69xAmDz6rVdZ3RzuxNKXU6ndZvCCFaa2+SThgOHs2DMbauHEtB4EkTwBh71LwfBrdMtm2rlHI9S0uBPb15yu2fw3BwbR5lWXogwxjP87ze6LXWaZr67c2uGBxIUkqFEK6FuvgCwFp9GsfRSafZgsG2XI3+1zTNctxPp5O9KAgAaZrebrckSTDGRVF4qBj+GGyGAXNL82TfXrb8/Ck36k4URd/eRv0uDGYY2DWefdXaSe4k/z5JhNDxy7x32f/NKKWGUZZlCKEf/F/W9B+c2rwAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["~~A"]},{"cell_type":"markdown","metadata":{},"source":["La tercera columna de $\\Mat{A}$ es la tercera fila de su transpuesta:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAABsAAAAoCAIAAACAWBYBAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAClklEQVRIx61W25GjMBAcUxvAQAhyBjIhjDOQHQIhyCmwGbAbgsoRsIQARGATgpYMuI9x6bRCyPdw/9jFo2lNzwuWDdxut2Ub1lprbfRWBjGcTidIIs/z8/l8v98j99YfIaK+732xRAQAUkpjjC9TSrlWGjJWVeW/1jQNEfm8bdu6u23bKqVSjMYYft+pAAD/A4hYVZX/itbafyBkRETfkLZtAcC/QkQBo7VWCOGf/bczl8uFiPb7fRDoruvcf2stn923qKqqqqpCZ/iAviFONSLydWMMIkYzBhGdTHAOSCmjWUlEiKiUUkoFIfP91Fr/YBRCNE2TTum1rX7EnXxgIRyjBKNSKl1FiMiJlQHAOI5CiDzPtyrk/f29LMu1aT6I6Hq9AsAbuxk46GMYhrquv7+/03VZlqUx5uF1OohEVNf18gycvMuyAOeNX1v/Bpd/2TRNACCEgP9DnuecuRlzp6P+hyiKYp7nbJ5nRIRXgCvnofEleGicpqkoildqhJdinufsVQKdzIylJh76+vo6HA673e54PMZHlSewKIqMw7n10MfHxziOn5+fdV13XXc+nxOM1lpEBFc9W5Xgl2PiSa7muq4fcdw6jt+QpJTpzJ2mSQiRHQ4HbmhPoz5NU+LUrElK+cY/XN1pjOPY933ie4i43+8zbm2JR13T1VonunLXdWVZPvpjYsgx+r73N4MopJTcRh/eRUer73J6CvkMsB6P6cUqCmOMEIL/75h+GIbo9nY6neZ5Vkr5DWa9Cx6PRyK6XC4/tj0hRDAbtNZrB4K9Zz2cwVceXSueIogYBGN+aw9JLNcughFGXlv/ipGIgljB2rXEfhOgaZp1hkR6idY6vVW5kb92Kc7IpOmd4Ha7RemWZfkFuvqbJrfhO2YAAAAASUVORK5CYII=","text/plain":""},"metadata":{},"output_type":"display_data"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAADMAAAAUCAIAAACvapLzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACC0lEQVRIx8VW0bGqMBDdcW4BkRKwg0gJSwdACYwVYAurFTCWgB0wlBCoACkh0kHex/py8wB5Ksx4viATlt2zZ08CxkHbtuZL0FoPVjbwF9frtWka+BK22+3xeLzf779Llq00TQf8ISIASCmLolhISVmWUkoAQMRnndFaR1FkXx+ZSSldPvM8R0Q3v7IsP04rz3MiUkoREZf6bCcRWRaAC3IJ01oDgMuTEGLA6Mca4jpnNvu+/6uz8/kcRZHtr1KKK7MrQRAs1JB9llIKIWY2+75f1zUAbACgqqowDAc7qqqyz1prrnU5uq5LkmRmAyJeLpcHQ5ZAt31CCKWUMaYoCiHEWu7g+/7YIMazYoz56bpuTK9S6nA4ICJT9ShiMU6nU5ZlbnPH8Dyv6zoAADuGr0zyEiilZn7kuhWPCBDRzL+jKFrrYEDE+T66zmCM2Qgh+r5/Rn4QBLvdzq7Udc2D8y7CMCSiQR8no3FmAPDjeZ59GXxGRP8cFwBpmjZNo7We18oAcRyzdtmPWExxHE9G6/v+ofu2bSdHDxGJaKwVlubrTcyybJwr+/ZktKIoWI7AHvGKAhhpmo4z/hjjaFmW8coGAJIkcX11HkKItVx3MlpVVXwgbZjbtxxrv9+veP9xo91uN8/zHjNnWWXH/68nrXhbHEdz0wDXusxXUZalqzlwzfetoVv9tj0YhT/1IexD5AWtqQAAAABJRU5ErkJggg==","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["display( A|3 )\ndisplay( 3|(~A) )"]},{"cell_type":"markdown","metadata":{},"source":["## Ejercicios de la Lección 1\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Primer ejercicio\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Cree la matriz\n$$\\Mat{A}=\\begin{bmatrix}1&0&0&0\\\\2&0&0&0\\\\0&3&3&0\\\\0&3&4&1\\\\0&1&2&1\\end{bmatrix}$$\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["Cree a partir de $\\Mat{A}$ una matriz cuya única columna sea la\nprimera columna de $\\Mat{A}$\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["Cree a partir de $\\Mat{A}$ una matriz cuya única columna sea la segunda \nfila de $\\Mat{A}$\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["
\nCree a partir de $\\Mat{A}$ una matriz cuya única fila sea la primera\nfila de $\\Mat{A}$\n\n
\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["
\nCree a partir de $\\Mat{A}$ una matriz cuya única fila sea la segunda \ncolumna de $\\Mat{A}$\n\n
\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["### Segundo ejercicio\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Calcule el siguiente vector: 3 veces la primera columna de $\\Mat{A}$\nmenos la segunda columna de $\\Mat{A}$ mas 2 veces la tercera columna\nmenos 3 veces la última columna de $\\Mat{A}$\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["### Tercer ejercicio\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Verifique con ejemplos que el operador transposición es lineal\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Cuarto ejercicio\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Verifique con ejemplos la veracidad de las igualdades en las reglas de\nreescritura de la Sección 1.6 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["### Quinto ejercicio\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Proporcione ejemplos de matrices 3 por 3 no nulas de los siguientes \ntipos de matrices:\n\n- Una matriz diagonal\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["- Una matriz simétrica\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["- Una matriz triangular superior (es decir, que todos los elementos\n por *debajo* de la diagonal son nulos).\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]},{"cell_type":"markdown","metadata":{},"source":["- Una matriz antisimétrica (es decir, que su transpuesta es igual a su\n opuesta: $\\MatT{A}=-\\Mat{A}$).\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["#"]}],"metadata":{"org":[null,null],"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lección 01 - Sección 1.5\n", + "========================\n", + "\n", + "**Author:** Marcos Bujosa\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Lea primero las Secciones 1.5 y 1.6 de la Lección 1 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)* \n", + "\n", + "([https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from nacal import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\n", + "\\newcommand{\\R}[1][{}]{{\\mathbb{R}}^{#1}}\n", + "\\newcommand{\\Z}[1][{}]{{\\mathbb{Z}}^{#1}}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\getItem}{\\pmb{\\mid}}\n", + "\\newcommand{\\getitemR}[1]{\\getItem{#1}}\n", + "\\newcommand{\\getitemL}[1]{{#1}\\getItem}\n", + "\\newcommand{\\elemR}[2]{{#1}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRP}[2]{{\\big(#1\\big)}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRPE}[2]{\\big({#1}^{\\phantom{\\T}}_{\\getitemR{#2}}\\big)}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\Vect}[2][{}]{{\\boldsymbol{#2}}_{#1}}\n", + "\\newcommand{\\eleVR}[2] {\\elemR {\\Vect{#1}}{#2}}\t % con subindices\n", + "\\newcommand{\\eleVRP}[2] {\\elemRP {\\Vect{#1}}{#2}} % con subindices y paréntesis interior\n", + "\\newcommand{\\eleVRPE}[2]{\\elemRPE{\\Vect{#1}}{#2}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\VectC}[2][{}] {\\elemR {\\Mat{#2}}{#1}} % con subindices\n", + "\\newcommand{\\VectCP}[2][{}] {\\elemRP {\\Mat{#2}}{#1}} % con subindices y paréntesis\n", + "\\newcommand{\\VectCPE}[2][{}]{\\elemRPE{\\Mat{#2}}{#1}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\mat}[1]{\\mathbf{#1}}\n", + "\\newcommand{\\Mat} [2][{}]{{\\mat{#2}}_{#1}} \n", + "\\newcommand{\\T}{\\intercal}\n", + "\\newcommand{\\MatT}[2][{}]{{\\mat{#2}}^{\\T}_{#1}}\n", + "\\newcommand{\\VectCC}[2][{}] {\\elemRR {\\Mat{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectCCC}[2][{}] {\\elemRRR{\\Mat{#2}}{#1}} % con texto \"col\"\n", + "%SELECCIÓNA de FILAS y COlUMNAS DE UNA MATRIZ TRANSPUESTA PARA GENERAR UN VECTOR DE Rn\n", + "\\newcommand{\\VectTC}[2][{}] {\\elemR{\\MatT{#2}\\!}{#1}} % con subindices\n", + "\\newcommand{\\VectTCC}[2][{}] {\\elemRR{ \\MatT{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectTCCC}[2][{}] {\\elemRRR{\\MatT{#2}}{#1}} % con texto \"col\"\n", + "\\newcommand{\\dotprod}[2][{}] {\\Vect{#1}\\cdot\\Vect{#2}}\n", + "$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Suma de matrices y producto por un escalar\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El comportamiento de la suma de matrices y el producto de una matriz\n", + "por un escalar es similar al caso de los vectores.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "I(2)*100 - 4*Matrix( [ [1,5], [5,1] ] )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verifique con algún ejemplo que el operador selector es lineal.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Igualdad de matrices\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dos matrices son iguales si lo son los correspondientes sistemas.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "a = Vector( [1,2] )\n", + "b = Vector( [1,0] )\n", + "c = Vector( [9,2] )" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "A = Matrix( [a,b,c] )\n", + "B = Matrix( [a,b,c] )\n", + "A == B" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jugando con la librería.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "la primera fila de $\\Mat{A}$ es la primera columna de su transpuesta\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "(~A)|1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si además queremos que la representación de la primera fila sea en\n", + "forma de fila, podemos hacerlo del siguiente modo:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "Vector( (~A)|1, rpr='fila')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Siguiendo el método del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf), definamos una matriz cuya única fila es\n", + "la primera fila de $\\Mat{A}$:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "~Matrix( [ 1|A ] )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fíjese que es más sencillo usando el operador selector y una tupla con\n", + "un único elemento\n", + "\n", + "(*Recuerde que si el argumento empleado con el selector es un índice obtenemos un vector, pero cuando seleccionamos una tupla de índices obtenemos una matriz*.)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "(1,)|A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El elemento que está en la primera fila y tercera columna es:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "1|A|3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pero si transponemos la matriz, hay que intercambiar los índices de\n", + "dicho componente:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "3|(~A)|1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Y si transponemos dos veces obtenemos la matriz original:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "~~A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La tercera columna de $\\Mat{A}$ es la tercera fila de su transpuesta:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "display( A|3 )\n", + "display( 3|(~A) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ejercicios de la Lección 1\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Primer ejercicio\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cree la matriz\n", + "$$\\Mat{A}=\\begin{bmatrix}1&0&0&0\\\\2&0&0&0\\\\0&3&3&0\\\\0&3&4&1\\\\0&1&2&1\\end{bmatrix}$$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cree a partir de $\\Mat{A}$ una matriz cuya única columna sea la\n", + "primera columna de $\\Mat{A}$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cree a partir de $\\Mat{A}$ una matriz cuya única columna sea la segunda \n", + "fila de $\\Mat{A}$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Cree a partir de $\\Mat{A}$ una matriz cuya única fila sea la primera\n", + "fila de $\\Mat{A}$\n", + "\n", + "
\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Cree a partir de $\\Mat{A}$ una matriz cuya única fila sea la segunda \n", + "columna de $\\Mat{A}$\n", + "\n", + "
\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Segundo ejercicio\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calcule el siguiente vector: 3 veces la primera columna de $\\Mat{A}$\n", + "menos la segunda columna de $\\Mat{A}$ mas 2 veces la tercera columna\n", + "menos 3 veces la última columna de $\\Mat{A}$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tercer ejercicio\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verifique con ejemplos que el operador transposición es lineal\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cuarto ejercicio\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verifique con ejemplos la veracidad de las igualdades en las reglas de\n", + "reescritura de la Sección 1.6 del [libro](https://github.com/mbujosab/CursoDeAlgebraLineal/blob/master/libro.pdf)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quinto ejercicio\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Proporcione ejemplos de matrices 3 por 3 no nulas de los siguientes \n", + "tipos de matrices:\n", + "\n", + "- Una matriz diagonal\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Una matriz simétrica\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Una matriz triangular superior (es decir, que todos los elementos\n", + " por *debajo* de la diagonal son nulos).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Una matriz antisimétrica (es decir, que su transpuesta es igual a su\n", + " opuesta: $\\MatT{A}=-\\Mat{A}$).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "org": [ + null, + null + ] + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/LeccProb05-1.ipynb b/LeccProb05-1.ipynb new file mode 100644 index 0000000..c88529b --- /dev/null +++ b/LeccProb05-1.ipynb @@ -0,0 +1,2041 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lección 23 - Lanzamiento de monedas\n", + "===================================\n", + "\n", + "**Author:** Marcos Bujosa\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\n", + "\\newcommand{\\R}[1][{}]{{\\mathbb{R}}^{#1}}\n", + "\\newcommand{\\Z}[1][{}]{{\\mathbb{Z}}^{#1}}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\getItem}{\\pmb{\\mid}}\n", + "\\newcommand{\\getitemR}[1]{\\getItem{#1}}\n", + "\\newcommand{\\getitemL}[1]{{#1}\\getItem}\n", + "\\newcommand{\\elemR}[2]{{#1}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRP}[2]{{\\big(#1\\big)}^{\\phantom{\\T}}_{\\getitemR{#2}}} \n", + "\\newcommand{\\elemRPE}[2]{\\big({#1}^{\\phantom{\\T}}_{\\getitemR{#2}}\\big)}\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\Vect}[2][{}]{{\\boldsymbol{#2}}_{#1}}\n", + "\\newcommand{\\eleVR}[2] {\\elemR {\\Vect{#1}}{#2}}\t % con subindices\n", + "\\newcommand{\\eleVRP}[2] {\\elemRP {\\Vect{#1}}{#2}} % con subindices y paréntesis interior\n", + "\\newcommand{\\eleVRPE}[2]{\\elemRPE{\\Vect{#1}}{#2}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\VectC}[2][{}] {\\elemR {\\Mat{#2}}{#1}} % con subindices\n", + "\\newcommand{\\VectCP}[2][{}] {\\elemRP {\\Mat{#2}}{#1}} % con subindices y paréntesis\n", + "\\newcommand{\\VectCPE}[2][{}]{\\elemRPE{\\Mat{#2}}{#1}} % con subindices y paréntesis exterior\n", + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "\\newcommand{\\mat}[1]{\\mathbf{#1}}\n", + "\\newcommand{\\Mat} [2][{}]{{\\mat{#2}}_{#1}} \n", + "\\newcommand{\\T}{\\intercal}\n", + "\\newcommand{\\MatT}[2][{}]{{\\mat{#2}}^{\\T}_{#1}}\n", + "\\newcommand{\\VectCC}[2][{}] {\\elemRR {\\Mat{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectCCC}[2][{}] {\\elemRRR{\\Mat{#2}}{#1}} % con texto \"col\"\n", + "%SELECCIÓNA de FILAS y COlUMNAS DE UNA MATRIZ TRANSPUESTA PARA GENERAR UN VECTOR DE Rn\n", + "\\newcommand{\\VectTC}[2][{}] {\\elemR{\\MatT{#2}\\!}{#1}} % con subindices\n", + "\\newcommand{\\VectTCC}[2][{}] {\\elemRR{ \\MatT{#2}}{#1}} % con ()\n", + "\\newcommand{\\VectTCCC}[2][{}] {\\elemRRR{\\MatT{#2}}{#1}} % con texto \"col\"\n", + "\\newcommand{\\dotprod}[2][{}] {\\Vect{#1}\\cdot\\Vect{#2}}\n", + "$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Primer paso para usar [NAcAL](https://github.com/mbujosab/nacallib)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para poder usar [NAcAL](https://github.com/mbujosab/nacallib) es necesario importar el módulo:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from nacal import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definición de algunas operaciones y objetos\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Definamos el productorio *aspa* introducido en la lección anterior del\n", + "libro:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def aspa(lista):\n", + " result = [[]]\n", + " for pool in lista:\n", + " result = [x+[y] for x in result for y in pool]\n", + " for prod in result:\n", + " yield tuple(prod)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Variable aleatoria indicatriz\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vamos a crear un nuevo tipo de vector (que debe ser indicatriz) y que\n", + "posee un atributo adicional: la probabilidad asociada al suceso\n", + "indicado por dicho vector indicatriz (si el vector en nulo su\n", + "probabilidad será cero y si el vector es la constante 1, la\n", + "probabilidad será uno).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class VAI(Vector):\n", + " def __init__(self, data, prb = 0, rpr = 'columna'):\n", + " super().__init__(data)\n", + " if not all([int(i==0 or i==1) for i in self]):\n", + " raise ValueError('No es un vector indicatriz')\n", + " if Vector(self).es_nulo(): prb = 0 \n", + " if Vector(self)==V1(Vector(self).n): prb = 1\n", + " self.prb = prb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Así, podemos generar un vector indicatriz e indicar la probabilidad\n", + "asociada al correspondiente suceso.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/2\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAABRCAIAAAChazpPAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD80lEQVRYw92ZS26rMBSGj9wow8pE6gacHRDmnTg7cLME2hUglkC6gpQl0KwAmHROsoKEeSfE6qyDijs4kUN4GDdwpat7RgmPj5+D7fMwlN2WZZnmbFEURVF0nSXQYW9vb1EUgdY4553nupQyxmoH4zjmnB8OB3UkCALXdVsJ7VzGWBzHVSJjDHVUuWVZ2rYdRZERNwgCznnzuOd5AFDzaZZllNJ+blEUAND6xdDdzW/FOfc8r4frum6rWA03y7LmcTAUq+Gi5NoHhJoHm8PAhNs8dcWllAZBcAO3LEsAqN4LhreVZbnZbDQXCCFs226Zb1EUMcYsy4KbbLVa7ff74/GIfy/c7XYrhIBbDef0dru94iZJ0jPfAQDAtu2uU5ZlMcYuS0p1LpXDzHVdBTnr3e/3lFIYZvg2+OpnbpqmamW52ZCw3+/PXPyIjuOMwsVpTdQThuudz+dXevM8H4WLEKRduJox9FtXnE6nCxffYpQhkef5hdtrSZIsl0s1U1ttNpshcIJLiX7wJkny8vJi8njkFEVBAEBKic/pMpSJc1J/JZqUkpxOJ0PfmQxwfOpZr9I/3JAjpSQY00Y3UtU/3C5++Pr6AoDv7+8RxX5+fpL7+3sAmE6nvVebeAz9O51OiVrtR9RrWRaBv2Pkhuk/Mvf5+Xm32xl67N/ww3/Mvbu7e3x8HB6M1TxG2uTn5+fj4+Ph4WEUblEUSPsH/JskyXw+X6/XY3LX67WUUgjh+/77+/s43CRJiqJ4enpar9dCCMwbR+D6vu/7vvotpcSkcRAXA6taFhaLBWMMk7BB3DRNa1GKc96bSxCTIVmLFIyx3vg9mc1mnufpK4umuq44e6EdDgcAEEJ0VQ1xHNfKNtd1a90CZYrW74flcom1ZNUzvcnnRGVUmouEEK+vr47jMMbCMFRjrjUzQ29MTMZvGIZ5nq9WK9u2gyBYLBa9t0xMMh3Lsna7neF6hlkEwQE/epZGTPxrbsq/BGWPpRc5jDGC+HH1UkrJWJVbdWae9SJXX+j8yg/z+fzCNay29Kb6AqRazA2v3/I8R5UTE72G9dtVX0B1uLrafPr+ZHPl22w2l36J4zjYNxhSv2FwwqWcqNAipTSvEVsNe6u4hJJqlypN0yHcNE3VOxEVZSmlQ7jH41FKqVILUm3Y9TbUNYYdORUnSTUoSCk1w1O/NqVpyjlXaQapxjFKaRiGN4g9nU5pml7lV7XOemuzvLef2ryxpV9d3QmocW3bbuUyxmqN41/0180TjPb9AEqpfgen2Vxvdrl/sX/RJdZo/6J1v0VjXVdCV5ql2RiovllXYgeaUdXcRal9iWqj3pSLvtOcPRwOmrX4D7EX+T/7Ddd7AAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{pmatrix}1\\\\ 1\\\\ 0\\\\ 1\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}1\\\\ 1\\\\ 0\\\\ 1\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([1, 1, 0, 1])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u = VAI([1,1,0,1], fracc(1,2))\n", + "print(u.prb)\n", + "u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si el vector es nulo o es la constante uno, ignora la probabilidad que\n", + "indiquemos y asocia la probabilidad cero o uno respectivamente.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "VAI(V0(5), fracc(1,2)).prb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Subespacio probabilizable\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La clase `SubEspacioProb` es una subclase de la clase `SubEspacio`\n", + "cuyo atributo `base` siempre es la *base canónica* y con un atributo\n", + "adicional que es un `embrion` del subespacio compuesto por sucesivos\n", + "números naturales.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "class SubEspacioProb(SubEspacio):\n", + " def __init__(self, data):\n", + " if not isinstance(data, (Sistema, Matrix, Vector)):\n", + " raise ValueError('Argumento debe ser un Sistema, una Matrix o un Vector embrión')\n", + " prodH = lambda u,w: Vector([u[i]*w[i] for i in range(u.n)])\n", + " productoH = lambda x,n: V1(n) if not x else prodH(x[0], productoH(x[1:], n) )\n", + " def BaseCspanEmbrion(v):\n", + " return Sistema([Vector([int(i==j) for i in v.lista]) for j in set(v.lista)])\n", + " \n", + " if isinstance(data, Vector):\n", + " baseC = BaseCspanEmbrion(data)\n", + " elif isinstance(data, (Sistema, Matrix)):\n", + " n = (data[0]).n\n", + " Q = [x for x in aspa([BaseCspanEmbrion(u) for u in data]) ]\n", + " baseC = Sistema([v for v in [productoH(s,n) for s in Q] if v.no_es_nulo()])\n", + " baseC = ElimG(baseC).sis()\n", + " super().__init__(baseC)\n", + " \n", + " self.embrion = Matrix(baseC)*Vector(list(range(1,len(baseC)+1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAABRCAIAAAChazpPAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAECElEQVRYw91ZS1LjMBBtRCpLSnYVF1BuYLNnI9/A+AgOJ3CuoNwg5giBE8TesA8+gfGejeJix4LKLDojC39kQTw1U9MrkO2np9et3wsch2O/3xueSimllENPCQxEmqbb7RaMwTkffDbElDGm/o3jWP9EPRJCxHHcizDr7SyKos1mo7cIIRhjChf/WK1Wvu8/Pj7e3d2N8xVCcM71liFSODJKabcdutkAgFbGDLjH45FzniTJCG4cxy2y2IjtlFLOeVmWLcoA0KoNGCV7PB43mw1iSSkZY3pKFeXWmL7gJknS/abbBwDsdju9EStSp/wFl1IqhDDj4qi3221bUAD9WzD02Ru73a5XqzAMPc/rwQ3DsFeEsiz1RGEhd19DWupN0AfSLRfsT1VIWZaU0t51A3OupAB9dK1sqA8QGqutVWR6MMaUFKAqYWitsA9cRr6sZ0VRUErhvPA8DwCyLAOAE26e52o1+XEgQlEUJ9zX11cAuLm5mQQXC5yoHs7nu1gsvvCtqmoSXARBtAYXVZ9EisPh0ODiKCYpiaqqGtzRyLIsCAJM8lC4rouAM1xrzMWbZdn9/b1N94gjpSQAUNc19jMUSBPnpPlNjLquyeFwsNTOpsCx1xNfxf/8QJy6rgmub5MH0fmfH40O7+/vAPDx8TEh2be3N3J1dQUA8/l89G0bxVDf+Xx+0sFxnAn5Oo5D4M8E+cH0nxh3uVy+vLxYKvZv6PAf415eXt7e3p6/Gat5jGizz8/P5+fn6+vrSXCllIj2t/XNssz3/YuLi9Et7hu4aZoWRfHw8CCEyPM8iqLRT2Y2uFEU4TTzfT/P8zzPp+Grz13P82w2rW/nraqqyXTQoygKPDFOyXe9XidJYrWkSSmTJOm9WXRvbt0rbvcygmhQliUAhGE4iss5H73dKTRbHYIgEELYb4MzdaIyvIS2xX6/VxlzXbfHy/iN47rueD2sVqunpye826jGOI57cZt6GD3prNfrro5pmhrOGJRSgpJNfkojNvrah9KXIO2p+CIOY4wg/LR8KaVkqpubWpUavohrswtY6rBYLBpcy9vW6GqHqzPRL3OGk9mFFoYbZFVVyHJmybfXn2yF7gvMUA5KKd7DDbPZMmk4eqLuZja7wKi4yhQmyiGu69pwR1wul0EQOI5jOD+gt3pS3+ziWfqTyi5UGwrorWY/1uBPqp1CMSP64WPUUFfp7s57XKOV497ghmFY1/XorFMrS6s9z3POebNRtQTqWok2/iR2pqcHWs561yy38Se7H/b41a2c2PiTjLGWcWzlr9s4wiZ/HdkNObGG80rX5bb6/cJM1ur3C6WXzYnN8CYMHbNGfxjAkQ0d7MAwX3ttcT0TulFvi4vamY+OhuPlL5dOLYWmD/MEAAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{pmatrix}5\\\\ 1\\\\ 2\\\\ 5\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}5\\\\ 1\\\\ 2\\\\ 5\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([5, 1, 2, 5])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a=Vector([5,1,2,5]); a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si empleamos un vector como argumento, usará este como embrión del\n", + "subespacio probabilizable. El atributo `base` es la base canónica del\n", + "subespacio.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};\\end{bmatrix}$

" + ], + "text/latex": [ + "$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};\\end{bmatrix}$" + ], + "text/plain": [ + "Sistema([Vector([1, 0, 0, 1]); Vector([0, 1, 0, 0]); Vector([0, 0, 1, 0]);])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G = SubEspacioProb(a)\n", + "G.base" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si empleamos una matriz como argumento, usará sus columnas como\n", + "embriones y el resultado será la envolvente probabilizable de los\n", + "subespacios creados con cada uno de los embriones (columnas).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGUAAABRCAIAAABE9f8jAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEIElEQVR42u1cQW6rPBB2omwrAVKkrp0bANvuIOquG5ojuD0B5QjACVofob1AFdh1S7kB7LqKRLzs7r2F/x+hpGqwTcCvnW9TGpHJ8DEexp/NIEII6sAwjD+A/2EYRpccQsiC/wnDEAGOUBRFe5ymKUJozmNq1cH3JrIs832/qippJ7IsW61WSZJMYuHu7m7WwffX26WFx9pCyMv7+/u6rlXuWJIkGOMgCKIowhjf3t6ObyGOY4wxP24P+oIPxv5Dmo/cpmkk0sF2u21/KwgCiVypboEQIpfLwjAkhMxFb47rutLBFUVRFEXtMWMsy7KRLShiPtov7fd7hJBpmvxfx3EwxmVZjmmhTWG+75umKZGIF6Pxlee5ZVndTzzPE8qG6hYQQrZte563Wq32+73ruuv1Woiy8eKraZqmabqfYIwPCpxzW+DBxZ+JpmmGYVjXtdCIno85+I9j4SBeRrBwnIsZY2fk6+AO9wfGmDHGc1B78UEQjGnhy2sRKinGiy/f93nt03X3ZHk8rIWqqrrZqixLjLHjODrme4RQEARpmrquizGmlLaVwWgWuiVIVVVxHOd5fvbno23bcnxRSuu63mw2tm3HcSx0YwexQCklhPi+z8dgURRC4YkQmhFCDMNQmc39Ejw8PDDG5kCEpvU98AV8AYAv4Av4+sF8DaK+67ACIOeDGF9JkjDGuHb+8vIid53r9Vp0FqKRD/31e3XtXIcVAGkfhPX7obTzaVcAFH3oy9dQ2rkKdPChL1+DaOeK0MGHvnwNop0rQgcfFrvdruepw2rncpjQB8bYbrebI4Q+Pz9Pnj2gdj7hCoC6D/Plcnl5eXnyPHXtXB3T+mAYxnK5FNCj1dV3dUzugwBf6up7iwlXABR9AP2+L0C/Bz0H+AK+/m0srq6uLi4ugIiTuL6+/vj4WLy9vRmGcXNzA4x8j9fXV3g+nj9/Tbt7vrWgsgKQZZnjOLPZTMLIqPo90mAF4OnpqSxLSinfzLTZbMS+P6Z+r8MKQPdbnuchhPTV73VYAWjlbD6FFJUbx9PvdVDfD8Cn7mfRJzTZPT8syrLsvoE2ZHxpsnt+QCRJEoZhd3j2iq+D90W/j96DT6bdPa+C9/f3PM+Fsich5L96tc9N1mr3vLT63n3yPD8/y9SrlFJK6cnzdNg9PxR834/jWHQkcqJG1e91WAHg75cWRdFmesuyBF467V+vNk3DNW/btrfbrVytqGiB4/Hx0bZtiXr1y9fUe75ByutV0O/7AvT7UfQJ4AsAfAFfwBfwBXwd41f1z/lCnxDyEvrnQP8c6J/zM/I99M8RA/TPEQP0zxEG9M8RAPTPEQP0zxEG9M8RA/TP+UUA/R70HOAL+Pr3+UrTtNXPRHcV/GyYptkyw/uTz44nZZPsAdETB1Nxy7L+AtL+zY+AN0u1AAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\left[ \\begin{array}{cccc}1&0&0&5\\\\0&1&0&1\\\\0&0&1&2\\\\1&0&0&5\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cccc}1&0&0&5\\\\0&1&0&1\\\\0&0&1&2\\\\1&0&0&5\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 0, 0, 1]), Vector([0, 1, 0, 0]), Vector([0, 0, 1, 0]), Vector([5, 1, 2, 5])])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B=Matrix([Vector([1,0,0,1]),Vector([0,1,0,0]),Vector([0,0,1,0]),a]); B" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};\\end{bmatrix}$

" + ], + "text/latex": [ + "$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};\\end{bmatrix}$" + ], + "text/plain": [ + "Sistema([Vector([1, 0, 0, 1]); Vector([0, 1, 0, 0]); Vector([0, 0, 1, 0]);])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H = SubEspacioProb(B)\n", + "H.base" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El atributo `embrión` es un embrión del subespacio\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAABRCAIAAAChazpPAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEP0lEQVRYw+2ZPXLyPBCAF4ehzAhmcgE5J7Dp05gbOD6CyQkMRxA3MBzBcAJQk97xCcB9GtmTLkXGX7GMMNiWxM/M23zbYdkPq5V2tbuCqlvSNFWMCiGEEF2jFnTIcrlMkgSU4nle51iXppTSi4fb7dbzvP1+L58wxsIwbCW0cyml2+22TqSUoh51blVVjuMkSWLEZYx5ntd8HkURAFzYNE1TQoieK4QAgNYVQ3M318rzvCiKNNwwDFuVVXDTNG0+B0NlFVxU+WIB4cKCzW1gwm0OnXEJIYyxG7hVVQFA/Vsw/KyqqjiOFS/4vu84Tou/JUlCKR0Oh3CTBEGQZdnhcMCfJ+5ms/F9H24V9OnNZnPG3e12Gn8HAADHcbqGhsMhpfQUUuq+VN0nYRhKyFHfLMsIIXCf4Gxw6kcu51xGlpsFCVmWHbm4iOPx+CFcdGtL/sP9+tq2faZvnucP4SIEaSeuYg9da4qiKE5cnMVDtkSe5yeuWna7neu6vV5vMplIZ23KaDQ6cYUQ6s27XC6zLFutVowxznkQBF1vIkcI0QeAsizVixYEAcYj13U555xz9eTKsrSKotAaoR7kHMdRTA7tIISw6vqbSJ7nWjuUZdnHM81csixDj1KLVddfK4vFIooiReyXduj//PwAwO/vrxb69fXFOcdwpZbv72/r+fkZAAaDgfbt+XyuzQTRvoPBwGqueKtMJhPGmOHpNxwO+ybvvb+/YwCUKzYajfBhl+i5s9kMT8O6O4RhqOZaJnugeZQtl0ujffZw+Z975D49Pb29vd1/GMv9h7T+39/f5+fny8vLQ7hCCKT9a/uu12vbtnu9ntodruOiF2y3W8bYZrNZLBbaT4ziw3Q6lT6dJInJUXC1ffM816bJV3On0+l8Pp9MJg/jzmYzzMgNawVT7mKxSNNUCPH6+irNrdnJURTVq3e1YMXQVZNKGuz3ewDwfd+Qi0dGlx6SZmSHek6ESaI2nlgyo1JYVm6soijwVO46QJEzGo30fuH7fpqmtm1jbpskieu6en/TZjq2ba/Xa/N4hlmEhTO6Nksz3b8K+14l0r4Wqv0ofZFDKbUQ/1h9CSHWoyq3+u4+6otcRZVzrR1s2z5xTaotk2weU1WrXsxpSzh18YYQ1LJvou9ut/v4+ND+8VlfQHa4utp86v7kRcMVAOI4PvVLxuOxtsrRxjDsEGCQsmQ3qSxLkxpRIdhbxfrdqneptAWqWjjnck5Hruu6hJB7uIfDoSxLbEmdnZtBEGjLKIVgDSJPAKsev8uyVGxPdWzinHueJ88Rq16hEUJWq9UNyhZFwTmXRri8D2CMtTbLtf3U5oct/equMzyOY8dxWrmU0ovG8RX9dbWbqfrrqDIhRH2D02yuN7vcV9xfdClrdH/Ret+ikK43oSvNUlwM1GfWldiBYlc1b1EuVqLeqDflou0Uo/v9XhGL/wNmtHETe4TKcgAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}1\\\\ 2\\\\ 3\\\\ 1\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}1\\\\ 2\\\\ 3\\\\ 1\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([1, 2, 3, 1])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "H.embrion" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGUAAABRCAIAAABE9f8jAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEhUlEQVR42u1csW6rPBR2oqyVMFKkzs4bQNZuEHXrQvMIbp+A8gjAE7R+hPQFqsDWlfAEga1TJOKx272D/x+hpEowJsbp9beURuTk8Nk+HH+2D8AYgwYMw/ij8T8Mw2iSgzGesD++7wONI2RZVl/HcQwAGLM+NWvgtIkkSVzXLYqisxNJksxmsyiKBrHw9PQ0auD08zZpYX1twuXl8/NzWZYiLRZFEULI87wgCBBCj4+P8i2EYYgQYtf1RVuwwdh+SLORW1VVh3CwXq/r3/I8r0OsFLeAMe4Wy3zfxxiPeRtnPp937lxBEARBUF9TSpMkkWxBEGNpv7Tf7wEAEEL2r23bCKE8z2VaqEOY67oQwg6BeCKNrzRNTdNsfuI4Dlc0FLcAALAsy3Gc2Wy23+/n8/liseCiTF7/qqqqqqrmJwihgwTn0hZY52LvRAih7/tlWXKN6LHMwX/cFw76iwQLx7GYUnpBvg5auD0QQpRSFoPqh/c8T6aFH5+FK6WQ179c12W5T9Pds+lxvxaKomhGqzzPEUK2basY7wEAnufFcTyfzxFChJA6M5BmoZmCFEURhmGaphd/P1qW1Y0vQkhZlsvl0rKsMAy5GrYXC4QQjLHrumwMZlnG1T0BACOMsWEYIrO5fwQvLy+U0rEmQtH8XvOl+dLQfGm+NF+/mK9e1HcVVgC6+cDHVxRFlFKmnb+/v3d7zsViwTsLUciH9vq9uHauwgpAZx+49fu+tPNhVwAEfWjLV1/auQhU8KEtX71o54JQwYe2fPWinQtCBR8mu92u5a39aufdMKAPlNLdbjcGAHx/f5+9u0ftfMAVAHEfxtPp9Pb29ux94tq5OIb1wTCM6XTKoUeLq+/iGNwHDr7E1fcaA64ACPqg9fu20Pq91nM0X5qv68bk7u7u5uZGE3EW9/f3X19fk8/PT8MwHh4eNCOn8fHxod+Pl49fw+6ery2IrAAkSWLb9mg06mBEqn4PFFgBeHt7y/OcEMI2My2XS77vy9TvVVgBaH7LcRwAgLr6vQorALWczaaQvHKjPP1eBfX9AGzqfhF9QpHd8/0iz/PmCbQ++5ciu+d7RBRFvu83h2er/nVwXvR07z34ZNjd8yLYbDZpmnJFT4zxf/lqm0ZWavd8Z/W9+eZZrVZd8lVCCCHk7H0q7J7vC67rhmHIOxIZUVL1exVWANj50izL6khvmibHodP2+WpVVUzztixrvV53yxUFLTC8vr5altUhX/3xmHrLE6QsX9X6fVto/V6KPqH50tB8ab40X5ovzdcxFNHv5dTP+UGf4NVABq9+czX1c1TQ7wevn8PBV3PKxiarvHNAFSxIqjekgn5/TfVzVNDvr6l+jgr6/ZXVz1FBv7+a+jkq6PfXVD9HBf1ehfo5HPkEa8nVapVlGcY4yzLeV/LgFjzPcxyHXW+3W8Mw2lvgzr9U0O8FLVRVxSjDGGOMt9stb/7FMR+CEG42G5HJ6uAWIITdtmFpfULzpfnSfP0KvuI4rvUz3l0FvxsQwpoZVp98dDwpG2QPiJo4mIqbpvkXRozBLqJca3QAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\left[ \\begin{array}{cccc}1&0&0&5\\\\0&1&0&1\\\\0&0&1&2\\\\0&0&0&5\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cccc}1&0&0&5\\\\0&1&0&1\\\\0&0&1&2\\\\0&0&0&5\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 0, 0, 0]), Vector([0, 1, 0, 0]), Vector([0, 0, 1, 0]), Vector([5, 1, 2, 5])])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C=(I(4)|(1,2,3)).concatena(Matrix([a])); C" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAABRCAIAAAChazpPAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEUElEQVRYw+1ZTXKyTBBuieUyhVblAkNOAO6zAU9APALeAD0C3iDkCOgJkE32hBMg+2xGK7ssUnyLtsYJPz1DYtW7+XonMzz29PTvA9T9kuc5sco555z3rRrQI3EcJ0kCpLiu27vWpyljrPEwTVPXdcuyFE+iKAqCoBOhG5cxlqapjMgYQz1k3LqubdtOkkQLN4oi13Xbz8MwBICGTfM8N01Tjcs5B4DOG0Nzt+/Kdd0wDBW4QRB0Kkvg5nnefg6ayhK4qHLjAqFhwbYb6OC2l37gmqYZRdEvcOu6BgD5XdB8ra7rl5cXYoPv+7Ztd8RbkiSMsel0Cr+S5XJZFMXxeMSfV9z9fu/7PvxWMKb3+/0P3MPhoIh3AACwbbtvaTqdMsauKUWOpfpvEgSBALnoWxSFaZrwN8HT4NEvuFmWiczya0GEoiguuHiJ8/n8JrgY1ob4h7/ra1nWD32rqroJLoIg2hWX8KGhpjidTldcPMVNXKKqqisuLYfDwXGc0WjkeZ4I1rbMZrMrLuecdt44jouieH19jaIoy7Llctm3E3E452MAOJ/P9KUtl0vMR47jZFmWZRl9uPP5bJxOJ6UR5CRn2zZxOLQD59yQ9deRqqqUdjifz2OsafpSFAVGFC2GrL9SttttGIZE7hd2GH9+fgLA19eXEvT9/T3LMkxXtHx8fBj39/cAMJlMlLs3m42yE0T7TiYTo33jneJ5XhRFmtVvOp2OdfY9Pz9jAhQ3NpvN8GGfqHHX6zVWQzkcgiCgcQ0dH2iXsjiOtfzs5vI/7gX37u7u6enp78VY+B+ijb+/v9/e3h4eHm6CyzlHtH9t391uZ1nWaDSiw2EYLkZBmqZRFO33++12q3xFKz+sVisR00mS6JSCwfatqkrZJg/GXa1Wm83G87yb4a7Xa+zINWcFXdztdpvnOef88fFRmFvhyWEYytM7LTgx9M2kAg3KsgQA3/c1cbFk9Okh0LTsIPdE2CQq84khOirCssKxTqcTVuW+Aoo4s9lMHRe+7+d5blkW9rZJkjiOo443ZadjWdZut9PPZ9hFGHiioV2arv8S9h0kwr4Gqn0rfRGHMWYg/G31NU3TuNXkJnv3RV/EJaacoXawLOuKqzNt6XTz2Koa8jCnfO14PDqOQ4w6VVWhluNB+i4WC2KbzAsYaA7TNHEOp1MwMiL0peHpL3Exn8/pKed4PHLO6cqGml32CA6VJs8wQXdSkfIewa0aMkvVN6DGcUxbQJA517wsk4id5DPnXFQTQl+sFIJjBpml6mSIXdcV1YzAbVhyhJQlMgyLxaIsywbBIXcLnPOiKGzbdl230U3htuvU2OBT28yzkkIWxLFMtEPjLJ2mUOK2X+zgq4leIs/zTpacMdYgjgfw632SpqmCX0eVTdOkv+C0HabNcg/4ftGnrNb3i87vLYT07YS+Nov4MCCfrK+xA4Klp32Zcy4T9bq4aDtitSxLIv/9B2YMQWhGJw4qAAAAAElFTkSuQmCC\n", + "text/html": [ + "

$\\begin{pmatrix}1\\\\ 2\\\\ 3\\\\ 4\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}1\\\\ 2\\\\ 3\\\\ 4\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([1, 2, 3, 4])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J = SubEspacioProb(C)\n", + "J.embrion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Espacio Euclídeo de probabilidad\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La clase `EspacioEuclideoProb` es una subclase de la clase\n", + "`SubEspacioProb` que incluye las probabilidades asociadas a los\n", + "vectores indicatrices de su base canónica y la función de masa de\n", + "probabilidad asociada al embrión.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "class EspacioEuclideoProb(SubEspacioProb):\n", + " def __init__(self, data, fmp={}):\n", + " super().__init__(SubEspacioProb(data).base)\n", + " if not fmp:\n", + " fmp = dict(zip(set(self.embrion),[fracc(1,len(set(self.embrion)))]*len(set(a))))\n", + " elif isinstance(fmp, (list, tuple, dict)) and len(fmp)!=len(self.base):\n", + " raise ValueError('La función de masa de probab. debe ser una lista, tupla o dicionario con probabilidades para cada vector de la base canónica')\n", + " elif isinstance(fmp, (list, tuple)):\n", + " fmp = dict(zip(set(self.embrion),fmp))\n", + " self.fmp = fmp\n", + " if sum([p for p in fmp.values()])!=1:\n", + " raise ValueError('Las probabilidades deben sumar 1')\n", + " self.base = Sistema([VAI(v,list((self.fmp).values())[c]) for c,v in enumerate(self.base)])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/3\n", + "{1: 1/3, 2: 1/3, 3: 1/3}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};\\end{bmatrix}$

" + ], + "text/latex": [ + "$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};\\end{bmatrix}$" + ], + "text/plain": [ + "Sistema([Vector([1, 0, 0, 1]); Vector([0, 1, 0, 0]); Vector([0, 0, 1, 0]);])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "K = EspacioEuclideoProb(a)\n", + "print(K.base[0].prb)\n", + "print(K.fmp)\n", + "K.base" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/2\n", + "{1: 1/2, 2: 1/4, 5: 1/4}\n" + ] + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{1}{2}$" + ], + "text/plain": [ + "1/2" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "K = EspacioEuclideoProb(a,dict(zip(set(a),[fracc(1,2),fracc(1,4),fracc(1,4)])))\n", + "print(K.base[0].prb)\n", + "print(K.fmp)\n", + "K.base[0].prb" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/2\n", + "{1: 1/2, 2: 3/8, 3: 1/8}\n" + ] + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{3}{8}$" + ], + "text/plain": [ + "3/8" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "K = EspacioEuclideoProb(a,[fracc(1,2),fracc(3,8),fracc(1,8)])\n", + "print(K.base[0].prb)\n", + "print(K.fmp)\n", + "K.base[1].prb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Ejemplo de la demostración en el libro sobre la *construcción de subespacios independientes e isomorfos*.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En dicho ejemplo\n", + "$\\mathcal{R}_1=\\mathcal{L}(\\Vect[1]{u},\\Vect[2]{u})$ y $\\mathcal{R}_2=\\mathcal{L}(\\Vect[1]{w},\\Vect[2]{w},\\Vect[3]{w})$ \n", + "\n", + "Para usar variables simbólicas correspondientes a los anteriores\n", + "vectores cargamos el siguiente módulo\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import symbols" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generemos la lista con los cinco vectores (aquí los subíndices\n", + "comienzan con cero como es costumbre en python).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(u0, u1, w0, w1, w2)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "R1=symbols('u:2')\n", + "R2=symbols('w:3')\n", + "lista=R1+R2\n", + "lista" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El productorio aspa entre la lista `R1` y `R2` nos da el conjunto de\n", + "todos pares posibles $(\\Vect[i]{u},\\Vect[j]{w})$ con $i=0:1$ y $j=0:2$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(u0, w0), (u0, w1), (u0, w2), (u1, w0), (u1, w1), (u1, w2)]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B = [x for x in aspa((R1,R2)) ]\n", + "B" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enumerando los pares y indicando si cada uno de los vectores está o no\n", + "en el par enumerado, construimos los vectores versión *estrella* de la\n", + "demo (aquí se ha seguido la numeración consecutiva de todos los pares,\n", + "y por eso obtenemos unos vectores estrella diferentes de los del\n", + "libro). Así la primera columna es $\\Vect[0]{u}^*$, la segunda\n", + "$\\Vect[1]{u}^*$, la tercera $\\Vect[0]{w}^*$, la cuarta\n", + "$\\Vect[1]{w}^*$ y la quinta $\\Vect[2]{w}^*$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHsAAAB6CAIAAAAQ+buNAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEhElEQVR42u2dMU77MBTGX6KuSE6lSszhBikrG0VsLBFHcG9QeoQ2R8gR4AJV2y0SE+IGdGOqFDKy9T+Ef1WBgMbP2M/2+yaoyuvnjyip/ZOfo91uB/QURRFNY3jF4/E4OlCSJMDSpyRJDuMdj8c9AJBSTiYTTucv9PT0tP+5KAoAiAFACHF2oJ9LrFar0Wj08vKibGK1Wp2dnc3nc0wF6x6OLHIYrBDiI/FOH3B1dbVer5VdzufzpmnyPJ9Opw8PD2qDtOsBW6S9peyOVnv/qet6113L5XL/WXmeCyG+eycAWPegvchkMpFSdk78/v5eebRZlu3/sL3BLZdLhcTNeNBepE08NvYMeXt7a5/d7a/D4TBN0+fnZ5PPMS0ekEXMJb5er/v9/uErl5eXm83GZOJaPCCLmEu8ruu6rg9fSdO0fXy75QFZJDY54K8XwqeLxRUPmCKxwmWiNtQ0TZumaW+Ce995nqtdqhY9IIuYu8ZHoxEAzGazw+B+nXAR9IAs0jM54DzPi6I4Pz9P07Qsy+l0an7arcUDpohK4lmWqY22LMvNZnN7e5tl2Ww2Gw6HysHZ9YApEkkphRDIFQbt8nK19u7urmmaGFhmxYlz4pw4ixPnxFmcuFeJE+Gc1kmpsg3HOCfQIKUQDufUQimRowiLc2qhlMhRBMQ5KZBSCIpzUiClEBTnpEBK8TZ62+3WmFc8Y6RASpVtNE2z3W5jAHh/f+/0H1ZziWeMFEgp3kY8GAxOT08NXBd4xkiBlGJsCCEGg4FjnJMCKYWgOCcFUgrMOV0Rc05H1g5ZnDgnzvr5u8rFxcXJyQkHYUDX19evr6+9qqqEEDc3N5zIX2uxWPB3FRfu495wTi37ORWiCI5zaqmAiiI0zqmLlCpEESjn1EVKFaIIkXNSIKVhcU4KpDQszkmBlBqdc1LgnBZJaTvnjKuqenx87HSZqH0eBc6pkZQqRLFYLKqqcmk/px+kNDjOaZ2UBsc5NZJStSiYc5oTc05H1g5ZnDgnzqIz5wxczDlNizmnI/dxIl1nXelbi03c+l7KsPrWmtxLCdy31vBeSuC+tUT2UiLlUt9aInspkXKpby2RvZRIUehb22HOSWQvJVIW+9Z245xE9lIiK9jtW9uNcxLZS4mUY31rieylRMqlvrVE9lIiK3Df2m9sMedkWVs7ZHHinDhL15yThRRzTtNizunIfdyP0zXd6FsLXpyu6VLfWgqcM6y+tRQ4Z0B9a705XdO6DZc4Z1h9a705XdO6jZ6U8si3enO6pi0bUsqPGdAx/x9vTtdEesDbiMuyLMvy1/d5c7qmRRtt1I5xzrD61npzuibSAzDndEXMOR1ZO2Rx4pw4ixPnxDlxFuXEveGcDvStBS84JzjUt9YPzulS31o/OKczfWv94Jwu9a31g3O61LfWD85JYRQdvqv4wTmtj+LYxP3gnHb71nZL3A/O6VjfWj84p0t9a/3gnNy39htbzDlZ1tYOWZw4J876NfGiKKL/2q/ysLQoSZJ9tkVRAED0danBuT41lPWJEPX7/X/SpkmEeOPDOAAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc|ccc}1&0&1&0&0\\\\1&0&0&1&0\\\\1&0&0&0&1\\\\0&1&1&0&0\\\\0&1&0&1&0\\\\0&1&0&0&1\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc|ccc}1&0&1&0&0\\\\1&0&0&1&0\\\\1&0&0&0&1\\\\0&1&1&0&0\\\\0&1&0&1&0\\\\0&1&0&0&1\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 1, 0, 0, 0]), Vector([0, 0, 0, 1, 1, 1]), Vector([1, 0, 0, 1, 0, 0]), Vector([0, 1, 0, 0, 1, 0]), Vector([0, 0, 1, 0, 0, 1])])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M = Matrix([ [ int(i in w) for i in lista ] for w in B]).ccol({len(R1),len(R1+R2)})\n", + "M" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Así pues, las dos primeras columnas son la base canónica del\n", + "subespacio probabilizable $\\mathcal{R}_1^*$ isomorfo a $\\mathcal{R}_1$\n", + "y las tres últimas columnas son la base canónica del subespacio\n", + "probabilizable $\\mathcal{R}_2^*$ isomorfo a $\\mathcal{R}_2$. \n", + "\n", + "Obtenemos la envolvente probabilizable de ambos espacios con todos los\n", + "productos de Hadamard entre los vectores indicatrices de ambas bases.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "prodH = lambda u,w: Vector([u[i]*w[i] for i in range(u.n)])\n", + "productoH = lambda x,n: V1(n) if not x else prodH(x[0], productoH(x[1:], n) )" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};\\end{bmatrix}$

" + ], + "text/latex": [ + "$\\begin{bmatrix}\\begin{pmatrix}1\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 1\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 1\\\\ 0\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 0\\\\ 1\\\\ 0\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 0\\\\ 0\\\\ 1\\\\ 0\\end{pmatrix};& \\begin{pmatrix}0\\\\ 0\\\\ 0\\\\ 0\\\\ 0\\\\ 1\\end{pmatrix};\\end{bmatrix}$" + ], + "text/plain": [ + "Sistema([Vector([1, 0, 0, 0, 0, 0]); Vector([0, 1, 0, 0, 0, 0]); Vector([0, 0, 1, 0, 0, 0]); Vector([0, 0, 0, 1, 0, 0]); Vector([0, 0, 0, 0, 1, 0]); Vector([0, 0, 0, 0, 0, 1]);])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n = M.m\n", + "Q = [x for x in aspa([M[:2],M[2:]]) ]\n", + "baseC = Sistema([v for v in [productoH(s,n) for s in Q] if v.no_es_nulo()])\n", + "baseC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En este caso la base canónica de la envolvente son las columnas de la\n", + "matriz identidad de orden 6.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lanzamiento de $m$ monedas\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para generar variables simbólicas con doble subíndice usaré el siguiente módulo\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import Symbol" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En el lanzamiento de una moneda hay dos `lados` posibles en cada\n", + "lanzamiento (cara o cruz). También especificamos el número de\n", + "lanzamientos, `rep` (*poner más de 14 lanzamientos empieza a ser\n", + "demasiado*)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "lados = 2\n", + "rep = 4 # 14" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La siguiente función auxiliar genera una tupla con los elementos en\n", + "las tuplas de una lista de tuplas\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "listaElementos = lambda x: () if not x else x[0] + listaElementos(x[1:])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generamos una lista `A` de pares. El primer par corresponde al primer\n", + "lanzamiento, el segundo par al segundo, etc. En cada par, la primera\n", + "variable corresponde al resultado cara y la segunda al resultado\n", + "cruz. Por tanto el primer subíndice de cada variable simbólica indica\n", + "el número de lanzamiento, el segundo subíndice indica cara (0) o cruz\n", + "(1).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(u_00, u_01), (u_10, u_11), (u_20, u_21), (u_30, u_31)]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = [tuple(Symbol(f'u_{i}{j}' ) for j in range(lados)) for i in range(rep) ]\n", + "A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Repetición de los pasos del ejemplo de la demostración correspondiente a la sección anterior\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`B` es una lista con el conjunto de las *n*-tuplas (donde *n* es el\n", + "número de lanzamientos) con todos los resultados posibles.\n", + "\n", + "¡Ojo! Esta lista crece mucho con el número de lanzamientos `rep`; es\n", + "mejor no pedir que se muestre el resultado en pantalla (salvo cuando\n", + "`rep` es un número reducido, por ejemplo, 3 o menos)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(u_00, u_10, u_20, u_30), (u_00, u_10, u_20, u_31), (u_00, u_10, u_21, u_30), (u_00, u_10, u_21, u_31), (u_00, u_11, u_20, u_30), (u_00, u_11, u_20, u_31), (u_00, u_11, u_21, u_30), (u_00, u_11, u_21, u_31), (u_01, u_10, u_20, u_30), (u_01, u_10, u_20, u_31), (u_01, u_10, u_21, u_30), (u_01, u_10, u_21, u_31), (u_01, u_11, u_20, u_30), (u_01, u_11, u_20, u_31), (u_01, u_11, u_21, u_30), (u_01, u_11, u_21, u_31)]\n" + ] + } + ], + "source": [ + "B = [x for x in aspa(A) ]\n", + "if rep<=4: print(B)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Construcción del subespacio probabilizable envolvente $\\mathcal{E}$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "¡De nuevo esta matriz crece mucho con el número de lanzamientos\n", + "`rep`! Es mejor no pedir que se muestre el resultado en pantalla si\n", + "`rep` es mayor que 4.\n", + "\n", + "Las columnas de las submatrices de $\\mathcal{E}$ son las bases\n", + "canónicas de cada una de las réplicas $\\mathcal{R^*_j}$ del espacio\n", + "probabilizable $\\mathcal{R}$ original correspondiente al lanzamiento\n", + "de una moneda.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\left[ \\begin{array}{cc|cc|cc|cc}1&0&1&0&1&0&1&0\\\\1&0&1&0&1&0&0&1\\\\1&0&1&0&0&1&1&0\\\\1&0&1&0&0&1&0&1\\\\1&0&0&1&1&0&1&0\\\\1&0&0&1&1&0&0&1\\\\1&0&0&1&0&1&1&0\\\\1&0&0&1&0&1&0&1\\\\0&1&1&0&1&0&1&0\\\\0&1&1&0&1&0&0&1\\\\0&1&1&0&0&1&1&0\\\\0&1&1&0&0&1&0&1\\\\0&1&0&1&1&0&1&0\\\\0&1&0&1&1&0&0&1\\\\0&1&0&1&0&1&1&0\\\\0&1&0&1&0&1&0&1\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cc|cc|cc|cc}1&0&1&0&1&0&1&0\\\\1&0&1&0&1&0&0&1\\\\1&0&1&0&0&1&1&0\\\\1&0&1&0&0&1&0&1\\\\1&0&0&1&1&0&1&0\\\\1&0&0&1&1&0&0&1\\\\1&0&0&1&0&1&1&0\\\\1&0&0&1&0&1&0&1\\\\0&1&1&0&1&0&1&0\\\\0&1&1&0&1&0&0&1\\\\0&1&1&0&0&1&1&0\\\\0&1&1&0&0&1&0&1\\\\0&1&0&1&1&0&1&0\\\\0&1&0&1&1&0&0&1\\\\0&1&0&1&0&1&1&0\\\\0&1&0&1&0&1&0&1\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]), Vector([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]), Vector([1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0]), Vector([0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]), Vector([1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0]), Vector([0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]), Vector([1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]), Vector([0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1])])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "E = Matrix([ [ int(i in w) for i in listaElementos(A) ] for w in B]).ccol({2,4,6})\n", + "if rep<=4: display(E)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El número de filas de esta matriz corresponde al número de posibles\n", + "resultados al lanzar `rep` veces una moneda:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of possible outcomes: 16\n" + ] + } + ], + "source": [ + "print('Number of possible outcomes: ', E.m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Construcción del espacio muestral para el lanzamiento de *m* monedas.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para construir el espacio muestral para el lanzamiento de *m* monedas,\n", + "en lugar de las bases canónicas estrella, necesitamos *m* embriones\n", + "(variables aleatorias) correspondientes a los espacios probabilizables\n", + "$\\mathcal{R^*_j}$\n", + "\n", + "Las columnas de la siguiente matriz son embriones de cada una de las\n", + "réplicas $\\mathcal{R^*_j}$ del espacio probabilizable $\\mathcal{R}$\n", + "original correspondiente al lanzamiento de una moneda.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\left[ \\begin{array}{cccc}1&1&1&1\\\\1&1&1&2\\\\1&1&2&1\\\\1&1&2&2\\\\1&2&1&1\\\\1&2&1&2\\\\1&2&2&1\\\\1&2&2&2\\\\2&1&1&1\\\\2&1&1&2\\\\2&1&2&1\\\\2&1&2&2\\\\2&2&1&1\\\\2&2&1&2\\\\2&2&2&1\\\\2&2&2&2\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cccc}1&1&1&1\\\\1&1&1&2\\\\1&1&2&1\\\\1&1&2&2\\\\1&2&1&1\\\\1&2&1&2\\\\1&2&2&1\\\\1&2&2&2\\\\2&1&1&1\\\\2&1&1&2\\\\2&1&2&1\\\\2&1&2&2\\\\2&2&1&1\\\\2&2&1&2\\\\2&2&2&1\\\\2&2&2&2\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2]), Vector([1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2]), Vector([1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2]), Vector([1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2])])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "SampleSp = Matrix([SubEspacioProb(Matrix(E[i*lados:(i+1)*lados])).embrion for i in range(rep)])\n", + "if rep<=4 and lados<=3: display(SampleSp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El conjunto de las filas de la matriz anterior es el espacio\n", + "muestral. En cada fila, un `1` corresponde al caso \"*la moneda muestra\n", + "cara*\" (H) y un `2` corresponde al caso \"*la moneda muestra cruz*\"\n", + "(T). Por tanto, las filas de la matriz anterior muestran todos los\n", + "resultados posibles al lanzar una moneda `rep` veces, donde `rep` es\n", + "el número de columnas, es decir de variables aleatorias (donde cada\n", + "una de ellas corresponde a un lanzamiento).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Experimento\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Así, \"*realizar*\" el experimento consiste en evaluar las variables\n", + "aleatorias de la matriz anterior (las columnas) en un mismo elemento\n", + "$n$ de su dominio $\\Omega$ (se suele denominar a dicho elemento\n", + "*suceso elemental*); es decir, consiste en mirar la componente\n", + "$n$-ésima de los `rep` embriones, o lo que es lo mismo, en elegir\n", + "\"una\" fila de la matriz.\n", + "\n", + "El azar consiste en que no sabemos en que punto del dominio se\n", + "evaluarán las variables aleatorias. Para simular dicha circunstancia\n", + "usaremos el modulo `random` para escoger una fila al azar.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAAUCAIAAAABXIRyAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACA0lEQVRYw+2Y4dGiMBCG95grIKQE7CC2EDsASqAEbCFaAWMJ2AFDCZEKQkoIdpD7ES5m9OOGT/fMzZzvr7g4z2SWN7sbflhr4bfGcdxsNvDRV5qmKU3TMJL41fl8Hobhk6MlpWm63++nabqFrLXWWqVUVVU2UNd1jDEA4JwrpexrwqXFAhpj8jz3P+fcMcaMMT7aNI0QQkophAAAxtgr28KlxQUKIdq2veWu67o704V55Jx7ez4nXFp0YJZlbpEAwPF4zPP87mz7NWOMEPJipUCkRQdmWXa5XOZe0ff9brdb+qvWuixLrIqLS4sC5JyfTicAACmlN+GSRUNLvyhcWhSg6yrW2kRr/QeLHg6Huq7v5pqnhUuLBaSUaq0BAJqm4Zx/mWAp5dKjJ4RLiwhUSrlmAkKIcGYJxTlHPA64tIhAY8ycuyXfcc6llI9v5jG4cluItLhA77uflFKXyFBFUbg2IqX0h7woiqqqhmEwxnyrxODSogOv1+vcIZRShJAwr3VdP9Ld8OzQTdOsf5+4tH8B2LatO6lgrSWErC8cVVUJIbBKDC7tPcC6rl0kAYCyLPu+X2lvQoi7taAIl/YeYN/37hqWOH/Og/I6bbdbxM3h0v42cBxHSun8ldM7c02HerqLvYH2HmCYqNsHg6Up76PwNhbWPgjHlu92qP9Kxpi7pvELc7z8+P8spqMAAAAASUVORK5CYII=\n", + "text/html": [ + "

$\\begin{pmatrix}2,& 2,& 2,& 2,\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}2,& 2,& 2,& 2,\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([2, 2, 2, 2])" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trial = random.choice(range(SampleSp.m))\n", + "outcome = trial|SampleSp\n", + "print(trial)\n", + "outcome" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of heads: 0\n" + ] + } + ], + "source": [ + "print('number of heads: ', sum([int(e==1) for e in outcome]) )" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of tails: 4\n" + ] + } + ], + "source": [ + "print('number of tails: ', sum([int(e==2) for e in trial|SampleSp]) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Frecuencia de los posibles resultados\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos contar el número de caras en cada uno de los posibles\n", + "resultados\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res = [sum([int(e==1) for e in r]) for r in (~SampleSp).lista]\n", + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos mirar la frecuencia contando el número de veces que aparece\n", + "cada lado en cada caso.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "def count_elements(seq) -> dict:\n", + " \"\"\"Tally elements from `seq`.\"\"\"\n", + " hist = {}\n", + " for i in seq:\n", + " hist[i] = hist.get(i, 0) + 1\n", + " return hist" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{4: 1, 3: 4, 2: 6, 1: 4, 0: 1}" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "count_elements(res)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "O con un histograma\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 10.0)" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# An \"interface\" to matplotlib.axes.Axes.hist() method\n", + "n, bins, patches = plt.hist(x=res, bins='auto', color='#0504aa',\n", + " alpha=0.7, rwidth=0.85)\n", + "plt.grid(axis='y', alpha=0.75)\n", + "plt.xlabel('Number of heads')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Histogram of possible number of heads')\n", + "#plt.text(23, 45, r'$\\mu=15, b=3$')\n", + "maxfreq = n.max()\n", + "# Set a clean upper y-axis limit.\n", + "plt.ylim(ymax=np.ceil(maxfreq / 10) * 10 if maxfreq % 10 else maxfreq + 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Este histograma de frecuencias nada tiene que ver con la probabilidad\n", + "de cada resultado (salvo si la moneda es justa y dividimos cada\n", + "frecuencia absoluta del histograma por el número de casos).\n", + "\n", + "Para reflejar la probabilidad es necesario emplear el espacio euclídeo\n", + "de probabilidad, es decir, al espacio probabilizable hay que definir\n", + "una función esperanza. Lo podemos hacer incorporando una función de\n", + "masa de probabilidad, para los distintos valores de la variable\n", + "aleatoria embrión, o alternativamente asignando una probabilidad a\n", + "cada vector de la base canónica. \n", + "\n", + "Por cuestiones didácticas implementaremos ambas vías.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lanzamiento de $m$ dados con $k$ lados\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Indicamos el numero de `lados` y el número de lanzamientos, `rep`\n", + "(*ambos números deben ser pequeños o tendremos problemas con la\n", + "memoria del ordenador*)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "lados = 3\n", + "rep = 4 # ó 5 (con 3 lados y 6 repeticiones ya tarda mucho)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generamos una lista `A` de $k$-tuplas. La primera corresponde al\n", + "primer lanzamiento, la segunda par al segundo, etc. En cada $k$-tupla,\n", + "la primera variable corresponde al resultado primera cara y la segunda\n", + "al resultado segunda cara, etc. Por tanto el primer subíndice de cada\n", + "variable simbólica indica el número de lanzamiento, el segundo\n", + "subíndice indica el lado mostrado por el dado.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(u_00, u_01, u_02),\n", + " (u_10, u_11, u_12),\n", + " (u_20, u_21, u_22),\n", + " (u_30, u_31, u_32)]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = [tuple(Symbol(f'u_{i}{j}' ) for j in range(lados)) for i in range(rep) ]\n", + "A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Repetición de los pasos del ejemplo de la demostración correspondiente a la sección anterior\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`B` es una lista con el conjunto de las *n*-tuplas (donde *n* es el\n", + "número de lanzamientos) con todos los resultados posibles.\n", + "\n", + "¡Ojo! Esta lista crece mucho con el número de lanzamientos `rep`; es\n", + "mejor no pedir que se muestre el resultado en pantalla (salvo cuando\n", + "`rep` es un número reducido, por ejemplo, 3 o menos)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(u_00, u_10, u_20, u_30), (u_00, u_10, u_20, u_31), (u_00, u_10, u_20, u_32), (u_00, u_10, u_21, u_30), (u_00, u_10, u_21, u_31), (u_00, u_10, u_21, u_32), (u_00, u_10, u_22, u_30), (u_00, u_10, u_22, u_31), (u_00, u_10, u_22, u_32), (u_00, u_11, u_20, u_30), (u_00, u_11, u_20, u_31), (u_00, u_11, u_20, u_32), (u_00, u_11, u_21, u_30), (u_00, u_11, u_21, u_31), (u_00, u_11, u_21, u_32), (u_00, u_11, u_22, u_30), (u_00, u_11, u_22, u_31), (u_00, u_11, u_22, u_32), (u_00, u_12, u_20, u_30), (u_00, u_12, u_20, u_31), (u_00, u_12, u_20, u_32), (u_00, u_12, u_21, u_30), (u_00, u_12, u_21, u_31), (u_00, u_12, u_21, u_32), (u_00, u_12, u_22, u_30), (u_00, u_12, u_22, u_31), (u_00, u_12, u_22, u_32), (u_01, u_10, u_20, u_30), (u_01, u_10, u_20, u_31), (u_01, u_10, u_20, u_32), (u_01, u_10, u_21, u_30), (u_01, u_10, u_21, u_31), (u_01, u_10, u_21, u_32), (u_01, u_10, u_22, u_30), (u_01, u_10, u_22, u_31), (u_01, u_10, u_22, u_32), (u_01, u_11, u_20, u_30), (u_01, u_11, u_20, u_31), (u_01, u_11, u_20, u_32), (u_01, u_11, u_21, u_30), (u_01, u_11, u_21, u_31), (u_01, u_11, u_21, u_32), (u_01, u_11, u_22, u_30), (u_01, u_11, u_22, u_31), (u_01, u_11, u_22, u_32), (u_01, u_12, u_20, u_30), (u_01, u_12, u_20, u_31), (u_01, u_12, u_20, u_32), (u_01, u_12, u_21, u_30), (u_01, u_12, u_21, u_31), (u_01, u_12, u_21, u_32), (u_01, u_12, u_22, u_30), (u_01, u_12, u_22, u_31), (u_01, u_12, u_22, u_32), (u_02, u_10, u_20, u_30), (u_02, u_10, u_20, u_31), (u_02, u_10, u_20, u_32), (u_02, u_10, u_21, u_30), (u_02, u_10, u_21, u_31), (u_02, u_10, u_21, u_32), (u_02, u_10, u_22, u_30), (u_02, u_10, u_22, u_31), (u_02, u_10, u_22, u_32), (u_02, u_11, u_20, u_30), (u_02, u_11, u_20, u_31), (u_02, u_11, u_20, u_32), (u_02, u_11, u_21, u_30), (u_02, u_11, u_21, u_31), (u_02, u_11, u_21, u_32), (u_02, u_11, u_22, u_30), (u_02, u_11, u_22, u_31), (u_02, u_11, u_22, u_32), (u_02, u_12, u_20, u_30), (u_02, u_12, u_20, u_31), (u_02, u_12, u_20, u_32), (u_02, u_12, u_21, u_30), (u_02, u_12, u_21, u_31), (u_02, u_12, u_21, u_32), (u_02, u_12, u_22, u_30), (u_02, u_12, u_22, u_31), (u_02, u_12, u_22, u_32)]\n" + ] + } + ], + "source": [ + "B = [x for x in aspa(A) ]\n", + "if rep<=4 and lados<=3: print(B)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Construcción del subespacio probabilizable envolvente $\\mathcal{E}$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\_¡De nuevo esta matriz crece mucho con el número de lanzamientos `rep`\n", + "y el número de lados (`lados`)! Es mejor no pedir que se muestre el\n", + "resultado en pantalla\\_ si `rep` es mayor que 4.\n", + "\n", + "Las columnas de las submatrices de $\\mathcal{E}$ son las bases\n", + "canónicas de cada una de las réplicas $\\mathcal{R^*_j}$ del espacio\n", + "probabilizable $\\mathcal{R}$ original correspondiente al lanzamiento\n", + "de una moneda.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\left[ \\begin{array}{ccc|ccc|ccc|ccc}1&0&0&1&0&0&1&0&0&1&0&0\\\\1&0&0&1&0&0&1&0&0&0&1&0\\\\1&0&0&1&0&0&1&0&0&0&0&1\\\\1&0&0&1&0&0&0&1&0&1&0&0\\\\1&0&0&1&0&0&0&1&0&0&1&0\\\\1&0&0&1&0&0&0&1&0&0&0&1\\\\1&0&0&1&0&0&0&0&1&1&0&0\\\\1&0&0&1&0&0&0&0&1&0&1&0\\\\1&0&0&1&0&0&0&0&1&0&0&1\\\\1&0&0&0&1&0&1&0&0&1&0&0\\\\1&0&0&0&1&0&1&0&0&0&1&0\\\\1&0&0&0&1&0&1&0&0&0&0&1\\\\1&0&0&0&1&0&0&1&0&1&0&0\\\\1&0&0&0&1&0&0&1&0&0&1&0\\\\1&0&0&0&1&0&0&1&0&0&0&1\\\\1&0&0&0&1&0&0&0&1&1&0&0\\\\1&0&0&0&1&0&0&0&1&0&1&0\\\\1&0&0&0&1&0&0&0&1&0&0&1\\\\1&0&0&0&0&1&1&0&0&1&0&0\\\\1&0&0&0&0&1&1&0&0&0&1&0\\\\1&0&0&0&0&1&1&0&0&0&0&1\\\\1&0&0&0&0&1&0&1&0&1&0&0\\\\1&0&0&0&0&1&0&1&0&0&1&0\\\\1&0&0&0&0&1&0&1&0&0&0&1\\\\1&0&0&0&0&1&0&0&1&1&0&0\\\\1&0&0&0&0&1&0&0&1&0&1&0\\\\1&0&0&0&0&1&0&0&1&0&0&1\\\\0&1&0&1&0&0&1&0&0&1&0&0\\\\0&1&0&1&0&0&1&0&0&0&1&0\\\\0&1&0&1&0&0&1&0&0&0&0&1\\\\0&1&0&1&0&0&0&1&0&1&0&0\\\\0&1&0&1&0&0&0&1&0&0&1&0\\\\0&1&0&1&0&0&0&1&0&0&0&1\\\\0&1&0&1&0&0&0&0&1&1&0&0\\\\0&1&0&1&0&0&0&0&1&0&1&0\\\\0&1&0&1&0&0&0&0&1&0&0&1\\\\0&1&0&0&1&0&1&0&0&1&0&0\\\\0&1&0&0&1&0&1&0&0&0&1&0\\\\0&1&0&0&1&0&1&0&0&0&0&1\\\\0&1&0&0&1&0&0&1&0&1&0&0\\\\0&1&0&0&1&0&0&1&0&0&1&0\\\\0&1&0&0&1&0&0&1&0&0&0&1\\\\0&1&0&0&1&0&0&0&1&1&0&0\\\\0&1&0&0&1&0&0&0&1&0&1&0\\\\0&1&0&0&1&0&0&0&1&0&0&1\\\\0&1&0&0&0&1&1&0&0&1&0&0\\\\0&1&0&0&0&1&1&0&0&0&1&0\\\\0&1&0&0&0&1&1&0&0&0&0&1\\\\0&1&0&0&0&1&0&1&0&1&0&0\\\\0&1&0&0&0&1&0&1&0&0&1&0\\\\0&1&0&0&0&1&0&1&0&0&0&1\\\\0&1&0&0&0&1&0&0&1&1&0&0\\\\0&1&0&0&0&1&0&0&1&0&1&0\\\\0&1&0&0&0&1&0&0&1&0&0&1\\\\0&0&1&1&0&0&1&0&0&1&0&0\\\\0&0&1&1&0&0&1&0&0&0&1&0\\\\0&0&1&1&0&0&1&0&0&0&0&1\\\\0&0&1&1&0&0&0&1&0&1&0&0\\\\0&0&1&1&0&0&0&1&0&0&1&0\\\\0&0&1&1&0&0&0&1&0&0&0&1\\\\0&0&1&1&0&0&0&0&1&1&0&0\\\\0&0&1&1&0&0&0&0&1&0&1&0\\\\0&0&1&1&0&0&0&0&1&0&0&1\\\\0&0&1&0&1&0&1&0&0&1&0&0\\\\0&0&1&0&1&0&1&0&0&0&1&0\\\\0&0&1&0&1&0&1&0&0&0&0&1\\\\0&0&1&0&1&0&0&1&0&1&0&0\\\\0&0&1&0&1&0&0&1&0&0&1&0\\\\0&0&1&0&1&0&0&1&0&0&0&1\\\\0&0&1&0&1&0&0&0&1&1&0&0\\\\0&0&1&0&1&0&0&0&1&0&1&0\\\\0&0&1&0&1&0&0&0&1&0&0&1\\\\0&0&1&0&0&1&1&0&0&1&0&0\\\\0&0&1&0&0&1&1&0&0&0&1&0\\\\0&0&1&0&0&1&1&0&0&0&0&1\\\\0&0&1&0&0&1&0&1&0&1&0&0\\\\0&0&1&0&0&1&0&1&0&0&1&0\\\\0&0&1&0&0&1&0&1&0&0&0&1\\\\0&0&1&0&0&1&0&0&1&1&0&0\\\\0&0&1&0&0&1&0&0&1&0&1&0\\\\0&0&1&0&0&1&0&0&1&0&0&1\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{ccc|ccc|ccc|ccc}1&0&0&1&0&0&1&0&0&1&0&0\\\\1&0&0&1&0&0&1&0&0&0&1&0\\\\1&0&0&1&0&0&1&0&0&0&0&1\\\\1&0&0&1&0&0&0&1&0&1&0&0\\\\1&0&0&1&0&0&0&1&0&0&1&0\\\\1&0&0&1&0&0&0&1&0&0&0&1\\\\1&0&0&1&0&0&0&0&1&1&0&0\\\\1&0&0&1&0&0&0&0&1&0&1&0\\\\1&0&0&1&0&0&0&0&1&0&0&1\\\\1&0&0&0&1&0&1&0&0&1&0&0\\\\1&0&0&0&1&0&1&0&0&0&1&0\\\\1&0&0&0&1&0&1&0&0&0&0&1\\\\1&0&0&0&1&0&0&1&0&1&0&0\\\\1&0&0&0&1&0&0&1&0&0&1&0\\\\1&0&0&0&1&0&0&1&0&0&0&1\\\\1&0&0&0&1&0&0&0&1&1&0&0\\\\1&0&0&0&1&0&0&0&1&0&1&0\\\\1&0&0&0&1&0&0&0&1&0&0&1\\\\1&0&0&0&0&1&1&0&0&1&0&0\\\\1&0&0&0&0&1&1&0&0&0&1&0\\\\1&0&0&0&0&1&1&0&0&0&0&1\\\\1&0&0&0&0&1&0&1&0&1&0&0\\\\1&0&0&0&0&1&0&1&0&0&1&0\\\\1&0&0&0&0&1&0&1&0&0&0&1\\\\1&0&0&0&0&1&0&0&1&1&0&0\\\\1&0&0&0&0&1&0&0&1&0&1&0\\\\1&0&0&0&0&1&0&0&1&0&0&1\\\\0&1&0&1&0&0&1&0&0&1&0&0\\\\0&1&0&1&0&0&1&0&0&0&1&0\\\\0&1&0&1&0&0&1&0&0&0&0&1\\\\0&1&0&1&0&0&0&1&0&1&0&0\\\\0&1&0&1&0&0&0&1&0&0&1&0\\\\0&1&0&1&0&0&0&1&0&0&0&1\\\\0&1&0&1&0&0&0&0&1&1&0&0\\\\0&1&0&1&0&0&0&0&1&0&1&0\\\\0&1&0&1&0&0&0&0&1&0&0&1\\\\0&1&0&0&1&0&1&0&0&1&0&0\\\\0&1&0&0&1&0&1&0&0&0&1&0\\\\0&1&0&0&1&0&1&0&0&0&0&1\\\\0&1&0&0&1&0&0&1&0&1&0&0\\\\0&1&0&0&1&0&0&1&0&0&1&0\\\\0&1&0&0&1&0&0&1&0&0&0&1\\\\0&1&0&0&1&0&0&0&1&1&0&0\\\\0&1&0&0&1&0&0&0&1&0&1&0\\\\0&1&0&0&1&0&0&0&1&0&0&1\\\\0&1&0&0&0&1&1&0&0&1&0&0\\\\0&1&0&0&0&1&1&0&0&0&1&0\\\\0&1&0&0&0&1&1&0&0&0&0&1\\\\0&1&0&0&0&1&0&1&0&1&0&0\\\\0&1&0&0&0&1&0&1&0&0&1&0\\\\0&1&0&0&0&1&0&1&0&0&0&1\\\\0&1&0&0&0&1&0&0&1&1&0&0\\\\0&1&0&0&0&1&0&0&1&0&1&0\\\\0&1&0&0&0&1&0&0&1&0&0&1\\\\0&0&1&1&0&0&1&0&0&1&0&0\\\\0&0&1&1&0&0&1&0&0&0&1&0\\\\0&0&1&1&0&0&1&0&0&0&0&1\\\\0&0&1&1&0&0&0&1&0&1&0&0\\\\0&0&1&1&0&0&0&1&0&0&1&0\\\\0&0&1&1&0&0&0&1&0&0&0&1\\\\0&0&1&1&0&0&0&0&1&1&0&0\\\\0&0&1&1&0&0&0&0&1&0&1&0\\\\0&0&1&1&0&0&0&0&1&0&0&1\\\\0&0&1&0&1&0&1&0&0&1&0&0\\\\0&0&1&0&1&0&1&0&0&0&1&0\\\\0&0&1&0&1&0&1&0&0&0&0&1\\\\0&0&1&0&1&0&0&1&0&1&0&0\\\\0&0&1&0&1&0&0&1&0&0&1&0\\\\0&0&1&0&1&0&0&1&0&0&0&1\\\\0&0&1&0&1&0&0&0&1&1&0&0\\\\0&0&1&0&1&0&0&0&1&0&1&0\\\\0&0&1&0&1&0&0&0&1&0&0&1\\\\0&0&1&0&0&1&1&0&0&1&0&0\\\\0&0&1&0&0&1&1&0&0&0&1&0\\\\0&0&1&0&0&1&1&0&0&0&0&1\\\\0&0&1&0&0&1&0&1&0&1&0&0\\\\0&0&1&0&0&1&0&1&0&0&1&0\\\\0&0&1&0&0&1&0&1&0&0&0&1\\\\0&0&1&0&0&1&0&0&1&1&0&0\\\\0&0&1&0&0&1&0&0&1&0&1&0\\\\0&0&1&0&0&1&0&0&1&0&0&1\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Vector([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Vector([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), Vector([1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Vector([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Vector([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]), Vector([1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0]), Vector([0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0]), Vector([0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1]), Vector([1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0]), Vector([0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]), Vector([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1])])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "E = Matrix([ [ int(i in w) for i in listaElementos(A) ] for w in B]).ccol({3,6,9},)\n", + "if rep<=4 and lados<=3: display(E)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El número de filas de esta matriz corresponde al número de posibles\n", + "resultados al lanzar `rep` veces una moneda:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of possible outcomes: 81\n" + ] + } + ], + "source": [ + "print('Number of possible outcomes: ', E.m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Construcción del espacio muestral para el lanzamiento de *m* monedas.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para construir el espacio muestral para el lanzamiento de *m* monedas,\n", + "en lugar de las bases canónicas estrella, necesitamos *m* embriones\n", + "(variables aleatorias) correspondientes a los espacios probabilizables\n", + "$\\mathcal{R^*_j}$\n", + "\n", + "Las columnas de la siguiente matriz son embriones de cada una de las\n", + "réplicas $\\mathcal{R^*_j}$ del espacio probabilizable $\\mathcal{R}$\n", + "original correspondiente al lanzamiento de una moneda.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/html": [ + "

$\\left[ \\begin{array}{cccc}1&1&1&1\\\\1&1&1&2\\\\1&1&1&3\\\\1&1&2&1\\\\1&1&2&2\\\\1&1&2&3\\\\1&1&3&1\\\\1&1&3&2\\\\1&1&3&3\\\\1&2&1&1\\\\1&2&1&2\\\\1&2&1&3\\\\1&2&2&1\\\\1&2&2&2\\\\1&2&2&3\\\\1&2&3&1\\\\1&2&3&2\\\\1&2&3&3\\\\1&3&1&1\\\\1&3&1&2\\\\1&3&1&3\\\\1&3&2&1\\\\1&3&2&2\\\\1&3&2&3\\\\1&3&3&1\\\\1&3&3&2\\\\1&3&3&3\\\\2&1&1&1\\\\2&1&1&2\\\\2&1&1&3\\\\2&1&2&1\\\\2&1&2&2\\\\2&1&2&3\\\\2&1&3&1\\\\2&1&3&2\\\\2&1&3&3\\\\2&2&1&1\\\\2&2&1&2\\\\2&2&1&3\\\\2&2&2&1\\\\2&2&2&2\\\\2&2&2&3\\\\2&2&3&1\\\\2&2&3&2\\\\2&2&3&3\\\\2&3&1&1\\\\2&3&1&2\\\\2&3&1&3\\\\2&3&2&1\\\\2&3&2&2\\\\2&3&2&3\\\\2&3&3&1\\\\2&3&3&2\\\\2&3&3&3\\\\3&1&1&1\\\\3&1&1&2\\\\3&1&1&3\\\\3&1&2&1\\\\3&1&2&2\\\\3&1&2&3\\\\3&1&3&1\\\\3&1&3&2\\\\3&1&3&3\\\\3&2&1&1\\\\3&2&1&2\\\\3&2&1&3\\\\3&2&2&1\\\\3&2&2&2\\\\3&2&2&3\\\\3&2&3&1\\\\3&2&3&2\\\\3&2&3&3\\\\3&3&1&1\\\\3&3&1&2\\\\3&3&1&3\\\\3&3&2&1\\\\3&3&2&2\\\\3&3&2&3\\\\3&3&3&1\\\\3&3&3&2\\\\3&3&3&3\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{cccc}1&1&1&1\\\\1&1&1&2\\\\1&1&1&3\\\\1&1&2&1\\\\1&1&2&2\\\\1&1&2&3\\\\1&1&3&1\\\\1&1&3&2\\\\1&1&3&3\\\\1&2&1&1\\\\1&2&1&2\\\\1&2&1&3\\\\1&2&2&1\\\\1&2&2&2\\\\1&2&2&3\\\\1&2&3&1\\\\1&2&3&2\\\\1&2&3&3\\\\1&3&1&1\\\\1&3&1&2\\\\1&3&1&3\\\\1&3&2&1\\\\1&3&2&2\\\\1&3&2&3\\\\1&3&3&1\\\\1&3&3&2\\\\1&3&3&3\\\\2&1&1&1\\\\2&1&1&2\\\\2&1&1&3\\\\2&1&2&1\\\\2&1&2&2\\\\2&1&2&3\\\\2&1&3&1\\\\2&1&3&2\\\\2&1&3&3\\\\2&2&1&1\\\\2&2&1&2\\\\2&2&1&3\\\\2&2&2&1\\\\2&2&2&2\\\\2&2&2&3\\\\2&2&3&1\\\\2&2&3&2\\\\2&2&3&3\\\\2&3&1&1\\\\2&3&1&2\\\\2&3&1&3\\\\2&3&2&1\\\\2&3&2&2\\\\2&3&2&3\\\\2&3&3&1\\\\2&3&3&2\\\\2&3&3&3\\\\3&1&1&1\\\\3&1&1&2\\\\3&1&1&3\\\\3&1&2&1\\\\3&1&2&2\\\\3&1&2&3\\\\3&1&3&1\\\\3&1&3&2\\\\3&1&3&3\\\\3&2&1&1\\\\3&2&1&2\\\\3&2&1&3\\\\3&2&2&1\\\\3&2&2&2\\\\3&2&2&3\\\\3&2&3&1\\\\3&2&3&2\\\\3&2&3&3\\\\3&3&1&1\\\\3&3&1&2\\\\3&3&1&3\\\\3&3&2&1\\\\3&3&2&2\\\\3&3&2&3\\\\3&3&3&1\\\\3&3&3&2\\\\3&3&3&3\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]), Vector([1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3]), Vector([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3]), Vector([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])])" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "SampleSp = Matrix([SubEspacioProb(Matrix(E[i*lados:(i+1)*lados])).embrion for i in range(rep)])\n", + "if rep<=4 and lados<=3: display(SampleSp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El conjunto de las filas de la matriz anterior es el espacio\n", + "muestral. En cada fila, un `1` corresponde al caso \"*la moneda muestra\n", + "cara*\" (H) y un `2` corresponde al caso \"*la moneda muestra cruz*\"\n", + "(T). Por tanto, las filas de la matriz anterior muestran todos los\n", + "resultados posibles al lanzar una moneda `rep` veces, donde `rep` es\n", + "el número de columnas, es decir de variables aleatorias (donde cada\n", + "una de ellas corresponde a un lanzamiento).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Experimento\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Así, \"*realizar*\" el experimento consiste en evaluar las variables\n", + "aleatorias de la matriz anterior (las columnas) en un mismo elemento\n", + "$n$ de su dominio $\\Omega$ (se suele denominar a dicho elemento\n", + "*suceso elemental*); es decir, consiste en mirar la componente\n", + "$n$-ésima de los `rep` embriones, o lo que es lo mismo, en elegir\n", + "\"una\" fila de la matriz.\n", + "\n", + "El azar consiste en que no sabemos en que punto del dominio se\n", + "evaluarán las variables aleatorias. Para simular dicha circunstancia\n", + "usaremos el modulo `random` para escoger una fila al azar.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "51\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAAUCAIAAAABXIRyAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACcUlEQVRYw+2Y0bGqMBRFz3NuAYESYgfREmIHwRKwg0gJ0QoylhA7YCgBqCBYQqCDvI/4kOE+HSTBjzt3fzFBtyvHw07CH2st/FPTNOv1Gn71P7VtG0XRcGTVX12v17quf2v0TFEUHY/Htm0fQ9Zaa63WOk1TO1Ce54QQAKCUaq2tn5RSGGMAYIzZEAqLN5HQGDO8e68dIcQY049KKYUQZVkKIQCAEOKDJaVUSmmtnZsQwnOeYfHeIhRCKKUetcvzfNR0wzpSSvv29BchhHPuabIc3hRCjLG7WAHA+XxmjI2e7f6aEIIQCpUat9vNzdYzehbCm0KIMa6q6r5WFEWx2+1eeO33+yBYh8Mhy7IXvzVvqqHwJhJSSi+XCwBAWZZ9Ez5r0eEzMk+cc4SQECJIrgfHe4vQLVPWWlBKvchaIYSUMsgktdaccwAYZauPAuJNJyzLEiFkrQUpJaX02Yee3fL5e12z+1stgTeFUGvtVqdV13XPsjbLMqVU2B2myyZjjL/VEnhTCOM4vp8rEEJd133/xG63E0KMTiFVVbkl5t3TzDDaAWC73c52C473LmFf1q84jr/XOEkS17dlWfbFTpIkTdO6ro0xI+gXOp1OSilH0Lataxb39RluwfFmED6eVK21S77RAz+Si0/H+lY8a60ZYxhjxhhjbJgjM9yC480gVEq5nAVrLUJo+jKfpqn/oWoht88Ycs7dyMqlY1EUEzscIeR/MFjI7TOGRVG4Y9jKNfx9ozxNm80mIFxYt6UNm6aJ4/j+lrPvzCl7riD7soXcPmM4LNTjDUSoN2s/WHmeD7MPhstNwPPNz5MxZrRo/AVEmhtz+Ia/FAAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\begin{pmatrix}2,& 3,& 2,& 3,\\end{pmatrix}$

" + ], + "text/latex": [ + "$\\begin{pmatrix}2,& 3,& 2,& 3,\\end{pmatrix}$" + ], + "text/plain": [ + "Vector([2, 3, 2, 3])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trial = random.choice(range(SampleSp.m))\n", + "outcome = trial|SampleSp\n", + "print(trial)\n", + "outcome" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of heads: 0\n" + ] + } + ], + "source": [ + "print('number of heads: ', sum([int(e==1) for e in outcome]) )" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of tails: 2\n" + ] + } + ], + "source": [ + "print('number of tails: ', sum([int(e==2) for e in trial|SampleSp]) )" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of tails: 2\n" + ] + } + ], + "source": [ + "print('number of tails: ', sum([int(e==3) for e in trial|SampleSp]) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Frecuencia de los posibles resultados\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos contar el número de veces que se nuestra la primera cara en\n", + "cada uno de los posibles resultados\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "res = [sum([int(e==1) for e in r]) for r in (~SampleSp).lista]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos mirar la frecuencia contando el número de veces que aparece\n", + "cada lado en cada caso.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "def count_elements(seq) -> dict:\n", + " \"\"\"Tally elements from `seq`.\"\"\"\n", + " hist = {}\n", + " for i in seq:\n", + " hist[i] = hist.get(i, 0) + 1\n", + " return hist" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{4: 1, 3: 8, 2: 24, 1: 32, 0: 16}" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "count_elements(res)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "O con un histograma\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 40.0)" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# An \"interface\" to matplotlib.axes.Axes.hist() method\n", + "n, bins, patches = plt.hist(x=res, bins='auto', color='#0504aa',\n", + " alpha=0.7, rwidth=0.85)\n", + "plt.grid(axis='y', alpha=0.75)\n", + "plt.xlabel('Number of heads')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Histogram of possible number of heads')\n", + "#plt.text(23, 45, r'$\\mu=15, b=3$')\n", + "maxfreq = n.max()\n", + "# Set a clean upper y-axis limit.\n", + "plt.ylim(ymax=np.ceil(maxfreq / 10) * 10 if maxfreq % 10 else maxfreq + 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Este histograma de frecuencias nada tiene que ver con la probabilidad\n", + "de cada resultado (salvo si la moneda es justa y dividimos cada\n", + "frecuencia absoluta del histograma por el número de casos).\n", + "\n", + "Para reflejar la probabilidad es necesario emplear el espacio euclídeo\n", + "de probabilidad, es decir, al espacio probabilizable hay que definir\n", + "una función esperanza. Lo podemos hacer incorporando una función de\n", + "masa de probabilidad, para los distintos valores de la variable\n", + "aleatoria embrión, o alternativamente asignando una probabilidad a\n", + "cada vector de la base canónica. \n", + "\n", + "Por cuestiones didácticas implementaremos ambas vías.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Espacio euclideo de probabilidad\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ejemplo de la demostración en el libro sobre la *construcción de subespacios independientes e isomorfos*.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(u0, u1, w0, w1, w2)" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "R1=symbols('u:2')\n", + "R2=symbols('w:3')\n", + "lista=R1+R2\n", + "lista" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(u0, w0), (u0, w1), (u0, w2), (u1, w0), (u1, w1), (u1, w2)]" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B = [x for x in aspa((R1,R2)) ]\n", + "B" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHsAAAB5CAIAAACWbckjAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEaUlEQVR42u2dMW7qQBCGB4s20oKElNrcwKRNF1C6NFaOsEcgHAF8BB+BXAABnaVUUW4QulRIjst07xV+D1mJlOAdZ3dmd/4mCSLD+Ge1sP60/4LWGhpSSv0RdSelVNNerXW//jGfz0H0C3p+fj79nmUZAET1uB439H2J3W43nU5fX1+Nm9jtduPxeLVaYSo47+HMIk1j6/EetX2B2Wy23++Nu1ytVlVVpWm6WCweHx/NLtJtD9gi9ZRy/sRUzz9lWRpMatvt9vRaaZoaf2Y478GsyHw+11q3dny9XhtfbZIkp3+sJ7jtdmtQx3kPZkVqxyNrnyHv7+8AMBgM6j8nk0kcxy8vLzY/xzrpAVnEnuP7/X44HDYfubm5ORwONh3vpAdkEXuOl2VZlmXzkTiOP31dZdEDskhk84K/DoRPg4VLD5gikcEwMbvUOI6rqqonwVPfaZqaDVWHPSCL2Bvj0+kUAJbLZdO4HxdcBHtAFunbvOA0TbMsu7q6iuM4z/PFYmF/2d1JD5giJo4nSWJ2tXmeHw6H+/v7JEmWy+VkMjE2zm0PmCI9rbVSCnmHQXSOHh4eqqqKxAjLEsfFcXFcJI6L4yJx3CvHiXBO56TUuA1mnBNokFIIh3NSIKVhcU4KpDQgzkmBlEJQnJMCKYWgOCcFUopvo388Hq31imeMFEipcRtVVR2PxwgAPj4+Wr3DZl3iGSMFUopvIxqNRpeXlxbGBZ4xUiClmDaUUqPRiBnnpEBKISjOSYGUgnBOLhLOyeTeoUgcF8dF339Xub6+vri4ECMs6Pb29u3trV8UhVLq7u5OHPltbTYb+a7CYR73hnN2sp/TwIrgOGcnFVBWhMY5uyKlBlYEyjm7IqUGVoTIOSmQ0rA4JwVSGhbnpEBKra45KXBOh6S0XnNGRVE8PT21GiZmr0eBc3ZISg2s2Gw2RVFw2s/pBykNjnM6J6XBcc4OSamZFcI57Uk4J5N7hyJxXBwX0VlzBi7hnLYlnJPJPE4kdZZLbi3Wced7KcPKrSWylzKg3FoieylDya0lspcSKU65tUT2UiLFKbeWyF5KpCjk1rZYcxLZS4mUw9zadpyTyF5KZAW3ubXtOCeRvZRIMcutJbKXEilOubVE9lIiK0hubUASzsnk3qFIHBfHRV2tOUVICee0LeGcTOZxP07X5JFbC16crskpt9ab0zXZ5NZ6c7omj9xab07XdN4GJ84ZVm6tN6drOm+jr7U+86nenK7pqg2t9b8V0DnvjzenayJ7wLcR5Xme5/mPz/PmdE2HbdRWM+OcYeXWenO6JrIHEM7JRcI5mdw7FInj4rhIHBfHxXERZce94ZwMcmvBC84JjHJr/eCcnHJr/eCcbHJr/eCcnHJr/eCcnHJr/eCcFK6ixXcVPzin86s413E/OKfb3Np2jvvBOZnl1vrBOTnl1vrBOSW3NiAJ52Ry71Akjovjoh8dz7Ks91+nuzyiTjQYDE7eZlkGAL2vtxrY5dRQ1idCNBwO/wKy16D+p1R0vwAAAABJRU5ErkJggg==\n", + "text/html": [ + "

$\\left[ \\begin{array}{ccccc}1&0&1&0&0\\\\1&0&0&1&0\\\\1&0&0&0&1\\\\0&1&1&0&0\\\\0&1&0&1&0\\\\0&1&0&0&1\\\\ \\end{array} \\right]$

" + ], + "text/latex": [ + "$\\left[ \\begin{array}{ccccc}1&0&1&0&0\\\\1&0&0&1&0\\\\1&0&0&0&1\\\\0&1&1&0&0\\\\0&1&0&1&0\\\\0&1&0&0&1\\\\ \\end{array} \\right]$" + ], + "text/plain": [ + "Matrix([Vector([1, 1, 1, 0, 0, 0]), Vector([0, 0, 0, 1, 1, 1]), Vector([1, 0, 0, 1, 0, 0]), Vector([0, 1, 0, 0, 1, 0]), Vector([0, 0, 1, 0, 0, 1])])" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M = Matrix([ [ int(i in w) for i in lista ] for w in B]).ccol({len(R1),len(R1+R2)})\n", + "fmp = [fracc(3,4),fracc(1,4),fracc(1,2),fracc(1,4),fracc(1,4)]\n", + "M = Matrix([VAI(M[i],fmp[i]) for i in range(M.n)])\n", + "M" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "prodH = lambda u,w: VAI([u[i]*w[i] for i in range(u.n)],u.prb*w.prb)\n", + "productoH = lambda x,n: VAI(V1(n),1) if not x else prodH(x[0], productoH(x[1:], n) )" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3/8, 3/16, 3/16, 1/8, 1/16, 1/16]\n" + ] + }, + { + "data": { + "text/latex": [ + "$\\displaystyle 1$" + ], + "text/plain": [ + "1" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n = M.m\n", + "Q = [x for x in aspa([M[:2],M[2:]]) ]\n", + "baseC = Sistema([v for v in [productoH(s,n) for s in Q] if v.no_es_nulo()])\n", + "print([(baseC[i]).prb for i in range(len(baseC))])\n", + "sum([(baseC[i]).prb for i in range(len(baseC))])" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "class SampleSpace(Matrix):\n", + " def __init__(self, data, Prb=0):\n", + " super().__init__(data)\n", + " self.lista = [ VA(i,Prb) for i in self.lista ]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "org": [ + null, + null + ] + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/README.md b/README.md deleted file mode 100644 index b17ba73..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# NAcAL Jupyter Notebooks -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/mbujosab/nacal-jupyter-notebooks/master) o [Nbviewer](https://nbviewer.jupyter.org/github/mbujosab/nacal-Jupyter-Notebooks/tree/master/) diff --git a/README.org b/README.org new file mode 100644 index 0000000..b7e949c --- /dev/null +++ b/README.org @@ -0,0 +1,12 @@ +- Enlace a la [[https://mbujosab.github.io/nacal-Jupyter-Notebooks/][web]] + +* NAcAL Jupyter Notebooks + +- Puede ejecutar los notebooks en su navegador pinchando aquí + [[https://mybinder.org/v2/gh/mbujosab/nacal-jupyter-notebooks/master][https://mybinder.org/badge_logo.svg]] + + (/es un servicio gratuito y puede tardar en generar la copia del repositorio/) + +- Puede ver el contenido de los notebooks en su navegador pinchando + [[https://nbviewer.jupyter.org/github/mbujosab/nacal-Jupyter-Notebooks/tree/master/][aquí]] + diff --git a/index.html b/index.html new file mode 100644 index 0000000..fc818b0 --- /dev/null +++ b/index.html @@ -0,0 +1,225 @@ + + + + + + + +NAcAL Jupyter Notebooks + + + + + + +
+

NAcAL Jupyter Notebooks

+

+Enlace al repositorio de GitHub +

+ +
    +
  • +Puede ejecutar los notebooks en su navegador pinchando aquí +badge_logo.svg +

    + +

    +(es un servicio gratuito y puede tardar en generar la copia del repositorio) +

  • + +
  • Puede ver el contenido de los notebooks en su navegador pinchando +aquí
  • +
+
+
+

Author: Marcos Bujosa

+

Created: 2023-12-29 vie 20:56

+

Validate

+
+ + \ No newline at end of file diff --git a/index.org b/index.org new file mode 100644 index 0000000..f573e62 --- /dev/null +++ b/index.org @@ -0,0 +1,23 @@ +#+title: NAcAL Jupyter Notebooks +#+author: Marcos Bujosa +#+email: mbujosab@ucm.es +#+LANGUAGE: es-es + +#+OPTIONS: toc:nil + +# CONVERTIR EN HTML DESDE EMACS (NO DESDE SCIMAX) + +# ########### +# ESTO DA EL FORMATO FINAL DE LA PÁGINA WEB VÉASE [[https://olmon.gitlab.io/org-themes/]] +#+HTML_HEAD: +# ########## + +Enlace al [[https://github.com/mbujosab/nacal-Jupyter-Notebooks][repositorio]] de GitHub + +# * NAcAL Jupyter Notebooks +# :PROPERTIES: +# :UNNUMBERED: t +# :END: +# # y una introducción a la Probabilidad como extensión del Álgebra Lineal + +#+INCLUDE: "README.org::* NAcAL Jupyter Notebooks" :only-contents t