MDCIPROPE2026/sesion4_algebra/algebra.ipynb

553 lines
13 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"id": "11c1dcf1",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import sympy as sp\n"
]
},
{
"cell_type": "markdown",
"id": "bd615dcf",
"metadata": {},
"source": [
">**Caracteristicas basicas de matrices**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "74203b23",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Orden Matriz A: (2, 3)\n",
"Orden Matriz B: (2, 3)\n",
"A[0, 1]: 4\n",
"B[1, 2]: 1.0\n",
"[[ True True True]\n",
" [ True True True]]\n"
]
}
],
"source": [
"A = np.array([[2, 4, 6], [8, 0 ,1]])\n",
"\n",
"B = np.array([[ -(-2), 16/4, 6],\n",
" [8, 0, -3/-3]])\n",
"\n",
"print(\"Orden Matriz A:\", np.shape(A))\n",
"print(\"Orden Matriz B:\", np.shape(B))\n",
"print(\"A[0, 1]:\", A[0, 1]) # Acceder al elemento en la fila 0, columna 1 de la matriz A\n",
"print(\"B[1, 2]:\", B[1, 2]) # Acceder al elemento en la fila 1, columna 2 de la matriz B\n",
"\n",
"print(np.equal(A, B)) # Verificar si las matrices A y B son iguales"
]
},
{
"cell_type": "markdown",
"id": "f6a8b6ca",
"metadata": {},
"source": [
">**Operaciones Aritmeticas**"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "0c031ae7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Suma de A y B:\n",
" [[ 7 1]\n",
" [14 19]\n",
" [ 2 14]]\n"
]
}
],
"source": [
"A = np.array([[1, 8], [11, 4], [0, 9]])\n",
"B = np.array([[6, -7], [3, 15], [2, 5]])\n",
"\n",
"escalar = 3\n",
"\n",
"print(\"Suma de A y B:\\n\", A + B) # Sumar las matrices A y B\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "74bbf1c6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resta de A y B:\n",
" [[ -5 15]\n",
" [ 8 -11]\n",
" [ -2 4]]\n"
]
}
],
"source": [
"print(\"Resta de A y B:\\n\", A - B) # Restar la matriz B de la matriz A"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "2a68f095",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Multiplicación de A por el escalar:\n",
" [[ 3 24]\n",
" [33 12]\n",
" [ 0 27]]\n"
]
}
],
"source": [
"print(\"Multiplicación de A por el escalar:\\n\", escalar * A) # Multiplicar la matriz A por un escalar"
]
},
{
"cell_type": "markdown",
"id": "01252534",
"metadata": {},
"source": [
">**Transpuesta de una matriz**"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "06ae2d08",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Matriz A:\n",
" [[ 2 0 -1]\n",
" [ 4 6 8]]\n",
"Matriz A transpuesta:\n",
" [[ 2 4]\n",
" [ 0 6]\n",
" [-1 8]]\n"
]
}
],
"source": [
"A = np.array([[2, 0, -1], [4, 6, 8]])\n",
"\n",
"At = np.transpose(A) # Transponer la matriz A\n",
"At = A.T # Otra forma de transponer la matriz A\n",
"\n",
"print (\"Matriz A:\\n\", A) # Imprimir la matriz A\n",
"print(\"Matriz A transpuesta:\\n\", At) # Imprimir la matriz transpuesta de A"
]
},
{
"cell_type": "markdown",
"id": "b0dc6d9a",
"metadata": {},
"source": [
">**Teoremas de la transpuesta**"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "8f63b2fa",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Suma de A y B transpuesta:\n",
" [[ 8 14]\n",
" [10 16]\n",
" [12 18]]\n"
]
}
],
"source": [
"A = np.array([[1, 2, 3], [4, 5, 6]])\n",
"B = np.array([[7, 8, 9], [10, 11, 12]])\n",
"\n",
"print(\"Suma de A y B transpuesta:\\n\", (A+B).T)"
]
},
{
"cell_type": "markdown",
"id": "eaee444d",
"metadata": {},
"source": [
">**Multiplicacion de matrices**"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "6973999a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Producto de A y B:\n",
" [[ 4 40 42]\n",
" [ 3 27 32]\n",
" [ 8 86 83]]\n",
"Producto de A y B usando @:\n",
" [[ 4 40 42]\n",
" [ 3 27 32]\n",
" [ 8 86 83]]\n"
]
}
],
"source": [
"A = np.array([[2, 4], [1, 3], [5, 8]])\n",
"B = np.array([[0, 6, -1], [1, 7, 11]])\n",
"\n",
"print(\"Producto de A y B:\\n\", np.dot(A, B)) # Multiplicar las matrices A y B, El operador convencional de * no sirve para multiplicar matrices en pyrhon\n",
"\n",
"print(\"Producto de A y B usando @:\\n\", A @ B) # Otra forma de multiplicar las matrices A y B usando el operador @\\"
]
},
{
"cell_type": "markdown",
"id": "d537a13b",
"metadata": {},
"source": [
">**Matriz identidad**"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "787653da",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1. 0. 0.]\n",
" [0. 1. 0.]\n",
" [0. 0. 1.]]\n"
]
}
],
"source": [
"print(np.identity(3)) # Imprimir la matriz identidad de orden 3"
]
},
{
"cell_type": "markdown",
"id": "1c283762",
"metadata": {},
"source": [
"> **Ejercicios de teoremas**"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "2895e041",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"I_2 @ A:\n",
" [[ 2. -5. -9.]\n",
" [ 4. 8. 6.]]\n",
"A @ I_3:\n",
" [[ 2. -5. -9.]\n",
" [ 4. 8. 6.]]\n",
"(3*A)@B:\n",
" [[ -57 -219]\n",
" [ 12 174]]\n",
"3*(A@B):\n",
" [[ -57 -219]\n",
" [ 12 174]]\n"
]
}
],
"source": [
"A = np.array([[2, -5, -9], [4, 8, 6]])\n",
"B = np.array([[1, 0], [-3, 2], [4, 7]])\n",
"C = np.array([[0, 1], [-1, 0], [2, 3]])\n",
"\n",
"I_2 = np.identity(2) \n",
"I_3 = np.identity(3)\n",
"print(\"I_2 @ A:\\n\", I_2 @ A)\n",
"print(\"A @ I_3:\\n\", A @ I_3)\n",
"print(\"(3*A)@B:\\n\", (3 * A) @ B)\n",
"print(\"3*(A@B):\\n\", 3 * (A @ B))"
]
},
{
"cell_type": "markdown",
"id": "036a835e",
"metadata": {},
"source": [
"> **Sistemas de ecuaciones lineales**"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "bdd162f1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Solución del sistema de ecuaciones lineales Ax = b:\n",
" [-12. -18. -5.]\n"
]
}
],
"source": [
"A = np.array([[2, 10, -40], [-4, -7, 41], [1, 3, -12]])\n",
"b = np.array([-4, -31, -6])\n",
"\n",
"x = np.linalg.solve(A, b) # Resolver el sistema de ecuaciones lineales Ax = b\n",
"\n",
"print(\"Solución del sistema de ecuaciones lineales Ax = b:\\n\", x)"
]
},
{
"cell_type": "markdown",
"id": "a3083315",
"metadata": {},
"source": [
"Teorema (El conjunto generado es un subespacio vectorial): sea v1, v2 ... vk, k son vectores d eun espacio vectorial V entonces gen{ v1, v2, ..., vk} es un subespacio de V "
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "e0ab887e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Solución del sistema de ecuaciones simbólicas:\n",
" {a: b + 2*c, x: b + c, y: c}\n",
"Solución del sistema de ecuaciones simbólicas:\n",
" {x: -a/9 - b/18 + 5*z/6, y: -a/9 + 5*b/72 + 35*z/24}\n",
"Solución del sistema de ecuaciones simbólicas:\n",
" {b: c/3 + d/3, x: -a/40 + 7*c/120 - d/60, y: -a/170 - c/170 + 3*d/85, z: -31*a/680 - 263*c/2040 - 61*d/1020}\n",
"Solución del sistema de ecuaciones simbólicas:\n",
" {a: c/3 + d/3, b: -2*c/3 + 7*d/3, x: -c/41 + d/41 - 32*z/41, y: 7*c/492 + 17*d/246 - 31*z/82}\n"
]
}
],
"source": [
"x, y, z, a, b, c, d = sp.symbols('x y z a b c d') # Definir las variables simbólicas x, y, z, a, b, c\n",
"eq1 = sp.Eq(x + y, a)\n",
"eq2 = sp.Eq(x - y, b)\n",
"eq3 = sp.Eq(y, c)\n",
"\n",
"solution = sp.solve((eq1, eq2, eq3), (x, y, a, b, c)) # Resolver el sistema de ecuaciones simbólicas\n",
"\n",
"print(\"Solución del sistema de ecuaciones simbólicas:\\n\", solution)\n",
"\n",
"eq1 = sp.Eq(-5*x - 4*y + 10*z, a)\n",
"eq2 = sp.Eq(-8*x + 8*y - 5*z, b)\n",
"\n",
"print(\"Solución del sistema de ecuaciones simbólicas:\\n\", sp.solve((eq1, eq2), (x, y, z, a, b))) # Resolver el sistema de ecuaciones simbólicas\n",
"\n",
"eq1 = sp.Eq(-20*x - 23*y - 8*z, a)\n",
"eq2 = sp.Eq(2*x + 7*y - 2*z, b)\n",
"eq3 = sp.Eq(8*x - 3*y - 4*z, c)\n",
"eq4 = sp.Eq(-2*x + 24*y - 2*z, d)\n",
"\n",
"print(\"Solución del sistema de ecuaciones simbólicas:\\n\", sp.solve((eq1, eq2, eq3, eq4), (x, y, z, a, b, c, d))) # Resolver el sistema de ecuaciones simbólicas\n",
"\n",
"eq1 = sp.Eq(-9*x + 8*y - 4*z, a)\n",
"eq2 = sp.Eq(39*x + 20*y + 38*z, b)\n",
"eq3 = sp.Eq(-34*x + 12*y - 22*z, c)\n",
"eq4 = sp.Eq(7*x + 12*y + 10*z, d)\n",
"\n",
"print(\"Solución del sistema de ecuaciones simbólicas:\\n\", sp.solve((eq1, eq2, eq3, eq4), (x, y, z, a, b, c, d))) # Resolver el sistema de ecuaciones simbólicas"
]
},
{
"cell_type": "markdown",
"id": "3e0809fc",
"metadata": {},
"source": [
">**Determinantes**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cc825dac",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Solucion con numpy\n",
"1.0\n",
"-2.0\n",
"Solucion con sympy\n",
"1\n",
"-2\n"
]
}
],
"source": [
"A = np.array([[1, -2], [-3, 7]])\n",
"B = np.array([[2, 0], [1, -1]])\n",
"\n",
"print(\"Solucion con numpy\")\n",
"print(np.round(np.linalg.det(A), 2)) # Calcular el determinante de la matriz A\n",
"print(np.round(np.linalg.det(B), 2)) # Calcular el determinante de la matriz B\n",
"\n",
"print(\"Solucion con sympy\")\n",
"A_sym = sp.Matrix([[1, -2], [-3, 7]])\n",
"B_sym = sp.Matrix([[2, 0], [1, -1]])\n",
"print(A_sym.det()) # Calcular el determinante de la matriz A usando sympy\n",
"print(B_sym.det()) # Calcular el determinante de la matriz B usando sympy"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "f78d7a6a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Solución de A\n",
"-8\n",
"Solución de B\n",
"-104\n"
]
}
],
"source": [
"A = sp.Matrix([[1, 5, 2], [2, 0, 1], [1, -1, 1]])\n",
"B = sp.Matrix([[5, -2, 4], [0, 1, 5], [1, 2, -8]])\n",
"\n",
"\n",
"print(\"Solución de A\")\n",
"print(A.det()) # Calcular el determinante de la matriz A usando sympy\n",
"\n",
"\n",
"print(\"Solución de B\")\n",
"print(B.det()) # Calcular el determinante de la matriz B usando sympy"
]
},
{
"cell_type": "markdown",
"id": "120d42b4",
"metadata": {},
"source": [
">**Eigenvalores**"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "e067f384",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"PurePoly(λ**2 - 5*λ - 2, λ, domain='ZZ')\n"
]
}
],
"source": [
"A = sp.Matrix([[1, 2], [3, 4]])\n",
"\n",
"print(A.charpoly('λ')) # Calcular el polinomio característico de la matriz A usando sympy"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "ae9b370e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"valores propios: {4: 1, -1: 1}\n",
"vectores propios: [(-1, 1, [Matrix([\n",
"[-1/2],\n",
"[ 1]])]), (4, 1, [Matrix([\n",
"[2],\n",
"[1]])])]\n"
]
}
],
"source": [
"A = sp.Matrix([[3, 2], [2, 0]])\n",
"\n",
"print(\"valores propios:\",A.eigenvals(), end=\"\\n\") # Calcular los valores propios de la matriz A usando sympy\n",
"print(\"vectores propios:\",A.eigenvects(), end=\"\\n\") # Calcular los vectores propios de la matriz A usando sympy"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "propedeutico",
"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.10.20"
}
},
"nbformat": 4,
"nbformat_minor": 5
}