• Nenhum resultado encontrado

Universidade Federal de São João Del Rei - UFSJ

N/A
N/A
Protected

Academic year: 2021

Share "Universidade Federal de São João Del Rei - UFSJ"

Copied!
14
0
0

Texto

(1)

Universidade Federal de S˜

ao Jo˜

ao Del Rei - UFSJ

Institu´ıda pela Lei 10.425, de 19/04/2002 - D.O.U. de 22/04/2002 Pr´o-Reitoria de Ensino de Gradua¸c˜ao - PROEN

Disciplina: C´alculo Num´erico Ano: 2012 Prof: Nat˜a Goulart da Silva Vers˜ao Documento 0.9

Resolu¸c˜ao de Sistemas Lineares

Sum´

ario

1 Introdu¸c˜ao 2

1.1 M´etodo de Elimina¸c˜ao de Gauss . . . 2

1.2 Pivoteamento na Elimia¸c˜ao de Gauss . . . 3

1.3 Algoritmo de substitui¸c˜ao retroativas . . . 4

1.4 Verifica convergˆencia pelo Teorema do Raio Espectral . . . 5

1.5 M´etodo de Decomposi¸c˜ao LU com pivota¸c˜ao . . . 6

1.6 Algoritmo de substitui¸c˜ao sucessivas para LU . . . 7

1.7 Algoritmo de pivota¸c˜ao para o m´etodo LU . . . 7

1.8 M´etodo Iterativo de Jacobi . . . 9

1.9 M´etodo Iterativo de Gauss Seidel . . . 11

1.10 Verifica¸c˜ao de convergˆencia m´etodos iterativos . . . 12

(2)

1

Introdu¸

ao

Algoritmos retirados dos livros da bibliografia b´asica [1,2, 3,4].

1.1

etodo de Elimina¸

ao de Gauss

Para usar o pivoteamento, chamar a fun¸c˜ao pivotear no in´ıcio do primeiro la¸co. Algoritmo 1: M´etodo de Elimina¸c˜ao de Gauss

input : Matriz A, vetor independente b

output: Matriz A triangular superior e vetor b alterado % Para a linha 1 da matriz at´e a pen´ultima

for k = 1 : n − 1 do

% Para as linhas da matriz abaixo da linha pivotal for i = k + 1 : n do

% Calcula o valor do multiplicador m = a(i,k)/a(k,k);

%O elemento abaixo do pivo transforma-se em zero a(i,k)=0;

%Para as colunas seguintes aplica-se a opera¸c˜ao elementar for j = k + 1 : n do

a(i,j) = a(i,j) - m*a(k,j); end

%Promove a opera¸c˜ao elementar no vetor b b(i) = b(i)-m*b(k);

end end

(3)

1.2

Pivoteamento na Elimia¸

ao de Gauss

Algoritmo 2: Executa pivota¸c˜ao em A e b

input : Matriz A, vetor b e o valor j da coluna do elemento pivo output: Matriz A e o vetor b ap´os pivota¸c˜ao

% Variavel de controle para teste da necessidade de pivota¸c˜ao linhapivo=0;

%S´o faz pivoteamento para matrizes com n > 1 if n > 1 then

% Considera inicialmente como pivo o primeiro elemento da linha pivotal (diagonal) pivo = A(j,j);

% Verifica se h´a algum elemento maior em m´odulo, nas linhas abaixo for k = j + 1 : n do

if |A(k, j)| > |pivo| then pivo = A(k,j);

% Se houver um elemento maior que o pivo, guarda a linha k linhapivo = k;

end end

% Se linhapivo ´e diferente de zero, deve-se trocar as linhas if linhapivo 6= 0 then

% Trocar a linha pivotal j pela linha presente em linhapivo Trocar as linhas da matriz A e do vetor b

end end

(4)

1.3

Algoritmo de substitui¸

ao retroativas

Obten¸c˜ao de x∗ por substitui¸c˜oes retroativas

Algoritmo 3: Substitui¸c˜oes Retroativas

input : Matriz A triangular superior, vetor independente b output: Vetor solu¸c˜ao x∗

% Para o ´ultimo elemento da matriz triangular, a(n,n), efetuar a substitui¸c˜ao x(n) = b(n)/a(n,n);

for i = n − 1 : 1 do

% Inicializa uma vari´avel de soma soma=0;

%Efetua-se a substitui¸c˜ao nas linhas com os valores de x j´a calculados for j = i + 1 : n do

s = s + a(i,j) *x(j); end

%Substitui¸c˜ao dos valores x(i) = (b(i)- s)/a(i,i); end

(5)

1.4

Verifica convergˆ

encia pelo Teorema do Raio Espectral

Verifica¸c˜ao de convergˆencia dos m´etodos de Jacobi e Gauss-Seidel pelo Teorema do Raio Espectral

Algoritmo 4: Verifica Convergˆencia de Jacobi e Gauss Seidel input : Matriz A dos coeficientes do sistema

output: Verifica¸c˜ao de convergˆencia dos m´etodos % A partir da matriz A criar as matrizes D, E e F for i = 1 : n do D(i,i) = A(i,i); for j = 1 : n do if i > j then E(i,j) = A(i,j); end if i < j then F(i,j) = A(i,j); end end end

% Calcula a matriz de itera¸c˜ao e o raio espectral J = −D−1∗ (E + F ); lamb1 = ρ(J ); % Verifica se converge if lamb1 < 1 then Imprimir(’Jacobi converge’); end

% Calcula a matriz de itera¸c˜ao e o raio espectral S = −(D + E)−1∗ F ;

lamb2 = ρ(S);

% Verifica se converge if lamb2 < 1 then

Imprimir(’Gauss Seidel converge’); end

if lamb1 ≥ 1 and lamb2 ≥ 1 then

Imprimir(’N˜ao converge para Jacobi e Gauss-Seidel’); end

(6)

1.5

etodo de Decomposi¸

ao LU com pivota¸

ao

Algoritmo 5: M´etodo de Decomposi¸c˜ao LU com pivota¸c˜ao input : Matriz A dos coeficientes do sistema e vetor b output: Vetor solu¸c˜ao x∗

Iniciar matrizes identidades P e L; U = A % Faz c´opia de A em U

%La¸co executado sobre as linhas pivotais for k = 1 : n − 1 do

%Antes de calcular multiplicador, chama fun¸c˜ao pivotear % Se houver pivota¸c˜ao, as matrizes P,U e L ser˜ao alteradas [P, U, L] = pivotear(P, U, L, k);

% Altera¸c˜oes realizadas abaixo da linha pivotal(k+1) for i = k + 1 : n do

%Para cada linha abaixo da linha pivotal, calcula o multiplicador m m = U (i, k)/U (k, k);

% Matriz L recebe multiplicadores L(i, k) = m;

% Os elementos abaixo do pivo ser˜ao zerados U (i, k) = 0;

for j = k + 1 : n do

%Aplica opera¸c˜oes elementares no restante da linha U (i, j) = U (i, j) − m ∗ U (k, j);

end end end

%Executa as substitui¸c˜oes sucessiva com a matriz L y = subsucessivasLU (L, P ∗ b0);

%Executa as retroativas sucessiva com a matriz U x = subretroativas(U, y)’

%Calcula o vetor res´ıduo r = b0 − A ∗ x

(7)

1.6

Algoritmo de substitui¸

ao sucessivas para LU

Algoritmo 6: Algoritmo de substitui¸c˜oes sucessivas input : Matriz L e vetor b multiplicado por P output: Vetor y

for i = 1:n do soma =0; for j = 1:i-1 do

% Soma as parcelas onde os valores de y j´a foram calculados soma = soma + L(i,j)*y(j);

end

%Para cada linha, calcula o valor de y(i) y(i) = b(i) - soma;

end

1.7

Algoritmo de pivota¸

ao para o m´

etodo LU

Algoritmo 7: Executa pivota¸c˜ao em A, L e P

input : Matrizes P, U, L e o valor j da coluna do elemento pivo output: Matrizes P, U e L ap´os pivota¸c˜ao

linhapivo=0;

%S´o faz pivoteamento para matrizes com n > 1 if n > 1 then

% Considera inicialmente como pivo o primeiro elemento da linha pivotal (diagonal) pivo = A(j,j);

% Verifica se h´a algum elemento maior em m´odulo, nas linhas abaixo for k = j + 1 : n do

if |A(k, j)| > |pivo| then pivo = A(k,j);

% Se houver um elemento maior que o pivo, guarda a linha k linhapivo = k;

end end

% Se linhapivo ´e diferente de zero, deve-se trocar as linhas

% Trocar valor da linha pivotal l pelo valor presente em linhapivo if linhapivo 6= 0 then

Trocar as linhas da matriz A e da identidade P for w=1:j-1 do

Trocar os multiplicadores entre as linhas inicialmente pivotal e linha contida em linhapivo at´e a coluna j-1

end end end

(8)
(9)

1.8

etodo Iterativo de Jacobi

Algoritmo 8: Algoritmo iterativo de Jacobi input : Matrizes A, vetor b, precisao e kmax output: Vetor solu¸c˜ao x e k, n´umero de itera¸c˜oes

%Definir valores da matriz dos coeficientes A, alterada pela divis˜ao pelo elemento A(i,i) for i=1:n do

r = 1 / A(i,i); % Para cada linha de A, calcular r que ir´a dividir os elementos for j=1:n do

if i ˜ = j then

A(i,j) = A(i,j) * r; end

end

% Calculo do vetor inicial x0 b(i) = b(i) * r; x(i)=b(i); end

normainf = precisao + 10; %iniciando normainf com valor maior que precisao while normainf > precisao do

if k > Kmax then

break; %Condi¸c˜ao de parada, m´etodo n˜ao atingiu a precisao// end k = k + 1; % Calcular o valor de x1 for i=1:n do soma = 0; for j=1:n do if i ˜ = j then

soma = soma + A(i,j) * x(j); end

end

x1(i) = b(i) - soma; end

normanum = normaden= 0;

% Calculo norma infinita, condi¸c˜ao de parada for i=1:n do

t = abs(x1(i) - x(i)); if t > normanum then

normanum = t; end

if abs(x1(i)) > normaden then normaden = abs(x1(i)); end

end

(10)
(11)

1.9

etodo Iterativo de Gauss Seidel

Algoritmo 9: Algoritmo iterativo de Gauss-Seidel input : Matrizes A, vetor b, precisao e kmax output: Vetor solu¸c˜ao x e k, n´umero de itera¸c˜oes

%Definir valores da matriz alterada pela divis˜ao pelo elemento A(i,i) for i=1:n do r = 1 / A(i,i); for j=1:n do if i ˜ = j then A(i,j) = A(i,j) * r; end end

x(i) = b(i) * r; % Calculo do vetor inicial x0 end

k = 0;

normainf = precisao + 10; %iniciando normainf com valor maior que precisao while normainf > precisao do

if k > Kmax then

break;%Condi¸c˜ao de parada, m´etodo n˜ao atingiu a precisao end k = k + 1; for i=1:n do soma = 0; for j=1:n do if i > j then

soma = soma + A(i,j) * x1(j); end

if i < j then

soma = soma + A(i,j) * x(j); end

end

x1(i) = b(i) - soma;% Atualiza vetor x1 end

normanum = normaden = 0; %inicia normas do numerador e denominador for i=1:n do

t = abs(x1(i) - x(i)); if t > normanum then

normanum = t; end

if abs(x(i)) > normaden then normaden = abs(x1(i)); end

(12)

1.10

Verifica¸

ao de convergˆ

encia m´

etodos iterativos

Seja o sistema Linear A ∗ x = b representado pelas matrizes a seguir, verifique a con-vergˆencia para o m´etodos iterativos de Jacobi e de Gauss-Seidel.

     0, 5 0, 6 0, 3 1 −1 1 0, 4 −0, 4 1           x1 x2 x3      =      0, 2 0 −0, 6     

Para o m´etodos iterativos, o primeiro teste que deve ser aplicado ´e verificar se a matriz dos coeficientes A ´e estritamente diagonal dominante. Verifica-se que para este exemplo, j´a na primeira linha da matriz que este teste ir´a falhar. Ent˜ao, deve-se calcular as matrizes de itera¸c˜ao dos m´etodos de Jacobi e Gauss-Seidel e verificar se ρ(M ) < 1.

A = D + E + F      0, 5 0, 6 0, 3 1 −1 1 0, 4 −0, 4 1      =      0, 5 0 0 0 −1 0 0 0 1      +      0 0 0 1 0 0 0, 4 −0, 4 0      +      0 0, 6 0, 3 0 0 1 0 0 0     

A matrizes de itera¸c˜ao s˜ao:

J = −D−1∗ (D + F ) e S = −(D + E)−1∗ F

Como a matria D ´e uma matriz diagonal, sua inversa pode ser encontrada pelo m´etodo de elimina¸c˜ao de Gauss. Nesta forma de c´alculo, opera¸c˜oes elementares s˜ao realizadas sobre a Matriz D de forma a transform´a-la em uma matriz Identidade. As mesmas opera¸c˜oes elementares devem ser realizadas sobre as linhas de uma matriz Identidade com as mesmas dimens˜oes de D. Quando a matriz D se tornar Identidade, a matriz identidade ser´a a inversa. Lembrando que apenas s˜ao invers´ıveis matriz cujo seu determinante s˜ao diferentes de zero.

Exemplo:      0, 5 0 0 1 0 0 0 −1 0 0 1 0 0 0 1 0 0 1     

(13)

J = −      2 0 0 0 −1 0 0 0 1      ∗      0 0, 6 0, 3 1 0 1 0, 4 −0, 4 0      =      0 −1, 2 −0, 6 1 0 1 −0, 4 0, 4 0     

det(J − λI) = 0 ⇒ Determinante da matriz seja igual a zero:

     −λ −1, 2 −0, 6 1 −λ 1 −0, 4 0, 4 −λ     

O polinˆomio caracter´ıstico para esta matriz ´e: λ3+ 0, 56λ − 0, 24 = 0 que tem apenas uma raiz real λ1 = 0, 3512 < 1. Ent˜ao, o sistema dado converge para o m´etodo de Jacobi.

Para o m´etodo de Gauss Seidel, deve-se calcular (D + E)−1

D + E =      0, 5 0 0 1 −1 0 0, 4 −0, 4 1           0, 5 0 0 1 0 0 1 −1 0 0 1 0 0, 4 −0, 4 1 0 0 1      ⇒      1 0 0 2 0 0 0 1 0 2 −1 0 0 0 1 0 −0.4 1      S = −(D + E)−1∗ F =      −2 0 0 −2 1 0 0 0, 4 −1      ∗      0 0, 6 0, 3 0 0 1 0 0 0      =      0 −1, 2 −0, 6 0 −1, 2 0, 4 0 0 0, 4     

det(S − λI) = 0 ⇒ Determinante da matriz seja igual a zero:

     −λ −1, 2 −0, 6 0 −1.2 − λ 0.4 0 0 0.4 − λ     

Com polinˆomio caracter´ıstico igual a: λ3+ 0, 8 ∗ λ2−0, 48∗λ = λ∗(λ2+ 0, 8 ∗ λ − 0, 48) = 0.

Os trˆes autovalores para a matriz S s˜ao: (0; −1, 2; 0, 4) e ρ(S) = 1, 2 > 1. Ent˜ao este sistema n˜ao converge para o m´etodo de Gauss Seidel.

Referˆ

encias

(14)

[2] S. C. Chapra and R. P Canale. M´etodos Num´ericos para Engenharia. Pearson, 2008. [3] N. B. Franco. C´alculo Num´erico. Pearson, 2006.

[4] M. A. G . Ruggiero and V. L. R. Lopes. C´alculo Num´erico - Aspectos Te´oricos e Computacionais. Pearson, 2006.

Referências

Documentos relacionados

Grande Dourados, no uso das atribuições que lhe foram conferidas pela Portaria nº 779, de 26/08/2014, considerando a Portaria nº 1.369/10, de 07/12/2010, que

The means of chronological age, general motor age and motor quotient of the areas evaluated by the MDS were compared between groups using the Mann-Whitney test, while the

Considerando os custos diretos, obteve-se o valor dividindo-se o custo direto total das atividades (MOD e MD) de cada formato de peça pela quantidade de

Dessa forma, diante do exposto acima e da indiscutível relevância do diagnóstico precoce com condutas adequadas para evitar a disseminação e aumento na incidência de

O objetivo do presente trabalho é estudar experimentalmente o escoamento trifásico sólido-líquido-gás em golfadas, a fim de analisar a influência da presença de

Os conselhos de assistência social caracterizam-se como conselhos gestores, pois atuam na proposição e formulação das políticas sociais, integram representantes da

Agora vamos comparar um investidor que possui um título de renda fixa de 1 ano com outro que possui cotas de um fundo de renda fixa de longo prazo, ou seja, em um fundo cujos

Os desdobramentos de personalidade de Brausen são movimentos em sintonia com essa outra alteridade radical que Onetti explora em A vida breve: para aceder ao gênero que