Matlab en Cinco Lecciones

de Numérico 

  

(Pulsa para agrandar)

 

(Ultima actualización: 14 de Enero de 2008)

 

Nota: Durante estos meses hemos dejado la web un poco de lado, a falta de dos secciones por actualizar. Es nuestra intención retomar el trabajo y concluir lo que resta pero probablemente no estará lista antes del curso 2008-2009. Lamentamos los inconvenientes que esto pueda causar.


Introducción

 

Está página está dedicada al libro Matlab en cinco lecciones de Numérico. Esta disponible una versión preeliminar en

Matlab en cinco lecciones de Numérico (versión beta de 16 de Febrero de 2006)

Por favor, ten en cuenta que es una versión beta y que por tanto hay ciertas partes que han debido ser rehechas. .

Una versión actualizada y revisada del libro se encuentra ya publicado  en el servicio de publicaciones de la Universidad Pública de Navarra. En esta versión se han corregido algunos errores y erratas, se han reescrito algunas secciones y se ha mejorado la exposición de algunos de los temas. Para más información sobre  ver

http://www.unavarra.es/servicio/publicaciones/index.htm

 

Si te gusta el texto, te animamos a que encargues el libro. Si tienes alguna duda puedes contacta con cualquiera de nosotros:
 

Víctor Domínguez Báguena
email: victor.dominguez@unavarra.es


Dep. Ingeniería Matemática e Informática
Universidad Pública de Navarra
Campus de Arrosadía s/n
31006 Pamplona

María Luisa Rapún Banzo
email: marialuisa.rapun@upm.es


Dep. Fundamentos Matemáticos
de la Tecnología Aeronáutica
E.T.S.I. Aeronáuticos, Universidad Politécnica de Madrid
Plaza Cardenal Cisneros 3
28040 Madrid

 


Material auxiliar

 

En esta sección es, casi obligatoriamente, una página en construcción. Iremos subiendo material más o menos relacionado con el texto docente. En este material incluimos los programas en Matlab expuestos en el libro, las soluciones de algunos de los ejercicios, algunas extensiones adicionales no incluidas,  guis ilustrativas del funcionamiento de algunos de los métodos numéricos, etc. Rogamos que se tenga paciencia. El material se irá colgando tan pronto tengamos tiempo para ir ordenándolo y puliendo los últimos detalles.

 

Nuevamente, agradeceremos cualquier indicación, sugerencia, corrección que nos hagáis llegar.

 

Lección 1: Primeros pasos en Matlab.

                    Métodos directos para sistemas de ecuaciones lineales.

 

Tratamos una introducción al lenguaje de programación de Matlab. Las estructuras habituales en cualquier lenguaje de programación (estructuras de decisión, bucles,...) se presentan  junto con una característica propia de Matlab (en parte compartida con Fortran 90) como es el manejo de vectores y matrices en Matlab. El método de Gauss y sus variantes proporcionan el marco adecuado donde practicar lo tratado en la primera sección.
 

Programas (m-files)

 

Guis:

 

Lección 2: Programación avanzada en Matlab.
                    Métodos iterativos para sistemas de ecuaciones lineales

En esta lección profundizamos en el manejo de vectores y matrices. Concretamente, introducimos nuevos comandos para manipulación de partes de las matrices (triu,tril,diag), comentamos algunos comandos relacionados con operaciones vectoriales y matriciales (dot, norm, max, min, sum, prod...) y el manejo en Matlab de matrices huecas o sparse. Para finalizar, mostramos como manejar un número variable de argumentos de entradas y salidas en una función.

En la parte matemática, exponemos una introducción a los métodos iterativos para sistemas de ecuaciones lineales. En una primera parte hablamos de los métodos iterativos clásicos, basados en iteraciones afines y comentamos brevemente alguna de las hipótesis necesaria para la convergencia. Para finalizar, cerramos el tema con la exposición del método del Gradiente Conjugado, sin lugar a dudas uno de los algoritmos más populares del siglo XX y a todas luces la elección obvia para tratar sistemas lineales cuando la matriz del sistema es simétrica y definida positiva. Nos permitimos hacer un análisis del método para mostrar algunas de sus propiedades y comentamos muy brevemente el precondicionamiento como la técnica necesaria para acelerar la convergencia.

Programas (m-files)

  • jacobi.m método de Jacobi para sistemas de ecuaciones lineales

  • jacobiv.m método de Jacobi. Versión vectorizada

  • gaussSeidel.m método de Gauss-Seidel

  • gaussSeidelV.m método de Gauss-Seidel. Versión vectorizada

  • relajacion.m método de relajación.

  • crearSparse.m fichero script que genera una matriz cuadrada sparse (simétrica y definida positiva) y un término independiente. Se puede utilizar para realizar test de los métodos anteriores. Requiere tener instalado la toolbox de ecuaciones en derivadas parciales.

  • maxDescenso.m método del máximo descenso

  • gradConjugado.m método del Gradiente conjugado.

  • gradConjugadoPrec.m método del Gradiente conjugado precondicionado

Guis:

En esta gui visualizamos el efecto de los métodos de Jacobi, Gauss-Seidel y Relajación ante cuatro matrices sparse (provenientes de diferentes niveles de discretización de un problema modelo de elementos finitos) y sobre una matriz aleatoria definida positiva. Visualizamos así la dependencia del número de iteraciones del nivel de refinamiento o el valor óptimo para el parámetro de relajación. Para correr el programa simplemente colocarse en la carpeta donde se haya descomprimido el fichero zip y ejecutar

>> afinesgui

En enlace sobre el gradiente conjugado. Esta versión es provisional y está a la espera de incluir otros ejemplos con matrices sparse donde se hayan técnicas de reordenamiento de las incógnitas para mejorar sus propiedades. Para ejecutar el programa introducir en la ventana de comandos

>> gradiente_gui

 

Lección 3: Funciones como argumento. Recursividad.
                    Fórmulas de cuadratura. FFT

En esta lección mostramos al lector cómo enviar funciones como argumentos de otras funciones en Matlab y la programación recursiva, esto es, la habilidad de una función de llamarse a sí misma. Estas dos habilidades son utilizadas en la segunda parte de la lección. Así, veremos primero  la implementación de reglas de cuadratura (para aproximar integrales definidas) y un algoritmo de integración adaptativa. Finalizaremos con la transformada rápida de Fourier (FFT) y su implementación simple en forma recursiva.

Programas (m-files)

  • miplot.m función para dibujar funciones introducidas por el usuario

  • miplot2.m versión algo más completa de la función anterior

  • fact.m  función factorial programada de forma recursiva

  • puntomedio.m regla de cuadratura del punto medio

  • trapecio.m regla de cuadratura del trapecio

  • simpson.m  (por añadir)

  • regla3Octavos.m regla de 3/8

  • NewCotCerrada5ptos.m Newton-Cotes cerrada de 5 puntos

  • testcuadratura.m fichero script para testar los métodos de punto medio, trapecio y Simpson.

  • testcuadratura2.m fichero script para testar los métodos de punto medio, trapecio, Simpson, regla de los 3/8 y la regla de Newton Cotes cerrada de 5 puntos.

  • simpsonadapt.m Método de Simpson adaptativo

  • ft.m Transformada de Fourier discreta (no rápida).

  • ift.m Inversa de la transformada de Fourier discreta (no rápida).

  • ftRapida.m Transformada rápida de Fourier (discreta). Versión recursiva

  • iftRapida.m Inversa de la Transformada rápida de Fourier. Versión recursiva 

Guis:

Esta gui supone un banco de prueba para diferentes fórmulas de cuadratura: punto medio, trapecio, Simpson, Newton Cotes cerradas y Simpson adaptativa. Para ejecutarla gui, descargar el fichero zip, descomprimirlo y ejecutar en la línea de comando

>> integracion

 

La transformada rápida de Fourier y su inversa dan juego para construir gui.  Para ejecutar, basta bajar el fichero zip, y ejecutar en la línea de comando

>> fftgui

 

 

Lección 4: Cálculo simbólico y estructuras de datos.
                    Valores y vectores propios. Google.

En este apartado comenzamos con una breve introducción a la toolbox de simbólico de Matlab.  Esta extensión permite la manipulación simbólica de expresiones matemáticas (límites, simplificaciones, factorizaciones, resolución de ecuaciones no lineales, derivación, integración,...). El austero interfaz de Matlab dificulta el manejo de estas funcionalidades, y, en nuestra modesta opinión, su potencia es inferior a procesadores puramente simbólicos como Mathematica o Maple. Sin embargo, puede ser suficiente en muchos casos. La parte dedicada a Matlab se cierra mostrando tres tipos nuevos de variables, tensores, celdas (cell) y las estructuras de datos (struct) que facilitan la programación de tareas más complejas.

En la parte numérica volvemos al álgebra matricial tratando el problema del cálculo de valores y vectores propios. Los métodos tratados son el método de potencias y variantes, el método de Jacobi y el método QR, uno de los métodos más potentes para el cálculo de todos los valores y vectores propios de matrices llenas.

Finalizamos la sección explicación, en forma divulgativa, el algoritmo PageRank, de Google, que es el sistema que utiliza el popular buscador para asignar una puntuación a una página web. Sirve como ejemplo de como ideas simples, al alcance de un estudiante universitario con niveles básicos de álgebra lineal, permite revolucionar el mundo, en este caso, de la informática.

Programas (m-files)

  • potencias.m métodos de potencias  (cálculo del mayor valor propio en valor absoluto).

    Nota importante: el método de potencias tal y como se encuentra en el libro tiene un bug que hace que el criterio de parada no se satisfaga si el valor propio dominante tiene signo negativo. La versión aquí recogida corrige este error.

  • potenciasinversa.m método de potencias inversa (cálculo del menor valor propio)

  • potenciasdesplazadas.m método de potencias desplazada (cálculo del valor propio más próximo a un valor dado)

  • jacobi.m Método de Jacobi (sólo para matrices simétricas).

  • jacobiModificado.m Método de Jacobi modificado.

  • qrhouseholder.m

  • qrgivens.m

  • qrfrancis.m

  • hessenberg.m

  • qrDeflacción.m

 

Guis:

Puedes descargar aquí una gui donde testar el funcionamiento del método QR de Francis para matrices simétricas. Están implementadas las dos variantes más simples: reducción a una matriz semejante tridiagonal y el método QR con desplazamiento.  Para correr la gui, descomprimir y ejecutar en la ventana de comandos

>> qrgui

 

 

 

Lección 5: Salidas gráficas en Matlab.
                    Interpolación

(Por escribir)


Contador de visitas

Locations of visitors to this page

Volver a la página principal de Víctor Domínguez