1ª lista de métodos numéricos

12
UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI - UFSJ DEPARTAMENTO DE ENGENHARIA ELÉTRICA - DEPEL PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA - PPGEL 1ª LISTA DE EXERCÍCIOS DE MÉTODOS NUMÉRICOS Aluno: Jhonathan Campos Resende Matrícula: 2015220230009 Prof. Leonidas Chaves de Resende

Upload: jhonathancamposresende

Post on 21-Dec-2015

22 views

Category:

Documents


4 download

DESCRIPTION

Resolução da 1ª lista de exercícios da disciplina métodos numéricos do Programa de Mestrado da UFSJ em parceria com o CEFET-MG.

TRANSCRIPT

Page 1: 1ª Lista de Métodos Numéricos

UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI - UFSJ

DEPARTAMENTO DE ENGENHARIA ELÉTRICA - DEPEL

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA - PPGEL

1ª LISTA DE EXERCÍCIOS DE MÉTODOS NUMÉRICOS

Aluno: Jhonathan Campos Resende

Matrícula: 2015220230009

Prof. Leonidas Chaves de Resende

São João del-Rei, 26 de março de 2015

Page 2: 1ª Lista de Métodos Numéricos

1ª Questão

Faça um algoritmo para calcular a precisão da máquina/computador ora em uso.

Com base neste algoritmo, apresente a aritmética de ponto flutuante da máquina.

Solução:

Através do código abaixo, desenvolvido no software Matlab, obteve-se a precisão da

máquina em uso:

clear allclose allclc format long Epsilon = 1; while 1 Epsilon = Epsilon/2; if Epsilon + 1 == 1 break endend disp('Ponto flutuante = ')disp(Epsilon)

O resultado da compilação do referido código é:

Ponto flutuante = 1.110223024625157e-16

Portanto, de acordo com a aritmética de ponto flutuante, tem-se:

Mantissa: m=1,110223024625157;

Número de dígitos na mantissa (precisão): t=15;

Expoente: e=−16;

Base: β=10 (base decimal).

2ª Questão

Calcule as tensões dos nós do circuito elétrico da Figura 1. Descreva passo a passo

a resolução do sistema de equações obtido por meio das Leis de Ohm e Kirchhoff,

utilizando a decomposição LU.

Page 3: 1ª Lista de Métodos Numéricos

Solução:

Aplicando-se as Leis de Ohm e Kirchhoff no circuito elétrico resistivo mostrado na

Figura 1 e rearranjando-se os termos, tem-se:

−6V 1+2V 2+V 3+V 4=0 (1)

3V 1−4V 2+V 3=0 (2)

V 1+2V 3−13V 4+6V 4=−254 (3)

V 1+2V 3−3V 4=0 (4)

Reescrevendo-se as equações acima na forma matricial, tem-se:

[−6 2 1 13 −4 1 03 2 −13 61 0 2 −3] [

V 1

V 2

V 3

V 4]=[ 0

0−2540

] (5)

Decomposição LU: Uma matriz quadrada pode ser escrita como produto de duas

matrizes. Assim, uma matriz A é fatorada tal que A=LU , onde L é uma matriz

triangular inferior unitária e U uma matriz triangular superior. Deste modo para

resolver o sistema A ∙x=b, usa-se a matriz A na forma decomposta

A ∙x=b→L∙U ∙ x=b (6)

Fazendo

U ∙x= y (6)

Page 4: 1ª Lista de Métodos Numéricos

Então

L ∙ y=b (7)

Para evitar um pivô nulo e que os multiplicadores tenham valores muito grandes, a

pivotação parcial deve ser utilizada na decomposição LU. Quando esta estratégia for

usada, a decomposição será da forma P A=LU , onde P é uma matriz de

permutações, que será constituída das linhas de uma matriz identidade I , colocadas

na mesma ordem das linhas pivotais que geram a matriz triangular superior U . A

matriz triangular inferior unitária L é formada pelos multiplicadores utilizados na

eliminação. A ordem em que os multiplicadores são atribuídos a cada linha de L é

dada pelos índices das linhas pivotais. Para resolver o sistema A ∙x=b, tem-se:

A ∙x=b→P ∙ A ∙ x=Pb→L∙U ∙ x=Pb (8)

Fazendo

U ∙x= y (9)

Então

L ∙ y=Pb (10)

A solução y do sistema triangular inferior L ∙ y=Pb é obtida pelas substituições

sucessivas. Por sua vez, o vetor y é utilizado como termo independente no sistema

triangular superior U ∙x= y, cuja solução x é calculada pelas substituições

retroativas.1

Foi desenvolvido um programa em Matlab para resolver o sistema de equações

mostrado na forma matricial na equação (5) utilizando a decomposição LU. O

referido programa é mostrado abaixo:

clear allclose allclc %% Parâmetros de entrada: matrizes A e b A=[-6 2 1 1; 3 -4 1 0; 3 2 -13 6; 1 0 2 -3]; b=[0; 0;-254; 0]; n = length(A);

1 CAMPOS FILHO, Frederico Ferreira. Algoritmos numéricos. 2.ed. Rio de Janeiro: LTC, 2012. 428 p.

Page 5: 1ª Lista de Métodos Numéricos

format short %% Decomposição LU[L,U,P] = lu(A); % Matrizes L e Udisp('L = ');disp(L);disp('U = '); disp(U); % PermutaçãoPb = P*b; %% Solução do sistema triangular inferior Ly = Pb, calculada por substituições sucessivasy = zeros(n,1);y(1) = Pb(1,1)/L(1,1);for i=1:n, Soma = 0.0; for j=1:(i-1), Soma = Soma+L(i,j)*y(j); y(i) = Pb(i)-Soma; endend %% Solução do sistema triangular superior Ux = y, calculada por substituições retroativasx = zeros(n,1);x(n,1) = y(n,1)/U(n,n);for i=n:-1:1, Soma = 0.0; for j=(i+1):n, Soma = Soma+U(i,j)*x(j); x(i) = (y(i)-Soma)/U(i,i); endend %% Solução do vetor xdisp('x = ');disp(x);

As matrizes L e U obtidas foram:

L=[ 1 0 0 0−0,5 1 0 0−0,5 −1 1 0

−0,1667 −0,1111 −0,2121 1] (11)

U=[−6 2 1 10 −3 1,5 0,50 0 −11 70 0 0 −1,2929 ] (12)

Page 6: 1ª Lista de Métodos Numéricos

As tensões nodais obtidas foram:

V 1=25,7969 (13)

V 2=31,7500 (14)

V 3=49,6094 (15)

V 4=41,6719 (16)

3ª Questão

Para sistemas de equações lineares de grande porte, nem sempre é possível obter

uma precisão igual, ou pelo menos comparável com a limitação da máquina. Na

resolução por meio de métodos diretos, os erros de arredondamento são

acumulados, e são ampliados na medida em que a matriz se aproxima da

singularidade. Neste caso, podem-se perder dois ou três algarismos significativos

para matrizes que estão longe de serem singulares. Uma alternativa para retornar à

precisão da máquina nesta situação é utilizar um método chamado “iterative

improvement”, sucintamente apresentado a seguir.

Suponha que um vetor x é a solução exata do sistema linear.

A ∙x=b (17)

onde x não é conhecido. Apenas uma solução aproximada (x+δx) é conhecida,

quando δx é o erro desconhecido.

Quando multiplicada por A, esta solução fornece um produto ligeiramente diferente

da saída b desejada (lado direito da equação (17)), nomeadamente

A ∙ (x+δx )=(b+δb) (18)

Subtraindo a equação (17) em (18) chega-se a

A ∙δx=δb (19)

Substituindo (19) em (18) tem-se

A ∙δx=A ∙ ( x+δx )−b (20)

Finalmente, para melhorar a solução do sistema de equações, é necessário resolver

o problema da equação (20) e subtrair δx obtido da solução aproximada.

Page 7: 1ª Lista de Métodos Numéricos

Utilize este método para melhorar uma solução aproximada do sistema linear a

seguir, sendo esta solução obtida por meio da aplicação de um método direto (e.g.,

eliminação de Gauss, decomposição LU, etc.).

x2+5x3−7 x 4+23x5−x6+7 x7+x8+x9−5 x10=10 (21)

17 x1−24 x3−75 x4+100 x5−18 x6+10x7−8 x8+9x9−50x10=−40 (22)

3 x1−2x2+15 x4−78 x5−90x6−70x7+18 x8−75 x9+ x10=−17 (23)

5 x1+5 x2−10 x3−72 x5−x6+80x7−3x8+10 x9−18 x10=43 (24)

100 x1−4 x2−75 x3−8 x4+83x6−10x7−75x8+3 x9−8 x10=−53 (25)

70 x1+85x2−4 x3−9 x4+2 x5+3x7−17 x8−x9−21 x10=12 (26)

x1+15x2+100 x3−4 x 4−23 x5+13x6+7 x8−3 x9+17 x10=−60 (27)

16 x1+2x2−7 x3+89 x4−17 x5+11 x6−73 x7−8 x9−23 x10=100 (28)

51 x1+47 x2−3x3+5 x4−10 x5+18 x6−99 x7−18 x8+12x10=0 (29)

x1+ x2+x3+x4+x5+x6+x7+x8+x9+x10=100 (30)

Solução:

A solução do sistema de equações acima se deu em duas etapas. Primeiramente,

aplicou-se o método da composição LU para obter uma solução aproximada para o

sistema, uma vez que a exatidão da solução é limitada pela precisão do computador

utilizado, culminando em erros de arredondamento. Em seguida, visando minimizar

esses erros, aplicou-se o método “iterative improvement”, apresentado no enunciado

dessa questão. O algoritmo desenvolvido em Matlab para este fim é mostrado

abaixo:

clear allclose allclc %% Solução aproximada do sistema linear utilizando o método de decomposição LU % Parâmetros de entrada: matrizes A e bA = [0 1 5 -7 23 -1 7 1 1 -5; 17 0 -24 -75 100 -18 10 -8 9 -50; 3 -2 0 15 -78 -90 -70 18 -75 1; 5 5 -10 0 -72 -1 80 -3 10 -18; 100 -4 -75 -8 0 83 -10 -75 3 -8; 70 85 -4 -9 2 0 3 -17 -1 -21; 1 15 100 -4 -23 13 0 7 -3 17; 16 2 -7 89 -17 11 -73 0 -8 -23; 51 47 -3 5 -10 18 -99 -18 0 12;

Page 8: 1ª Lista de Métodos Numéricos

1 1 1 1 1 1 1 1 1 1]; b = [10; -40; -17; 43; -53; 12; -60; 100; 0; 100]; n = length(A); format long %% Decomposição LU[L,U,P] = lu(A); % PermutaçãoPb = P*b; %% Solução do sistema triangular inferior Ly = Pby = zeros(n,1);y(1) = Pb(1,1)/L(1,1);for i=1:n, Soma = 0.0; for j=1:(i-1), Soma = Soma+L(i,j)*y(j); y(i) = Pb(i)-Soma; endend %% Solução do sistema triangular superior Ux = yx_deltaX = zeros(n,1);x_deltaX(n,1) = y(n,1)/U(n,n);for i=n:-1:1, Soma = 0.0; for j=(i+1):n, Soma = Soma+U(i,j)*x_deltaX(j); x_deltaX(i) = (y(i)-Soma)/U(i,i); endend %% Solução aproximada do sistema de equaçõesdisp('x + delta x = ');disp(x_deltaX); %% Melhorando a precisão a solução: Método "Iterative Improvement" b_deltaB = A*x_deltaX; deltaB = b_deltaB-b; deltaX = inv(A)*deltaB; x = x_deltaX-deltaX; % Solução refinadadisp('x = ')

Page 9: 1ª Lista de Métodos Numéricos

disp(x)

O método da decomposição LU obteve os seguintes resultados:

x1=34,862459137531907 (31)

x2=−14,137451011236953 (32)

x3=−6,711406105568752 (33)

x4=−4,278830802699848 (34)

x5=−0,612762496260318 (35)

x6=13,806271238310904 (36)

x7=1,806651574741939 (37)

x8=69,588088554096359 (38)

x9=0,298787425102358 (39)

x10=5,378192485982453 (40)

Após a aplicação do método "Iterative Improvement", obteve-se os resultados

abaixo:

x1=34,862459137531843 (41)

x2=−14,137451011236895 (42)

x3=−6,711406105568790 (43)

x4=−4,278830802699901 (44)

x5=−0,612762496260335 (45)

x6=13,806271238311064 (46)

x7=1,806651574741933 (47)

x8=69,588088554096501 (48)

x9=0,298787425102201 (49)

x10=5,378192485982384 (50)

Comparando-se a duas soluções, observa-se a diferença existente nas três últimas

casas decimais, devido aos erros de arredondamento oriundos do primeiro método,

corrigidos pelo segundo.