MODULO 2 - TAREAS

 

ACTIVIDAD 1. ORDENAMIENTO DE DATOS - SORTING

Enlace al chatGPT

https://chat.openai.com/share/0606b41e-e274-459b-b817-84c95534cc5d

 

User

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

https://colab.research.google.com/drive/1BP-Owj1_VhaEkmvDLCaIl5oi2qbGGOLi#scrollTo=41k0SBYs_9on&line=1&uniqifier=1

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()

Principio del formulario

 

Análisis asintótico de tiempos con la función Big-O

User

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.

  1. 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).
  2. 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.
  3. 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

https://colab.research.google.com/drive/1BP-Owj1_VhaEkmvDLCaIl5oi2qbGGOLi#scrollTo=Gee7bTMeC5j8&line=29&uniqifier=1

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

 

User

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:

  1. Abre PowerPoint.
  2. Presiona ALT + F11 para abrir el editor de VBA.
  3. En el menú, ve a Insertar > Módulo para crear un nuevo módulo.
  4. Copia y pega el código en el módulo.
  5. 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.

User

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.

Principio del formulario

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

 

User

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:

  1. 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

  1. 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

  1. 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

  1. 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

  1. Break: Utilizado dentro de un bucle para salir de él.

pythonCopy code

while True: if condicion_de_salida: break # Código a ejecutar

  1. 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

  1. 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:

  1. If-Else: Muestra cómo se maneja una condición con ramas 'if' y 'else'.
  2. Elif: Representa la estructura de múltiples condiciones con 'elif' y 'else'.
  3. For Loop: Ilustra cómo funciona un bucle 'for' iterando sobre una secuencia.
  4. While Loop: Muestra un bucle 'while' que se ejecuta mientras una condición sea verdadera.
  5. Break: Explica cómo se utiliza 'break' para salir de un bucle.
  6. Continue: Muestra el uso de 'continue' para saltar a la siguiente iteración de un bucle.
  7. 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.

Principio del formulario

 

 


 

ACTIVIDAD 5 – ALGEBRA LINEAL: MATRICES

https://chat.openai.com/share/f9fbcca2-6911-4bc9-acd3-3da6f02db01f

 

User

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

User

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.

User

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=AA−1=A−1A=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:

  1. Calcula el determinante de A: det()=����det(A)=adbc.
  2. Si det()≠0det(A)=0, la inversa de A es:

−1=1����(��)A−1=adbc1​(dc​−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.

User

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

  1. Importar NumPy: Necesario para manejo de matrices y operaciones matemáticas.
  2. 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.
  3. 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.

Principio del formulario

 

 

Comentarios

Entradas populares de este blog

La ecuacion cuadrática y sus script en Phyton

Modelos de casa minimalistas con entorno tropical

Mi información