Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Apuntes de Física #1, Ejercicios de Física

Apuntes de Física 1, para mejorar el entendimiento de la materia.

Tipo: Ejercicios

2024/2025

Subido el 29/04/2025

angel-de-jesus-espino-zepeda-1
angel-de-jesus-espino-zepeda-1 🇲🇽

5 documentos

1 / 11

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Aplicaci´on de Matrices
Programaci´
on 1
U
A
Q
Angel de Jes ´us Espino Zepeda
Ingenier´
ıa F´
ısica
29/04/2025
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Apuntes de Física #1 y más Ejercicios en PDF de Física solo en Docsity!

Aplicaci ´on de Matrices

Programaci ´on 1

U

A

Q

Angel de Jes ´us Espino Zepeda

Ingenier´ıa F´ısica

Indice^ ´

    1. Introducci ´on
    1. Metodolog´ıa
    • 2.1. Diagrama de Flujo
    • 2.2. C ´odigo en Python
      • 2.2.1. Captura de compilaci ´on (Python)
    • 2.3. C ´odigo en Fortran
      • 2.3.1. Captura de compilaci ´on (Fortran)
    1. Conclusi ´on
    1. Bibliograf´ıa

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.

2. Metodolog´ıa

2.1. Diagrama de Flujo

Figura 1: Producto Matricial (diagrama de flujo)

2.2.1. Captura de compilaci ´on (Python)

Figura 2: Compilaci ´on en Python

2.3. C ´odigo en Fortran

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

3. Conclusi ´on

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.

4. Bibliograf´ıa

  1. Chapman, S. J. (2004). Fortran 90/95 for Scientists and Engineers (3rd ed.). McGraw-Hill.
  2. Strang, G. (2016). Introduction to Linear Algebra (5th ed.). Wellesley-Cambridge Press.
  3. Lutz, M. (2013). Learning Python (5th ed.). O’Reilly Media.
  4. Oliphant, T. E. (2015). Guide to NumPy (2nd ed.). CreateSpace Independent Pu- blishing Platform.
  5. Press, W. H., Teukolsky, S. A., Vetterling, W. T., & Flannery, B. P. (2007). Nu- merical Recipes: The Art of Scientific Computing (3rd ed.). Cambridge University Press.
  6. Python Software Foundation. (2024). The Python Language Reference. Recupera- do de https://docs.python.org/3/reference/
  7. Garbarino, P. (2024). PSeInt - Pseudoc´odigo Int´erprete. Recuperado de http:// pseint.sourceforge.net/
  8. OpenAI. (2025). ChatGPT [Modelo de lenguaje de inteligencia artificial]. Recu- perado de https://chat.openai.com