Monografias.com > Matemáticas
Descargar Imprimir Comentar Ver trabajos relacionados

Métodos numéricos




Enviado por esvenmobit



    1. Sistemas lineales de
      ecuaciones
    2. Métodos
      directos
    3. Doolittle
    4. Código fuente de
      Doolittle
    5. Código fuente de
      Crout
    6. Código fuente de
      Cholesky
    7. Resultados con los
      métodos directos
    8. Conclusiones
    9. Bibliografía

    INTRODUCCIÓN

    En la práctica de la ingeniería y ciencias es
    frecuente tener la necesidad de resolver un sistema de
    ecuaciones
    lineales. Estos sistemas aparecen
    en muy diversos problemas, ya
    sea como la solución completa de un problema ó al
    menos como parte de ella. Dada esta necesidad frecuente, se
    requiere resolverlos en forma eficiente.

    Los métodos
    numéricos que resuelven los sistemas se pueden
    clasificar en directos e indirectos.

    Los métodos
    directos son aquellos que determinan la solución en un
    numero determinado de pasos.

    Los métodos iterativos son aquellos que obtienen
    la solución aproximándose a ella en un numero
    finito, pero no definido de pasos.

    La siguiente entrega pretende encontrar la
    solución de un sistema

    de ecuaciones lineales por los métodos
    anteriormente mencionados.

    Como los algoritmos de
    los métodos ya están disponibles en la
    mayoría de los libros de
    texto sobre la
    materia, se
    explicara en la medida de lo posible, detalles de
    implementación(personales)de los métodos
    directos(que son mas difíciles de programar).

    El lenguaje de
    programación idóneo para tal fin será
    matlab 6.0

    SISTEMAS LINEALES DE ECUACIONES

    Antes de empezar con los detalles de
    implementación de los métodos directos resulta
    conveniente determinar con que sistema

    o sistemas vamos a trabajar.

    Para los métodos directos se preferirá un
    sistema cuya matriz
    de

    coeficientes sea simétrica y definida positiva;
    la razón de tal decisión radica es que con este
    tipo de matrices
    trabaja el método
    directo de "Cholesky", a diferencia de Doolittle y
    Crout.

    Puesto que se utilizará un W(factor de
    relajación) dado :

    W = (raíz cuadrada(5)+1)/2 =
    1.61803398874989aprox.

    No será necesario tener un sistema tridiagonal
    para hallar dicho valor.

    Como consecuencia de lo anteriormente expuesto, se
    utilizará el mismo sistema para los métodos
    directos e iterativos.

    Una matriz A es simétrica si su transpuesta es
    igual a A.

    Es decir: A = [a(i,j)] es simétrica si y solo si
    [a(i,j)]=[a(j,i)].

    Una matriz simétrica A es positiva definida si y
    solo si los eigenvalores(valores
    propios) de A son positivos.

    Toda matriz simétrica se puede descomponer
    como:

    A = L*Lt (transpuesta)

    Para construir de manera fácil la matriz en
    cuestión, basta con utilizar las siguientes instrucciones
    en matlab:

    >>L=tril(ones(10)); %construye L

    >>A=L*L'; %construye L*Lt

    >>A%matriz simétrica

    A =

    1 1 1 1 1 1 1 1 1 1

    1 2 2 2 2 2 2 2 2 2

    1 2 3 3 3 3 3 3 3 3

    1 2 3 4 4 4 4 4 4 4

    1 2 3 4 5 5 5 5 5 5

    1 2 3 4 5 6 6 6 6 6

    1 2 3 4 5 6 7 7 7 7

    1 2 3 4 5 6 7 8 8 8

    1 2 3 4 5 6 7 8 9 9

    1 2 3 4 5 6 7 8 9 10

    Si se quiere comprobar que efectivamente se trata de una
    matriz positiva definida, basta con teclear:

    >>eig(A)%calcula los valores
    propios de A

    Que obtendrá:

    ans =

    0.2557

    0.2738

    0.3080

    0.3662

    0.4652

    0.6431

    1.0000

    1.8730

    5.0489

    44.7661

    Y todos los valores propios de A son
    positivos

    Para evitar problemas de convergencia en los
    métodos iterativos es necesario que el esquema convergente
    quede determinado.

    Para el método de Jacobi basta
    teclear:

    >> S=diag(diag(A));%crea la matriz
    diagonal

    >> T=S-A;

    >>B=inv(S)*T;

    >>eig(B)

    Que arroja:

    ans =

    -6.2572

    -0.3709

    0.4470

    0.7060

    0.8199

    0.8800

    0.9156

    0.9386

    0.9545

    0.9666

    Como cada uno de los valores propios es menor que
    ("<1"),entonces el esquema de convergencia "A", sirve para
    obtener las ecuaciones iterativas del método de
    Jacobi.

    Para el método de Gauss-Seidel:

    >> L=tril(A,-1);

    >>D=diag(diag(A));

    >> S=D+L;

    >> T=S-A;

    >>B=inv(S)*T;

    >> eig(B)

    Que arroja:

    ans =

    0

    0.5000

    0.6667

    0.7500

    0.8000

    0.8333

    0.8571

    0.8750

    0.8889

    0.9000

    Como cada uno de los valores propios es menor que
    ("<1"),entonces el esquema de convergencia "A", sirve para
    obtener las ecuaciones iterativas del método de
    Gauss-Seidel.

    Como ya se ha determinado la matriz de coeficientes del
    sistema, ahora sólo resta elegir el vector de
    términos independientes y determinar la solución
    del sistema(para ayudarnos a ver mejor el comportamiento
    de los métodos).

    Como todo sistema se puede escribir como Ax=b,
    utilizaremos

    a matlab para resolverlo por x = (inversa de
    A)*b.(solución por la inversa)

    Entonces se teclea:

    >>b=[11;2;9;20;5;6;7;0;1;3];%vector de
    términos independientes

    >> x=inv(A)*b;%solución por la
    inversa

    El resultado obtenido será:

    x =

    20

    -16

    -4

    26

    -16

    0

    8

    -8

    -1

    2

    Que es el vector solución que se presumirá
    obtener por los métodos a evaluar.

    Nuestro sistema quedará entonces de la siguiente
    manera:

    Que es la forma matricial Ax=b.

    METODOS DIRECTOS

    Puesto que ya se determinó el sistema con el cual
    se trabajará, ahora se centrará la atención en la programación de los métodos
    directos.

    La lógica
    de los algoritmos(procedimientos no
    ambiguos que resuelven problemas),sugieren que el cuerpo de la
    implementación sea:

    1)Captura de los datos de
    entrada.

    2)Implementación de un método
    directo.

    3)Implementación de los procedimientos
    progresivos y regresivos que llevan a la
    solución.

    4)Salida y presentación de los
    resultados.

    Se explicara solo los detalles del método de
    Doolittle, cuya lógica

    es aplicable a los restantes métodos directos
    respecto a los itenes

    1. y 3).

    DOOLITTLE

    (Captura de los datos de
    entrada)

    ¿Que es lo que necesita un método directo
    para poder
    empezar?

    Resulta lógico pensar que necesita A y b (Ax=b),
    pero si esto se hace pidiéndole al usuario que digite A y
    luego b, se corre el riesgo que digite
    mal los datos, además resulta muy cansado
    hacerlo.

    Podría además digitar un tamaño de
    matriz que no corresponde a la matriz.

    Para aminorar un poco el riesgo, se le pedirá al
    usuario que ingrese la matriz aumentada del sistema, de la cual
    se sacará la información necesaria para que el
    método funcione.

    Como el tamaño de A es n*n, el tamaño de
    la matriz aumentada es n*n+1, puesto que se incluye a "b"(una
    columna mas).

    El algoritmo de
    captura quedaría como:

    1. Lea matriz
    2. Tam=tamaño(matriz)
    3. Para i=1, n haga

    b(i)=matriz(i,n+1) (determinar "b")

    Para j=1, n haga

    A(i,j)=matriz(i,j) (determinar "A")

    Finpara

    Finpara

    4- b1=transpuesta(b) ("b" es un vector
    columna)

    DOOLITTLE

    (Implementación de los procedimientos
    progresivos y regresivos que llevan a la
    solución.)

    Se utilizará un sistema de 3*3 y 4*4 para ver
    el comportamiento

    de "c" en L*c=b, y de "x" en Ux=c.

    L*c=b

    c(1)=b(1)

    c(2)=b(2)-[l(2,1)*c(1)]

    c(3)=b(3)-[l(3,1)*c(1)+l(3,2)*c(2)]

    c(1)=b(1)

    c(2)=b(2)-[l(2,1)*c(1)]

    c(3)=b(3)-[l(3,1)*c(1)+l(3,2)*c(2)]

    c(4)=b(4)-[l(4,1)*c(1)+l(4,2)*c(2)+l(4,3)*c(3)]

    Es facil observar, que lo que se esta efectuando entre
    corchetes([]), es una sumatoria.

    También se observa que en L(i,j) , i<>j y
    i>j

    Además, de c(2) a c(n) se tiene que para L(i,j),
    i=2,n y j=1,n-1

    Entonces el esquema para c quedaria como:

    c(1)=b(1)

    c(i)=b(i)-Sumatoria(L(i,j)*c(i)), i<>j y i>j
    para todo L(i,j)

    con i=2,n y j=1,n-1

    El procedimiento que
    resume este comportamiento es:

    c(1)=b(1)

    Para i=2,n haga

    z=0

    Para j=1,n-1 haga

    Si i<>j y i>j entonces

    z=z+L(i,j)*c(j)

    Finsi

    Finpara

    c(i)=b(i)-z

    Finpara

    Ux=c

    x(3)=c(3)/u(3,3)

    x(2)={c(1)-[u(2,3)*x(3)]}/u(2,2)

    x(1)={c(1)-[ u(1,3)*x(3)+u(1,2)*x(2)
    ]}/u(1,1)

    x(4)=c(4)/u(4,4)

    x(3)={c(3)-[u(3,4)*x(4)]}/u(3,3)

    x(2)={c(2)-[u(2,4)*x(4)+u(2,3)*x(3)]}/u(2,2)

    x(1)={c(1)-[u(1,4)*x(4)+u(1,3)*x(3)+u(1,2)*x(2)]}/u(1,1)

    Es facil observar, que lo que se esta efectuando entre
    corchetes([]), es una sumatoria.

    También se observa que en U(i,j) , i<>j y
    i<j

    Además, de x(n-1) a x(1) se tiene que para
    U(i,j), i=n-1,1 y j=n,2

    Entonces el esquema para x quedaria como:

    x(n)=c(n)/u(n,n)

    x(i)=c(i)-Sumatoria(U(i,j)*x(j)), i<>j y i<j
    para todo U(i,j)

    con i=n-1,1 y j=n,2

    El procedimiento que resume este comportamiento
    es:

    x(n)=c(n)/u(n,n)

    Para i=n-1,1 haga

    Para j=n:-1:2 haga

    Si I<>j y i<j entonces

    z=z+U(i,j)*x(j)

    Finsi

    Finpara

    x(i)=(c(i)-z)/U(i,i)

    Finpara

    A continuación se da el código
    fuente con algunos comentarios sobre las instrucciones donde es
    conveniente.

    CODIGO FUENTE DE DOOLITTLE

    matriz=input ('TECLEE LA MATRIZ AUMENTADA DEL SISTEMA,
    por ejemplo: [5 -4 2 20;2 -3 4 19;1 1 3 10]n');

    tam=size(matriz);%sacar el tamaño de la matriz
    para determinar:

    %A(matris de coeficientes) y b(vector de terminos
    independientes)

    n=tam(1);%saca el numero de filas de la
    matriz(tamaño de A)

    for i=1:n

    b(i)=matriz(i,n+1);%determinar "b"

    for j=1:n

    A(i,j)=matriz(i,j);%determinar "A"

    end

    end

    b1=b';% "b" es un vector columna

    L=eye(n);%inicializa la "L" de doolittle(le da el
    tamaño de A),y evita crear sus unos y ceros

    for k=1:n-1 %factorizacion de
    doolittle'''''''''''''''''''''''''''''

    for i=k+1:n
    %'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    L(i,k)=A(i,k)/A(k,k); %(se determina la
    "L")'''''''''''''''''''''' '''''''''''

    for j=1:n
    %''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    A(i,j)=A(i,j)-A(k,j)*L(i,k);%(se determina la "U"(A se
    transforma en U))

    end
    %'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    U=A;%cambio de
    variable

    c=b1;%se inicializa el vector "c", que tiene el mismo
    tamaño de "b"(se determina c(1))

    for i=2:n %procedimiento para hallar
    "c"(progresivamente)

    z=0;
    %''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    for j=1:n-1
    %''''''''L*c=b'''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    if i~=j & i>j
    %''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    z=z+L(i,j)*c(j);%''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    c(i)=b1(i)-z;
    %''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    x=c;%se inicializa el vector "x", que tiene el mismo
    tamaño de "c"

    x(n)=c(n)/U(n,n);%se determina x(n)(ultima solucion del
    sistema)

    for i=n-1:-1:1 %procedimiento para hallar
    "x"(regresivamente)

    z=0;
    %'''''''''''''''''''''''''''''''''''''''''''''

    for j=n:-1:2
    %''''''U*x=c''''''''''''''''''''''''''''''''''

    if i~=j & i<j
    %'''''''''''''''''''''''''''''''''''''''''''''

    z=z+U(i,j)*x(j);%'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    x(i)=(c(i)-z)/U(i,i);
    %'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    L%muestra la matriz
    triangular inferior de doolittle

    U%muestra ''''''''''''''''''''''superior
    ''''''''''''

    LU=L*U%muestra la factorizacion de doolittle

    x%vector solucion del sistema

    clear all%elimina las variables del
    espacio de trabajo(evita
    que el programa se
    cargue de basura)

    %copyright 2004

    %ESVEN MORALES

    CODIGO FUENTE DE CROUT

    matriz=input ('TECLEE LA MATRIZ AUMENTADA DEL SISTEMA,
    por ejemplo: [5 -4 2 20;2 -3 4 19;1 1 3 10]n');

    tam=size(matriz);%sacar el tamaño de la matriz
    para determinar

    %A(matris de coeficientes)y b(vector de terminos
    independientes)

    n=tam(1);%saca el numero de filas de la
    matriz

    for i=1:n

    b(i)=matriz(i,n+1);%determinar "b"

    for j=1:n

    A(i,j)=matriz(i,j);%determinar "A"

    end

    end

    b1=b';% "b" es un vector columna

    U=eye(n);%inicializa la "U" de crout(le da el
    tamaño de A),y evita crear sus unos y ceros

    for k=1:n-1 %factorizacion de
    crout'''''''''''''''''''''

    for j=k+1:n
    %'''''''''''''''''''''''''''''''''''''''''''

    U(k,j)=A(k,j)/A(k,k); %(se determina la
    "U")''''''''''''''''''''''

    for i=1:n
    %'''''''''''''''''''''''''''''''''''''''''''

    A(i,j)=A(i,j)-A(i,k)*U(k,j);%(se determina la "L"(A se
    transforma en L))

    end
    %'''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''

    L=A;%cambio de variable

    c=b1;%se inicializa el vector "c", que tiene el mismo
    tamaño de "b"

    c(1)=b1(1)/L(1,1);%se determina el primer elemento de
    c

    for i=2:n %procedimiento para hallar
    "c"(progresivamente)

    s=0;
    %''''''''''''''''''''''''''''''''''''''''''''''

    for j=1:n-1
    %''''''''''''''''''''''''''''''''''''''''''''''

    if i~=j & i>j
    %''''''''''''''''''''''''''''''''''''''''''''''

    s=s+L(i,j)*c(j);%''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''

    c(i)=(b1(i)-s)/L(i,i);
    %''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''

    x=c;%se inicializa el vector "x", que tiene el mismo
    tamaño de "c"

    for i=n-1:-1:1 %procedimiento para hallar
    "x"(regresivamente)

    s=0;
    %'''''''''''''''''''''''''''''''''''''''''''''

    for j=n:-1:2
    %'''''''''''''''''''''''''''''''''''''''''''''

    if i~=j & i<j
    %'''''''''''''''''''''''''''''''''''''''''''''

    s=s+U(i,j)*x(j);%'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    x(i)=c(i)-s;
    %'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    L%muestra la matriz triangular inferior de
    crout

    U%muestra ''''''''''''''''''''''superior
    ''''''''

    LU=L*U%muestra la factorizacion de crout

    x%vector solucion del sistema

    clear all%elimina las variables del espacio de
    trabajo(evita que el programa se cargue de basura)

    %copyright 2004

    %ESVEN MORALES

    CODIGO FUENTE DE CHOLESKY

    matriz=input ('TECLEE LA MATRIZ AUMENTADA DEL SISTEMA,
    por ejemplo: [5 -4 2 20;2 -3 4 19;1 1 3 10]n');

    tam=size(matriz);%sacar el tamaño de la matriz
    para determinar A(matris de coeficientes)

    % y b(vector de terminos independientes)

    n=tam(1);%saca el numero de filas de la
    matriz

    for i=1:n

    b(i)=matriz(i,n+1);%determinar "b"

    for j=1:n

    A(i,j)=matriz(i,j);%determinar "A"

    end

    end

    b1=b';% "b" es un vector columna

    for k=1:n %Algoritmo de cholesky

    for i=1:k-1 %'''''''''''''''''''''

    sum=0; %'''''''''''''''''''''

    for j=1:i-1 %'''''''''''''''''''''

    sum=sum+A(i,j)*A(k,j); %'''''''''''''''''''''

    end %'''''''''''''''''''''

    A(k,i)=(A(k,i)-sum)/A(i,i);
    %'''''''''''''''''''''

    end %'''''''''''''''''''''

    sum=0; %'''''''''''''''''''''

    for j=1:k-1 %'''''''''''''''''''''

    sum=sum+A(k,j)*A(k,j); %'''''''''''''''''''''

    end %'''''''''''''''''''''

    A(k,k)=sqrt(A(k,k)-sum);
    %'''''''''''''''''''''

    end %'''''''''''''''''''''

    for i=1:n-1 %Añade los ceros de la L de
    cholesky

    for j=1:n %''(puesto que el algoritmo solo
    '''

    if j>i %'''altera los elementos
    de'''''''''

    A(i,j)=0; %'''la diagonal principal de
    A''''''

    end %''''y por debajo de esta)''''''''''

    end %'''''''''''''''''''''''''''''''''''

    end %'''''''''''''''''''''''''''''''''''

    L=A;%cambio de variable

    Lt=L';%Lt sera la U de cholesky(transpuesta de
    L)

    c=b1;%se inicializa el vector "c", que tiene el mismo
    tamaño de "b"

    c(1)=b1(1)/L(1,1);%se determina el primer elemento de
    c

    for i=2:n %procedimiento para hallar
    "c"(progresivamente)

    s=0;
    %''''''''''''''''''''''''''''''''''''''''''''''

    for j=1:n-1
    %''''''''''''''''''''''''''''''''''''''''''''''

    if i~=j & i>j
    %''''''''''''''''''''''''''''''''''''''''''''''

    s=s+L(i,j)*c(j)
    ;%''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''

    c(i)=(b1(i)-s)/L(i,i);
    %''''''''''''''''''''''''''''''''''''''''''''''

    end
    %''''''''''''''''''''''''''''''''''''''''''''''

    x=c;%se inicializa el vector "x", que tiene el mismo
    tamaño de "c"

    x(n)=c(n)/Lt(n,n);%se determina x(n)(ultima solucion del
    sistema)

    for i=n-1:-1:1 %procedimiento para hallar
    "x"(regresivamente)

    z=0;
    %'''''''''''''''''''''''''''''''''''''''''''''

    for j=n:-1:2
    %''''''Lt*x=c''''''''''''''''''''''''''''''''''

    if i~=j & i<j
    %'''''''''''''''''''''''''''''''''''''''''''''

    z=z+Lt(i,j)*x(j);%'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    x(i)=(c(i)-z)/Lt(i,i);
    %'''''''''''''''''''''''''''''''''''''''''''''

    end
    %'''''''''''''''''''''''''''''''''''''''''''''

    L%muestra la matriz triangular inferior de
    cholesky

    Lt%muestra ''''''''''''''''''''''superior
    ''''''''

    LLt=L*Lt%muestra la factorizacion de cholesky

    x%vector solucion del sistema

    clear all%elimina las variables del espacio de
    trabajo(evita que el programa se cargue de basura)

    %copyright 2004

    %ESVEN MORALES

    RESULTADOS CON
    LOS METODOS DIRECTOS

    DOOLITTLE

    L =

    1 0 0 0 0 0 0 0 0 0

    1 1 0 0 0 0 0 0 0 0

    1 1 1 0 0 0 0 0 0 0

    1 1 1 1 0 0 0 0 0 0

    1 1 1 1 1 0 0 0 0 0

    1 1 1 1 1 1 0 0 0 0

    1 1 1 1 1 1 1 0 0 0

    1 1 1 1 1 1 1 1 0 0

    1 1 1 1 1 1 1 1 1 0

    1 1 1 1 1 1 1 1 1 1

    U =

    1 1 1 1 1 1 1 1 1 1

    0 1 1 1 1 1 1 1 1 1

    0 0 1 1 1 1 1 1 1 1

    0 0 0 1 1 1 1 1 1 1

    0 0 0 0 1 1 1 1 1 1

    0 0 0 0 0 1 1 1 1 1

    0 0 0 0 0 0 1 1 1 1

    0 0 0 0 0 0 0 1 1 1

    0 0 0 0 0 0 0 0 1 1

    0 0 0 0 0 0 0 0 0 1

    LU =

    1 1 1 1 1 1 1 1 1 1

    1 2 2 2 2 2 2 2 2 2

    1 2 3 3 3 3 3 3 3 3

    1 2 3 4 4 4 4 4 4 4

    1 2 3 4 5 5 5 5 5 5

    1 2 3 4 5 6 6 6 6 6

    1 2 3 4 5 6 7 7 7 7

    1 2 3 4 5 6 7 8 8 8

    1 2 3 4 5 6 7 8 9 9

    1 2 3 4 5 6 7 8 9 10

    x =

    20

    -16

    -4

    26

    -16

    0

    8

    -8

    -1

    2

    CROUT

    L =

    1 0 0 0 0 0 0 0 0 0

    1 1 0 0 0 0 0 0 0 0

    1 1 1 0 0 0 0 0 0 0

    1 1 1 1 0 0 0 0 0 0

    1 1 1 1 1 0 0 0 0 0

    1 1 1 1 1 1 0 0 0 0

    1 1 1 1 1 1 1 0 0 0

    1 1 1 1 1 1 1 1 0 0

    1 1 1 1 1 1 1 1 1 0

    1 1 1 1 1 1 1 1 1 1

    U =

    1 1 1 1 1 1 1 1 1 1

    0 1 1 1 1 1 1 1 1 1

    0 0 1 1 1 1 1 1 1 1

    0 0 0 1 1 1 1 1 1 1

    0 0 0 0 1 1 1 1 1 1

    0 0 0 0 0 1 1 1 1 1

    0 0 0 0 0 0 1 1 1 1

    0 0 0 0 0 0 0 1 1 1

    0 0 0 0 0 0 0 0 1 1

    0 0 0 0 0 0 0 0 0 1

    LU =

    1 1 1 1 1 1 1 1 1 1

    1 2 2 2 2 2 2 2 2 2

    1 2 3 3 3 3 3 3 3 3

    1 2 3 4 4 4 4 4 4 4

    1 2 3 4 5 5 5 5 5 5

    1 2 3 4 5 6 6 6 6 6

    1 2 3 4 5 6 7 7 7 7

    1 2 3 4 5 6 7 8 8 8

    1 2 3 4 5 6 7 8 9 9

    1 2 3 4 5 6 7 8 9 10

    x =

    20

    -16

    -4

    26

    -16

    0

    8

    -8

    -1

    2

    cholesky

    L =

    1 0 0 0 0 0 0 0 0 0

    1 1 0 0 0 0 0 0 0 0

    1 1 1 0 0 0 0 0 0 0

    1 1 1 1 0 0 0 0 0 0

    1 1 1 1 1 0 0 0 0 0

    1 1 1 1 1 1 0 0 0 0

    1 1 1 1 1 1 1 0 0 0

    1 1 1 1 1 1 1 1 0 0

    1 1 1 1 1 1 1 1 1 0

    1 1 1 1 1 1 1 1 1 1

    Lt =

    1 1 1 1 1 1 1 1 1 1

    0 1 1 1 1 1 1 1 1 1

    0 0 1 1 1 1 1 1 1 1

    0 0 0 1 1 1 1 1 1 1

    0 0 0 0 1 1 1 1 1 1

    0 0 0 0 0 1 1 1 1 1

    0 0 0 0 0 0 1 1 1 1

    0 0 0 0 0 0 0 1 1 1

    0 0 0 0 0 0 0 0 1 1

    0 0 0 0 0 0 0 0 0 1

    LLt =

    1 1 1 1 1 1 1 1 1 1

    1 2 2 2 2 2 2 2 2 2

    1 2 3 3 3 3 3 3 3 3

    1 2 3 4 4 4 4 4 4 4

    1 2 3 4 5 5 5 5 5 5

    1 2 3 4 5 6 6 6 6 6

    1 2 3 4 5 6 7 7 7 7

    1 2 3 4 5 6 7 8 8 8

    1 2 3 4 5 6 7 8 9 9

    1 2 3 4 5 6 7 8 9 10

    x =

    20

    -16

    -4

    26

    -16

    0

    8

    -8

    -1

    2

    Nota: como éste trabajo solo fue realizado
    por una sola persona, no tuvo
    tiempo para
    implementar los métodos iterativos(a pesar de que son mas
    fáciles de implementar).

    No obstante el trabajo de
    escritorio que si realizó, y las investigaciones
    personales que hizo, dieron pie para poder

    Sacar las próximas conclusiones.

    CONCLUSIONES

    Ventajas y desventajas de los métodos
    iterativos comparados con los métodos
    directos.

    Ventajas

    *Probablemente más eficientes que los directos
    para sistemas de orden muy alto.

    *Mas simples de programar.

    *Puede aprovecharse una aproximación a la
    solución ,si tal aproximación existe.

    *Se obtienen fácilmente aproximando burdas de la
    solución.

    *Son menos sensibles a los errores de redondeo(valioso
    en sistemas

    mal condicionados).

    *Se requiere menos memoria de
    máquina.Generalmente, las necesidades de memoria son
    proporcionales al orden de la matriz.

    Desventajas

    *Si se tienen varios sistemas que comparten la matriz
    coeficiente, esto no representará ahorro de
    cálculos ni tiempo de máquina, ya que por cada
    vector a la derecha de A tendrá que aplicarse el
    método

    seleccionado.

    *Aún cuando la convergencia este asegurada, puede
    ser lenta y ,por lo tanto, los cálculos requeridos para
    obtener una solución particular

    no son predecibles.

    *El tiempo de máquina y la exactitud del
    resultado dependen del

    criterio de convergencia.

    *Si la convergencia es lenta, los resultados deben
    interpretarse con cautela.

    *No se tiene ventaja particular alguna(tiempo de
    máquina por iteración) si la matriz coeficiente es
    simétrica.

    *No se obtiene la inversa de A ni el determinante de
    A.

    BIBLIOGRAFÍA

    -INTRODUCCION AL ÁLGEBRA LINEAL. Antón
    Howard. 2da Ed

    -METODOS
    NUMERICOS PARA INGENIEROS. Chapra/Canale

    Mc-Graw Hill. 4a Ed

    ESVEN SALOMON MORALES BITAR

    UNIVERSIDAD AUTONOMA DEL CARIBE

    INGENIERIA DE SISTEMAS

    BARRANQUILLA / ATLANTICO

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter