37
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Mestrado em Engenharia Elétrica THAÍSA RODRIGUES LOBACK DURÃES 2 a LISTA DE EXERCÍCIOS: Sistemas Lineares Belo Horizonte 16 deabril de 2015

Métodos Numéricos para Sistemas Lineares

Embed Size (px)

DESCRIPTION

Métodos de resolução de Sistemas Lineares e suas implementações em Matlab.

Citation preview

  • CENTRO FEDERAL DE EDUCAO TECNOLGICA DE

    MINAS GERAIS

    Mestrado em Engenharia Eltrica

    THASA RODRIGUES LOBACK DURES

    2a LISTA DE EXERCCIOS:

    Sistemas Lineares

    Belo Horizonte

    16 deabril de 2015

  • 2

    1. Introduo

    Os mtodos numricos bem consolidados para a soluo de sistemas lineares de

    equaes lineares esparsas e de grande porte so divididos em mtodos diretos e

    interativos. Os mtodos diretos fornecem uma soluo em um nmero fixo de passos,

    sujeitos apenas a erros de arredondamento. J os mtodos iterativos, partem de um valor

    inicial utilizado como soluo e gera apartir desse ponto uma sequncia de vetores que

    converge para a soluo verdadeira do problema.

    Na maioria das aplicaes, os mtodos iterativos superam os mtodos diretos

    tradicionais, por solucionarem de forma mais eficiente os sistemas lineares de grande

    porte, com reduzida capacidade de armagem e menor esforo computacional.

    Este relatrio tem o objetivo de demonstrar e testar computacionalmente os

    mtodos diretos de decomposio LU, Cholesky, o refinamento desses mtodos, bem

    como os mtodos iterativos estacionrios de Jacobi, Gauss-Seidel e a aplicao de cada

    um desses mtodos. Pesquisa-se, ainda, sobre mtodos mais especficos e/ou complexos

    de obteno da soluo de sistemas lineares, visando o ganho de preciso e o menor

    dispndio de processamento computacional em cada caso aplicvel. Utiliza-se o Matlab

    para implementao dos mtodos sem a utilizao das funes aplicveis existentes.

    Essas funes so, em alguns casos, utilizados para comprovar a eficincia de

    determinado mtodo.

    2. Exerccios Propostos

    Desenvolva algoritmos em C ou MATLAB (escolha livre) para:

    1. Soluo de SL de ordem nxn usando decomposio LU com pivotao parcial. Calcular o determinante.

    2. Decomposio de Cholesky 3. Refinamento de soluo de SL (nxn). 4. Calculo da inversa de uma matriz (nxn). 5. Soluo de SL de ordem nxn usando o mtodo iterativo de Jacobi. 6. Soluo de SL de ordem nxn usando o mtodo iterativo de Gauss Seidel. 7. Determinao do maior e do menor auto-valor de uma matriz e calculo do

    numero de condicionamento.

    8. Determinao de autovalores e autovetores utilizando uma das tcnicas estudadas.

    9. Pesquise sobre sistemas tridiagonais e desenvolva um mtodo para sua soluo. 10. Pesquisa sobre a tcnica de soluo de SL chamada GMRES 11. Estude a resposta dinmica (estvel/no estvel (encontrar e avaliar os

    autovalores)) de um sistema real (o aluno dever propor e descrever

    completamente o sistema).

    TODAS AS QUESTES DEVEM SER BEM COMENTADAS

    PARAS OS ALGORTIMOS DESENVOLVIDOS EM MATLAB NO PERMITIDO

    O USO DE FUNES PRONTAS (inv, solve, eig, etc).

  • 3

    3. Resoluo

    1 Exerccio: Decomposio LU com pivotao parcial

    Um sistema linear Ax=b pode ser solucionado pelo Mtodo da Decomposio

    LU ncom pivotao parcial. Esse mtodo consiste na decomposio da matriz A nas

    matrizes L e U, sendo L uma matriz triangular ingerior unitria e a matriz U,

    triangular superior sem os elementos da diagonal principal.

    Da mesma forma que no Mtodo de Eliminao de Gauss, utiliza-se a estratgia

    da pivotao parcial para evitar um piv nulo e que os multiplicadores mij tenham

    valores muito grandes. Na pivotao parcial, escolhe-se o maior elemento em mdulo

    na coluna dos elementos a serem eliminados, atravs da troca de equaes, para

    transformao da matriz A em uma triangular superior. Para tanto, utiliza-se uma matriz

    de permutaes P para armazenar as trocas de equaes realizadas. Ento a

    decomposio passa a ser da forma PA=LU. Obtm-se, portanto, um sistema na

    forma LUx=Pb.

    Fazendo Ux=y e Ly=Pb, o problema se transforma inicialmente numa

    resoluo de um sistema triangular inferior, seguida da resoluo de um sistema

    triangular superior.

    O mtodo tambm possibilita o clculo do determinante da matriz A.

    Asmesmas propriedades utilizadas no Mtodo de Eliminao de Gauss podem ser

    utilizadas:

    det() =det() det()

    det()

    De forma que se tem uma equao final:

    det() = (1) ,

    =1

    em que "" so os elementos piv, n a ordem da matriz A e t o nmero

    de trocas de linhas necessrias para transformar a matriz de permutaes P em uma

    matriz identidade.

    A funo de Matlab elaborada para implementao do Mtodo da Decomposio

    LU com pivotao e o clculo do determinante mostrada a seguir:

  • 4

    function [L,U,P,PB,X,delta] = decompLU(A,B)

    % Funo para solucionar o sistema AX=B e calcular o determinante de A

    % pela decomposio LU

    ordem = size(A); % Ordem da matriz

    % Inicializao de variveis

    p= zeros(1,ordem(1,2));

    m=zeros(ordem);

    a=A;

    U=zeros(ordem);

    L=eye(ordem);

    P=eye(ordem);

    for j=1:(ordem(1,1))

    % Nova Inicializao

    oa=size(a); %ordem de "a"

    la=oa(1,1); %linhas de "a"

    ca=oa(1,2); %colunas de "a"

    linhapivo=1;

    pos = abs(a(1,1));

    % Identificao do elemento piv e sua posio

    for r=1:la

    if abs(a(r,j))>=pos

    pos=abs(a(r,j));% Identificao do piv

    if lembra~=pos

    linhapivo=r; %Linha do piv

    end

    end

    end

    p(1,j)= linhapivo; % Indices das linhas pivotais para cada "j"

    % Obteno de cada linha da Matriz Triangular Superior "U"

    U(j,:)=a(linhapivo,:);

    % Clculo dos fatores multiplicadores m e Obteno da Submatriz "a"

    for k=1:la

    if k~=linhapivo

    m(k,j)=-a(k,j)/pivo;

    a(k,:)= m(k,j).*a(linhapivo,:)+a(k,:);

    end

    end

    % Modificao da ordem de "a"

    aux=a;

    a=zeros(la-1,ca);

    for k=1:la

    if k~=linhapivo

    a(k,:)=aux(k,:);

    end

    end

    end

    % Obteno dos elementos da Matriz Triangular Inferior "L"

    lembra=zeros(ordem);

    for j=1:(ordem(1,1))

    for r=1:(ordem(1,1))

    if r>j

    L(r,j)= -m(p(1,r),j);

    end

    end

    % Obteno da Matriz de Permutaes "P"

    lembra(j,:)= P(p(1,j),:);

    end

    P=lembra;

    PB=P*B;

    % Resoluo do Sistema Triangular Inferior

    y=STinferior(L,PB);

    % Resoluo do Sistema Triangular Superior

    X=STsuperior(U,y);

    % Clculo do Determinante de "A"

    t=0;

    o=p;

    delta=1;

    for n=1:(ordem(1,1))

    [minimo,pos]=min(o(1,n:ordem(1,1)));

    pos=pos+t;

    if o(1,n) > minimo

    lembre = o(1,n);

    o(1,n)=minimo;

    o(1,pos)=lembre;

    t=t+1;

    end

    delta=U(n,n).*delta;

    delta=(-1)^t.*delta;

    end

    end

  • 5

    Para a resoluo dos sistemas triangular inferior e superior foram criadas em

    Matlab as funes mostradas a seguir:

    2 Exerccio: Decomposio Cholesky

    O Mtodo de Decomposio Cholesky uma outra tcnica para a resoluo de

    um sistema linear Ax=b. O mtodo s aplicvel se a matriz A for simtrica (A

    igual a sua transposta) e definida positiva, isto , todos os autovalores da matriz so

    positivos:

    > 0, 0

    Neste mtodo a matriz A decomposta na multiplicao de uma matriz

    triangular inferior L por sua respectiva transposta. Os elementos da matriz L so

    obtidos pela seguintes frmulas:

    Para os elementos da diagonal principal:

    = 2

    1

    =1

    , = 1,2, ,

    Para os elementos abaixo da diagonal principal de L (mesmos elementos

    acima da diagonal principal da transposta):

    =

    1=1

    , = 1,2, , 1 = + 1, + 2, , ,

    function [x] = STinferior(L,c)

    %Essa funo resolve o Sistema Linear Inferior Lx=c, com L e c fornecidas

    %pelo usurio. O Mtodo utilizado o das Substituies Sucessivas

    ordem = size(L);

    n= ordem(1,1);

    x(n)=c(1)./L(1,1);

    for i=2:n

    soma=0;

    for j=1:i-1

    soma=soma+L(i,j).*x(j);

    end

    x(i)=(c(i)-soma)./L(i,i)

    end

    end

    function [x] = STsuperior(U,d)

    %Essa funo resolve o Sistema Linear Superior Ux=d, com U e d fornecidas

    %pelo usurio. O Mtodo utilizado o das Substituies Retroativas

    ordem = size(U);

    n= ordem(1,1);

    x(n)=d(n)./U(n,n);

    for i=n-1:-1:1

    soma=0;

    for j=i+1:n

    soma=soma+U(i,j).*x(j);

    end

    x(i)=(d(i)-soma)./U(i,i)

    end

    end

  • 6

    em que n a ordem da matriz A, aij so seus elementos e lij,elementos da

    matriz L.

    Fazendo = e = , essa tcnica tambm faz o sistema se

    transformar numa resoluo de um sistema triangular inferior, seguida da resoluo de

    um sistema triangular superior. As resoluesso realizadas pelas seguintes equaes:

    =

    1=1

    , = 1,2, ,

    =

    =+1

    , = , 1, ,1

    em que n a ordem da matriz A, lijso elementos da matriz L, bi so

    elementos da matriz B, yi so elementos da matriz y e, finalmente, xi so os

    elementos procurados da matriz x.

    Se em um sistema de equaes algbricas Ax = b , A for matriz no singular,

    pode-se transformar o sistema no sistema equivalente Cx = d, com C = ATA; d = ATb,

    onde AT a transposta de A. Dessa forma, o ltimo sistema sempre poder ser resolvido

    pelo processo de Cholesky (isto , a matriz C satisfaz as condies para a aplicao do

    mtodo). Portanto, implementa-se esse mtodo alternativo para que o Mtodo de

    Cholesky seja aplicvel a uma maior variedade de sistemas lineares.

    A funo de Matlab elaborada para implementao do Mtodo Cholesky para

    sistema linear definido positivo mostrada a seguir:

    function [L,LT,y,X,r] = Cholesky(A,B)

    % Essa funo resolve o sistema AX=B decompondo a matriz "A" na

    % multiplicao das matrizes L e LT.

    % L uma matriz triangular inferior e LT, sua respectiva matriz

    % transposta.

    ordem=size(A); % ordem de A

    nlinhas=ordem(1,1); % nmero de linhas da matriz A

    y=zeros(nlinhas,1);

    X=y;

    % Teste da simetria e definio positiva da matriz A

    if A~= transp(A) C=transp(A)*A; A=C;

    d=transp(A)*B;

    B=d;

    end

    auto=eig(A);

    nauto=size(auto);

    for k=1:nauto(1,1)

    if auto(k,1)

  • 7

    3 Exerccio: Refinamento da soluo de Sistemas Lineares

    A tcnica de Refinamento da soluo de Sistemas Lineares utilizada para

    melhorar a soluo obtida nos Mtodos de Decomposio LU, Cholesky e LDLT. Nessa

    tcnica, utiliza-se um vetor temporrio t, obtido pelo mtodo das substituies

    sucessivas, e x0, calculado pelas substituies retroativas, a soluo encontrada por

    um dos mtodos de decomposio citados.

    Para a decomposio LU, realiza-se a seguinte sequncia numrica:

    0 = = 0 =

    = 0, 1, 2,

    = = =

    xk+1 = xk + ck

    em que k o nmero de iteraes, interrompidas por um critrio de

    parada,+1 a soluo melhorada de x aps o refinamento e ck um vetor de

    correo.

    No caso da decomposio de Cholesky, basta usar em vez de U e P=I

    nas equaes da sequncia acima.

    A funo de Matlab elaborada para implementao do Refinamento de Soluo

    de Sistemas Lineares mostrada a seguir:

    for i=2:nlinhas

    soma=0;

    for j=1:(i-1)

    soma= L(i,j)*y(j,1)+soma;

    end

    y(i,1)=(1/L(i,i))*(B(i,1)-soma);

    end

    % Sistema Triangular Superior LT*X=y

    X(nlinhas,1)=y(nlinhas,1)/L(nlinhas,nlinhas);

    for i=(nlinhas-1):-1:1

    soma=0;

    for j=(i+1):nlinhas

    soma= L(j,i)*X(j,1)+soma;

    end

    X(i,1)=(1/L(i,i))*(y(i,1)-soma);

    % Erro

    r=B-A*X;

    end

  • 8

    Implementa-se tambm uma funo de Matlab elaborada para a implementao

    do Refinamento de Soluo por Cholesky que engloba tambm as matrizes assimtricas:

    function [X,r] = Refin(A, B)

    % Essa funo escolhe entre o mtodo LU e o de Cholesky,

    % o mais apropriado de acordo com o tipo da matriz (simtrica e definida

    % positiva). Em seguida, faz o refinamento da soluo, qualquer um que seja

    % dos doois mtodos utilizados

    % Escolha pelo mtodo LU ou Cholesky

    %Clculos e Valores Iniciais para Refinamento

    auto=eig(A);

    nauto=size(auto);

    % Teste de Simetria e Definio Positiva da Matriz A (Escolha por Choleky):

    if A==transp(A)

    for k=1:nauto(1,1)

    if auto(k,1)>0

    disp('Mtodo Utilizado: Cholesky');

    [L,LT,y,X,r] = Cholesky(A,B);

    c=1;

    C=ones(size(B));

    ordem=(size(C));

    for w=1:20

    while c>=10^(-19)

    r=B-A*X;

    C=(L*LT)\r;

    for n=1:ordem(1,2)

    if c > abs(C(n,1))

    c= abs(C(n,1));

    end

    end

    X=X+C;

    end

    end

    end

    end

    else

    % Escolha por LU

    disp('Mtodo Utilizado: LU')

    [L,U,P,PB,x,delta] = LU(A,B);

    X=x;

    c=1;

    C=ones(size(B));

    ordem=(size(C));

    for w=1:20

    while c>=10^(-19)

    r=B-A*X;

    C=(L*U)\P*r;

    for n=1:ordem(1,2)

    if c > abs(C(n,1))

    c= abs(C(n,1));

    end

    end

    X=X+C;

    end

    end

    end

    end

    function [X,r,k] = RefCholesky(A, B)

    % Essa funo realiza o refinamento do mtodo de Cholesky

    for k=1:nauto(1,1)

    if auto(k,1)>0

    disp('Mtodo Utilizado: Cholesky');

    [L,LT,y,X,r] = Cholesky(A,B);

    c=1;

    C=ones(size(B));

    ordem=(size(C));

    for w=1:50

    if c>=10^(-19)

    r=B-A*X;

    C=(L*LT)\r;

    for n=1:ordem(1,2)

    if c > abs(C(n,1))

    c= abs(C(n,1));

    end

    end

    X=X+C;

    end

    end

    end

    end

    end

  • 9

    4 Exerccio: Clculo da Matriz Inversa

    A matriz inversa A-1 de uma matriz Asatisfaz seguinte propriedade:

    1 = ,

    [

    11 12 121 22 2

    1 2

    ] [

    11 12 121 22 2

    1 2

    ] = [

    1 0 00 1 0 0 0 1

    ]

    onde n a ordem da matriz A, so os elementos da matriz A e , os

    elementos da matriz V=A-1, usado para simplificar a notao. A matriz inversa V ,

    ento, calculada atravs da resoluo dos n sistemas lineares da forma:

    = , = 1,2, ,

    onde e so as -simas colunas das matrizes inversa e identidade,

    respectivamente. Como a matriz dos coeficientes a mesma para os n sistemas,

    realizou-se, nesse trabalho, a decomposio de A por Cholesky no caso em que A

    fosse simtrica definida positiva ou LU se A no fosse simtrica. Em seguida foram

    calculados os n vetores que compem a inversa atravs dos mtodos das substituies

    sucessivas e retroativas.

    A seguir so mostradas as funes de Matlab elaboradas para implementao do

    clculo de matriz inversa pelo Mtodo LU e pelo Mtodo de Cholesky:

    function [V] = InvLU(A)

    % Essa funo calcula a inversa da matriz A, dada pelo usurio,

    % pelo Mtodo LU.

    ordem=size(A);

    n=ordem(1,1);

    V=zeros(ordem);

    I=eye(ordem);

    % Verificao se a Matriz Quadrada

    if ordem(1,1)~=ordem(1,2)

    disp('ERRO: essa matriz no quadrada, portanto a funo no aplicvel')

    else

    for i=1:n

    [L,U,P,PB,X,delta]=decompLU(A,I(:,i));

    V(:,i)=X(:,1);

    end

    end

    end

    function [V] = InvCholesky(A)

    % Essa funo calcula a inversa da matriz A, dada pelo usurio,

    % pelo Mtodo de Cholesky

    ordem=size(A);

    n=ordem(1,1);

    V=zeros(ordem);

    I=eye(ordem);

    % Verificao se a Matriz Quadrada

    if ordem(1,1)~=ordem(1,2)

    disp('ERRO: essa matriz no quadrada, portanto a funo no aplicvel')

    else

    for i=1:n

    [L,LT,y,X,r]= Cholesky(A,I(:,i));

    V(:,i)=X(:,1);

    end

    end

    end

  • 10

    5 Exerccio: Mtodo iterativo de Jacobi

    Ao contrrio dos mtodos diretos, em que as operaes so realizadas apenas

    uma vez, os mtodos iterativos so assim chamados por repetir uma srie de operaes

    vrias vezes.Os mtodos iterativos so mais econmicos que os mtodos diretos por

    utilizarem menos a memria do computador.Alm disso, possuem a vantagem de se

    auto corrigir se um erro cometido. Eles fornecem uma sequncia de aproximantes da

    soluo, cada uma das quais obtidas das anteriores.

    Na resoluo de um sistema linear Ax=b, os mtodos iterativos utilizam uma

    soluo inicial x0, a partir da qual gerada uma sequncia de vetores, obtida por uma

    srie de operaes repetida vrias vezes. As operaes so interrompidas apenas por um

    critrio de parada devidamente estabelecido, seja pelo nmero mximo de iteraes e

    seu custo computacional, seja pelo menor valor de erro aceitvel. A equao utilizada

    para essas operaes mostrada a seguir:

    +1 = + ,

    em que k o nmero de cada iterao do mtodo, M a matriz de iterao e

    c um vetor constante.Quando a matriz M for fixa, ou seja, no sofrer alterao

    durante o processo, o mtodo iterativo chamado estacionrio. Dessa forma, cada

    aproximante obtido do anterior sempre pelo mesmo processo. Nesse exerccio o

    mtodo iterativo estacionrio alvo de estudo o mtodo de Jacobi. O exerccio posterior

    implementa outro desse tipo de mtodo, o de Gauss-Seidel.

    No Mtodo de Jacobi, a matriz A do sistema a ser resolvido (Ax=b) deve ser

    decomposta em trs outras matrizes:

    = + + ,

    onde D uma matriz diagonal e E e F so matrizes com diagonais nulas,

    triangular inferior e superior respectivamente. Portanto, escreve-se o sistema da seguinte

    forma:

    ( + + ) = = ( + ) +

    para o processo iterativo, tm-se portanto:

    +1 = (1( + )) + 1 +1 = + ,

    tal que a matriz = 1( + ) a matriz de iterao do Mtodo de Jacobi,

    que pode ser escrito da seguinte forma matricial:

  • 11

    [ 1

    +1

    2+1

    3+1

    +1

    ]

    =

    [ 0

    1211

    1311

    111

    2122

    0 2322

    222

    3133

    3233

    0 333

    1

    2

    ,1

    0]

    [ 1

    2

    3

    ]

    +

    [ 111222333

    ]

    +1

    Nos mtodos iterativos desse trabalho utilizado 0 = 0 como valor inicial.

    Portanto, tm-se:

    1 = 1 =

    0 =

    A funo de Matlab elaborada para implementao do Mtodo iterativo de

    Jacobi mostrada a seguir:

    function [x,k] = Jacobi(A,B,eps,kmax)

    % Resolve o sistema Ax=B pelo Mtodo de Jacobi, com critrio de parada

    % estabelecido pelo erro ou pelo nmero mximo de iteraes, fornecidos

    % pelo usurio.

    ordem=size(A);

    n=ordem(1,1);

    J=zeros(ordem);

    X=zeros(n,kmax);

    Xk=X;

    c=zeros(n,1);

    for i=1:n

    r=1/A(i,i);

    for j=1:n

    if i~=j

    J(i,j)= -A(i,j)*r;

    end

    end

    c(i,1)= B(i,1)*r;

    X(i,1)= c(i,1);

    end

    for k=1:kmax

    Xk(:,k)=J*X(:,k)+c;

    %Critrio de parada

    difer=Xk(:,k)-X(:,k);

    num=norm(difer,inf);

    den=norm(Xk(:,k),inf);

    cp=num/den;

    X(:,k+1)=Xk(:,k);

    ifcp

  • 12

    6 Exerccio: Mtodo iterativo de Gauss-Seidel

    Como descrito no exerccio anterior, o Mtodo de Gauss-Seidel tambm um

    processo iterativo estacionrio.

    Na resoluo de Ax=b, a decomposio da matrz A na soma de trs matrizes

    idntica ao do Mtodo de Jacobi. Os mtodos se diferem somente na converso do

    sistema em processo iterativo, sendo diferentes as matrizes de iterao e os vetores

    constantes, conforme mostrado a seguir:

    +1 = (( + )1) + ( + )1 +1 = + ,

    tal que a matriz = ( + )1 a matriz de iterao do Gauss-Seidel. Para

    no utilizar a matriz inversa da matriz de iterao, o processo iterativo acima mostrado

    de um modo mais prtico:

    ( + )+1 = + +1 = +1 + ,

    ou na forma matricial:

    +1 =

    [

    0 0 0 021 0 0 0

    1,1 1,2 0 0

    1 2 ,1 0]

    [ 1

    +1

    2+1

    3+1

    +1]

    +1

    [ 0 12 13 10 0 23 2 0 0 0 1,0 0 0 0 ]

    [ 1

    2

    3

    ]

    +

    [ 123

    ]

    Pode-se perceber que, enquanto +1, no Mtodo de Jacobi calculado usando domente valores

    da iterao anterior, no mtodo de Gauss-Seidel, esse vetor obtido

    a partir dos elementos mais recentes, incluindo os prprios +1 e .

    A funo de Matlab elaborada para implementao do Mtodo iterativo de

    Gauss-Seidel mostrada a seguir:

  • 13

    7 Exerccio: Maior e Menor autovalor e nmero de condicionamento de

    uma matriz

    O maior autovalor de uma matriz pode ser obtido pelo Mtodo das Potncias e o

    menor, pelo Mtodo das Potncias Inversas.

    O Mtodo das Potncias determina o autovalor de maior valor absoluto de uma

    matriz A, e seu correspondente autovetor, sem determinar o polinmio caracterstico. O

    mtodo til na prtica desde que se tenha interesse em determinar apenas alguns

    autovalores de mdulo grande, e que estejam bem separados, em mdulo, dos demais.

    Podem surgir complicaes caso a matriz A no possua auto-vetores linearmente

    independentes, pois o mtodo se baseia no seguintes teorema:

    Teorema: Seja A uma matriz real de ordem n e sejam 1, 2,..., seus auto-

    valores e 1,2, ..., seus correspondentes auto-vetores. Supondo-se que os auto-

    vetores so linearmente independentes, e que:

    |1| > |2| . . . ||.

    Seja a sequncia definida por:

    +1 = , = 0, 1, 2,

    function [x,k] = Gausseidel(A,B,eps,kmax)

    % Resolve o sistema Ax=B pelo Mtodo de Gauss-Seidel, com critrio de parada

    % estabelecido pelo erro ou pelo nmero mximo de iteraes, fornecidos

    % pelo usurio.

    ordem=size(A);

    n=ordem(1,1);

    S=zeros(ordem);

    X=zeros(n,kmax);

    Xk=X;

    d=zeros(n,1);

    for i=1:n

    r=1/A(i,i);

    for j=1:n

    if i~=j

    S(i,j)=-A(i,j)*r;

    end

    end

    d(i,1)= B(i,1)*r;

    X(i,1)= d(i,1);

    end

    % Iteraes de Gauss-Seidel

    for k=1:kmax

    Xk(:,k)=X(:,k);

    for i=1:n

    X(i,k)=S(i,:)*X(:,k)+d(i,:);

    end

    %Critrio de parada

    difer=X(:,k)-Xk(:,k);

    num=norm(difer,inf);

    den=norm(Xk(:,k),inf);

    cp=num/den;

    X(:,k+1)=X(:,k);

    ifcp

  • 14

    onde 0 um vetor arbitrrio, que permite a expanso:

    0 = ,

    com escalares quaisquer e 1 0, ento:

    lim

    (+1)()

    = 1

    onde o ndice r indica a r-sima componente. Alm disso, quando ,

    tende ao auto-vetor correspondente a 1.

    No limite, todas as componentes de (+1)

    () tendem a 1. Entretanto, na prtica,

    uma das componentes converge mais rapidamente do que as outras. Assim, quando uma

    das componentes satisfizer a preciso desejada teremos o auto-valor procrado. Alm

    disso, a velocidade de convergncia depende de 2

    1. Portanto, quando maior for |1|,

    quando comparado com |2|, mais rpida ser a convergncia.

    Para obtermos 1 com uma preciso , em cada passo, calcula-se aproximaes

    para 1 usando a frmula anterior. O teste do erro relativo para cada componente de 1,

    isto :

    |1+1 1

    |

    |1+1|

    < ,

    usado como critrio de parada. Quando todas as componentes forem iguais,

    ento o vetor dessa iterao o auto-vetor correspondente ao auto-valor 1. Se

    algum vetor resultar no vetor nulo, o mtodo falha. Tal ancontecimento deve ocorrer se

    as hipteses no foram satisfeitas.

    No teorema enunciado, feita a hiptese de 1 0. Se 1 = 0, ento,

    teoricamente, o vetor converge para 2. Entretanto, na prtica, para matrizes de

    ordem 3, que satisfaam as demais condies do citado teorema, o mtodo

    funciona sempre, pois, mesmo que o vetor 0 no tenha componentes na direo de 1,

    e desde que o mtodo envolve a cada iterao uma diviso, os erros de arredondamento

    da mquina faro com que 1 passe a ter componente nessa direo, aps uma ou duas

    iteraes.

    A desvantagem do mtodo das potncias que ele fornece apenas um auto-valor

    de cada vez. Se todos os auto-valores so procurados, deve-se aplicar outros mtodos

    que so muito mais eficientes.

  • 15

    Enquanto o mtodo das potncias determina o de maior, o Mtodo da Potncia

    Inversa determina o auto-valor de menor valor absoluto e seu correspondente auto-vetor

    de uma matriz A. O mtodo til na prtica, desde que se tenha interesse em determinar

    apenas o auto-valor de menor mdulo e, que este esteja bem separado dos demais.

    Novamente, o mtodo pode no funcionar caso a matriz A no possua auto-vetores

    linearmente independentes. O mtodo da potncia inversa semelhante ao mtodo das

    potmcias, com a diferena que agora assumimos:

    |1| |2| . . . |1| > ||,

    e deseja-se determinar .

    Sabe-se que se auto-valor de A, ento 1 auto-valor de 1. Alm disso,

    se || o menor auto-valor de A, ento |1| o maior auto-valor de 1, pois assim

    se tem o menor auto-valor, em mdulo, de A. Portanto, dado , constri-se dois outros

    vetores +1 e +1 da seguinte forma:

    +1 = 1

    +1 =+1+1

    , +1 = max1

    |(+1)|,

    e portanto:

    1 =

    (+1)()

    Na prtica no necessrio calcular 1, pois de:

    +1 = 1 +1 = ,

    e, ento, resolve-se o ltimo sistema atravs da Decomposio LU. Este mtodo

    particularmente conveniente desde que as matrizes L e U so idependentes de k e,

    portanto, basta obt-las uma nica vez.

    A funo de Matlab elaborada para o clculo do maior e do menor autovalores

    mostrada a seguir:

    function [ lambmax, lambmin ] = maior_menor_autovalor(A)

    % Retorna o maior e o menor autovalor de uma matriz A

    n=length(A);

    y=ones(n,1);

    y2=y;

    lamb=ones(n,1);

    lamb2=lamb;

    e=ones(n,1);

    e2=e;

    [L,U]= LU(A);

    % Mtodos das Potncias

    % e das Potncias Inversas

    for k=1:1000

    lambanterior=lamb;

    lambant2=lamb2;

    o=STinferior(L,y2);

    z2=STsuperior(U,o);

    z=A*y;

    lamb=z./y;

    lamb2=z2./y2; % Obteno da matriz de erros e

    for p=1:n

    e(p,1)=abs(lamb(p,1)-lambanterior(p,1))/abs(lamb(p,1));

    e2(p,1)=abs(lamb2(p,1)-lambant2(p,1))/abs(lamb2(p,1));

    end

  • 16

    A rotina da funo LU utilizada mostrada a seguir:

    j=0;

    j2=0;

    % Obteno do maior erro j da matriz e

    for p=1:n

    if abs(e(p,1))>=abs(j)

    j=e(p,1);

    end

    if abs(e2(p,1))>=abs(j2)

    j2=e2(p,1);

    end

    end

    a=0.01;

    a2=a;

    if j>0.01

    for r=1:n

    if abs(z(r,1))>=abs(a)

    a= z(r,1);

    end

    end

    y=z/a;

    else

    break;

    end

    if j2>0.01

    for r=1:n

    if abs(z2(r,1))>=abs(a2)

    a2= z2(r,1);

    end

    end

    y2=z2/a2;

    else

    break;

    end

    end

    lambmax=0;

    lambmax2=0;

    for r=1:n

    if abs(lamb(r,1))>=lambmax

    lambmax=lamb(r,1);

    end

    if abs(lamb2(r,1))>=lambmax2

    lambmax2=lamb2(r,1);

    end

    end

    lambmin= 1/lambmax2;

    end

    function [L,U,P] = LU(A)

    % Funo para transformar a matriz A em LU, em que L uma matriz

    % triangular superior e U, uma triangular inferior

    ordem = size(A); % Ordem da matriz

    % Inicializao de variveis

    p= zeros(1,ordem(1,2));

    m=zeros(ordem);

    a=A;

    U=zeros(ordem);

    L=eye(ordem);

    P=eye(ordem);

    for j=1:(ordem(1,1))

    % Nova Inicializao

    oa=size(a); %ordem de "a"

    la=oa(1,1); %linhas de "a"

    ca=oa(1,2); %colunas de "a"

    linhapivo=1;

    pos = abs(a(1,1));

    lembrar=pos;

    % Identificao do elemento piv e sua posio

    for r=1:la

    if abs(a(r,j))>=pos

    pos=abs(a(r,j));% Identificao do piv

    pivo=a(r,j); %Elemento piv

    if lembrar~=pos

    linhapivo=r; %Linha do piv

    end

    end end

    p(1,j)= linhapivo; % Indices das linhas pivotais para cada "j"

    % Obteno de cada linha da Matriz Triangular Superior "U"

    U(j,:)=a(linhapivo,:);

    % Clculo dos fatores multiplicadores m e Obteno da Submatriz "a"

    for k=1:la

    if k~=linhapivo

    m(k,j)=-a(k,j)/pivo;

    a(k,:)= m(k,j).*a(linhapivo,:)+a(k,:);

    end

    end

    % Modificao da ordem de "a"

    aux=a;

    a=zeros(la-1,ca);

  • 17

    O nmero de condicionamento obtido a partir da anlise de perturbao. Nessa

    anlise, considera-se, para a condio de um sistema no singular = , uma

    perturbao do vetor da forma + , desde que seja conhecida exatamente. Dessa

    forma, a soluo tambm ser perturbada, isto , tem-se + .

    A questo para se estabelecer a condio como relacionar com . A partir

    de manipulaes algbricas, chega-se a seguinte inequao:

    1

    Assim a perturbao relativa em est relacionada com a perturbao relativa

    em pela constante multiplicativa 1. Portanto, o nmero de condio de

    definido como:

    () = 1,

    e obtem-se:

    ()

    Tem-se que () 1. De fato:

    () = 1 1 = = 1.

    pode ser interpretada como uma medida do erro relativo em . O erro em

    depender do valor do nmero de condio que maior ou igual a 1. Se ()

    grande, ento pequenas perturbaes relativas em produziro grandes perturbaes

    relativas em , e o problema de resolver = mal condicionado. () ser

    considerado grande quando valer 104 ou mais.

    A rotina em Matlab para o clculo do nmero de condicionamento mostrada

    abaixo, seguida da funo para o clculo da Norma 2, utilizada na rotina:

    for k=1:la

    if k~=linhapivo

    a(k,:)=aux(k,:);

    end

    end

    lembra=zeros(ordem);

    end

    % Obteno dos elementos da Matriz Triangular Inferior "L"

    for j=1:(ordem(1,1))

    for r=1:(ordem(1,1))

    if r>j

    L(r,j)= -m(p(1,r),j);

    end

    end

    % Obteno da Matriz de Permutaes "P"

    lembra(j,:)= P(p(1,j),:);

    end

    P=lembra;

    end

  • 18

    8 Exerccio: Clculo de autovalores e autovetores

    Em seu significado matemtico, os autovetores so vetores que, sob a ao de

    um operador linear, resultam num vetor de mesma direo. Eles esto sempre

    relacionados com o operador linear, ou seja, cada operador linear admite um conjunto

    especfico de autovetores.

    Para cada autovalor , podem existir vrios autovetores v, tais que () = .

    Esses so autovetores associados ao autovalor . Haver infinitos autovetores

    associados a cada autovalor, exceto no caso de um espao vetorial finito.

    Nesse trabalho, utiliza-se o Mtodo de Leverrier-Faddeev para o clculo dos

    autovalores e autovetores de uma matriz A, qualquer que seja a sua ordem n. Esse

    mtodo nada mais que uma modificao do Mtodo de Leverrier, que determina os

    coeficientes do polinmio caracterstico a partir dos traos das potncias da matriz A.

    Como equao generalizada de um polinmio caracterstico da matriz A de ordem

    n, tem-se: () = 0 + 1

    1 + + 1 + , em que so os coeficientes

    do polinmio.

    Tem-se tambm os traos das potncias de A, como a seguir:

    =

    n

    i=1

    1 <

    E os coeficientes de P(x) so dados por:

    1 = 1

    =

    k1

    i=1

    1 <

    function [condnumero] = condnumero(A )

    % Calcula o nmero de condicionamento de uma dada matriz A

    a= norma2(A);

    Ainv=Inversa(A);

    ainv=norma2(Ainv);

    condnumero=a*ainv;

    end

    function [norma2] = norma2(A)

    % Calcula a norma 2 de uma dada matriz A

    n=size(A);

    soma = 0;

    Matriz=zeros(n);

    for k=1:n(1,1)

    for j=(1:n(1,2)

    soma=soma+ (Matriz(k,j))^2;

    end

    end

    norma2=sqrt(soma);

    end

  • 19

    O Mtodo de Leverrier-Faddeev tambm obtm os coeficientes de P(x) com a

    frmula acima. A diferena para o Mtodo de Leverrier que, ao invs de utilizar o

    clculo dos traos das potncias da matriz A, os clculos so simplificados atravs da

    seguinte sequncia de operaes:

    1 = ,1 = (1),1 = 1 1

    2 = 1,2 =(1)

    2,2 = 2 2

    = 1, =()

    , = ,

    onde so os coeficientes do polinmio caracterstico P(x). Para obteno

    dos autovetores relacionados a cada autovalor, determina-se cada coluna k da matriz

    , cuja frmula mostrada a seguir:

    = 1 +

    21 + + 2 + 1

    Cada coluna de pode ser calculada da seguinte maneira:

    0 =

    = 1 + , = 1,2, , 1

    onde e uma coluna adotada da matriz identidade, a sua correspondente

    coluna da matriz , = 1 o autovetor correspondente ao autovalor e o ndice

    varia de 1 at n-1, pois = 0.

    Neste trabalho, calcula-se a matriz atravs do clculo de suas colunas (acima

    mostrado). As colunas que resultem no vetor nulo devem ser ignoradas, pois por

    definio o autovetor um vetor no nulo.

    A funo de Matlab elaborada para implementao do clculo de autovalores e

    autovetores mostrada a seguir:

    function [norma2] = norma2(A)

    % Calcula a norma 2 de uma dada matriz A

    n=size(A);

    soma = 0;

    Matriz=zeros(n);

    for k=1:n(1,1)

    for j=(1:n(1,2)

    soma=soma+ (Matriz(k,j))^2;

    end

    end

    norma2=sqrt(soma);

    end

    %Clculo de qi, Bi e Ai

    q=traco/i;

    b=AB-q*eye(n);

    h=i-1;

    for g=(h*n+1):(i*n)

    j=g-h*n;

    B(g,:)=b(j,:);

    end

    AB=A*b;

  • 20

    9 Exerccio:Sistemas Tridiagonais

    Na soluo numrica de equaes diferenciais, assim como em outras

    aplicaes, a matriz associada discretizao esparsa, isto , a quantidade de

    elementos no-nulos pequena, quando comparada com o nmero total de elementos da

    matriz. Se, alm de esparsa, a matriz tem os elementos no-nulos concentrados em torno

    da diagonal, ela chamada matriz de banda.

    Pode-se formalizar a definio ao considerar que = [] uma matriz de

    banda p+q+1, se = 0 se > + ou < .

    A estrutura de banda oferece vantagens na triangularizao, pois em cada coluna

    necessrio eliminar no mximo elementos. Se isto for incorporado ao algoritmo,

    haver uma substancial reduo no esforo computacional.

    No caso particular dos sistemas tridiagonais ( = = 1), os elementos no-

    nulos est nas trs diagonais centrais. Neste caso, a eliminao em cada coluna ser de

    um elemento. Alm disso, o sistema tridiagonal pode ser armazenado usando quatro

    vetores, um para a diagonal principal, dois para as diagonais secundrias (super-

    diagonal e sub-diagonal) e um para o termo independente, como mostrado a seguir:

    % Coeficientes do Polinmio Caracterstico

    P(1,1)=(-1)^n;

    k=i+1;

    P(1,k)=q;

    end

    % Autovalores

    lambda= roots(P);

    % Autovetores

    e=eye(n);

    for v=1:n

    for i=1:(n-1)

    w=i-1;

    for g=(w*n+1):(i*n)

    j=g-w*n;

    bi(j,i)= B(g,v);

    end

    end

    for k=1:n

    for i=1:(n-1)

    u(:,i)=e(:,v);

    end

    for i=1:(n-1)

    if i>1

    u(:,i)=lambda(k,1)*u(:,i-1)+bi(:,i);

    else

    u(:,i)=lambda(k,1)*u(:,i)+bi(:,i);

    end

    end

    h=k-1;

    y=v-1;

    for g=(h*n+1):(k*n)

    j=g-h*n;

    for w=(y*(n-1)+1):(v*(n-1))

    i=w-y*(n-1);

    Q(g,w)=u(j,i);

    end

    end

    end

    end

    end

  • 21

    [ 1 1 0 0 02 2 2 0 00 00 0 1 1 10 0 0 ]

    [

    12

    1 ]

    Uma importante aplicao de sistemas tridiagonais so aqueles resultantes da

    discretizao de equaes diferenciais, unidimensionais na varivel espacial. Esses

    sistemas, alm de tridiagonais, so diagonalmente dominantes.

    A funo de Matlab elaborada para implementao da soluo de sistemas

    tridiagonais mostrada a seguir:

    10 Exerccio: Pesquisa sobre a tcnica de soluo de SL chamada GMRES

    GMRES (Mtodo do Resduo Mnimo Generalizado)

    O GMRES, sigla em ingls para Mtodo do Resduo Mnimo Generalizado,

    um mtodo iterativo muito utilizado para a resoluo de sistemas lineares de grande

    porte. Criado em 1986, por Saad e Schultz, trata-se de um Mtodo de Projeo em

    Subespaos de Krylov.

    Para a soluo de Ax=b, parte-se de um valor inicial x0 e calcula-se o

    resduo inicial 0 = 0. o subespao de Krylov (, 0), ou seja:

    ( 0) (, 0)

    e o espao de restries = (, 0),e, assim o resduo ortogonal a (, 0).

    (, 0)

    function [X] = tridiagonal(A,B)

    % Resolve o Sistema AX=B, para uma dada matriz tridiagonal A

    ordem=size(A);

    n=ordem(1,1);

    a=zeros(n,1);% Elementos da diagonal inferior

    d=zeros(n,1); % Elementos da diagonal principal

    c=zeros(n,1); % Elementos da diagonal superior

    X=zeros(n,1);

    for k=1:n-1

    a(k+1,1)=A(k+1,k);

    c(k,1)=A(k,k+1);

    end

    for k=1:ordem

    d(k,1)=A(k,k);

    end

    % Resoluo do Sistema

    for k=1:(n-1)

    d(k+1,1)=d(k+1,1)-(a(k+1,1)/d(k,1))*c(k,1);

    B(k+1,1)=B(k+1,1)-(a(k+1,1)/d(k,1))*B(k,1);

    end

    X(n,1)=B(n,1)/d(n,1);

    for k=(n-1):-1:1

    X(k,1)=(B(k,1)-c(k,1)*X(k+1))/d(k,1);

    end

    end

  • 22

    Com isso, o GMRES assegura que o resduo, a cada iterao, no aumentar, no

    pior caso o resduo das novas iteraes ser igual ao(s) da(s) anteriore(s). Como a cada

    passo o espao de busca est aumentando em algum, mesmo depois de alguma

    estagnao, o mtodo deve encontrar um ponto melhor.

    O clculo da soluo feito em k iteraes tais que = 1 + , onde = um vetor escolido no subespao de Krylov, tal que = 0 e = 0 + , e o sistema especificado por norma Euclidiana na seguinte condio:

    2 = min

    0 2

    A base ortonormal do subespao Krylov () construda usando-se o processo de Arnaldi, resultando numa matriz de dimenso n x L e uma matriz (superior) de Hessenberg () de dimenso L x L, tal que:

    =

    =

    IL uma matriz identidade L x L. Se os vetores que compem o subespao Krylov forem linearmente independentes, a dimenso de +1 L+1, ento a matriz

    dada por:

    = [

    ] , = (0, , 0, +1,) ,

    e juntamente com a matriz+1 satisfazem a:

    = +1

    Portanto, qualquer vetor 0 + pode ser escrito como:

    = 0,

    onde um vetor m-dimensional. Definindo:

    () = 2 = (0 + )2

    Resultando em:

    = (0 + )

    Como o lado esquerdo da equao acima corresponde ao resduo da soluo

    iterativa e uma vez que os vetores coluna de +1 so ortonomais, ento:

    () = (0 + )2 =1 2,

    = 02

    onde 1 vetor unitrio em +1. A aproximao do GMRES feita atravs de

    um vetor nico 0 + , que minimiza a equao acima. Com as equaes acima, obtm-se essa aproximao simplesmente como = 0 + , onde o vetor minimiza a funo () = 1 2; isto :

    = 0 +

  • 23

    = arg_min

    1 2

    O GMRES no precisa computar e armazenar a matriz de iterao de forma

    explcita, uma vez que o processo envolve apenas sua multiplicao pelo vetor . Por outro lado, este mtodo se torna ineficiente quando L for grande, pois o espao de memria e o custo computacional so diretamente proporcionais a sua dimenso. Para

    superar esse problema, deve-se reiniciar o processo iterativo aps um nmero k pr-especificado de iteraes.

    As informaes acumuladas so eliminadas e os resultados mais recentes so

    usados como valores iniciais para as prximas k iteraes. No existem regras para se estabelecer um valor timo de iteraes e se esse for muito pequeno, o processo de

    convergncia pode ser lento, ou at mesmo falhar. Por outro lado, se excessivo, um

    considervel espao de memria ser utilizado.

    11 Exerccio: Resposta dinmica de um sistema real

    Modelo de um grupo motor-gerador

    A figura abaixo mostra o circuito equivalente de um grupo motor gerador:

    A modelagem do grupo motor-gerador realizada pela modelagem de um motor

    CC controlado pela armadura. A influncia do gerador CC no modelo do motor ser

    levada em conta pelos seguintes fatores:

    (i) Aumento do momento de inrcia da carga mecnica

    (ii) Aparecimento de um torque de perturbao, resultado da introduo de

    cargas de natureza eltrica nos terminais do gerador. Isto mostra que o

    fato de termos um gerador CC no lugar de um CA, como seria o caso de

    um sistema real, no traz qualquer alterao no que se refere

    modelagem do sistema.

    O circuito equivalente de um motor-CC controlado pela armadura mostrado a

    seguir:

  • 24

    onde () e () denotam, respectivamente, a corrente e a tenso de armadura,

    e representam, respectivamente, a tenso e a corrente de campo (constantes, por

    hiptese), () a velocidade angular do motor e e so o momento de inrcia da

    carga e o coeficiente de atrito nos mancais, respectivamente.

    Sabe-se que o torque produzido pelo motor () proporcional ao fluxo

    magntico no entreferro (()) e corrente de armadura (()), isto ,

    () = ()() = ()

    onde = = , com, e constantes. Aplicando-se a lei

    das tenses de Kirchhoff ao circuito da armadura, obtm-se:

    () = () + ()

    + (),

    onde () representa a fora contra-eletromotriz, que proporcional

    velocidade angular do motor, sendo dada por:

    () = ()

    Finalmente, usando-se a lei de Newton para o movimento rotacional, pode-se

    escrever:

    () () () = ()

    onde () representa um torque externo (perturbao). As equaes anteriores

    nos permitem obter a funo de transferncia que relaciona as transformadas de Laplace

    da entrada (() da sada (()). Para tanto, aplicando-se a transformada de Laplace a

    ambos os membros das equaes, resulta:

    () = ()

    () = () + () + ()

    () = ()

    () () () = ()

    e aps alguma manipulao algbrica, obtm-se:

    () =

    ( + 1)( + 1) + ()

    ( + 1)/

    ( + 1)( + 1) + ()

  • 25

    onde = / e = /. Nota-se que a funo de transferncia da ltima

    equao modela o motor CC como um sistema de 2 ordem. Porm, este sistema pode

    ser bem aproximado por um modelo de 1 ordem, se levarmos em conta que /

    1 e portanto, + 1 1 para as frequncias de interesse. Desta forma, o modelo

    matemtico do grupo motor-gerador que geralmente se adota o seguinte:

    () =

    + 1()

    + 1

    ()

    onde = /( ) e = /( ) e

    = /( ). Nota-se ainda que, como () = (), a equao acima

    pode ser escrita como:

    () =

    + 1()

    + 1()

    onde = . importante ressaltar que a medio da velocidade angular

    feita por meio de tacmetros. Um tacmetro nada mais do que um gerador CC de

    pequena potncia, cuja tenso gerada constante e proporcional velocidade do eixo ao

    qual ele est acoplado. Desta forma, a tenso nos terminais do tacmetro, (t), ser:

    (t) = K(),

    onde K uma constante. Portanto, a relao entre (), () e () pode ser

    expressa pela seguinte equao:

    () =K

    + 1()

    K + 1

    (),

    cujo diagrama de blocos est representado na figura a seguir:

    Uma vez que se dispe de um modelo matemtico da planta, o prximo passo

    a identificao dos ganhos K , e e da constante de tempo . Os ganhos so

    identificados a partir da resposta em estado permanente a uma entrada igual ao degrau.

    A identificao de feita utilizando-se mtodos de resposta em frequncia, em

    particular o diagrama de mdulo de Bode e o diagrama polar. Supondose que um

    degrau de tenso de amplitude seja aplicado aos terminais do motor, isto :

    () = {0, < 0, 0

  • 26

    Assume-se, inicialmente, que no h cargas conectadas nos terminais do

    gerador. Neste caso () = / e () = 0, e portanto a relao entre (), ()

    e () pode ser reescrita da seguinte forma:

    () = K

    + 1()

    A resposta do sistema entrada em degrau pode ser obtida calculando-se a

    transformada inversa de Laplace da equao anterior. Procedendo-se dessa forma,

    obtm-se:

    () = KK (1

    1

    ) , 0

    Quando t , a equao acima se reduz a

    () = = K,

    o que mostra que quando uma tenso de valor constante aplicada a um motor

    CC, a tenso em regime permanente nos terminais do tacmetro acoplado ao eixo deste

    motor tambm ser constante e proporcional ao valor da tenso aplicada. Definindo-se

    K = K

    pode-se escrever:

    = K

    onde K ajustado pelo mtodo dos mnimos quadrados.

    Fazendo-se () = 0, na relao entre (), () e (), obtm-se:

    () =()

    ()=

    K + 1

    que representa a funo de transferncia de um sistema de 1 ordem com plo

    em 1 . Sendo uma constante de tempo, no pode assumir valores negativos.

    Portanto, esse sistema s pode ser assitoticamente estvel, qualquer que seja o valor de

    .

    Uma maneira imediata de se obter a partir do traado das assntotas da curva

    de mdulo dos diagramas de Bode determinando-se, portanto, a frequncia de canto

    = 1 . Deve ser ressaltado ainda que a assntota de baixa frequncia (20 log(K))

    deve ser traada utilizando-se os valores de K, obtidos pelo mtodo dos mnimos

    quadrados.

  • 27

    4. Resultados

    1 Exerccio: Decomposio LU com pivotao parcial

    Respostas obtidas com o Matlab:

    O resultado do algoritmo

    composto pelas matrizes obtidas na

    resoluo do sistema linear, o valor

    de x, principal resultado da

    decomposio LU e o valor do

    determinante da matriz. Como pode

    se perceber, o resultado desse ltimo

    valor foi identico ao encontrado pela

    funo para clculo do determinante

    no Matlab. Todos os resultados

    atingiram os valores esperados para

    a resoluo desse exemplo de

    sistema linear.

    >> A=[9 6 -3 3; 6 20 2 22; -3 2 6 2;3 22 2 28]

    A =

    9 6 -3 3

    6 20 2 22

    -3 2 6 2

    3 22 2 28

    >> B=[12;64;4;82]

    B =

    12

    64

    4

    82

    >> [L,U,P,PB,X,delta] = decompLU(A,B)

    L =

    1.0000 0 0 0

    0.3333 1.0000 0 0

    -0.3333 0.2000 1.0000 0

    0.6667 0.8000 0.3636 1.0000

    U =

    9.0000 6.0000 -3.0000 3.0000

    0 20.0000 3.0000 27.0000

    0 0 4.4000 -2.4000

    0 0 0 -0.7273

    P =

    1 0 0 0

    0 0 0 1

    0 0 1 0

    0 1 0 0

    PB =

    12

    82

    4

    64

    X =

    2.0000

    -3.0000

    1.0000

    5.0000

    delta =

    576.0000

    >> X=inv(A)*B

    X =

    2.0000

    -3.0000

    1.0000

    5.0000

    >> det(A)

    ans =

    576.0000

  • 28

    2 Exerccio: Decomposio Cholesky

    Respostas obtidas no Matlab:

    O resultado do algoritmo

    mostra as matrizes L e sua

    transposta, obtidas na resoluo do

    sistema linear. Aps a resoluo

    pelos mtodos das substituies

    sucessivas e retroativas, obteve-se as

    matrizes y e x respectivamente,

    bem como a matriz que representa o

    erro encontrado na resposta. Dos

    resultados obtidos, comprova-se a

    aplicabilidade do mtodo e espera-se

    melhor-lo no prximo exerccio,

    atravs do refinamento da soluo.

    >> A=[9 6 -3 3; 6 20 2 22; -3 2 6 2;3 22 2 28]

    A =

    9 6 -3 3

    6 20 2 22

    -3 2 6 2

    3 22 2 28

    >> B=[12;64;4;82]

    B =

    12

    64

    4

    82

    >> [L,LT,y,X,r] = Cholesky(A,B)

    L =

    3 0 0 0

    2 4 0 0

    -1 1 2 0

    1 5 -1 1

    LT =

    3 2 -1 1

    0 4 1 5

    0 0 2 -1

    0 0 0 1

    y =

    4

    14

    -3

    5

    X =

    2

    -3

    1

    5

    r =

    0

    0

    0

    0

    >> X=inv(A)*B

    X =

    2.0000

    -3.0000

    1.0000

    5.0000

  • 29

    3 Exerccio: Refinamento da soluo de Sistemas Lineares

    Para um sistema a ser resolvido

    pelo Mtodo LU:

    Para o mesmo sistema a ser

    resolvido pelo Mtodo Cholesky:

    Observa-se que para uma matriz definida positiva assimtrica o refinamento do

    Mtodo LU converge mais rpido do que o do Mtodo de Cholesky. Mesmo depois do

    refinamento, ainda houve um erro desprezvel no Mtodo de Cholesky, menor que o

    solicitado pelo algoritmo. No Mtodo LU, o refinamento foi totalmente eficiente, pois

    foram obtidos resduos de erro exatamente iguais a zero.

    >> A=[2 1 0; 2 5 3; 0 1 6]

    A =

    2 1 0

    2 5 3

    0 1 6

    >> B=[4;2;3]

    B =

    4

    2

    3

    >> [X,r,k] = RefinLU( A,B )

    Mtodo Utilizado: LU

    todo Utilizado: LU

    X =

    2.5000

    -1.0000

    0.6667

    r =

    0

    0

    0

    k =

    1

    >> A=[2 1 0; 2 5 3; 0 1 6]

    A =

    2 1 0

    2 5 3

    0 1 6

    >> B=[4;2;3]

    B =

    4

    2

    3

    [X,r,k] = RefCholesky(A, B)

    Mtodo Utilizado: Cholesky

    X =

    2.5000

    -1.0000

    0.6667

    r =

    1.0e-015 *

    0.8882

    0

    0

    k =

    3

  • 30

    Para um sistema a ser resolvido

    pelo Mtodo LU:

    Para o mesmo sistema a ser

    resolvido pelo Mtodo Cholesky:

    J para uma matriz definida positiva simtrica o refinamento do Mtodo de

    Cholesky converge mais rpido do que o do Mtodo LU. Mesmo depois do

    refinamento, ainda houve um erro desprezvel em ambos mtodos, menor que o

    solicitado pelo algoritmo.

    4 Exerccio: Clculo da Matriz Inversa

    Para uma matriz a ser calculada pelo Mtodo LU:

    >> A=[1 2 3 4 5 6; 2 7 8 9 10 11; 3 8 12 13 14 15; 4 9 13 16 17 18; 5 10 14 17 19 20; 6 11 15 18 20 21]

    A =

    1 2 3 4 5 6

    2 7 8 9 10 11

    3 8 12 13 14 15

    4 9 13 16 17 18

    5 10 14 17 19 20

    6 11 15 18 20 21

    >> [V] = InvLU(A)

    >> A=[4 -6 2; -6 10 -5; 2 -5 30]

    A =

    4 -6 2

    -6 10 -5

    2 -5 30

    >> B= [2; 3; 6]

    B =

    2

    3

    6

    >> [X,r,k] = RefCholesky(A, B)

    Mtodo Utilizado: Cholesky

    X =

    11.2000

    7.3600

    0.6800

    r =

    1.0e-014 *

    -0.1332

    -0.3553

    0

    k =

    3

    >> A=[4 -6 2; -6 10 -5; 2 -5 30]

    A =

    4 -6 2

    -6 10 -5

    2 -5 30

    >> B= [2; 3; 6]

    B =

    2

    3

    6

    >> [X,r,k] = RefinLU(A, B)

    Mtodo Utilizado: LU

    X =

    11.2000

    7.3600

    0.6800

    r =

    1.0e-014 *

    0

    0.7550

    0

    k =

    500

  • 31

    Para uma matriz a ser calculada pelo Mtodo Cholesky:

    O resultado da matriz inversa obtido na funo inv() do Matlab.

    Tanto o resultado da matriz inversa, obtida pelo Mtodo Cholesky, quanto obtida pelo

    Mtodo LU foi idntico ao resultado obtido na funo inv() do Matlab. Conclui-se

    que o algoritmo desenvolvido eficiente para o clculo da inversa de matrizes

    simtricas.

    >> inv(A)

    ans =

    0.2500 -0.2500 -0.0000 0 -1.2500 1.2500

    -0.2500 0.5833 -0.3333 0.0000 -0.0833 0.0833

    -0.0000 -0.3333 0.8333 -0.5000 -0.1667 0.1667

    0 0.0000 -0.5000 1.5000 -1.5000 0.5000

    -1.2500 -0.0833 -0.1667 -1.5000 4.0833 -2.0833

    1.2500 0.0833 0.1667 0.5000 -2.0833 1.0833

    V =

    0.2500 -0.2500 0.0000 0.0000 -1.2500 1.2500

    -0.2500 0.5833 -0.3333 0.0000 -0.0833 0.0833

    -0.0000 -0.3333 0.8333 -0.5000 -0.1667 0.1667

    0.0000 -0.0000 -0.5000 1.5000 -1.5000 0.5000

    -1.2500 -0.0833 -0.1667 -1.5000 4.0833 -2.0833

    1.2500 0.0833 0.1667 0.5000 -2.0833 1.0833

    >> A=[1 2 3 4 5 6; 2 7 8 9 10 11; 3 8 12 13 14 15; 4 9 13 16 17 18; 5 10 14 17 19 20; 6 11 15 18 20 21]

    A =

    1 2 3 4 5 6

    2 7 8 9 10 11

    3 8 12 13 14 15

    4 9 13 16 17 18

    5 10 14 17 19 20

    6 11 15 18 20 21

    >> [V] = InvCholesky(A)

    V =

    0.2500 -0.2500 -0.0000 -0.0000 -1.2500 1.2500

    -0.2500 0.5833 -0.3333 0.0000 -0.0833 0.0833

    -0.0000 -0.3333 0.8333 -0.5000 -0.1667 0.1667

    -0.0000 -0.0000 -0.5000 1.5000 -1.5000 0.5000

    -1.2500 -0.0833 -0.1667 -1.5000 4.0833 -2.0833

    1.2500 0.0833 0.1667 0.5000 -2.0833 1.0833

  • 5 Exerccio: Mtodo iterativo

    de Jacobi

    6 Exerccio: Mtodo iterativo

    de Gauss-Seidel

    Tanto no algoritmo que implementa o mtodo de Jacobi, quanto no do mtodo

    de Gauss-Seidel, o usurio informa as matrizes A e B do sistema a ser resolvido e

    tambm o erro tolerado e o nmero mximo de iteraes desejadas.

    Em ambos algoritmos foram utilizados para teste sistemas lineares apresentados

    em sala de aula, obtendo-se os resultados conforme os esperados.

    >> A=[10 3 -2; 2 8 -1; 1 1 5]

    A =

    10 3 -2

    2 8 -1

    1 1 5

    >> B=[57; 20; -4]

    B =

    57

    20

    -4

    >> [x,k] = Jacobi(A,B,10^-5,50)

    x =

    5.0000

    1.0000

    -2.0000

    k =

    9

    >> A=[5 2 0 -1; 1 8 -3 2; 0 1 6 1; 1 -1 2 9]

    A =

    5 2 0 -1

    1 8 -3 2

    0 1 6 1

    1 -1 2 9

    >> B=[6; 10; -5; 0]

    B =

    6

    10

    -5

    0

    >> [x,k] = Gausseidel(A,B,10^-3,50)

    x =

    0.9529

    0.7137

    -0.9843

    0.1922

    k =

    6

  • 33

    7 Exerccio: Clculo do maior e menor autovalor e do nmero de

    condicionamento.

    O resultado dos autovalores da matriz A obtido na funo eig() do Matlab.

    Observa-se que os algoritmos implementados, tanto pelo Mtodo LU, quanto

    teve resultados bem prximos ao maior e menor autovalores obtidos na funo eig()

    do Matlab.

    Resultado do algoritmo que calcula o nmero de condicionamento:

    >> A=[2 1 0; 2 5 3; 0 1 6]

    A =

    2 1 0

    2 5 3

    0 1 6

    >> [ lambmax, lambmin ] = maior_menor_autovalor(A)

    lambmax =

    7.4546

    lambmin =

    1.3363

    >> eig(A)

    ans =

    1.3375

    4.2181

    7.4444

    >> A = [2 1 0; 2 5 3; 0 1 6]

    A =

    2 1 0

    2 5 3

    0 1 6

    >> [condnumero] = condnumero(A)

    condnumero =

    7.2843

  • 34

    Resultado do nmero de condicionamento pela funo cond()do Matlab:

    Observa-se que o algoritmo implementado para o clculo do nmero de

    condicionamento obteve resultado idntico ao da funo do Matlab

    8 Exerccio: Clculo de autovalores e autovetores

    >> A=[1 1 -1; 0 0 1; -1 1 0]

    A =

    1 1 -1

    0 0 1

    -1 1 0

    >> [P,lambda,Q] = auto(A)

    P =

    -1 1 2 -2

    lambda =

    -1.4142

    1.4142

    1.0000

    Q =

    -1.4142 1.0000 1.0000 -2.4142 -1.0000 2.4142

    0 -1.0000 -2.4142 2.4142 1.0000 -2.4142

    -1.0000 1.4142 1.0000 -3.4142 -2.4142 3.4142

    1.4142 1.0000 1.0000 0.4142 -1.0000 -0.4142

    0 -1.0000 0.4142 -0.4142 1.0000 0.4142

    -1.0000 -1.4142 1.0000 -0.5858 0.4142 0.5858

    1.0000 0.0000 1.0000 0.0000 -1.0000 -0.0000

    0 -1.0000 0.0000 -1.0000 1.0000 0.0000

    -1.0000 -1.0000 1.0000 -1.0000 0.0000 0.0000

    >> A = [2 1 0; 2 5 3; 0 1 6]

    A =

    2 1 0

    2 5 3

    0 1 6

    >> cond (A,'fro')

    ans =

    7.2843

  • 35

    Nesse algoritmo, o usurio fornece a matriz cujos autovalores e autovetores so

    procurados. Como resposta, tm-se, portanto, o polinmio caracterstico associado a

    essa matriz, um vetor que contm os autovalores e a matriz Q, composta do autovetores.

    Embora a matriz Q possa conter vetores nulos, sabe-se que esses no podem ser

    autovetores por definio. Basta, portanto, ignor-los e considerar os outros vetores,

    associados em colunas com o mesmo nmero de linhas da matriz original, sendo cada

    linha de vetores correspondente ao autovalor correspondente no vetor de autovalores.

    As diferentes colunas esto relacionadas com as diferentes colunas consideradas da

    matriz identidade.

    9 Exerccio: Sistemas Tridiagonais

    >> A=[0.624 0.255 0 0 0 0; -0.234 0.432 0.882 0 0 0; 0 0.312 -0.724 0.637 0 0; 0 0 0.224 0.512 -0.853 0; 0 0 0

    0.737 -0.492 -0.333; 0 0 0 0 0.386 -0.554]

    A =

    0.6240 0.2550 0 0 0 0

    -0.2340 0.4320 0.8820 0 0 0

    0 0.3120 -0.7240 0.6370 0 0

    0 0 0.2240 0.5120 -0.8530 0

    0 0 0 0.7370 -0.4920 -0.3330

    0 0 0 0 0.3860 -0.5540

    >> B=[2; 3; 4; 5; 6; 1];

    >> [X] = tridiagonal(A,B)

    X =

    0.8263

    5.8211

    0.7694

    4.3028

    -3.0769

    -3.9489

  • 36

    Resultado em Matlab:

    A soluo obtida para a implementao da soluo de sistemas tridiagonais foi a

    mesma que a soluo simples, realizada pelo Matlab. Confirma-se, dessa forma, a

    aplicabilidade e confiabilidade do algoritmo apresentado na resoluo de sistemas

    tridiagonais.

    5. Concluses

    As implementaes realizadas ao longo desse relatrio permitiram a identificao

    detalhada dos mtodos de sistemas lineares diretos e iterativos. Verificou-se no apenas

    a sua aplicabilidade, mas cada detalhe do funcionamento. O trabalho tambm

    possibilitou o bom discernimento entre os mtodos existentes tanto na sua utilizao,

    quanto na sua implementao. Houve bastante ateno tambm na busca pela preciso e

    pela reduo do custo computacional.

    Aliado ao conhecimento de mtodos numricos, houve um bom aprimoramento das

    habilidades de programao. Os exerccios atingiram o objetivos de familiarizao e

    implementao das tcnicas numricas. Eles podem servir de auxlio em pesquisas que

    necessitem dessas ferramentas.

    6. Referncias Bibliogrficas

    CAMPOS, Frederico Ferreira. Algoritmos Numricos. 2 edio. Belo Horizonte, MG: LTC Editora, 2007.

    CUNHA, Maria Cristina C. Mtodos Numricos. 2 edio. Campinas, SP: Ed. Unicamp, 2000.

    FRANCO, Neide Maria Bertoldi. Clculo Numrico. Prentice Hall, 2006

    CARVALHO, Luiz M. Avanos em Mtodos de Krylov para Soluo de Sistemas Lineares de Grande Porte. So Carlos, SP: Ed CIENCIA MODERNA, 2009.

    >> x=A\B

    x =

    0.8263

    5.8211

    0.7694

    4.3028

    -3.0769

    -3.9489

  • 37

    PESSANHA, Jos E. O.; PAZ, Alex A.; PRADA, Ricardo. Aplicao do mtodo GMRES em estudos de estabilidade de sistemas de energia eltrica.

    Rio de Janeiro, Maio e Junho de 2012. Revista Controle & Automao/Vol.23.

    FELCIO, Luiz C. Modelagem da dinmca de sistemas e estudo da resposta. 2 edio. So Carlos, SP: RiMa, 2010.

    RESENDE, Profa. rsula do Carmo. Sistemas de Equaes Lineares (continuao) MN_SL2, SL3 e SL4, Notas de aula de Mtodos Numricos, Programa de Ps

    Graduao em Engenharia Eltrica, CEFET-MG 2015.

    BASLIO, Joo Carlos. Laboratrio de Sistemas de Controle I, Apostila de, UFRJ, Escola de Engenharia, Departamento de Eletrotcnica. 3 Edio, Rio de Janeiro, RJ,

    2014.