






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Apuntes de Física 1, para mejorar el entendimiento de la materia.
Tipo: Ejercicios
1 / 11
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
reciban dos matrices como par´ametros, verifiquen la compatibilidad de sus dimen- siones y, en caso afirmativo, calculen y devuelvan el producto correspondiente.
Tambi´en es necesario comprender el uso de estructuras de control repetitivas , como los bucles for en Python y los bucles do en Fortran 90, los cuales permiten recorrer de forma sistem´atica las filas y columnas de las matrices. Adem´as, se debe prestar atenci ´on a la correcta representaci ´on de matrices :
En Python , utilizando listas anidadas o, de manera m´as avanzada, arreglos de la biblioteca numpy.
En Fortran 90 , empleando arreglos de dimensiones especificadas en tiempo de compilaci ´on o definidas din´amicamente.
Otro aspecto fundamental es la validaci ´on de datos. Antes de intentar multiplicar dos matrices, el programa debe comprobar que sus dimensiones son compatibles. De lo contrario, debe evitar realizar la operaci ´on y manejar adecuadamente el error.
Entre los errores m´as comunes que se deben evitar se encuentran:
Intentar multiplicar matrices de dimensiones no compatibles.
No inicializar correctamente la matriz resultado antes de llenarla con los valo- res calculados.
Confundir el orden de las operaciones (fila de A por columna de B).
La multiplicaci ´on de matrices tiene una gran variedad de aplicaciones pr´acticas, tales como:
Transformaciones geom´etricas en gr´aficos 2D y 3D.
Resoluci ´on de sistemas de ecuaciones lineales.
Simulaci ´on de sistemas f´ısicos.
Entrenamiento de modelos de aprendizaje autom´atico.
En esta tarea, el objetivo principal es implementar correctamente el producto de ma- trices mediante funciones en Python y en Fortran 90 , aplicando buenas pr´acticas de programaci ´on y fortaleciendo el entendimiento de los algoritmos matriciales b´asicos.
Figura 1: Producto Matricial (diagrama de flujo)
2.2.1. Captura de compilaci ´on (Python)
Figura 2: Compilaci ´on en Python
module operaciones_matrices implicit none contains
subroutine leer_matriz(M, filas, columnas, nombre) real, allocatable, intent(out) :: M(:,:) integer, intent(out) :: filas, columnas character(*), intent(in) :: nombre integer :: i, j
write(,) "Ingrese el n´umero de filas de la matriz ", nombre, ":" read(,) filas write(,) "Ingrese el n´umero de columnas de la matriz ", nombre, ":" read(,) columnas
allocate(M(filas, columnas))
write(,) "Ingrese los elementos de la matriz ", nombre, ":"
do i = 1, filas do j = 1, columnas read(,) M(i,j) end do end do end subroutine leer_matriz
function multiplicar_matrices(A, B, filasA, columnasA, columnasB) result(C) real, intent(in) :: A(:,:), B(:,:) integer, intent(in) :: filasA, columnasA, columnasB real, allocatable :: C(:,:) integer :: i, j, k
allocate(C(filasA, columnasB)) C = 0.
do i = 1, filasA do j = 1, columnasB do k = 1, columnasA C(i,j) = C(i,j) + A(i,k) * B(k,j) end do end do end do end function multiplicar_matrices
subroutine mostrar_matriz(M, filas, columnas) real, intent(in) :: M(:,:) integer, intent(in) :: filas, columnas integer :: i, j
write(,) "Matriz resultado:" do i = 1, filas do j = 1, columnas write(,) M(i,j) end do end do end subroutine mostrar_matriz
end module operaciones_matrices
program multiplicacion_matrices_con_funciones
La presente tarea permiti ´o no solo reforzar los conocimientos te ´oricos sobre el pro- ducto de matrices, sino tambi´en aplicar de manera pr´actica t´ecnicas de programa- ci ´on estructurada y modular en dos lenguajes ampliamente utilizados en el ´ambito cient´ıfico: Python y Fortran.
Desde el punto de vista matem´atico, la multiplicaci ´on de matrices es una operaci ´on que, aunque elemental, posee un papel esencial en diversas ramas como el ´algebra lineal, la f´ısica, la computaci ´on gr´afica, la inteligencia artificial y el procesamiento de datos. Comprender las condiciones necesarias para que dos matrices puedan multi- plicarse —espec´ıficamente, que el n ´umero de columnas de la primera matriz coin- cida con el n ´umero de filas de la segunda— es fundamental para garantizar la vali- dez de la operaci ´on. Adem´as, el an´alisis del producto resultante permite interpretar transformaciones lineales, cambios de base y relaciones entre diferentes sistemas de ecuaciones.
En cuanto al enfoque computacional, implementar la multiplicaci ´on de matrices me- diante funciones y subrutinas permiti ´o fortalecer habilidades clave en el dise ˜no de algoritmos. Se abord ´o el uso de estructuras modulares, que fomentan la claridad, el orden y la reutilizaci ´on del c ´odigo, conceptos que son esenciales en proyectos de mayor envergadura. En Python, se aprovech ´o la sintaxis flexible del lenguaje para gestionar de manera eficiente los arreglos, mientras que en Fortran, se hizo necesa- rio estructurar correctamente los m ´odulos y las interfaces para permitir el manejo de matrices de tama ˜no din´amico utilizando allocatable, lo cual a ˜nade robustez al programa.
Finalmente, esta tarea no solo fortaleci ´o los conocimientos sobre las operaciones ma- triciales y su programaci ´on, sino que tambi´en proporcion ´o una visi ´on m´as amplia sobre la importancia de elegir las estructuras adecuadas para cada tipo de problema. La correcta implementaci ´on de funciones y subrutinas, junto con la buena pr´actica de modularizar el c ´odigo, son herramientas fundamentales que permiten construir programas m´as claros, eficientes, escalables y mantenibles. Estas habilidades resul- tan esenciales en el desarrollo profesional en ´areas como la ingenier´ıa, la ciencia de datos, la f´ısica computacional y muchas otras disciplinas que requieren del procesa- miento intensivo de datos y c´alculos matem´aticos avanzados.