0% acharam este documento útil (0 voto)
684 visualizações28 páginas

Resolução de Sistemas Lineares em Matlab

Breve teoria e resolução de exercícios de resolução de sistemas de equações através de métodos numéricos.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
684 visualizações28 páginas

Resolução de Sistemas Lineares em Matlab

Breve teoria e resolução de exercícios de resolução de sistemas de equações através de métodos numéricos.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Alexandre Marcondes

Resolução de Exercícios de Sistemas Lineares e


Não-Lineares utilizando Métodos Numéricos

Brasil
Maio de 2017
Alexandre Marcondes

Resolução de Exercícios de Sistemas Lineares e


Não-Lineares utilizando Métodos Numéricos

Trabalho apresentado a disciplina de Méto-


dos Numéricos do programa de mestrado em
Engenharia Elétrica e Computação. Prof. Dr.
Ricardo Luiz de Barros Freitas

Universidade Estadual do Oeste do paraná


Programa de Mestrado em Engenharia Elétrica e Computação
Sistemas Dinâmicos e Energéticos

Brasil
Maio de 2017
Sumário

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 SISTEMAS LINEARES . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1 Exercício L1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Exercício L2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Exercício L3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Exercício L4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 SISTEMAS NÃO-LINEARES . . . . . . . . . . . . . . . . . . . . . . 20
3.1 Exercício NL1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Exercício NL2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Exercício NL3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3

1 Introdução

Os métodos numéricos utilizados na resolução da lista de exercícios, que é apre-


sentada neste trabalho, foram implementados computacionalmente utilizando o MatLab.
Assim, nesta introdução serão repassadas algumas instruções sobre a utilização destes
programas. Este trabalho tem o objetivo de apresentar somente a resolução dos exercí-
cios, não abordando portanto aspectos teóricos sobre os métodos numéricos que foram
apresentados durante as aulas da disciplina.
Os programas que acompanham este trabalho escrito estão na extensão .m e
devem ser executados no próprio software MatLab. Ao executar os programas, podem ser
solicitados ao usuário matrizes e/ou vetores como entrada para a solução dos sistemas.
Os seguintes métodos numéricos foram implementados para a solução de sistemas
lineares:

• Métodos diretos:

– Decomposição de Gauss (arquivo gauss.m);


– Fatoração LU (arquivo solverLU.m);
– Decomposição de Cholesky (arquivo cholesky.m);

• Métodos iterativos:

– Método de Gauss-Jacobi (arquivo jacobi.m);


– Método de Gauss-Seidel (arquivo seidel.m);

Nos métodos da decomposição de Gauss e Fatoração LU são inclusos códigos de


permutação de linhas para a resolução dos sistemas de equação. No método direto de
Cholesky são aceitas somente matrizes simétricas e positivas (as quais tem os elementos
da diagonal positiva), por isso o programa será interrompido caso a matriz não cumpra
estas características.
Nos iterativos de Gauss-Jacobi e Gauss Seidel também foram inclusos códigos para
a permutação de linhas antes do início das iterações. Além disso, foram utilizados os testes
de convergência pelo critério das linhas para o método de Gauss-Jacobi e o critério de
Sassenfeld para o método de Gauss-Seidel. Para ambos, caso o critério seja desobedecido,
é exibido um alerta na tela de possível divergência do método.
Nos métodos iterativos um número máximo de iterações é adicionado ao código,
assim, se a solução não divergir até o número máximo de iterações, o programa será
Capítulo 1. Introdução 4

interrompido. O número máximo de iterações foi definido como 50 para os códigos, porém
podem ser modificados sempre que necessário.
Os seguintes métodos foram implementados para a solução de sistemas não-lineares:

• Método de Newton para sistemas não-lineares (arquivo newtonnl.m) ;

• Método de Newton modificado (arquivo newtonmod.m).

Os métodos iterativos para a solução de sistemas não-lineares resultam em um


sistema linear de equações para ser resolvido. Assim, foi utilizada a decomposição de
Gauss nos programas dos métodos de Newton e Newton modificado. Assim como nos
métodos iterativos há um número máximo de iterações nos códigos para a resolução de
sistemas não-lineares, o qual também é definido como 50. Nos métodos de Newton e
Newton modificado é necessário que as variáveis sejam expressas como x(1) para x1 , x(2)
para x2 e assim por diante. Por exemplo, caso a equação seja x21 + 2x2 , nestes programas a
equação deverá ser digitada da seguinte maneira: x(1)^2+2*x(2).
Quando o programa solicitar ao usuário uma matriz, o usuário deve digitar os
valores dessa matriz entre colchetes, separar os valores em cada linha por um espaço ou
uma vírgula e iniciar uma nova linha com um ponto e vírgula. Por exemplo, ao digitar a
seguinte sequência: [2 3 6;5 8 9], o usuário obtem a seguinte matriz:
 

2 2 
2 3

Para digitar um vetor linha ou coluna utiliza-se dos mesmos conceitos. Digitando-se [1 2
3] e [1;2;3], os seguintes vetores serão obtidos respectivamente:
 
h i 
1 
1 2 3 , 2
 

 
3

Para complementar, ressalta-se que os próprios exercícios resolvidos deste trabalho


podem servir como guia para a utilização dos programas. Demais informações sobre
o software MatLab podem ser pesquisadas via internet. Informações sobre os códigos
desenvolvidos podem ser repassadas pelo autor deste trabalho.
5

2 Sistemas Lineares

Neste capítulo apresentam-se as resoluções dos exercícios propostos de sistemas


lineares por diferentes métodos, sendo que tais métodos foram implementados utilizando o
MatLab. Solucinam-se os exercícios através dos seguintes métodos: Decomposição de Gauss,
Fatoração LU, Fatoração de Cholesky, Método de Gauss-Jacobi e Método de Gauss-Seidel.
Os três primeiros métodos citados são métodos diretos, os demais são métodos iterativos.
Nos programas desenvolvidos para os métodos diretos, requerem-se como entradas
do usuário a matriz dos coeficientes (A) e o vetor coluna dos termos independentes (b),
assim como indicado na Figura 1 . Já nos métodos indiretos o usuário deve inserir além
da matriz A e do vetor b o erro que deseja-se alcançar e a estimativa inicial da solução,
assim como indicado na Figura 2 . O número máximo de iterações serve para interromper
o programa, caso ele esteja levando muitas iterações para convergir. Em ambos os casos
(sistemas lineares ou não-lineares), a saída será o vetor solução (x).

Figura 1 – Fluxograma básico dos métodos diretos.

Entradas: Matriz A Resolução do Saída: Vetor


e Vetor b sistema solução (x)

Fonte: Elaboração própria.

Figura 2 – Fluxograma básico dos métodos indiretos.

Entradas: Matriz
Resolução do Saída: Vetor
A, Vetor b, erro e
sistema solução (x)
estimativa inicial

Fonte: Elaboração própria.


Capítulo 2. Sistemas Lineares 6

2.1 Exercício L1
Descrição do exercício: Hoje é dia de S. Valentim. Dois rapazes pretendem
comprar um ramo de flores com rosas e tulipas, para oferecer as respecticas namoradas.
Considere x1 o número de rosas e x2 o número de tulipas de cada ramo. O primeiro dos
rapazes vai comprar o ramo na floricultura "Mil Pétalas"que cobra por cada rosa 2 reais e
por cada tulipa 2 reais, gastando 10 reais. O segundo decide comprar o ramo na floricultura
"Tudo em Flor"cobrando-lhe por cada rosa 2 reais e 3 reais por cada tulipa, ficando o
ramo por 13 reais. Quantas rosas e quantas tulipas foram compradas? Utilize os métodos
iterativos de Gauss-Seidel e Gauss Jacobi para identificar quantas rosas e quantas tulipas
foram compradas. Condicione o erro a 1. Inicie com nenhuma rosa e nenhuma tulipa.
Resolução:
Primeiramente, escreve-se o sistema de equações. Sabe-se que a soma dos valores
das rosas e tulipas no ramo deverá ser igual ao preço total do ramo. Assim, têm-se o
seguinte sistema de equações:

2x2 + 2x2 = 10

2x2 + 3x2 = 13
Reescreve-se o sistema de equações acima no formato Ax = b da seguinte forma:
     
2 2   x1   10 
 × =
2 3 x2 13
| {z } | {z } | {z }
A x b

Onde a matriz A representa os valores de cada flor, o vetor x representa a quantidade


de cada flor no ramo a ser calculada e o vetor b representa o valor total do ramo em
cada floricultra. Primeiramente soluciona-se o sistema através do método iterativo de
Gauss-Jacobi, o qual o código se encontra no arquivo jacobi.m. Ao executar o programa e
inserir os dados iniciais requisitados, obtêm-se as seguintes linhas na tela:

>> jacobi
Resolução de um sistema linear do tipo Ax=b
Método iterativo de Gauss-Jacobi
Entre a matriz de coeficientes A do sistema: [2 2;2 3]
Entre com o vetor coluna b: [10;13]
Entre com o vetor coluna x0 (estimativa inicial): [0;0]
Entre com o erro que deseja-se obter: 1
A =
2 2
2 3
Capítulo 2. Sistemas Lineares 7

alpha =
1.000000000000000 0.666666666666667
Critério das linhas não obedecido. Possível divergência.
i = 1.000000, erro = 5.000000, x =5.000000 4.333333
i = 2.000000, erro = 4.333333, x =0.666667 1.000000
i = 3.000000, erro = 3.333333, x =4.000000 3.888889
i = 4.000000, erro = 2.888889, x =1.111111 1.666667
i = 5.000000, erro = 2.222222, x =3.333333 3.592593
i = 6.000000, erro = 1.925926, x =1.407407 2.111111
i = 7.000000, erro = 1.481481, x =2.888889 3.395062
i = 8.000000, erro = 1.283951, x =1.604938 2.407407
i = 9.000000, erro = 0.987654, x =2.592593 3.263374
Solução:
x =
2.592592592592593
3.263374485596708

Observa-se no código acima que ao atingir um erro menor àquele estipulado pelo
exercício, o que ocorre na nona iteração, o programa é interrompido e os valores de
x1 = 2, 596 e x2 = 3, 2634 são obtidos.
Utiliza-se também o método de Gauss-Seidel na resolução. Executa-se o programa,
os dados de entrada são inseridos, e por fim a seguinte tela é exibida:

>> seidel
Método iterativo de Gauss-Seidel
Resolução de um sistema linear do tipo Ax=b
Entre a matriz de coeficientes A do sistema: [2 2;2 3]
Entre com o vetor coluna b: [10;13]
Entre com o vetor coluna x0 (estimativa inicial): [0;0]
Entre com o erro que deseja-se obter: 1
A =
2 2
2 3
beta =
1.000000000000000 0.666666666666667
Critério de sassenfeld não obedecido. Possível divergência.
i = 1.000000, erro = 5.000000, x = 5.000000 1.000000
i = 2.000000, erro = 1.000000, x = 4.000000 1.666667
i = 3.000000, erro = 0.666667, x = 3.333333 2.111111
Capítulo 2. Sistemas Lineares 8

Solução:
x =
3.333333333333333
2.111111111111111

No método de Seidel, observa-se que o erro estipulado foi atingido de maneira mais rápida.
Após 3 iterações o erro já era menor que 1, e os valores de x obtidos foram: x1 = 3, 3333 e
x2 = 2, 11.
Observa-se que há uma tendência nos números de rosas e tulipas, porém não
pode-se afirmar o valor exato da quantidade de flores. Para se obter um valor exato neste
caso, utiliza-se o método direto da decomposição de Gauss com pivoteamento parcial. Ao
executar o programa deste método e inserir os dados de entrada, a seguinte tela é exibida:

>> gauss
Resolução de um sistema linear do tipo Ax=b
Decomposição de Gauss
Entre a matriz de coeficientes A do sistema: [2 2;2 3]
Entre com o vetor coluna b : [10;13]
A =
2 2
0 1
Solução:
x =
2 3

Observa-se que os valores obtidos para x1 e x2 no método da decomposição de


Gauss foram 2 e 3 respectivamente. Pode-se obter uma aproximação maior para os métodos
iterativos através da diminuição do erro, aproximando-se assim dos valores obtidos no
método direto. Os métodos de Gauss-Seidel e Gauss Jacobi foram testados também para
um erro de 0,01, a comparação entre a convergência dos métodos são apresentadas na
Tabela1.
Conclui-se assim que o número de rosas no ramo será 2 e o de tulipas 3. Observou-se
que o método direto é o mais confiável para este caso, resultando na solução exata. Os
métodos iterativos tiveram convergência lenta (muitas iterações) para se obter um erro
aceitável, porém verificou-se que os mesmos também convergem para a solução deste
sistema.
Capítulo 2. Sistemas Lineares 9

Tabela 1 – Comparação entre os métodos.

Erro abs. No de iter. x1 x2


Gauss-Jacobi 1 9 2,59259 3,26337
0.01 32 1,99696 2,99543
Gauss-Seidel 1 3 3,33333 2,11111
0.01 14 2,01542 2,98972
Decomp. de Gauss - - 2 3
Fonte: Elaboração própria.

2.2 Exercício L2
Descrição do exercício: Um engenheiro de produção supervisiona a produção de
quatro tipos de computadores. Existem quatro espécies de recursos necessários à produção:
mão-de-obra, metais, plásticos e componentes eletrônicos. As quantidades destes recursos
necessárias para produzir estão apresentadas na Tabela 2. Considere um consumo diário
de 504 h de mão-de-obra, 1970 kg de metais, 970 kg de plásticos e 61 componentes.

Tabela 2 – Recursos para a produção de cada computador.

Tipo do computador Mão-de-obra Metais Plásticos Componentes


1 3 20 10 10
2 4 25 15 8
3 7 40 20 10
4 20 50 22 15
Fonte: Exercício exposto em aula.

a) Use o método direto LU para calcular o número de computadores (número inteiro) de


cada tipo de computador produzido por dia.

b) Use o método iterativo de Gauss-Seidel tomando como aproximação inicial x(0) =[ 9 10


12 10 ]T . Apresente apenas os cálculos relativos as duas primeiras iterações.

Resolução:
Sabe-se que a quantidade total de recursos disponíveis por dia será igual a soma
de cada tipo de recurso necessário para a produção de cada tipo de computador. Assim,
pode-se escrever o seguinte sistema de equações que representa o sistema

3x1 + 3x2 + 7x3 + 20x4 = 504


Capítulo 2. Sistemas Lineares 10

20x1 + 25x2 + 40x3 + 50x4 = 1970


10x1 + 15x2 + 20x3 + 22x4 = 970
10x1 + 8x2 + 10x3 + 15x4 = 604
Sendo x1 , x2 , x3 e x4 os 4 tipos de computadores. Pode-se escrever o sistema de equações
no formato Ax = b, como apresentado abaixo:
     

3 4 7 20  
x1  
504 
20 25 40 50 x2 1970
     
     
 ×  =  
10 15 20 22 x3 970
     
     
     
10 8 10 15 x4 601
| {z } | {z } | {z }
A x b

Com o sistema Ax=b pode se resolver o sistema através dos diferentes métodos, utilizando
os códigos implementados computacionamente.
a) Método LU
O primeiro método utilizado é o método direto de fatoração LU com permutação
parcial de linhas, o qual encontra-se implementado no arquivo solverLU.m. Ao executar o
programa e entrar com os dados de entrada requisitados, o usuário obtém a seguinte tela:

Resolução de um sistema linear do tipo Ax=b


Método de fatoração LU
Entre a matriz de coeficientes A do sistema: [3 4 7 20;20 25 40 50;
10 15 20 22;10 8 10 15]
Entre com o vetor coluna b : [504;1970;970;601]
L =
1.0000 0 0 0
0.5000 1.0000 0 0
0.5000 -0.5556 1.0000 0
0.1500 -0.0556 -0.0800 1.0000
U =
20.0000 25.0000 40.0000 50.0000
0 -4.5000 -10.0000 -10.0000
0 0 -5.5556 -8.5556
0 0 0 11.2600
Solução:
x =
10.0000 12.0000 18.0000 15.0000

Observa-se que os valores de x1 , x2 , x3 e x4 obtidos foram 10, 12, 18 e 15 respectivamente.


Além disso, observa-se que na tela são exibidas também as matrizes L e U para fins de
Capítulo 2. Sistemas Lineares 11

análise e comparação. Pode-se concluir assim que poderão ser fabricados diariamente 10
computadores do tipo 1, 12 computadores do tipo 2, 18 computadores do tipo 3 e 15
computadores do tipo 4.
b) Métodos iterativos
Aqui são apresentados o método de Gauss-Seidel e também o método de Gauss-
Jacobi. O programa é executado, os dados de entrada são inseridos, e a tela a seguir é
exibida:

Método iterativo de Gauss-Seidel


Resolução de um sistema linear do tipo Ax=b
Entre a matriz de coeficientes A do sistema: [3 4 7 20;20 25 40 50;
10 15 20 22;10 8 10 15]
Entre com o vetor coluna b: [504;1970;970;601]
Entre com o vetor coluna x0 (estimativa inicial): [9;10;12;10]
Entre com o erro que deseja-se obter: 0.01
A =
20 25 40 50
10 15 20 22
10 8 10 15
3 4 7 20
beta =
5.7500 6.6333 12.5567 6.5840
Critério de sassenfeld não obedecido. Possível divergência.
i = 1.000000, erro = 11.366667, x = 37.000000 9.333333 0.633333
17.561667
i = 2.000000, erro = 16.770422, x = 41.662500 10.290111 -16.137089
22.540584
i = 3.000000, erro = 28.800434, x = 61.560079 12.083209 -44.937522
29.277479
i = 4.000000, erro = 50.895901, x = 100.077335 14.924837 -95.833424
40.745131
i = 5.000000, erro = 90.501359, x = 169.647975 19.586390 -186.334783
61.052700
i = 6.000000, erro = 161.225121, x = 294.054829 27.532532 -347.559904
97.231236
i = 7.000000, erro = 287.425022, x = 516.126053 41.390024 -634.984926
161.747811
Número máximo de iterações atingidas.
Capítulo 2. Sistemas Lineares 12

Observa-se nas linhas obtidas após a execução do programa que a matriz A é apresentada,
apresentando as permutações nas linhas realizadas antes das iterações, as quais buscam
reorganizar as linhas a fim de se obter o maior pivô de cada coluna. Observa-se também
que, após a exibição da matriz A, exibiu-se na tela também os valores de β do Critério de
Sassenfeld, os quais não foram satisfatórios. Como todos os valores β são maiores que 1, a
convergência da solução não é garantida.
Após isso, as iterações iniciam. Observa-se que após a sétima iteração o erro é
bastante alto e os valores de x afastam-se dos valores satisfatórios, que seriam aqueles
obtidos no método direto. Ao observar a divergência do método, optou-se por limitar o
programa a 7 iterações. Assim, conclui-se que o método de Gauss-Seidel diverge para este
sistema de equações e estas estimativas iniciais.
No método de Gauss-Jacobi, após a execução do programa e inserção dos dados de
entrada, a seguinte tela é exibida:

Resolução de um sistema linear do tipo Ax=b


Método iterativo de Gauss-Jacobi
Entre a matriz de coeficientes A do sistema: [3 4 7 20;20 25 40 50;
10 15 20 22;10 8 10 15]
Entre com o vetor coluna b: [504;1970;970;601]
Entre com o vetor coluna x0 (estimativa inicial): [9;10;12;10]
Entre com o erro que deseja-se obter: 0.01
A =
20 25 40 50
10 15 20 22
10 8 10 15
3 4 7 20
alpha =
5.7500 3.4667 3.3000 0.7000
Critério das linhas não obedecido. Possível divergência.
i = 1.000000, erro = 28.000000, x =37.000000 28.000000 28.100000
17.650000
i = 2.000000, erro = 53.875000, x =-36.825000 -23.353333 -25.775000
4.215000
i = 3.000000, erro = 205.529167, x =168.704167 117.401333 109.285167
44.415667
i = 4.000000, erro = 378.433900, x =-377.861167 -258.659311 -269.148733
-61.835700
i = 5.000000, erro = 1492.572022, x =1114.710856 766.131449 737.642166
227.813094
Capítulo 2. Sistemas Lineares 13

Número máximo de iterações atingidas.

Observa-se que neste método também são exibidas a matriz A e os valores de α do critério
das linhas para o método de Gauss-Jacobi. Nota-se que três dos 4 valores de α estão acima
de 1, portanto não é garantida a convergência também para este método. Observa-se
também que após a quinta iteração o erro absoluto está crescendo acentuadamente e os
valores de x divergindo do esperado. Assim, conclui-se que nenhum dos dois métodos
iterativos apresentados convergem para esse sistema de equações.

2.3 Exercício L3
Descrição do exercício: Encontre a corrente elétrica que percorre cada ramo do
circuito apresentado na Figura 3.

Figura 3 – Circuito elétrico do exercício.

10

3
I3
8 5

15V 1 3 2 2
I1 I2

Fonte: Exercício exposto em aula.

Resolução:
Aplica-se a lei das malhas em cada uma das malhas do circuito, obtendo-se o
seguinte sistema de equações:

11I1 − 3I2 − 8I3 = 15

−3I1 + 10I2 − 5I3 = 0

−8I1 − 5I2 + 23I3 = 0


Capítulo 2. Sistemas Lineares 14

Escrevendo o sistema acima no formato Ax=b, obtém-se:


     

11 −3 −8  
I1  
15 
−3 +10 −5 × I2 = 0
     
  
     
−8 −5 23 I3 0
| {z } | {z } | {z }
A x b

Organizado o sistema Ax=b, podem-se aplicar os programas para a resolução do


exercício. Opta-se neste exercício pelo método direto de Cholesky pois, além de não ter
sido ainda utilizado nesta resolução de exercícios, se trata de uma matriz simétrica e
positiva (elementos da diagonal principal todos positivo). Além disso, aplica-se o método
iterativo de Gauss-Seidel para fins de comparação.
Executa-se o programa, os dados iniciais são inseridos e a seguinte tela é exibida:

Resolução de um sistema linear do tipo Ax=b


Fatoração de Cholesky
Entre a matriz de coeficientes A do sistema: [11 -3 -8;-3 10 -5;-8 -5 23]
Entre com o vetor coluna b : [15;0;0]
L =
3.3166 0 0
-0.9045 3.0302 0
-2.4121 -2.3701 3.4006
Lt =
3.3166 -0.9045 -2.4121
0 3.0302 -2.3701
0 0 3.4006
Solução:
x =
2.6327 1.3998 1.2200

Observa-se que os valores para as correntes I1 , I2 e I3 obtidos foram 2,6327, 1,3998


e 1,22 respectivamente. As matriz L e transposta de L são exibidas também pelo programa
para fins de análise. Observa-se que multiplicando L por sua transposta obtém-se a própria
matriz A, como a multiplicação abaixo realizada no MatLab apresenta:

>> L*Lt
ans =
11.0000 -3.0000 -8.0000
-3.0000 10.0000 -5.0000
-8.0000 -5.0000 23.0000
Capítulo 2. Sistemas Lineares 15

Realiza-se agora a resolução através do método de Gauss-Seidel estipulando um


erro de 0,01 e estimativa inicial de 1, 1 e 1 para os valores das correntes. Após a execução
do programa e inserção dos valores de entrada, a seguinte tela é exibida:

>> seidel
Método iterativo de Gauss-Seidel
Resolução de um sistema linear do tipo Ax=b
Entre a matriz de coeficientes A do sistema: [11 -3 -8;-3 10 -5;-8 -5 23]
Entre com o vetor coluna b: [15;0;0]
Entre com o vetor coluna x0 (estimativa inicial): [1;1;1]
Entre com o erro que deseja-se obter: [0.01]
A =
11 -3 -8
-3 10 -5
-8 -5 23
beta =
1.000000000000000 0.800000000000000 0.521739130434783
Critério de sassenfeld não obedecido. Possível divergência.
i = 1.000000, erro = 1.363636, x = 2.363636 1.209091 1.084980
i = 2.000000, erro = 0.118829, x = 2.482465 1.287230 1.143299
i = 3.000000, erro = 0.063724, x = 2.546189 1.335506 1.175958
i = 4.000000, erro = 0.036919, x = 2.583108 1.362911 1.194757
i = 5.000000, erro = 0.021146, x = 2.604254 1.378655 1.205535
i = 6.000000, erro = 0.012132, x = 2.616386 1.387683 1.211718
i = 7.000000, erro = 0.006959, x = 2.623345 1.392862 1.215264
Solução:
x =
2.623344556259136
1.392862135844042
1.215263788230143

Primeiramente observa-se que um dos valores de β é igual a 1, portanto o Critério de


Sassenfeld não garante a convergência. Porém, mesmo com a não garantia de convergência
pelo critério, após 7 iterações o método converge para o erro estipulado, obtendo os valores
de 2,62334 para I1 , 1,39286 para I2 e 1,21526 para I3 .

2.4 Exercício L4
Descrição do exercício: Uma fábrica de automóveis produz 3 modelos: A, B e
C, cada um deles passa por 3 setores diferentes de montagem: setor de motores, lataria e
Capítulo 2. Sistemas Lineares 16

acabamento. O setor de motores trabalha 80 horas por semana; o de lataria trabalha 60


horas por semana e o de acabamento trabalha 95 horas por semana. Veja a Tabela 3 que
especifica a quantidade de horas em cada setor que cada carro precisa para ser produzido.
Quantos carros de cada modelo a fábrica é capaz de produzir semanalmente? Utilize a
eliminação de Gauss.

Tabela 3 – Quantidade de horas em cada setor que cada carro precisa para ser produzido.

Modelo Motores Lataria Acabamento


A 3 horas 2 horas 3 horas
B 2 horas 2 horas 3 horas
C 4 horas 3 horas 5 horas
Fonte: Exercício exposto em aula.

Resolução:
Sabe-se que a quantidade de horas que cada automóvel gasta em cada setor deve
ser igual a quantidade de horas que cada setor pode trabalhar semanalmente, aproveitando
assim todas as horas disponíveis de cada setor. Assim, sendo x1 , x2 e x3 os modelos de
automóveis A, B e C respectivamente, pode se escrever o seguinte sistema de equações
para o problema:
3x1 + 2x2 + 4x3 = 80

2x1 + 2x2 + 3x3 = 60

3x1 + 3x2 + 5x3 = 95

Escreve-se o sistema acima no formato Ax=b, obtendo o seguinte:


     

3 2 4   x1   80 
2 2 3  ×  x  =  60
     
  2 
 
  
3 3 5 x3 95
| {z } | {z } | {z }
A x b

Com o sistema Ax=b organizado, pode se utilizar os programas para a obtençao


da solução. Primeiramente, soluciona-se o sistema pelo método da decomposição de Gauss.
Executando o programa e inserindo os dados de entrada, as linhas abaixo são exibidas na
tela:

Resolução de um sistema linear do tipo Ax=b


Decomposição de Gauss
Entre a matriz de coeficientes A do sistema: [3 2 4;2 2 3;3 3 5]
Entre com o vetor coluna b : [80;60;95]
Capítulo 2. Sistemas Lineares 17

A =
3.0000 2.0000 4.0000
0 1.0000 1.0000
0 0 -0.3333
Solução:
xr =
10.0000 5.0000 10.0000

Observando a resolução obtida através do método da decomposição de Gauss, será possível


produzir semanalmente 10 carros do tipo A, 5 carros do tipo B e 10 carros do tipo C.
Pode-se aplicar o método da fatoração LU também, obtendo-se a seguinte tela após a
execução e entrada dos dados:

Resolução de um sistema linear do tipo Ax=b


Método de fatoração LU
Entre a matriz de coeficientes A do sistema: [3 2 4;2 2 3;3 3 5]
Entre com o vetor coluna b : [80;60;95]
L =
1.0000 0 0
1.0000 1.0000 0
0.6667 0.6667 1.0000
U =
3.0000 2.0000 4.0000
0 1.0000 1.0000
0 0 -0.3333
Solução:
x =
10.0000 5.0000 10.0000

Observa-se que os mesmos valores foram obtidos na fatoração LU. Opta-se também
por resolver o sistema utilizando os dois métodos iterativos para fins de comparação.
Estipulam-se valores iniciais de 7 unidades para cada tipo de automóvel e erro de 0,01.
Abaixo é apresentada a tela de execução do programa do método de Gauss-Jacobi para
este problema:

Resolução de um sistema linear do tipo Ax=b


Método iterativo de Gauss-Jacobi
Entre a matriz de coeficientes A do sistema: [3 2 4;2 2 3;3 3 5]
Entre com o vetor coluna b: [80;60;95]
Entre com o vetor coluna x0 (estimativa inicial): [7;7;7]
Capítulo 2. Sistemas Lineares 18

Entre com o erro que deseja-se obter: 0.01


A =
3 2 4
3 3 5
2 2 3
alpha =
2.0000 2.6667 1.3333
Critério das linhas não obedecido. Possível divergência.
i = 1.000000, erro = 6.000000, x =12.666667 13.000000 10.666667
i = 2.000000, erro = 11.777778, x =3.777778 1.222222 2.888889
i = 3.000000, erro = 21.851852, x =22.000000 23.074074 16.666667
i = 4.000000, erro = 41.185185, x =-10.938272 -18.111111 -10.049383
i = 5.000000, erro = 77.465021, x =52.139918 59.353909 39.366255
i = 6.000000, erro = 145.437586, x =-65.390947 -86.083676 -54.329218
i = 7.000000, erro = 273.689986, x =156.494742 187.606310 120.983082
Número máximo de iterações atingidas.

Observa-se primeiramente que os 3 valores de α do critério das linhas encontram-se acima


de 1, então a convergência não é garantida. Depois, observa-se que após 7 iterações o
erro aumenta bruscamente e os valores das quantidades de carro divergem dos valores
esperados.
Agora, apresenta-se a tela exibida após a execução do programa do método de
Gauss-Seidel para os dados de entrada estipulados anteriormente:

Método iterativo de Gauss-Seidel


Resolução de um sistema linear do tipo Ax=b
Entre a matriz de coeficientes A do sistema: [3 2 4;2 2 3;3 3 5]
Entre com o vetor coluna b: [80;60;95]
Entre com o vetor coluna x0 (estimativa inicial): [7;7;7]
Entre com o erro que deseja-se obter: 0.01
A =
3 2 4
3 3 5
2 2 3
beta =
2.0000 3.6667 3.7778
Critério de sassenfeld não obedecido. Possível divergência.
i = 1.000000, erro = 5.666667, x = 12.666667 7.333333 6.666667
i = 2.000000, erro = 0.370370, x = 12.888889 7.666667 6.296296
Capítulo 2. Sistemas Lineares 19

i = 3.000000, erro = 0.411523, x = 13.160494 8.012346 5.884774


i = 4.000000, erro = 0.457247, x = 13.478738 8.379973 5.427526
i = 5.000000, erro = 0.508053, x = 13.843317 8.777473 4.919474
i = 6.000000, erro = 0.564503, x = 14.255720 9.211824 4.354971
i = 7.000000, erro = 0.627225, x = 14.718823 9.689559 3.727745
i = 8.000000, erro = 0.696917, x = 15.236634 10.217124 3.030828
i = 9.000000, erro = 0.774352, x = 15.814146 10.801140 2.256476
i = 10.000000, erro = 0.860392, x = 16.457272 11.448602 1.396084
...
i = 20.000000, erro = 2.467579, x = 28.506918 23.506767 -14.675790
...
i = 30.000000, erro = 7.076947, x = 63.077107 58.077105 -60.769475
...
i = 40.000000, erro = 20.296487, x = 162.223653
...
i = 50.000000, erro = 58.209757, x = 446.573174 441.573174 -572.097565
Número máximo de iterações atingidas.

Observa-se que os valores de β estão todos acima de 1, então o critério de Sassenfeld não
garante a convergência do método para este sistema. Observa-se nas iterações que, após 50
iterações, o erro somente aumenta e os valores divergem totalmente dos valores esperados.
Conclui-se assim que os métodos iterativos de Gauss-Jacobi e Gauss-Seidel não
convergem para este sistema e as condições iniciais dadas. Por isso, recomendam-se os
métodos diretos para este problema.
20

3 Sistemas Não-Lineares

Neste capítulo apresentam-se as resoluções dos exercícios propostos de sistemas não-


lineares por diferentes métodos, sendo que tais métodos foram implementados utilizando o
MatLab. Solucinam-se os exercícios através dos seguintes métodos: Método de Newton e
método de Newton Modificado, sendo ambos métodos iterativos.
Nos programas desenvolvidos para a solução de sistemas não-lineares, requerem-se
como entradas do usuário a matriz jacobiana (J), as funções F(x1 ,x2 ,...,xn ), a estimativa
inicial da solução e o erro que deseja-se alcançar, assim como indicado na Figura 4.

Figura 4 – Fluxograma básico dos métodos para resolução de sistemas não-lineares.

Entradas: Funções
Resolução do Saída: Vetor
F, matriz J, erro e
sistema solução (x)
estimativa inicial

Fonte: Elaboração própria.

3.1 Exercício NL1


Descrição do exercício: No coletor solar, um balanço de energia na placa ab-
sorvente e na placa de vidro produz o seguinte sistema de equações não lineares nas
temperaturas absolutas da plata absorvente (T2 ) e da placa de vidro (T2 ):


 (T14 + 0, 06823T1 ) − (T24 + 0, 05848T2 ) = 0, 01509
 (T14 + 0, 05848T1 ) − (2T24 + 0, 11696T2 ) = 0
Usando como aproximação inicial a solução T (0) = (0, 3; 0, 3) para um erro de 0,0001,
determine suas respectivas temperaturas utilizando o Método de Newton e o Método de
Newton modificado.
Resolução:
Verifica-se que o sistema possui duas equações. O programa desenvolvido para a a
resolução através do método de Newton exige a entrada da matriz Jacobiana, das funções
F, das aproximações iniciais e do erro estimado que deseja-se obter. As funções F podem
Capítulo 3. Sistemas Não-Lineares 21

ser escritas a partir do sistema de equações acima:


F1 = (T14 + 0, 06823T1 ) − (T24 + 0, 05848T2 ) − 0, 01509
F2 = (T14 + 0, 05848T1 ) − (2T24 + 0, 11696T2 )
Já a matriz Jacobiana, é dada por:
 
4T13 + 0, 06823 −4T23 − 0, 05848 
J =
4T13 + 0, 05848 −8T23 − 0, 11696
Com as funções F e a matriz J, o sistema pode ser escrito no formato J(x(k) )∆x = −F (x(k) )
e pode ser solucionado. Ao executar o programa do método de Newton e inserir os dados
de entrada requisitados,considerando que T1 = x1 e T2 = x2 , a seguinte tela é exibida:

>> newtonnl
Primeiramente, digite o número de equações que compõem o sistema: 2
Digite a equação de cada linha.\n
Por favor, digitar x1 como x(1), x2 como x(2) e assim por diante.
Digite a função F1: (x(1)^4+0.06823*x(1))-(x(2)^4+0.05848*x(2))-0.01509
Digite a função F2: (x(1)^4+0.05848*x(1))-(2*x(2)^4+0.11696*x(2))
Entrada da matriz Jacobiana
Derivada parcial de F1 em relação a x1: 4*x(1)^3+0.06823
Derivada parcial de F1 em relação a x2: -4*x(2)^3-0.05848
Derivada parcial de F2 em relação a x1: 4*x(1)^3+0.05848
Derivada parcial de F2 em relação a x2: -8*x(2)^3-0.11696
Digite o vetor coluna x (estimativa inicial): [0.3;0.3]
Digite o erro que deseja-se obter: 0.0001
i = 1.000000, erro = 0.080551, x =0.292935 0.219449
i = 2.000000, erro = 0.028954, x =0.292786 0.190495
i = 3.000000, erro = 0.002573, x =0.292786 0.187922
i = 4.000000, erro = 0.000017, x =0.292786 0.187905
Solução:
x =
0.292786027791104
0.187904724941656

Observa-se que após a quarta iteração, o método de Newton já atinge um erro menor a
0,0001. Assim, conclui-se que com o método de Newtom o valor de T1 é igual a 0,29279 e
o valor de T2 é 0,1879.
O mesmo será realizado para o método de Newton modificado, sendo que nele
a matriz Jacobiana será calculada em x(0) e será mantida nas demais iterações. Assim,
ao executar o programa do método de Newton modificado e inserir os dados de entrada,
novamente considerando que T1 = x1 e T2 = x2 , a seguinte tela é exibida:
Capítulo 3. Sistemas Não-Lineares 22

>> newtonmod
Primeiramente, digite o número de equações que compõem o sistema: 2
Digite a equação de cada linha.\n
Por favor, digitar x1 como x(1), x2 como x(2) e assim por diante.
Digite a função F1: (x(1)^4+0.06823*x(1))-(x(2)^4+0.05848*x(2))-0.01509
Digite a função F2: (x(1)^4+0.05848*x(1))-(2*x(2)^4+0.11696*x(2))
Entrada da matriz Jacobiana
Derivada parcial de F1 em relação a x1: 4*x(1)^3+0.06823
Derivada parcial de F1 em relação a x2: -4*x(2)^3-0.05848
Derivada parcial de F2 em relação a x1: 4*x(1)^3+0.05848
Derivada parcial de F2 em relação a x2: -8*x(2)^3-0.11696
Digite o vetor coluna x (estimativa inicial): [0.3;0.3]
Digite o erro que deseja-se obter: 0.0001
i = 1.000000, erro = 0.080551, x =0.292935 0.219449
i = 2.000000, erro = 0.017523, x =0.292792 0.201926
i = 3.000000, erro = 0.007423, x =0.292786 0.194503
i = 4.000000, erro = 0.003426, x =0.292786 0.191076
i = 5.000000, erro = 0.001633, x =0.292786 0.189444
i = 6.000000, erro = 0.000789, x =0.292786 0.188655
i = 7.000000, erro = 0.000384, x =0.292786 0.188271
i = 8.000000, erro = 0.000187, x =0.292786 0.188084
i = 9.000000, erro = 0.000091, x =0.292786 0.187992
Solução:
x =
0.292786027791105
0.187992303451877

Observa-se que o método de Newton modificado atingiu um erro abaixo do estipulado


após a nona iteração. A solução obtida neste método foi de 0,29786 para T1 e 0,18799 para
T2 , valor praticamente igual àquele obtido pelo método de Newton.

3.2 Exercício NL2


Descrição do exercício: A concentração de um poluente num lago depende do
tempo t e é dada por:
C(t) = 70eβt + 20eωt

Efetuaram-se algumas medidas que foram registradas na Tabela 4.


Utilize o método de Newton para determinar β e ω. Considere para aproximação
inicial o ponto (β, ω)(1) = (−1, 9; −0, 15), efetue duas iterações e apresente uma estimativa
Capítulo 3. Sistemas Não-Lineares 23

de erro relativo.

Tabela 4 – Medidas da concentração de poluente.

t 1 2
C(t) 27,5702 17,6567
Fonte: Exercício exposto em aula.

Resolução:
Para a resolução deste exercício não serão realizadas somente as duas primeiras
iterações, mas serão realizadas iterações até atingir um erro de 0,0001. Para a resolução
deste exercício primeiramente deve-se escrever um sistema de equações a partir da equação
dada e dados da Tabela 4. Substituindo os valores de concentração no tempo 1 e no tempo
2 na equação, além de substituir o próprio tempo na equação, as duas equações abaixo
são obtidas: 
 70eβ + 20eω = 27, 5702
 70e2β + 20e2ω = 17, 6567

A partir do sistema de equações acima, as equações F2 e F2 são escritas:

F1 = 70eβ + 20eω − 27, 5702


F2 = 70e2β + 20e2ω − 17, 6567

A partir das funções acima a matriz Jacobiana pode ser calculada. A matriz Jacobiana é
dada por:  
β ω
70e 20e
J = 
140e2β 40e2ω
Com as funções F e a matriz J, o sistema pode ser escrito no formato J(x(k) )∆x = −F (x(k) )
e pode ser solucionado. Ao executar o programa do método de Newton e inserir os dados
de entrada requisitados,considerando que T1 = x1 e T2 = x2 , a seguinte tela é exibida:

>> newtonnl
Primeiramente, digite o número de equações que compõem o sistema: 2
Digite a equação de cada linha.\n
Por favor, digitar x1 como x(1), x2 como x(2) e assim por diante.
Digite a função F1: 70*exp(x(1))+20*exp(x(2))-27.5702
Digite a função F2: 70*exp(2*x(1))+20*exp(2*x(2))-17.6567
Entrada da matriz Jacobiana
Derivada parcial de F1 em relação a x1: 70*exp(x(1))
Derivada parcial de F1 em relação a x2: 20*exp(x(2))
Derivada parcial de F2 em relação a x1: 140*exp(2*x(1))
Derivada parcial de F2 em relação a x2: 40*exp(2*x(2))
Capítulo 3. Sistemas Não-Lineares 24

Digite o vetor coluna x (estimativa inicial): [-1.9;-0.15]


Digite o erro que deseja-se obter: 0.0001
i = 1.000000, erro = 0.098732, x =-1.998732 -0.096559
i = 2.000000, erro = 0.003428, x =-2.000014 -0.099987
i = 3.000000, erro = 0.000013, x =-2.000002 -0.100000
Solução:
x =
-2.000001586525961
-0.100000174347558

Após as três primeiras iterações o método de Newton já alcança o erro desejado. Observa-se
que o valor de β aproxima-se com várias casas decimais de -2 e o valor de ω aproxima-se
de -0,1.
Para o método de Newton modificado a jacobiana é calculada nos pontos x(0) e
é mantida nas demais iterações. Após a execução do programa e inserção dos dados de
entrada, a seguinte tela é exibida:

>> newtonmod
Primeiramente, digite o número de equações que compõem o sistema: 2
Digite a equação de cada linha.\n
Por favor, digitar x1 como x(1), x2 como x(2) e assim por diante.
Digite a função F1: 70*exp(x(1))+20*exp(x(2))-27.5702
Digite a função F2: 70*exp(2*x(1))+20*exp(2*x(2))-17.6567
Entrada da matriz Jacobiana
Derivada parcial de F1 em relação a x1: 70*exp(x(1))
Derivada parcial de F1 em relação a x2: 20*exp(x(2))
Derivada parcial de F2 em relação a x1: 140*exp(2*x(1))
Derivada parcial de F2 em relação a x2: 40*exp(2*x(2))
Digite o vetor coluna x (estimativa inicial): [-1.9;-0.15]
Digite o erro que deseja-se obter: 0.0001
i = 1.000000, erro = 0.098732, x =-1.998732 -0.096559
i = 2.000000, erro = 0.003843, x =-1.999522 -0.100402
i = 3.000000, erro = 0.000486, x =-2.000008 -0.099948
i = 4.000000, erro = 0.000058, x =-1.999996 -0.100006
Solução:
x =
-1.999996481586924
-0.100006286300118

No método de Newton modificado o erro foi atingido após a terceira iteração. Observa-se
Capítulo 3. Sistemas Não-Lineares 25

que o valor de β obtido foi de -1,99999 que pode ser aproximado a -2, já o valor de α
obtido foi de -0,1, valores que são praticamente identicos àqueles obtidos pelo método de
Newton.

3.3 Exercício NL3


Descrição do exercício: Para combater um vírus que infectou um grupo de indiví-
duos vai ser administrado um composto químico sintetizado com base em duas substâncias
elementares x1 e x2 . Sabe-se que se forem administrados α miligramas de composto a
cada indivíduo, a concentração (mg/litro) de cada uma das substâncias elementares na
circulação sanguínea é dada implicitamente (para α ∈ [0, 5]) pelo sistema de equações:

 16x1 − cos(α(x2 − 2x1 )) = 0
 16x2 + 0, 75sen(α(−x2 − 3x1 )) = 0

Para α = 1, determine x1 e x2 usando o método iterativo mais adequado. Use a seguinte


aproximação inicial: x1 = (0, 1; 0, 01)T e termine o processo iterativo considerando x2 =
0, 05(1 iteração).
Resolução:
Como o problema é resolvido computacionalmente, considera-se um erro de 0,0001
para os cálculos.
Para α = 1, as equações F1 e F2 podem ser escritas da seguinte forma:

F1 = 16x1 − cos(x2 − 2x1 )


F2 = 16x2 + 0, 75sen(−x2 − 3x1 )

A partir das funções acima a matriz Jacobiana pode ser calculada. A matriz Jacobiana é
dada por:  
16 − 2sen(x 2 − 2x 1 ) sen(x 2 − 2x 1 )
J = 
−2, 25cos(−x2 − 3x1 ) 16 − 0, 75cos(−x2 − 3x1 )
Com as funções F e a matriz J, o sistema pode ser escrito no formato J(x(k) )∆x = −F (x(k) )
e pode ser solucionado. Ao executar o programa do método de Newton e inserir os dados
de entrada requisitados a seguinte tela é exibida:

>> newtonnl
Primeiramente, digite o número de equações que compõem o sistema: 2
Digite a equação de cada linha.\n
Por favor, digitar x1 como x(1), x2 como x(2) e assim por diante.
Digite a função F1: 16*x(1)-cos(x(2)-2*x(1))
Digite a função F2: 16*x(2)+0.75*sin(-x(2)-3*x(1))
Capítulo 3. Sistemas Não-Lineares 26

Entrada da matriz Jacobiana


Derivada parcial de F1 em relação a x1: 16-2*sin(x(2)-2*x(1))
Derivada parcial de F1 em relação a x2: sin(x(2)-2*x(1))
Derivada parcial de F2 em relação a x1: -2.25*cos(-x(2)-3*x(1))
Derivada parcial de F2 em relação a x2: 16-0.75*cos(-x(2)-3*x(1))
Digite o vetor coluna x (estimativa inicial): [0.1;0.01]
Digite o erro que deseja-se obter: 0.0001
i = 1.000000, erro = 0.037743, x =0.062257 0.009210
i = 2.000000, erro = 0.000170, x =0.062087 0.009099
i = 3.000000, erro = 0.000000, x =0.062087 0.009099
Solução:
x =
0.062086643432462
0.009099326753586

Após a execução do programa verifica-se que após a terceira iteração o erro já é inferior a
0,0001 no método de Newton para sistemas não-lineares. Os valores encontrados para as
substâncias x1 e x2 são 0,0620866 e 0,009099 respectivamente.
Para o método de Newton modificado a jacobiana é calculada nos pontos x(0) e
é mantida nas demais iterações. Após a execução do programa e inserção dos dados de
entrada, a seguinte tela é exibida:

>> newtonmod
Primeiramente, digite o número de equações que compõem o sistema: 2
Digite a equação de cada linha.\n
Por favor, digitar x1 como x(1), x2 como x(2) e assim por diante.
Digite a função F1: 16*x(1)-cos(x(2)-2*x(1))
Digite a função F2: 16*x(2)+0.75*sin(-x(2)-3*x(1))
Entrada da matriz Jacobiana
Derivada parcial de F1 em relação a x1: 16-2*sin(x(2)-2*x(1))
Derivada parcial de F1 em relação a x2: sin(x(2)-2*x(1))
Derivada parcial de F2 em relação a x1: -2.25*cos(-x(2)-3*x(1))
Derivada parcial de F2 em relação a x2: 16-0.75*cos(-x(2)-3*x(1))
Digite o vetor coluna x (estimativa inicial): [0.1;0.01]
Digite o erro que deseja-se obter: 0.0001
i = 1.000000, erro = 0.037743, x =0.062257 0.009210
i = 2.000000, erro = 0.000169, x =0.062088 0.009100
i = 3.000000, erro = 0.000001, x =0.062087 0.009099
Solução:
Capítulo 3. Sistemas Não-Lineares 27

x =
0.062086648404250
0.009099333313048

Observa-se que no método de Newton modificado, assim como no método de Newton, o


erro já é inferior a 0,0001 na terceira iteração. O valor encontrado para x1 é 0,0620866
e para x2 é 0,009099, valore iguais àqueles encontrados anteriormente para o método de
Newton.

Você também pode gostar