Escolar Documentos
Profissional Documentos
Cultura Documentos
Relatório EP
IME - USP
2022
Prof. Luis Carlos de Castro Santos
1. Introdução:
Como trabalho final da disciplina de Fundamentos de Análise Numérica, foi pedido
que encontrássemos a solução numérica do sistema não linear abaixo munidos de
ferramentas computacionais implementadas por nós, só sendo permitido usar funções e
métodos nativos para compararmos com os métodos implementados.
O EP pode ser dividido em três partes: a primeira consiste em implementar os
métodos de Newton e de Broyden para resolução do sistema e futuramente discorrer sobre
seus desempenhos, que será realizado numa seção futura deste mesmo relatório; a
segunda parte era pedido a mesma implementação citada, contudo era necessário calcular
as derivadas parciais de cada equação do sistema para montar a matriz Jacobiana usando
o método de diferenças finitas, usando como pretexto que nem sempre será fácil achar as
derivadas ou possível de calculá-las analiticamente de forma prática e rápida; na terceira
parte do EP era preciso encontrar o máximo de soluções possíveis para um segundo
sistema não linear, utilizando de quaisquer métodos para tal, desde que devidamente
justificados e implementados.
Para este trabalho foi usada a linguagem de programação Python e suas bibliotecas,
como numpy, time e scipy.optimize para fazer comparações, além de random e math.sqrt,
no IDE Spyder. O arquivo .py com o código será disponibilizado em conjunto com este
relatório.
1
2. Implementação:
onde uk é:
Portanto:
2
Isso faz com que seja muito menos custoso computacionalmente já que não é mais
preciso calcular a matriz Jacobiana a cada iteração e sim apenas uma aproximação dela.
O critério de parada é o mesmo que o método de Newton.
Para esses dois métodos foi implementada uma função que calcula a matriz
Jacobiana em cada ponto x. As derivadas parciais que geram a matriz Jacobiana do
primeiro sistema não linear foram calculadas analiticamente de forma manual para então
serem implementadas.
Para ambas aproximações foi escolhido um passo h de 0.1, visto que a computação
para valores muito menores que isso se torna muito menos eficiente por estar muito
próxima do zero comparado ao ganho real de performance dos métodos de resolução
numérica do sistema. Contudo é possível mudar o valor de h facilmente.
Depois de calculadas as derivadas parciais e montada a matriz Jacobiana em cada
caso, o programa segue da mesma maneira que descrita no item anterior.
3
2.3. Terceira Parte:
Na terceira parte do EP foi implementado o segundo sistema da mesma maneira
que o primeiro, fornecendo um vetor x com as coordenadas de um ponto e retornando um
vetor fx com os resultados. Por uma escolha de performance, que será melhor explicada
mais a frente, foi decidido calcular manualmente as derivadas parciais do sistema para
montar a matriz Jacobiana da mesma forma que foi realizada na primeira parte, aplicando
posteriormente o método de Newton.
É importante destacar que este processo foi realizado para um intervalo específico
de valores para as coordenadas do vetor x, visto que antes foi realizado uma análise quanto
às possíveis soluções do sistema em questão que será melhor detalhada mais adiante.
3. Observações e Resultados:
3.1. Sistema 1:
No primeiro experimento, com a implementação descrita em 2.1, foi obtido os
seguintes resultados quanto a performance de cada método:
Como esperado, o Método de Newton convergiu com muito menos iterações com
um desempenho um pouco melhor em relação ao tempo, mas que ambos têm
aproximadamente o mesmo tempo médio por iteração. Isso provavelmente se dá pelo fato
do método de Broyden calcular apenas uma aproximação da matriz Jacobiana, o que
aumenta o número de iterações para ter uma aproximação com o mesmo erro. Embora
computacionalmente seja mais custoso calcular o Jacobiano em si do que uma
aproximação, neste caso infere-se que esse custo computacional maior compensa bastante
já que o método de Newton chega numa aproximação mais rápido e com menos iterações.
Todas as funções calcularam a mesma aproximação numérica do sistema com um
tol de 1e-10, o que demonstra que ambos são algoritmos bastante eficientes.
Quando se usa diferenças finitas para calcular o Jacobiano o comportamento é
bastante semelhante. Abaixo os resultados obtidos:
4
convergiu bastante rapidamente. No de primeira ordem teve um desempenho bastante ruim
no tempo comparado ao mesmo processo usando a matriz Jacobiana normalmente.
O método de Broyden foi particularmente problemático, visto que além de levar mais
tempo e iterações para convergir, foi preciso mudar seu ponto inicial para ter um resultado
satisfatório.
Com exceção do método de Broyden usando diferenças finitas, que iniciou no ponto
(10, 30, 10, 10, 10), todos os outros métodos começaram com no ponto (10, 10, 10, 10, 10).
É importante destacar que houve uma piora quanto aos tempos de execução em relação ao
experimento anterior, mesmo quando houve uma melhora bastante significativa no número
de iterações.
3.2. Sistema 2:
Dado que o segundo sistema de equações é:
● Caso 1: se x1 = 0.
5
Então temos as seguintes soluções:
- Se x2 = 0 então x = (0, 0, ±1, ±1, ±x6 , x6).
- Se x4 = 0 então x = (0, ±1, ±1, 0, 0 , 0).
2
- Se x6 = 0 então x = (0, x2 , ±1, ± 1 − 𝑥2 , 0, 0).
● Caso 2: se x2 = 0.
● Caso 3: se x5 = 0.
Com isso falta encontrar as soluções para xi ≠ 0 e que estejam no interior das
circunferências descritas nas duas primeiras equações, já sendo possível utilizar dos
métodos computacionais aqui implementados.
Multiplicando por 3 as duas últimas equações e depois somando com a terceira e
quarta equação obtemos:
6
sendo que:
7
4. Considerações Finais:
5. Referências:
[1] BURDEN, R. L.; FAIRES, J. D. Numerical Analysis. 9th ed. Boston: Brooks/Cole. 2010.
[3] Solving a non-linear system of equations in Python using Newton’s Method. Stack
Overflow. 2018. Disponível em:
https://stackoverflow.com/questions/52020775/solving-a-non-linear-system-of-equations-in-p
ython-using-newtons-method. Acesso em: 3 jan 2023.
[4] VALLE, Marcos Eduardo. Aula 10 sistemas Não Lineares e o Método de Newton.
UNICAMP. Disponível em:
https://www.ime.unicamp.br/~valle/Teaching/2015/MS211/Aula10.pdf. Acesso em: 3 Jan
2023.
[5] VALLE, Marcos Eduardo. Aula 11 Variações do Método de Newton para Sistemas
Não Lineares. UNICAMP. Disponível em:
https://www.ime.unicamp.br/~valle/Teaching/2015/MS211/Aula11.pdf. Acesso em: 3 Jan
2023.