MODULO 2 - TAREAS
ACTIVIDAD 1. ORDENAMIENTO DE DATOS - SORTING
Enlace al
chatGPT
https://chat.openai.com/share/0606b41e-e274-459b-b817-84c95534cc5d
![]()
You
Contruye una lista de datos cualesquiera, guarda en un
arreglo unidimensional luego aplica los siguientes tres algoritmos de
ordenamiento ascendente: metodo burbuja, método selección y el método
quicksort. Genera los respectivos scripts y finalmente construye una grafica de
tiempos de estos algoritmos para n=1000.
2 / 2
ChatGPT
ChatGPT

He generado un conjunto de datos aleatorios y aplicado los
tres algoritmos de ordenamiento que mencionaste: método burbuja, método
selección y el método quicksort. Luego, medí los tiempos de ejecución de cada
algoritmo para un conjunto de datos de tamaño �=1000n=1000.
Aquí está la gráfica que muestra la comparación de estos tiempos de ejecución.
Como se observa en la gráfica, los tiempos varían
significativamente entre los diferentes algoritmos, reflejando sus respectivas
eficiencias. El método Quicksort suele ser el más rápido para conjuntos de
datos de este tamaño, seguido por el método de selección y luego el método
burbuja, que generalmente es el más lento. Estos resultados son consistentes
con el rendimiento teórico esperado de estos algoritmos.
Enlace al
script
Script que
genera la gráfica
import random
import time
import
matplotlib.pyplot as plt
# Generar una lista
de datos aleatorios
n = 1000
datos = [random.randint(1, 1000) for _ in range(n)]
# Definición de los
algoritmos de ordenamiento
# Método Burbuja
def burbuja(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
# Método Selección
def seleccion(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] =
arr[min_idx], arr[i]
# Método Quicksort
def quicksort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
left = [x for x in arr[1:] if x < pivot]
right = [x for x in arr[1:] if x >= pivot]
return quicksort(left) + [pivot] + quicksort(right)
# Medir tiempos de
ejecución de cada algoritmo
# Método Burbuja
start_time = time.time()
burbuja(datos.copy())
burbuja_time = time.time() - start_time
# Método Selección
start_time =
time.time()
seleccion(datos.copy())
seleccion_time = time.time() - start_time
# Método Quicksort
start_time = time.time()
quicksort(datos.copy())
quicksort_time = time.time() - start_time
# Graficar los
resultados
metodos = ['Burbuja', 'Selección', 'Quicksort']
tiempos = [burbuja_time, seleccion_time,
quicksort_time]
plt.figure(figsize=(10, 6))
plt.bar(metodos,
tiempos, color=['blue', 'green', 'red'])
plt.title('Comparación de Tiempos de Ejecución
de Algoritmos de Ordenamiento')
plt.xlabel('Método de Ordenamiento')
plt.ylabel('Tiempo (segundos)')
plt.show()
Análisis
asintótico de tiempos con la función Big-O
![]()
You
Analiza los tiempos de los tres algoritmos con la función
Big O, luego genera la grafica y comenta los resultados
ChatGPT
ChatGPT
Para analizar los tiempos de los algoritmos de ordenamiento
utilizando la notación de la función Big O, consideramos su comportamiento en
términos de complejidad temporal en el peor, mejor y caso promedio. Luego,
podemos ilustrar esto en una gráfica y comentar los resultados.
- Método
Burbuja (Bubble Sort)
- Mejor
caso: �(�)O(n) -
Esto ocurre cuando el arreglo ya está ordenado, y el algoritmo solo
necesita hacer una pasada sin intercambios.
- Caso
promedio y Peor caso: �(�2)O(n2) -
Ocurre cuando los elementos están en un orden aleatorio o en el peor
orden posible (totalmente inverso).
- Método
Selección (Selection Sort)
- Mejor,
promedio, y peor caso: �(�2)O(n2) -
Independientemente del orden inicial de los elementos, el algoritmo
siempre realiza �(�−1)/2n(n−1)/2
comparaciones.
- Método
Quicksort
- Mejor
y caso promedio: �(�log�)O(nlogn)
- Estos casos ocurren cuando los pivotes dividen el arreglo de manera más
o menos equitativa.
- Peor
caso: �(�2)O(n2) -
Ocurre cuando el pivote es el menor o el mayor elemento, lo que lleva a
divisiones muy desiguales.
Voy a generar una gráfica que ilustre conceptualmente estas
complejidades. Dado que la notación Big O describe un comportamiento asintótico
y no tiempos específicos, la gráfica será más una representación cualitativa
que cuantitativa.

La gráfica ilustra las complejidades de tiempo de los
algoritmos de ordenamiento según la notación Big O. Aquí están las
observaciones clave:
- Método
Burbuja y Selección (O(n²)): Representados en rojo, muestran un
crecimiento cuadrático en el número de operaciones a medida que aumenta el
tamaño del conjunto de datos (n). Esto refleja su ineficiencia,
especialmente para conjuntos de datos grandes.
- Quicksort
(O(n log n)): En verde, muestra un crecimiento más moderado para el
mejor y el caso promedio, lo que lo hace significativamente más eficiente
que los métodos Burbuja y Selección para conjuntos de datos grandes.
- Quicksort
(Peor Caso, O(n²)): Representado con una línea azul punteada, muestra
que en su peor escenario, Quicksort puede tener una eficiencia similar a
los métodos Burbuja y Selección, aunque este caso es menos común con una
buena elección de pivotes.
- Burbuja
(Mejor Caso, O(n)): En naranja, ilustra que en el mejor de los casos,
cuando los datos ya están ordenados, el método Burbuja puede ser muy
eficiente, con un crecimiento lineal en el número de operaciones.
En resumen, mientras que el Quicksort es generalmente más
eficiente para la mayoría de los casos, su rendimiento puede degradarse hasta
niveles similares a los de Burbuja y Selección en el peor de los casos. Los
métodos Burbuja y Selección, aunque simples, son ineficientes para conjuntos de
datos grandes, excepto en el mejor caso para el método Burbuja, donde su
rendimiento mejora notablemente.
Script
que genera la grafica
Enlace al
script
import numpy as np
# Definiendo los
rangos de valores para n
n = np.linspace(1, 1000, 1000)
n_log_n = n * np.log(n)
n_squared = n**2
# Graficar las
complejidades de tiempo
plt.figure(figsize=(10, 6))
# Burbuja y Selección
tienen la misma complejidad en el peor caso
plt.plot(n,
n_squared, label='Burbuja y Selección (Peor Caso) - O(n^2)', color='red')
# Quicksort - Mejor y
Caso Promedio
plt.plot(n, n_log_n,
label='Quicksort (Mejor y Caso Promedio) - O(n log n)', color='green')
# Quicksort - Peor
Caso
plt.plot(n,
n_squared, '--', label='Quicksort (Peor Caso) - O(n^2)', color='blue')
# Mejor caso de
Burbuja
plt.plot(n, n, label='Burbuja (Mejor Caso) - O(n)', color='orange')
plt.xlabel('Tamaño del conjunto de datos (n)')
plt.ylabel('Número de operaciones (aproximado)')
plt.title('Comparación de Complejidades de
Tiempo de Algoritmos de Ordenamiento')
plt.legend()
plt.ylim(0, 100000) # Limitar el eje y para una mejor visualización
plt.show()
ACTIVIDAD 2 – CREAR DISPOSITIVAS PARA POWERPOINT CON CODIGO VBA
Enlace de chatGPT
https://chat.openai.com/share/9354dad6-5dcf-4085-ba74-c2a8562da02a
![]()
You
Puedes crearme un codigo VBA para una presentación de 10
slides en power point sobre la relación que existe entre el comercio
electronico y los sistemas de soporte a las decisiones
5 / 5
ChatGPT
ChatGPT
Claro, puedo proporcionarte un código VBA (Visual Basic for
Applications) para automatizar la creación de una presentación en PowerPoint
que conste de 10 diapositivas sobre la relación entre el comercio electrónico y
los sistemas de soporte a las decisiones. Este código creará una presentación
en blanco y añadirá 10 diapositivas con títulos genéricos relacionados con el
tema. Puedes modificar los títulos y contenidos según tus necesidades
específicas.
Aquí tienes un ejemplo de cómo podría ser el código:
Sub
CrearPresentacionComercioElectronico()
' Crear una nueva presentación
Dim ppt As Object
Set ppt =
CreateObject("PowerPoint.Application")
ppt.Visible = True
' Añadir una presentación en blanco
Dim presentacion As Object
Set presentacion = ppt.Presentations.Add
' Títulos para las diapositivas
Dim titulos(1 To 10) As String
titulos(1) = "Introducción al Comercio Electrónico"
titulos(2) = "Historia y Evolución del Comercio Electrónico"
titulos(3) = "Principales Plataformas de Comercio Electrónico"
titulos(4) = "Introducción a los Sistemas de Soporte a las
Decisiones"
titulos(5) = "Cómo los Sistemas de Soporte a las Decisiones
Impactan el Comercio Electrónico"
titulos(6) = "Análisis de Datos en el Comercio Electrónico"
titulos(7) = "Casos de Éxito: Comercio Electrónico y Toma de
Decisiones"
titulos(8) = "Desafíos y Oportunidades"
titulos(9) = "Tendencias Futuras en Comercio Electrónico y Soporte
a Decisiones"
titulos(10) = "Conclusión y Perspectivas Futuras"
' Añadir diapositivas y establecer títulos
Dim i As Integer
For i = 1 To 10
Dim slide As Object
Set slide = presentacion.Slides.Add(i,
1) ' 1 corresponde al diseño de título
slide.Shapes(1).TextFrame.TextRange.Text = titulos(i)
Next i
' Limpieza
Set slide = Nothing
Set presentacion = Nothing
Set ppt = Nothing
End Sub
Para usar este código:
- Abre
PowerPoint.
- Presiona
ALT + F11 para abrir el editor de VBA.
- En
el menú, ve a Insertar > Módulo para crear un nuevo
módulo.
- Copia
y pega el código en el módulo.
- Ejecuta
el script presionando F5 o desde el menú Ejecutar.
Este script generará una presentación básica con 10
diapositivas y títulos relacionados con el comercio electrónico y los sistemas
de soporte a las decisiones. Puedes editar el contenido de cada diapositiva en
PowerPoint después de ejecutar el script.
![]()
You
Puedes insertar gráficas en los slides
ChatGPT
ChatGPT
Sí, puedo modificar el código VBA para incluir gráficas en
algunas de las diapositivas de la presentación de PowerPoint. Vamos a asumir
que deseas insertar gráficas simples como gráficos de barras o gráficos
circulares en ciertas diapositivas para ilustrar puntos específicos
relacionados con el comercio electrónico y los sistemas de soporte a las
decisiones.
Aquí está el código VBA modificado para incluir gráficas:
vbaCopy code
Sub CrearPresentacionConGraficas()
' Crear una nueva presentación
Dim ppt As Object
Set ppt =
CreateObject("PowerPoint.Application")
ppt.Visible = True
' Añadir una presentación en blanco
Dim presentacion As Object
Set presentacion = ppt.Presentations.Add
' Títulos para las diapositivas
Dim titulos(1 To 10) As String
titulos(1) = "Introducción al Comercio Electrónico"
' ... [otros títulos] ...
' Añadir diapositivas y establecer títulos
Dim i As Integer
For i = 1 To 10
Dim slide As Object
Set slide = presentacion.Slides.Add(i,
1) ' 1 corresponde al diseño de título
slide.Shapes(1).TextFrame.TextRange.Text = titulos(i)
' Insertar una gráfica en
diapositivas específicas
If i = 3 Or i = 6 Then ' Por ejemplo,
en las diapositivas 3 y 6
' Añadir gráfico
Dim myChart As Object
Dim chartData As Object
Set myChart =
slide.Shapes.AddChart2(201, 5, 100, 100, 300, 200).Chart
Set chartData = myChart.ChartData
' Editar los datos del gráfico
chartData.Activate
Dim workbook As Object
Set workbook = chartData.Workbook
Dim worksheet As Object
Set worksheet =
workbook.Worksheets(1)
worksheet.ListObjects("Tabla1").Resize
worksheet.Range("A1:B5")
worksheet.Range("A2").Value = "Categoría 1"
worksheet.Range("B2").Value = 10
worksheet.Range("A3").Value = "Categoría 2"
worksheet.Range("B3").Value = 20
' ... [añadir más
datos según sea necesario] ...
workbook.Close
End If
Next i
' Limpieza
Set slide = Nothing
Set presentacion = Nothing
Set ppt = Nothing
End Sub
Este código agregará gráficas en las diapositivas 3 y 6
(puedes cambiar los números de diapositiva según tus necesidades). Las gráficas
son básicas y los datos son genéricos. Deberás ajustar los datos y el tipo de
gráfica según la información que quieras presentar.
Sigue los mismos pasos que te indiqué anteriormente para
ejecutar este script en PowerPoint. Recuerda que puedes personalizar aún más
las gráficas y su contenido directamente desde PowerPoint después de haber
ejecutado el script.
Las diapositivas generadas
|
Diapositiva 1 |
|
|
|
Diapositiva 2 |
|
|
|
Diapositiva 3 |
|
|
|
Diapositiva 4 |
|
|
|
Diapositiva 5 |
|
|
|
Diapositiva 6 |
|
|
|
Diapositiva 7 |
|
|
|
Diapositiva 8 |
|
|
|
Diapositiva 9 |
|
|
|
Diapositiva 10 |
|
|
ACTIVIDAD 3 – PRINCIPALES ESTRUCTURAS DE CONTROL EN PYTHON
![]()
You
Explica las principales estructuras de control en python
para desarrollar programas
ChatGPT
ChatGPT
Python, como lenguaje de programación, ofrece varias
estructuras de control que te permiten manejar el flujo de ejecución de tus
programas. Estas estructuras son fundamentales para escribir código eficiente y
lógico. Las principales son:
- If-Else:
Esta es una estructura de control condicional. Te permite ejecutar ciertos
fragmentos de código dependiendo de si una condición específica es
verdadera o falsa.
pythonCopy code
if condicion: # Código a ejecutar si la condición es
verdadera else: # Código a ejecutar si la condición es falsa
- Elif:
Es una extensión del if-else. Se utiliza para verificar múltiples
condiciones, una tras otra, hasta que se encuentra una que es verdadera.
pythonCopy code
if condicion1: # Código si condicion1 es verdadera elif
condicion2: # Código si condicion2 es verdadera else: # Código si ninguna de
las condiciones anteriores es verdadera
- For
Loop: Este bucle se utiliza para iterar sobre una secuencia (como una
lista, tupla, diccionario, conjunto o cadena).
pythonCopy code
for elemento in secuencia: # Código a ejecutar para cada
elemento de la secuencia
- While
Loop: Este bucle sigue ejecutándose mientras una condición específica
sea verdadera.
pythonCopy code
while condicion: # Código a ejecutar mientras la condición
sea verdadera
- Break:
Utilizado dentro de un bucle para salir de él.
pythonCopy code
while True: if condicion_de_salida: break # Código a
ejecutar
- Continue:
Se utiliza para saltar el resto del código dentro de un bucle para la
iteración actual y continuar con la siguiente iteración.
pythonCopy code
for elemento in secuencia: if condicion_para_saltar: continue
# Código a ejecutar para cada elemento que no cumpla la condición_para_saltar
- Pass:
Es básicamente una declaración nula o de no operación. Se utiliza cuando
una declaración es requerida sintácticamente pero no se desea ejecutar
ningún código.
pythonCopy code
if condicion: pass # No hace nada, solo cumple con la
sintaxis
Estas estructuras son esenciales para controlar cómo y
cuándo se ejecuta el código en tus programas Python, permitiéndote crear
lógicas complejas y manejar diferentes escenarios y condiciones de datos.
He generado diagramas de flujo para cada una de las
estructuras de control principales en Python:
- If-Else:
Muestra cómo se maneja una condición con ramas 'if' y 'else'.
- Elif:
Representa la estructura de múltiples condiciones con 'elif' y 'else'.
- For
Loop: Ilustra cómo funciona un bucle 'for' iterando sobre una
secuencia.
- While
Loop: Muestra un bucle 'while' que se ejecuta mientras una condición
sea verdadera.
- Break:
Explica cómo se utiliza 'break' para salir de un bucle.
- Continue:
Muestra el uso de 'continue' para saltar a la siguiente iteración de un
bucle.
- Pass:
Ilustra el uso de 'pass', que no realiza ninguna acción.
Cada uno de estos diagramas visualiza cómo se manejan estas
estructuras en la programación con Python.
ACTIVIDAD 5 – ALGEBRA LINEAL: MATRICES
https://chat.openai.com/share/f9fbcca2-6911-4bc9-acd3-3da6f02db01f
![]()
You
Puedes desarrollar un clase sobre matrices bidimensionales y
sus principales operaciones. Tambien quiero que muestres los scripts de estas
operaciones. Utiliza la libreria Numpy
3 / 3
ChatGPT
¡Por supuesto! Vamos a desarrollar una clase que se enfoque
en matrices bidimensionales utilizando la biblioteca NumPy de Python. Cubriré
las operaciones básicas como la suma, resta, multiplicación y división de
matrices. También incluiré ejemplos de scripts para cada operación.
1. Introducción a NumPy
NumPy es una biblioteca fundamental para la computación
científica en Python. Proporciona un objeto de matriz multidimensional de alto
rendimiento y herramientas para trabajar con estas matrices.
2. Clase para Matrices Bidimensionales
Voy a definir una clase llamada Matriz2D que
contendrá métodos para realizar operaciones básicas.
pythonCopy code
import numpy as np class Matriz2D: def __init__(self, matriz):
self.matriz = np.array(matriz) def suma(self, otra): return np.add(self.matriz,
otra.matriz) def resta(self, otra): return np.subtract(self.matriz,
otra.matriz) def multiplicacion(self, otra): return np.dot(self.matriz,
otra.matriz) def division(self, otra): return np.divide(self.matriz,
otra.matriz)
3. Scripts de Ejemplo para Cada Operación
a. Creación de Matrices y Suma
pythonCopy code
# Creando matrices A = Matriz2D([[1,
2], [3, 4]]) B = Matriz2D([[5, 6], [7, 8]]) # Suma suma = A.suma(B) print("Suma:\n",
suma)
b. Resta
pythonCopy code
# Resta resta = A.resta(B) print("Resta:\n",
resta)
c. Multiplicación
pythonCopy code
# Multiplicación multiplicacion =
A.multiplicacion(B) print("Multiplicación:\n", multiplicacion)
d. División
pythonCopy code
# División division =
A.division(B) print("División:\n", division)
import numpy as np
def calcular_inversa(matriz):
# Convertir la
entrada en un array de NumPy
matriz =
np.array(matriz)
# Verificar si la
matriz es cuadrada
if matriz.shape[0] != matriz.shape[1]:
raise ValueError("La matriz debe
ser cuadrada")
# Calcular el
determinante de la matriz
det =
np.linalg.det(matriz)
# Verificar si el
determinante es distinto de cero (la matriz es no singular)
if det == 0:
raise ValueError("La
matriz no tiene inversa (determinante igual a cero)")
# Calcular la matriz
de cofactores
cofactores =
np.linalg.inv(matriz).T * det
# Calcular la
inversa dividiendo la matriz adjunta por el determinante
inversa = cofactores
/ det
return inversa
# Ejemplo de uso
matriz = [[4, 7], [2, 6]]
matriz_inversa =
calcular_inversa(matriz)
print("Matriz
Original:\n", np.array(matriz))
print("Matriz
Inversa:\n", matriz_inversa
4. Notas Adicionales
- La
división de matrices no es tan directa como las otras operaciones. Aquí,
la división se realiza elemento a elemento.
- Asegúrate
de que las matrices que multipliques sean compatibles en términos de sus
dimensiones (por ejemplo, el número de columnas en la primera matriz debe
ser igual al número de filas en la segunda).
Esta clase y los scripts proporcionan una base sólida para
trabajar con matrices bidimensionales en Python utilizando NumPy. Puedes
expandir esta clase para incluir más funcionalidades según tus necesidades.
import numpy as np
class Matriz2D:
def __init__(self, matriz):
self.matriz =
np.array(matriz)
def suma(self, otra):
return np.add(self.matriz,
otra.matriz)
def resta(self, otra):
return
np.subtract(self.matriz, otra.matriz)
def multiplicacion(self,
otra):
return np.dot(self.matriz,
otra.matriz)
def division(self, otra):
return
np.divide(self.matriz, otra.matriz)
Ejemplos
de aplicacion de matrices
![]()
You
Puede darme algunos ejemplos reales de aplicación de
matrices bidimensionales?
ChatGPT
ChatGPT
Las matrices bidimensionales tienen una amplia gama de
aplicaciones en diferentes campos. Aquí te muestro algunos ejemplos reales de
su uso:
- Computación
Gráfica y Animación: En este campo, las matrices se usan para realizar
transformaciones geométricas como rotación, escalado, traslación y
cizallamiento de objetos. Por ejemplo, en un videojuego o una película
animada, las matrices se utilizan para manipular la posición y orientación
de los personajes y objetos en el espacio 3D.
- Procesamiento
de Imágenes y Visión por Computadora: Las imágenes digitales se pueden
representar como matrices bidimensionales, donde cada elemento de la
matriz corresponde al valor de un píxel. Operaciones como el filtrado, la
detección de bordes, y las transformaciones espaciales se realizan
mediante operaciones matriciales.
- Análisis
de Datos y Estadísticas: En estadísticas, las matrices se utilizan
para almacenar datos en forma de tablas. Operaciones como la regresión
lineal múltiple, el análisis de componentes principales (PCA), y otros
métodos de aprendizaje automático involucran cálculos matriciales.
- Ingeniería
y Física: En ingeniería estructural, las matrices se usan para
analizar las propiedades de estructuras complejas. En física, las matrices
son fundamentales en la mecánica cuántica, donde se utilizan para
describir los estados y las operaciones en sistemas cuánticos.
- Economía
y Finanzas: Las matrices se emplean en el análisis de riesgos, la
optimización de carteras de inversión y en modelos económicos para
representar y resolver sistemas de ecuaciones lineales que surgen en estos
contextos.
- Redes
Sociales y Análisis de Redes: Las matrices se utilizan para
representar y analizar redes sociales o redes de comunicación. Por
ejemplo, una matriz puede representar la conexión entre diferentes
usuarios (nodos) en una red social, donde los valores en la matriz indican
la fuerza o la existencia de conexiones entre ellos.
- Criptografía:
En criptografía, las matrices se utilizan en ciertos algoritmos para
cifrar y descifrar información. Operaciones matriciales complejas forman
la base de muchos algoritmos de cifrado modernos.
Estos ejemplos ilustran cómo las matrices bidimensionales
son una herramienta fundamental en una amplia variedad de campos, desde el
entretenimiento hasta la ciencia y la tecnología.
![]()
You
Puedes explicar detalladamente el proceso de hallar inversa
de una matriz?
ChatGPT
ChatGPT
Claro,explicaré detalladamente cómo hallar la inversa de una
matriz. La inversa de una matriz �A
es otra matriz, denotada como �−1A−1,
tal que cuando se multiplica por �A
da como resultado la matriz identidad �I.
Es decir, �⋅�−1=�−1⋅�=�A⋅A−1=A−1⋅A=I.
No todas las matrices tienen inversa; solo las matrices cuadradas (mismo número
de filas y columnas) y no singulares (determinante no nulo) tienen inversa.
Pasos para Calcular la Inversa de una Matriz
1. Verificar si la Matriz es Cuadrada y No Singular
- Solo
las matrices cuadradas pueden tener inversa.
- Si
el determinante de la matriz �A
(denotado como det(�)det(A)) es 0, entonces �A no tiene inversa.
2. Método de la Matriz Adjunta
- Este
es uno de los métodos para encontrar la inversa de una matriz. Suponiendo
que �A es una
matriz cuadrada �×�n×n y det(�)≠0det(A)=0, la
inversa de �A
se calcula como:
�−1=1det(�)×Adj(�)A−1=det(A)1×Adj(A)
- Aquí,
Adj(�)Adj(A) es
la adjunta (o adjunto) de �A,
que es la transpuesta de la matriz de cofactores de �A.
3. Calcular la Matriz de Cofactores
- Para
cada elemento ���aij
de �A, el
cofactor es calculado como:
���=(−1)�+�×���Cij=(−1)i+j×Mij
- ���Mij es el
determinante de la submatriz que se forma eliminando la fila �i y la columna �j de �A.
4. Transponer la Matriz de Cofactores
- Una
vez que tienes la matriz de cofactores, transpónela para obtener la matriz
adjunta Adj(�)Adj(A).
5. Multiplicar por el Inverso del Determinante
- Finalmente,
multiplica cada elemento de Adj(�)Adj(A)
por 1/det(�)1/det(A)
para obtener �−1A−1.
Ejemplo Ilustrativo
Vamos a calcular la inversa de una matriz 2×22×2 como
ejemplo:
Sea �=(����)A=(acbd),
entonces su inversa, si existe, se calcula como:
- Calcula
el determinante de �A:
det(�)=��−��det(A)=ad−bc.
- Si det(�)≠0det(A)=0, la
inversa de �A
es:
�−1=1��−��(�−�−��)A−1=ad−bc1(d−c−ba)
Para matrices de dimensiones mayores, el proceso es similar
pero más complejo debido a la necesidad de calcular más cofactores y
determinantes de submatrices.
Nota:
- El
método de la matriz adjunta es conceptualmente sencillo pero
computacionalmente intensivo para matrices grandes. En la práctica, se
suelen utilizar métodos numéricos más eficientes, especialmente para
matrices de gran tamaño.
![]()
You
Desarrolla el código
ChatGPT
Para desarrollar el código que calcula la inversa de una
matriz utilizando Python y NumPy, primero necesitamos importar la biblioteca
NumPy. Luego, crearemos una función que toma una matriz como entrada y devuelve
su inversa. Como mencioné anteriormente, este proceso involucra calcular el
determinante y la matriz adjunta (transpuesta de la matriz de cofactores).
Vamos a implementar esto paso a paso:
Código para Calcular la Inversa de una Matriz
import numpy as np
def calcular_inversa(matriz):
# Convertir la entrada en un array de
NumPy
matriz
= np.array(matriz)
# Verificar si la matriz es cuadrada
if matriz.shape[0] != matriz.shape[1]:
raise ValueError("La matriz debe ser cuadrada")
# Calcular el determinante de la matriz
det =
np.linalg.det(matriz)
# Verificar si el determinante es
distinto de cero (la matriz es no singular)
if det == 0:
raise ValueError("La matriz no tiene inversa (determinante igual a cero)")
# Calcular la matriz de cofactores
cofactores = np.linalg.inv(matriz).T * det
# Calcular la inversa dividiendo la
matriz adjunta por el determinante
inversa
= cofactores / det
return inversa
# Ejemplo de uso
matriz = [[4, 7], [2, 6]]
matriz_inversa =
calcular_inversa(matriz)
print("Matriz Original:\n", np.array(matriz))
print("Matriz Inversa:\n", matriz_inversa)
Explicación del Código
- Importar
NumPy: Necesario para manejo de matrices y operaciones matemáticas.
- Función
calcular_inversa:
- Comprueba
si la matriz es cuadrada.
- Calcula
el determinante y verifica que no sea cero.
- Calcula
la matriz adjunta (transpuesta de la matriz de cofactores).
- Divide
la matriz adjunta por el determinante para obtener la inversa.
- Ejemplo
de Uso:
- Se
define una matriz.
- Se
llama a la función calcular_inversa y se imprime el resultado.
Este código proporciona una manera sencilla de calcular la
inversa de una matriz utilizando NumPy, adecuado para matrices pequeñas y
medianas. Para matrices más grandes, existen métodos más eficientes y
especializados disponibles en bibliotecas como NumPy y SciPy.










Comentarios
Publicar un comentario