commit 3d9c1f1ea896917b2b05f0ca3c045f7c7008c280 from: ale date: Tue Jul 28 05:42:34 2026 UTC Add SageMath test script and solution notebook for vector spaces - Introduced `sage_test.sage` and its autogenerated `sage_test.sage.py` for verifying SageMath syntax and functionality. - Added `Solucion_EV01.ipynb` notebook containing step-by-step solutions for problems related to vector spaces, leveraging SageMath tools for demonstrations and verifications. commit - a2a998129742e0c13337f2f98fdc4ac9a4a946e0 commit + 3d9c1f1ea896917b2b05f0ca3c045f7c7008c280 blob - /dev/null blob + 16f06cb4c5776ccbe7f7cbf8b7e9b9bad4745bc3 (mode 644) --- /dev/null +++ sage/notebooks/Solucion_EV01.ipynb @@ -0,0 +1,340 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0b2a74a3", + "metadata": {}, + "source": [ + "# Resolución de Evaluación: Espacios Vectoriales\n", + "\n", + "Este notebook contiene la resolución detallada de los problemas presentados en el archivo `EspaciosVectoriales★_2.pdf`. Cada problema incluye una explicación teórica, el desarrollo paso a paso y verificaciones mediante código usando **SageMath** (en vez de sympy)." + ] + }, + { + "cell_type": "markdown", + "id": "6d52991c", + "metadata": {}, + "source": [ + "## Problema 1: Análisis de un Sistema de Ecuaciones Lineales\n", + "\n", + "**Enunciado:**\n", + "Considere el sistema:\n", + "$$\\begin{cases} x + y + z = 2 \\\\ x + 2y + kz = 3 \\\\ 2x + 3y + 3z = k + 3 \\end{cases}$$\n", + "Determine para qué valores de $k$ el sistema tiene: (a) solución única, (b) infinitas soluciones, o (c) ninguna solución. Para el caso (b), describa el conjunto solución como el span de un vector.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "1. **Matriz Aumentada:**\n", + " $$\\begin{pmatrix} 1 & 1 & 1 & | & 2 \\\\ 1 & 2 & k & | & 3 \\\\ 2 & 3 & 3 & | & k+3 \\end{pmatrix}$$\n", + "\n", + "2. **Eliminación de Gauss:**\n", + " - $R_2 \\to R_2 - R_1$: \n", + " $$\\begin{pmatrix} 1 & 1 & 1 & | & 2 \\\\ 0 & 1 & k-1 & | & 1 \\\\ 2 & 3 & 3 & | & k+3 \\end{pmatrix}$$\n", + " - $R_3 \\to R_3 - 2R_1$: \n", + " $$\\begin{pmatrix} 1 & 1 & 1 & | & 2 \\\\ 0 & 1 & k-1 & | & 1 \\\\ 0 & 1 & 1 & | & k-1 \\end{pmatrix}$$\n", + " - $R_3 \\to R_3 - R_2$: \n", + " $$\\begin{pmatrix} 1 & 1 & 1 & | & 2 \\\\ 0 & 1 & k-1 & | & 1 \\\\ 0 & 0 & 2-k & | & k-2 \\end{pmatrix}$$\n", + "\n", + "3. **Análisis de Casos:**\n", + " - **Caso 1: $2-k \\neq 0 \\implies k \\neq 2$.** El sistema tiene **solución única** porque hay un pivote en cada columna de la matriz de coeficientes.\n", + " - **Caso 2: $2-k = 0 \\implies k = 2$.** La última fila se convierte en $(0, 0, 0 | 0)$. El sistema es consistente y tiene **infinitas soluciones** (una variable libre).\n", + " - **Caso 3: Ninguna solución.** No existe ningún valor de $k$ que haga que el sistema sea inconsistente, ya que si el lado izquierdo es 0 ($k=2$), el lado derecho también es 0 ($2-2=0$).\n", + "\n", + "4. **Conjunto Solución para $k=2$:**\n", + " Sustituyendo $k=2$ en la matriz reducida:\n", + " $$\\begin{cases} x + y + z = 2 \\\\ y + z = 1 \\end{cases}$$\n", + " Sea $z = t$ (variable libre):\n", + " $y = 1 - t$\n", + " $x + (1-t) + t = 2 \\implies x = 1$\n", + " Solución: $(x, y, z) = (1, 1-t, t) = (1, 1, 0) + t(0, -1, 1)$.\n", + " El conjunto solución es el **span{(0, -1, 1)}** desplazado por el punto $(1, 1, 0)$." + ] + }, + { + "cell_type": "code", + "id": "7cb201f8", + "metadata": { + "ExecuteTime": { + "end_time": "2026-07-28T05:40:11.876196592Z", + "start_time": "2026-07-28T05:40:11.780046765Z" + } + }, + "source": [ + "k = var('k')\n", + "x, y, z = var('x y z')\n", + "\n", + "eq1 = x + y + z == 2\n", + "eq2 = x + 2*y + k*z == 3\n", + "eq3 = 2*x + 3*y + 3*z == k + 3\n", + "\n", + "# Verificación para k=2\n", + "sol_k2 = solve([eq1.subs(k=2), eq2.subs(k=2), eq3.subs(k=2)], x, y, z)\n", + "print(\"Solución para k=2:\", sol_k2)" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Solución para k=2: [\n", + "[x == 1, y == -r4 + 1, z == r4]\n", + "]\n" + ] + } + ], + "execution_count": 5 + }, + { + "cell_type": "markdown", + "id": "e28dd27b", + "metadata": {}, + "source": [ + "## Problema 2: Condiciones para pertenecer al Span\n", + "\n", + "**Enunciado:**\n", + "Dados $\\vec{v}_1 = (1, 0, -1, 2)$ y $\\vec{v}_2 = (2, 3, 1, 1)$, encuentre las condiciones algebraicas para que $\\vec{b} = (b_1, b_2, b_3, b_4) \\in \\text{span}\\{\\vec{v}_1, \\vec{v}_2\\}$.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "Para que $\\vec{b}$ esté en el span, deben existir escalares $\\alpha, \\beta$ tales que $\\alpha \\vec{v}_1 + \\beta \\vec{v}_2 = \\vec{b}$. Esto genera el sistema:\n", + "$$\\begin{cases} \\alpha + 2\\beta = b_1 \\\\ 3\\beta = b_2 \\\\ -\\alpha + \\beta = b_3 \\\\ 2\\alpha + \\beta = b_4 \\end{cases}$$\n", + "\n", + "1. De la segunda ecuación: $\\beta = \\frac{b_2}{3}$.\n", + "2. Sustituyendo en la primera: $\\alpha = b_1 - 2(\\frac{b_2}{3}) = b_1 - \\frac{2b_2}{3}$.\n", + "3. Sustituyendo $\\alpha$ y $\\beta$ en la tercera ecuación:\n", + " $-(b_1 - \\frac{2b_2}{3}) + \\frac{b_2}{3} = b_3 \\implies -b_1 + \\frac{2b_2}{3} + \\frac{b_2}{3} = b_3 \\implies -b_1 + b_2 = b_3 \\implies \\mathbf{b_1 - b_2 + b_3 = 0}$.\n", + "4. Sustituyendo en la cuarta ecuación:\n", + " $2(b_1 - \\frac{2b_2}{3}) + \\frac{b_2}{3} = b_4 \\implies 2b_1 - \\frac{4b_2}{3} + \\frac{b_2}{3} = b_4 \\implies 2b_1 - b_2 = b_4 \\implies \\mathbf{2b_1 - b_2 - b_4 = 0}$.\n", + "\n", + "**Conclusión:** Un vector $\\vec{b}$ pertenece al span si sus componentes cumplen:\n", + "$$\\begin{cases} b_1 - b_2 + b_3 = 0 \\\\ 2b_1 - b_2 - b_4 = 0 \\end{cases}$$" + ] + }, + { + "cell_type": "markdown", + "id": "b918a1c6", + "metadata": {}, + "source": [ + "## Problema 3: Potencias de una Matriz e Inducción\n", + "\n", + "**Enunciado:**\n", + "Sea $A = \\begin{pmatrix} 1 & 1 & 0 \\\\ 0 & 1 & 1 \\\\ 0 & 0 & 1 \\end{pmatrix}$. Calcule $A^2, A^3, A^4$ y conjeture una fórmula para $A^n$.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "1. **Cálculo de potencias:**\n", + " - $A^2 = \\begin{pmatrix} 1 & 2 & 1 \\\\ 0 & 1 & 2 \\\\ 0 & 0 & 1 \\end{pmatrix}$\n", + " - $A^3 = \\begin{pmatrix} 1 & 3 & 3 \\\\ 0 & 1 & 3 \\\\ 0 & 0 & 1 \\end{pmatrix}$\n", + " - $A^4 = \\begin{pmatrix} 1 & 4 & 6 \\\\ 0 & 1 & 4 \\\\ 0 & 0 & 1 \\end{pmatrix}$\n", + "\n", + "2. **Patrón observado:**\n", + " La diagonal siempre es 1. La segunda diagonal superior es $n$. El elemento $(1,3)$ sigue la secuencia $0, 1, 3, 6, \\dots$, que corresponde a los números triangulares $\\frac{n(n-1)}{2}$ o $\\binom{n}{2}$.\n", + "\n", + "3. **Fórmula General:**\n", + " $$A^n = \\begin{pmatrix} 1 & n & \\frac{n(n-1)}{2} \\\\ 0 & 1 & n \\\\ 0 & 0 & 1 \\end{pmatrix}$$\n", + "\n", + "4. **Justificación mediante Descomposición:**\n", + " Sea $A = I + N$, donde $N = \\begin{pmatrix} 0 & 1 & 0 \\\\ 0 & 0 & 1 \\\\ 0 & 0 & 0 \\end{pmatrix}$.\n", + " Notamos que $N^2 = \\begin{pmatrix} 0 & 0 & 1 \\\\ 0 & 0 & 0 \\\\ 0 & 0 & 0 \\end{pmatrix}$ y $N^3 = 0$.\n", + " Por el Binomio de Newton (ya que $I$ y $N$ conmutan):\n", + " $A^n = (I+N)^n = I + nN + \\frac{n(n-1)}{2}N^2 + 0 = \\begin{pmatrix} 1 & n & \\frac{n(n-1)}{2} \\\\ 0 & 1 & n \\\\ 0 & 0 & 1 \\end{pmatrix}$." + ] + }, + { + "cell_type": "code", + "id": "bccb05bc", + "metadata": { + "ExecuteTime": { + "end_time": "2026-07-28T05:40:11.936218463Z", + "start_time": "2026-07-28T05:40:11.881453054Z" + } + }, + "source": [ + "A = matrix(QQ, [[1, 1, 0], [0, 1, 1], [0, 0, 1]])\n", + "print(\"A^4 calculada con Sage:\")\n", + "show(A^4)" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A^4 calculada con Sage:\n" + ] + }, + { + "data": { + "text/html": [ + "\\(\\displaystyle \\left(\\begin{array}{rrr}\n", + "1 & 4 & 6 \\\\\n", + "0 & 1 & 4 \\\\\n", + "0 & 0 & 1\n", + "\\end{array}\\right)\\)" + ], + "text/plain": [ + "[1 4 6]\n", + "[0 1 4]\n", + "[0 0 1]" + ], + "text/latex": "$\\displaystyle \\left(\\begin{array}{rrr}\n1 & 4 & 6 \\\\\n0 & 1 & 4 \\\\\n0 & 0 & 1\n\\end{array}\\right)$" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 6 + }, + { + "cell_type": "markdown", + "id": "424c0de8", + "metadata": {}, + "source": [ + "## Problema 4: Conmutador de Matrices de Pauli\n", + "\n", + "**Enunciado:**\n", + "Demuestre que $[\\sigma_x, \\sigma_y] = 2i\\sigma_z$.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "1. **Definiciones:**\n", + " $\\sigma_x = \\begin{pmatrix} 0 & 1 \\\\ 1 & 0 \\end{pmatrix}, \\sigma_y = \\begin{pmatrix} 0 & -i \\\\ i & 0 \\end{pmatrix}, \\sigma_z = \\begin{pmatrix} 1 & 0 \\\\ 0 & -1 \\end{pmatrix}$.\n", + "\n", + "2. **Cálculo de productos:**\n", + " - $\\sigma_x \\sigma_y = \\begin{pmatrix} 0 & 1 \\\\ 1 & 0 \\end{pmatrix} \\begin{pmatrix} 0 & -i \\\\ i & 0 \\end{pmatrix} = \\begin{pmatrix} i & 0 \\\\ 0 & -i \\end{pmatrix} = i\\sigma_z$.\n", + " - $\\sigma_y \\sigma_x = \\begin{pmatrix} 0 & -i \\\\ i & 0 \\end{pmatrix} \\begin{pmatrix} 0 & 1 \\\\ 1 & 0 \\end{pmatrix} = \\begin{pmatrix} -i & 0 \\\\ 0 & i \\end{pmatrix} = -i\\sigma_z$.\n", + "\n", + "3. **Conmutador:**\n", + " $[\\sigma_x, \\sigma_y] = \\sigma_x \\sigma_y - \\sigma_y \\sigma_x = i\\sigma_z - (-i\\sigma_z) = 2i\\sigma_z$.\n", + "\n", + "**Implicación física:** Los observables asociados no son compatibles; no se pueden medir simultáneamente con precisión infinita." + ] + }, + { + "cell_type": "markdown", + "id": "85fb873a", + "metadata": {}, + "source": [ + "## Problema 5: Matriz Nilpotente\n", + "\n", + "**Enunciado:**\n", + "Demuestre que $A = \\begin{pmatrix} 0 & a & b \\\\ 0 & 0 & c \\\\ 0 & 0 & 0 \\end{pmatrix}$ es nilpotente y encuentre su índice.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "1. **Cálculo de potencias:**\n", + " - $A^2 = \\begin{pmatrix} 0 & 0 & ac \\\\ 0 & 0 & 0 \\\\ 0 & 0 & 0 \\end{pmatrix}$\n", + " - $A^3 = \\begin{pmatrix} 0 & 0 & 0 \\\\ 0 & 0 & 0 \\\\ 0 & 0 & 0 \\end{pmatrix} = 0$\n", + "\n", + "2. **Índice de nilpotencia:**\n", + " Si $a, c \\neq 0$, entonces $ac \\neq 0$, lo que implica $A^2 \\neq 0$. Como $A^3 = 0$, el índice exacto es **3**." + ] + }, + { + "cell_type": "markdown", + "id": "1b6f96ac", + "metadata": {}, + "source": [ + "## Problema 6: Matriz de Adyacencia y Caminos\n", + "\n", + "**Enunciado:**\n", + "Sea $M = \\begin{pmatrix} 0 & 1 & 1 \\\\ 1 & 0 & 0 \\\\ 1 & 0 & 0 \\end{pmatrix}$. Calcule $M^2$ e interprete.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "1. **Cálculo:**\n", + " $M^2 = \\begin{pmatrix} 2 & 0 & 0 \\\\ 0 & 1 & 1 \\\\ 0 & 1 & 1 \\end{pmatrix}$.\n", + "\n", + "2. **Interpretación:**\n", + " La entrada $(M^2)_{ij}$ indica el número de caminos de longitud 2 entre el nodo $i$ y el nodo $j$.\n", + " - $(M^2)_{11} = 2$: Hay dos caminos para ir del nodo 1 al 1 en dos pasos (1-2-1 y 1-3-1).\n", + " - $(M^2)_{23} = 1$: Hay un camino del nodo 2 al 3 en dos pasos (2-1-3)." + ] + }, + { + "cell_type": "markdown", + "id": "64483f99", + "metadata": {}, + "source": [ + "## Problema 7: Interpolación Polinómica\n", + "\n", + "**Enunciado:**\n", + "Encuentre $p(x) = ax^2 + bx + c$ que pasa por $(-1, 9), (1, 3), (2, 6)$.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "1. **Sistema de Ecuaciones:**\n", + " - $a(-1)^2 + b(-1) + c = 9 \\implies a - b + c = 9$\n", + " - $a(1)^2 + b(1) + c = 3 \\implies a + b + c = 3$\n", + " - $a(2)^2 + b(2) + c = 6 \\implies 4a + 2b + c = 6$\n", + "\n", + "2. **Resolución:**\n", + " Restando (2) - (1): $2b = -6 \\implies b = -3$.\n", + " Sustituyendo $b$ en (1) y (3):\n", + " - $a + 3 + c = 9 \\implies a + c = 6$\n", + " - $4a - 6 + c = 6 \\implies 4a + c = 12$\n", + " Restando estas dos: $3a = 6 \\implies a = 2$.\n", + " Finalmente: $2 + c = 6 \\implies c = 4$.\n", + "\n", + "**Resultado:** $p(x) = 2x^2 - 3x + 4$." + ] + }, + { + "cell_type": "markdown", + "id": "4a1d96c2", + "metadata": {}, + "source": [ + "## Problema 8: Matrices por Bloques\n", + "\n", + "**Enunciado:**\n", + "Demuestre que si $M = \\begin{pmatrix} A & 0 \\\\ 0 & B \\end{pmatrix}$, entonces $M^k = \\begin{pmatrix} A^k & 0 \\\\ 0 & B^k \\end{pmatrix}$.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "La multiplicación de matrices por bloques sigue las mismas reglas que la multiplicación escalar si los bloques son compatibles.\n", + "$M^2 = \\begin{pmatrix} A & 0 \\\\ 0 & B \\end{pmatrix} \\begin{pmatrix} A & 0 \\\\ 0 & B \\end{pmatrix} = \\begin{pmatrix} A^2 + 0 & 0 + 0 \\\\ 0 + 0 & 0 + B^2 \\end{pmatrix} = \\begin{pmatrix} A^2 & 0 \\\\ 0 & B^2 \\end{pmatrix}$.\n", + "Por inducción, se cumple para cualquier $k \\in \\mathbb{N}$." + ] + }, + { + "cell_type": "markdown", + "id": "eb9e2135", + "metadata": {}, + "source": [ + "## Problema 9: Propiedad Cíclica de la Traza\n", + "\n", + "**Enunciado:**\n", + "Demuestre que $\\text{tr}(AB) = \\text{tr}(BA)$.\n", + "\n", + "### Resolución Paso a Paso\n", + "\n", + "1. Sea $A = (a_{ij})$ y $B = (b_{ij})$.\n", + "2. La entrada diagonal $(i,i)$ de $AB$ es $(AB)_{ii} = \\sum_{k=1}^n a_{ik}b_{ki}$.\n", + "3. La traza es $\\text{tr}(AB) = \\sum_{i=1}^n (AB)_{ii} = \\sum_{i=1}^n \\sum_{k=1}^n a_{ik}b_{ki}$.\n", + "4. La entrada diagonal $(k,k)$ de $BA$ es $(BA)_{kk} = \\sum_{i=1}^n b_{ki}a_{ik}$.\n", + "5. La traza es $\\text{tr}(BA) = \\sum_{k=1}^n (BA)_{kk} = \\sum_{k=1}^n \\sum_{i=1}^n b_{ki}a_{ik}$.\n", + "6. Como el orden de la suma no altera el resultado en sumas finitas, las expresiones son idénticas." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 10.9", + "language": "sage", + "name": "sagemath" + }, + "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.13.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} blob - /dev/null blob + 9de0e8da2119eb842c4e59dedc7bd1cf210739ca (mode 644) --- /dev/null +++ sage/tests/sage_test.sage @@ -0,0 +1,13 @@ +# Prueba rápida de Sage -- usa a propósito sintaxis que SOLO el preparser de +# Sage entiende (R. = ..., ^ como potencia), para confirmar que se está +# corriendo con `sage archivo.sage` y no con un intérprete Python plano. + +print("2^10 =", 2^10) # ^ es potencia en Sage, no XOR como en Python puro + +R. = QQ[] +p = x^3 - 1 +print("factor(x^3 - 1) =", factor(p)) + +print("primeros 10 primos:", list(primes(30))) + +print("integral simbólica de x^2:", integral(x^2, x)) blob - /dev/null blob + 8b83004427fbf3858fa39a9a8ae6cf0a00790654 (mode 644) --- /dev/null +++ sage/tests/sage_test.sage.py @@ -0,0 +1,19 @@ + + +# This file was *autogenerated* from the file /home/ale/IdeaProjects/Jupyter_Notebooks/sage/tests/sage_test.sage +from sage.all_cmdline import * # import sage library + +_sage_const_2 = Integer(2); _sage_const_10 = Integer(10); _sage_const_3 = Integer(3); _sage_const_1 = Integer(1); _sage_const_30 = Integer(30)# Prueba rápida de Sage -- usa a propósito sintaxis que SOLO el preparser de +# Sage entiende (R. = ..., ^ como potencia), para confirmar que se está +# corriendo con `sage archivo.sage` y no con un intérprete Python plano. + +print("2^10 =", _sage_const_2 **_sage_const_10 ) # ^ es potencia en Sage, no XOR como en Python puro + +R = QQ['x']; (x,) = R._first_ngens(1) +p = x**_sage_const_3 - _sage_const_1 +print("factor(x^3 - 1) =", factor(p)) + +print("primeros 10 primos:", list(primes(_sage_const_30 ))) + +print("integral simbólica de x^2:", integral(x**_sage_const_2 , x)) +