Proyecto1

Embed Size (px)

DESCRIPTION

graficas en excel

Citation preview

  • Proyecto de Laboratorio: Matrices Tridiagonales

    MeNyP II Lab

    Escuela de Computacin Cientca

    September 20, 2015

    1

  • Sea el sistema lineal

    Ax = B

    con A no singular (det (A) 6= 0) dada por

    A =

    a1 c1 0 0b1 a2.

    .

    .

    .

    .

    .

    .

    .

    .

    0.

    .

    .

    .

    .

    .

    .

    .

    . 0.

    .

    .

    .

    .

    .

    .

    .

    . an1 cn10 0 bn1 an

    es decir, A es una matriz tridiagonal. B es un vector columna. Entoncessurge una pregunta:

    Hemos programado varios mtodos para resolver sistemas lineales. Dado

    que una matriz tridiagonal tiene una estructura particular, cabe preguntarnos si

    nuestros mtodos pueden modicarse para resolver de manera ptima un sistema

    de este tipo, pues considerando la gran cantidad de ceros en A, nuestros mtodosestaran realizando operaciones innecesarias.

    Vive como si fueras a morir maana; aprende como si el mundo fuera a

    durar para siempre.

    Entonces, con esta interrogante, hacemos la factorizacin LU de A

    a1 c1 0 0b1 a2.

    .

    .

    .

    .

    .

    .

    .

    .

    0.

    .

    .

    .

    .

    .

    .

    .

    . 0.

    .

    .

    .

    .

    .

    .

    .

    . an1 cn10 0 bn1 an

    =

    1 0 0 01 1.

    .

    .

    .

    .

    .

    .

    .

    .

    0.

    .

    .

    .

    .

    .

    .

    .

    . 0.

    .

    .

    .

    .

    .

    .

    .

    . 1 00 0 n1 1

    1 c1 0 00 2.

    .

    .

    .

    .

    .

    .

    .

    .

    0.

    .

    .

    .

    .

    .

    .

    .

    . 0.

    .

    .

    .

    .

    .

    .

    .

    . n1 cn10 0 0 n

    A L U

    donde las incgnitas 1, . . . , n y 1, . . . , n1 tienen la siguiente frmula

    1 = a1

    1 =b1a1 i = ai i1ci1i = bii

    i = 2, . . . , n 1

    n = an n1cn1Teniendo la frmula podemos desarrollar un programa en MatLab para hallar

    los 1, . . . , n y 1, . . . , n1. Algunas sugerencias:

    2

  • La cabecera del programa debe ser :function [alfa,beta]=TriLU(A)

    donde alfa y beta son vectores que contienen los valores 1, . . . , n y1, . . . , n1 respectivamente.

    De la frmula podemos ver que para el cculo de los i y i necesitamoslos ai, bi, ci, que son la diagonal principal, la diagonal inferior y la diagonalsuperior de A, respectivamente. Si puedes tener los ai, bi, ci en vectoressera de ayuda; la funcin diag() de Matlab es una opcin para lograr esto.Prueba con estos comandos y observa lo que devuelven.

    A = rand(4, 4);diag(A)diag(A,1)diag(A, 1)

    Recuerda, utilizar la funcin diag es un camino, no el nico.Nuestra recompensa se encuentra en el esfuerzo y no en el resultado. Un

    esfuerzo total es una victoria completa.

    El programa TriLU tiene de entrada una matriz A tridiagonal y de salidados vectores, alfa y beta. Por ejemplo, nuestro porgrama debera funcionar as:

    Ahora podemos dar un paso ms. Consideremos de nuevo el sistema Ax = B.Cuando resolvemos el sistema utilizando la factorizacin LU resolvemos primero

    el siguiente sistema

    Ly = B

    3

  • Resulta que si hemos hallado los 1, . . . , n1, la incgnita y queda determinadapor la siguiente frmula

    y1 = B1{yi = Bi i1yi1, i = 2, . . . , ndonde B = [B1, . . . , Bn]. Con los y1, . . . , yn, procedemos luego a resolver elsistema

    Ux = y

    Si hemos hallado los 1, . . . , n, la incgnita x queda determinada por la sigu-iente frmula

    xn =ynn{

    xi = (yi cixi+1) /i, i = n 1, . . . , 1luego hemos resuelto el sistema inicial Ax = B. Con las frmulas podemosmodicar el programa TriLU de tal forma que resuelva el sistema Ax = B!

    1. La cabecera del programa debe ser :

    function x=TriLU(A,B)

    donde x es un vector, A una matriz tridiagonal, B un vector columna.

    2. En el programa, lo que has desarrollado de la primera parte mantenlo y

    debajo desarrolla la frmula

    y1 = B1{yi = Bi i1yi1, i = 2, . . . , ny luego la frmula

    xn =ynn{

    xi = (yi cixi+1) /i, i = n 1, . . . , 1

    No hay que apagar la luz del otro para que brille la nuestra.

    Al terminar las dos partes habrs programado un mtodo para resolver el

    sistema Ax = B, donde A es una matriz tridiagonal. Por ejemplo, nuestroprograma debera funcionar as:

    4

  • Algunas sugerencias generales

    No olvides cambiar el directorio en MatLab, tu archivo de cdigo deberaaparacer en el lado izquierdo. Existen otros lenguajes de alto nivel como

    C++ o Fortran. TriLU hecho en C++ o Fortran ser mas rpido?

    Recuerda que antes de utilizar un vector o matriz debes vericar queexista, si no, entonces debes crearlo. La funcin zeros() de MatLab tepuede ayudar. Esto se llama inicializar una variable.

    Al terminar un programa cualquiera, pregntate si se puede modicar detal manera que utilices menos variables (y por lo tanto menos espacio

    en memoria), menos operaciones (menos tiempo de ejecucin), en general,

    pregntate si se puede optimizarlo. Pero esto siempre al nal de desarrollar

    tu programa y no al mismo tiempo.

    Siempre que hagas un programa y desees compartirlo, deberas elaborarun pequeo manual. A esto se le llama Documentacin. Esto es para

    que otros que no saben como has hecho tu programa (y algunas veces no

    quieren saberlo) lo usen. Por ejemplo, la documentacin de diag() esta enhttp://www.mathworks.com/help/matlab/ref/diag.html.

    Si ves los pantallazos ya te has dado cuenta que no es MatLab, es Oc-tave. Algunos usamos Linux, y ah usamos Octave, que es un sofware

    libre igualito a MatLab. Aunque tambin se puede instalar Octave en

    Windows.

    Ser TriLU ms rpido que Eliminacin Gaussiana con Sustitucin haciaAtrs resolviendo un sistema con una matriz tridiagonal? Por qu?

    5

  • Cualquier consulta sobre este proyecto, asegurate antes de entender elproblema, luego se conciso y preciso al formularla. Hazla en el grupo del

    Facebook, as todos aprenderemos.

    Juzga a un hombre por sus preguntas en vez de hacerlo por sus respuestas.

    6