Você está na página 1de 21

UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA

CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA – CCET

LABORATÓRIO DE ELETRÔNICA APLICADA 1

CURSO: ENGENHARIA ELÉTRICA

PROFESSOR: ANSELMO BARBOSA

RAFAEL THOMÉ LEITE – 2020022312

PROJETO COMPUTACIONAL:
SOLUÇÃO DE SISTEMAS NÃO-LINEARES VIA MÉTODOS DE NEWTON-
RAPHSON E QUASI-NEWTON USANDO O MATLAB

SÃO LUÍS – MA

2023
1. Introdução

Este projeto trata do emprego de métodos numéricos para a solução de sistemas de


equações lineares e não-lineares de um ponto de vista computacional. Primeiramente, serão
analisados os métodos de soluções de sistemas lineares Gauss e Gauss-LU. Em seguida, serão
discutidos métodos iterativos para a solução de sistemas não-lineares: método de Newton-
Raphson e Quasi-Newton (para os propósitos desse projeto, o método Quase-Newton
escolhido é o método Newton modificado). Por último, esses métodos serão testados
computacionalmente utilizando-se do software MATLAB por meio de uma série de
exemplos.

2. Sistemas lineares

Uma equação é linear se cada termo contém não mais do que uma variável e cada
variável aparece na primeira potência. Por exemplo, 3x + 4y − 10z = −3 é linear, mas xy − 3z
= −3 não é, já que o primeiro termo contém duas variáveis. Também x3 + y − z = 0 não é
linear, pois o primeiro termo contém uma variável elevada ao cubo. (FRANCO, 2007)

Um conjunto de n equações de n variáveis é chamado de sistema linear. A solução de


um sistema linear é um conjunto de valores para as n variáveis tal que, se esses valores forem
substituídos nas equações, todas elas se satisfazem simultaneamente.

Os sistemas lineares podem ser descritos em forma de multiplicação matricial, como


por exemplo:
A seguir, discutiremos os métodos de Gauss e Gauss-LU com pivotamento parcial
para a solução de sistemas de equações lineares

i) Método de Gauss

O método de Gauss, ou eliminação gaussiana, é um método que resolve


equações lineares por meio do chamado escalonamento da matriz aumentada do
sistema. O escalonamento consiste na manipulação algébrica da matriz por meio de
operações elementares (operações que preservam a mesma solução do sistema linear),
transformando a matriz dos coeficientes numa matriz triangular (uma matriz em que
todos os elementos acima ou abaixo da diagonal Ann são iguais a 0). Uma vez
escalonada a matriz, o sistema pode ser resolvido facilmente utilizando-se das
substituições regressivas.

As operações elementares são:

1. Multiplicação de uma linha por uma constante não-nula.


2. Substituição de uma linha por ela mesma somada a um múltiplo de
outra linha
3. Permutação de 2 linhas.

O pivotamento parcial consiste em permutar as linhas da matriz de forma a


selecionar o elemento de maior módulo (pivô) a cada passo do escalonamento. Assim,
se subtrai cada linha do sistema por um múltiplo da linha pivô de forma a zerar todos
os elementos abaixo da diagonal principal.

Dessa forma, um exemplo de eliminação gaussiana com pivotamento parcial


para a solução de sistema linear consiste em:

x1 + 2x2 + 3x3 = 10 2x1

+ 3x2 + x3 = 5

3x1 + 2x2 + x3 = 6
1 2 3 10 1 2 3 10 1 2 3 10
2 3 1 5 → 0 −1 −5 −15 → 0 −1 −5 −15
3 2 1 6 0 −4 −8 −24 0 0 12 36

1º passo: L2 = L2 – 2L1; L3 – 3L1 = L3;

1º passo: L3 = L3 – 4L1;

Assim temos o seguinte sistema que pode ser facilmente resolvido por
substituições regressivas:

x1 + 2x2 + 3x3 = 10 → x1 = 1

-1x2 – 5x3 = -15 → x2 = 0

12x3 = 36 → x3 = 3

ii) Método de Gauss-LU

Seja um sistema linear descrito em forma matricial por Ax = b. O método de


Gauss-LU (do inglês Lower-Upper) consiste em fatorar a matriz A como o produto de
uma matriz triangular inferior L e uma matriz triangular superior U. Assim, o sistema
pode ser reescrito como:

Ax = b; A = LU;

(LU)x = b;

L(Ux) = b;

Ly = b e Ux = y;

De forma que a solução do sistema consistirá na solução de 2 sistemas lineares


triangulares

Para uma dada matriz A; U será a matriz A após o escalonamento, enquanto os


termos Lij serão os multiplicadores usados para zerar os termos abaixo da
diagonal principal no escalonamento. Os elementos da diagonal principal de L
serão todos iguais a 1.
Resolvendo o mesmo exemplo por meio da decomposição LU, temos:

x1 + 2x2 + 3x3 = 10

2x1 + 3x2 + x3 = 5

3x1 + 2x2 + x3 = 6

Primeiramente, escalona-se a matriz dos coeficientes tal qual no método da


eliminação gaussiana:

3 2 1 3 2 1
1 2 3 2 1 5
1 → 0 →U= 0 3 −5
2 3 3 3
4 8 12
3 2 1 0 0 0
3 3 5

Em seguida, identifica-se os multiplicadores


2 1 2 1
1º passo: L2 = L2 – 3L3; L1 – 3L3 = L1; Portanto, L21 = 3; L31 = 3
4
2º passo: L2 = L – 4L1; Portanto, L23 = 5;

1 0 0
2
Logo, L = 3 1 0 ;
1 4
1
3 5

Em seguida, resolve-se o sistema Ly = b por meio de substituições sucessivas.

y1 = 10

2y1 + y2 = 5 → y2 = 5 – 2*10 → y2 = -15

3y1 + 4y2 + y3 = 6 → y3 = 6 – 4*(-15) – 3*(10) → y3 = 36

Por último, resolve-se o sistema Ux = y por meio de substituições regressivas.

12x3 = 36 → x3 = 3
-x2 – 5x3 = -15 → x2 = -(-15+5*3) → x2 = 0 x1 +

2x2 + 3x3 = 10 → x1 = 10 – 2*0 – 3*3 → x1 = 1

3. Métodos de Newton-Raphson e Newton-Modificado para a solução de sistemas

de equações não-lineares

Na seção anterior, analisamos 2 métodos básicos para a solução de sistemas


lineares, nesta seção estudaremos métodos para a obtenção de soluções de
sistemas não-lineares, isto é, para um sistema constituído por uma combinação
de funções algébricas e funções transcendentes. Por exemplo:
sin 𝑥1 + 𝑥2 = 0
{𝑥12 + 3𝑥23 − 1 = 0

Métodos iterativos são aqueles em que, por meio de um processo que parte de
uma aproximação que passa por um refinamento conforme cada repetição
(iteração). Analisaremos a seguir dois métodos para solucionar sistemas de
equações não lineares: método de Newton-Raphson e método de Newton
modificado.

i) Método de Newton-Raphson

O método de Newton-Raphson é um método utilizado para calcular as raízes


de uma função real, mas que pode ser generalizado para encontrar a solução de
sistemas de equações não-lineares. O método consiste em assinalar uma aproximação
inicial x0 para a raiz de uma função real, e a partir de uma série de iterações da
equação:

𝑥𝑛+1 = 𝑥𝑛 − 𝑓 𝑓′((𝑥𝑥𝑛𝑛)) , 𝑛 ∈ 𝑁 , aproxima-se a solução f(x*) = 0

O processo pode ser geometricamente interpretado da seguinte forma:


O método de Newton-Raphson pode ser generalizado para, ao invés de resolver
uma equação de uma variável f(x) = 0, resolver um sistema de equações da forma:

𝑓1(𝑥1, 𝑥2, … , 𝑥𝑛) = 0

{𝑓2(𝑥1, 𝑥2, … , 𝑥𝑛) = 0 , o sistema de equações pode ser definido como



𝑓𝑛(𝑥1, 𝑥2, … , 𝑥𝑛) = 0
um vetor F(X), sendo X = (𝑥1, 𝑥2, … , 𝑥𝑛)𝑇 o nome dado ao vetor-solução.

Para tal, expandimos a função em torno de x* por sua série de Taylor e


consideramos apenas o primeiro termo. Isso se dá pois, como o processo é iterativo, os
termos subsequentes são considerados erro E(X), de forma que este diminuirá
conforme as iterações do passo:

𝐹(𝑋) = 𝐹(𝑋𝑘) + 𝐹′(𝑋𝑘)(𝑋 − 𝑋𝑘) + 𝐸(𝑋)

Desconsiderando o erro e tornando F(X) = 0, temos:

𝐹(𝑋𝑘) + 𝐹′(𝑋𝑘)(𝑋 − 𝑋𝑘) = 0

Sendo, a derivada do sistema a matriz Jacobiana J(X) (Matriz de derivadas

parciais do sistema), temos:

𝐹(𝑋𝑘) + 𝐽(𝑋𝑘)(𝑋 − 𝑋𝑘) = 0

Isolando X (nossa nova solução):

𝑋 = 𝑋𝑘 − 𝐽−1(𝑋𝑘)𝐹(𝑋𝑘)

Assim, X será a nossa solução atualizada (𝑋𝑘+1), e a equação de iteração será:


𝑿𝒌+𝟏 = 𝑿𝒌 − 𝑱−𝟏(𝑿𝒌)𝑭(𝑿𝒌)

O método pode ser desmembrado em 2 partes alternativamente:

𝑱(𝑿𝒌)𝑺𝒎 = 𝑭(𝑿𝒌);

𝑿𝒌+𝟏 = 𝑿𝒌 + 𝑺𝒎 𝒌 = 𝟎, 𝟏, 𝟐 …

A sequência 𝑋0 → 𝑋1 → 𝑋2 → ⋯ 𝑋, nos dará a solução, dada a condição de


convergência.

ii) Método de Newton modificado

O método de Newton-Raphson é computacionalmente caro, pois requer, a cada


iteração, a atualização da matriz jacobiana e a resolução de um sistema linear de Θ(n3).
Então há situações em que é conveniente usar métodos que, embora convertam mais
lentamente, tenham uma relação de ‘custo-benefício’ computacionalmente menos
custosa. Um desses métodos é o método de Newton Modificado.

No método de Newton modificado, simplesmente se utiliza J(𝑋0) todo passo ao


invés de J(𝑋𝑘).

O método de Newton modificado define a equação iterativa como:

1º passo: Fatoração LU:

𝐿𝑈 = −𝑃𝐽(𝑋0) (Θ(n3) operações)

2º passo: Resolver o sistema triangular inferior:

𝐿𝑦 = −𝑃𝐹(𝑋𝑘) (Θ(n2) operações)

3º passo: Resolver o sistema triangular superior:

𝑈𝑆𝑘 = 𝑦 (Θ(n2) operações)

4º passo: Atualizar a solução

𝑋𝑘+1 = 𝑋𝑘 + 𝑆𝑚
Dessa forma, o método de Newton modificado tem um custo computacional
menor que o do método de Newton-Raphson.

4. Resultados

Nesta seção, testaremos os algoritmos analisados previamente com o sistema


tridiagonal de Broyden, descrito da seguinte forma:

𝐹1(𝑥) = 𝑥1(3 − 0.5𝑥1) − 2𝑥2 + 1


{𝐹𝑖(𝑥) = 𝑥𝑖(3 − 0.5𝑥𝑖) − 𝑥𝑖−1 + 2𝑥𝑖+1 + 1

𝐹𝑝(𝑥) = 𝑥𝑝(3 − 0.5𝑥𝑝) − 2𝑥𝑝−1 + 1

Sendo o ponto de partida 𝑥𝑖(0) = −1 para i = 1, 2, ... , p

Para a execução dos algoritmos, foi utilizada a plataforma MatLab, e tolerância de


𝜀 = 1 × 10−6 para ||F(x)||∞ em todos os exemplos. Para os algoritmos, sugere-se que se
divida o programa do MatLab em funções e sub-rotinas, como por exemplo: construção
da matriz jacobiana, construção do sistema de Broyden para um dado p, etc.

i) Grau e o padrão de esparsidade da matriz jacobiana

O grau e o padrão de esparsidade da matriz jacobiana para p = 1000. Com base


nestes resultados identifique se a matriz jacobiana é densa ou esparsa.
O grau de esparsidade é um número que indica a medida de elementos nulos de
uma matriz, e pode ser descrito pela seguinte fórmula:
𝑝2−𝑁
𝐺𝑠 = 𝑝2 , onde p é a ordem da matriz e N o número de elementos não-nulos

Na matriz jacobiana do sistema de Broyden, temos 2 elementos não-nulos na


primeira e última linha, e 3 elementos não-nulos nas demais linhas. Dessa forma:

N = 3(p-2)+4, logo: 𝐺𝑠 = 𝑝 2𝑝−2𝑁 = 𝑝2−(𝑝32𝑝−2) , 𝑝𝑎𝑟𝑎 𝑝 = 1000;

𝐺𝑠 = = 99,7%

Ela é considerada, portanto, matriz esparsa.


ii) Solução do sistema de Broyden: Método de Newton-Raphson
A solução do sistema de Broyden para p = 5, 10 e 20 usando o Método de
Newton-Raphson. Apresente o vetor solução 𝑥, os valores finais de||F(x)||∞ e
também o número de iterações realizadas.

Para p = 5:
||F(x)||∞ = 6.641081e-09
Vetor solução: [ -0.968354 -1.186958 -1.148478 -0.958989 -0.594159]
Número de iterações: 3

Para p = 10:
||F(x)||∞ = 6.309758e-07
Vetor solução: [-1.030108 -1.310443 -1.379925 -1.390714 -1.379630 -
1.349932 -1.290662 -1.177478 -0.967501 -0.596526]
Número de iterações: 3

Para p = 20:
||F(x)||∞ = 1.814549e-12
Vetor solução: [-1.032389 -1.315040 -1.388699 -1.407650 -1.412495 -
1.413703 -1.413946 -1.413878 -1.413607 -1.413043 -1.411933 -1.409768 -
1.405546 -1.397325 -1.381344 -1.350381 -1.290782 -1.177512 -0.967511 -
0.596529]
Número de iterações: 4

iii) Solução do sistema de Broyden: Método de Newton modificado

A solução do sistema de Broyden para p = 5, 10 e 20 usando o Método de


Newton Modificado. Apresente o vetor solução 𝑥, os valores finais de ||F(x)||∞ e
também o número de iterações realizadas.
Para p = 5:
||F(x)||∞ = 2.074581e-07
Vetor solução: [-0.968354 -1.186958 -1.148478 -0.958989 -0.594159]
Número de iterações: 7

Para p = 10:
||F(x)||∞ = 3.289333e-07
Vetor solução: [-1.030108 -1.310443 -1.379925 -1.390714 -1.379630 -
1.349932 -1.290662 -1.177478 -0.967501 -0.596526]
Número de iterações: 11

Para p = 20:
||F(x)||∞ = 4.393306e-07
Vetor solução: [-1.032389 -1.315040 -1.388699 -1.407650 -1.412495 -
1.413703 -1.413946 -1.413878 -1.413607 -1.413043 -1.411933 -1.409768 -
1.405546 -1.397325 -1.381344 -1.350381 -1.290782 -1.177512 -0.967511 -
0.596529]
Número de iterações: 14
Dessa forma, podemos notar que, embora o número de iterações e o valor
de ||F(x)||∞ seja diferente, as soluções são idênticas para todos os valores de p

iv) Comparação dos métodos Newton-Raphson, Método de Newton


Modificado com aqueles obtidos pela função nativa do MATLAB
A função fsolve é uma função nativa do MATLAB presente na
‘optimization toolbox’ que é capaz de resolver sistemas não-lineares a partir de
uma aproximação inicial, similarmente ao método de newton (MATHWORKS,
2023). x = fsolve(fun,x0) inicia em x0 e tenta resolver as equações fun(x) = 0, i.e.,
um vetor de zeros.

Comparação dos resultados obtidos nos itens (iv-2) e (iv-3) com aqueles
obtidos pela função nativa do MATLAB para a solução de sistemas não-lineares.
P=5 Newton_Raphson Newton fsolve
modificado
Número de 3 7 3
iterações:
X0 [-1 -1 -1 -1 -1] [-1 -1 -1 -1 -1] [-1 -1 -1 -1 -1]
Tolerância 1e-6 1e-6 1e-6
||F(x)||∞ 6.641081e-09 2.074581e-07 6.6392e-9

Solução [-0.968354 [-0.968354 [-0.968354


-1.186958 -1.186958 -1.186958
-1.148478 -1.148478 -1.148478
-0.958989 -0.958989 -0.958989
-0.594159] -0.594159] -0.594159]

P = 10 Newton_Raphson Newton fsolve


modificado
Número de 3 11 3
iterações:
X0 [-1 -1 -1 -1 ... -1] [-1 -1 -1 -1 ... -1] [-1 -1 -1 -1 .... -1]
Tolerância 1e-6 1e-6 1e-6
||F(x)||∞ 6.309758e-07 3.289333e-07 3.0453e-08
Solução [-1.030108 [-1.030108 [-1.030108
-1.310443 -1.310443 -1.310443
-1.379925 -1.379925 -1.379925
-1.390714 -1.390714 -1.390714
-1.379630 -1.379630 -1.379630
-1.349932 -1.349932 -1.349932
-1.290662 -1.290662 -1.290662
-1.177478 -1.177478 -1.177478
-0.967501 -0.967501 -0.967501
-0.596526] -0.596526] -0.596526]

P = 20 Newton_Raphson Newton fsolve


modificado
Número de 4 14 4
iterações:
X0 [-1 -1 -1 -1 ... -1] [-1 -1 -1 -1 ... -1] [-1 -1 -1 -1 .... -1]
Tolerância 1e-6 1e-6 1e-6
||F(x)||∞ 1.814549e-12 4.393306e-07 8.5744e-10
Solução [-1.030108 [-1.030108 [-1.030108
-1.310443 -1.310443 -1.310443
-1.379925 -1.379925 -1.379925
-1.390714 -1.390714 -1.390714
-1.379630 -1.379630 -1.379630
-1.349932 -1.349932 -1.349932
-1.290662 -1.290662 -1.290662
-1.177478 -1.177478 -1.177478
-0.967501 -0.967501 -0.967501
-0.596526] -0.596526] -0.596526]

v) Análise de custo computacional dos métodos Newton-Raphson,


Método de Newton Modificado, e função nativa do MATLAB

P = 1000 Tempo de processamento (segundos)


Newton-Raphson 150.4342
Newton modificado 130.434
fsolve 4.331

Utilizando-se do mecanismo “run+time” do software MATLAB, podemos


comparar o tempo de execução de cada um dos programas e, com isso, avaliar os custos
computacionais de cada método. Podemos observar que o método fsolve é dramaticamente
mais eficiente computacionalmente que o método de Newton-Raphson e Newton
modificado. Isso se dá pois o MATLAB mescla métodos não-lineares (Newton) com
métodos lineares internamente na função nativa. Os métodos de Newton e Newton
modificado apresentam complexidade muito alta pelo número excessivo de lógicas
condicionais dentro dos laços, que acarretam em uma maior lentidão do software do
MATLAB.
5. Conclusões
Uma variedade de problemas de engenharia pode ser resolvida através da análise
linear; entre eles podemos citar: determinação do potencial em redes elétricas, cálculo da
tensão na estrutura metálica da construção civil, cálculo da razão de escoamento num
sistema hidráulico com derivações, previsão da concentração de reagentes sujeitos a
reações químicas simultâneas. (FRANCO, 2007). E um número ainda maior de problemas
pode ser resolvido através da análise de sistemas não-lineares.
Dessa forma, o aprendizado dos métodos de Newton e Quasi-Newton são
essenciais para a engenharia. Os diferentes métodos têm diferentes vantagens e
desvantagens. O método de Newton-Raphson apresenta convergência com menor número
de iterações, porém tem um custo computacional muito elevado, enquanto o método de
Newton modificado demora mais a convergir, porém é computacionalmente mais barato.
Ademais, foi possível estudar a aplicação dos métodos no software MATLAB, que é de
grande auxílio para cálculos iterativos mais complexos. Porém é importante destacar que a
lógica desses algoritmos pode ser aplicada em um grande número de softwares e
linguagens de programação.
6. Referências
FRANCO, N. M. B, Cálculo Numérico. 10. Ed São Paulo; Pearson, 2007.
SOLVE SYSTEM OF NONLINEAR EQUATIONS - MATLAB FSOLVE (mathworks.com).
Disponível em: <https://www.mathworks.com/help/optim/ug/fsolve.html >. Acesso em: 24 de junho,
2023.
7. Apêndices
Códigos-fonte:

Você também pode gostar