Solução de sistemas não-lineares

Documentos relacionados
Prof. Wagner Hugo Bonat. Bacharelado em Estatística Universidade Federal do Paraná. 15 de outubro de 2018

Marina Andretta/Franklina Toledo. 18 de outubro de Baseado no livro Análise Numérica, de R. L. Burden e J. D. Faires.

Resolução Numérica de Equações Métodos Parte II

Lista de Exercícios de Métodos Numéricos

Cálculo Numérico. Santos Alberto Enriquez-Remigio FAMAT-UFU 2015

Resolução Numérica de Equações (Parte II)

Resolução Numérica de Equações Métodos Parte II

Capítulo 4 - Equações Não-Lineares

Aula 2- Soluções de Equações a uma Variável (zeros reais de funções reais)

TE231 Capitulo 2 Zeros de Funções; Prof. Mateus Duarte Teixeira

Modelagem Computacional. Parte 2 2

étodos uméricos ZEROS DE FUNÇÕES Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

étodos uméricos ZEROS DE FUNÇÕES DE UMA OU MAIS VARIÁVEIS Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Ana Paula. October 26, 2016

Aula 10 Sistemas Não-lineares e o Método de Newton.

Cálculo Numérico Ponto Fixo

Capítulo 6 - Equações Não-Lineares

Introdução aos Métodos Numéricos

Aula 6. Zeros reais de funções Parte 3

SME0300 Cálculo Numérico Aula 6

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Programação I Aula 7 Resolução numérica de equações

Zero de Funções ou Raízes de Equações

f(1) = 6 < 0, f(2) = 1 < 0, f(3) = 16 > 0 x [2, 3].

Introdução à Programação Aula 7 Resolução numérica de equações

Neste capítulo estamos interessados em resolver numericamente a equação

Métodos Numéricos - Notas de Aula

Introdução aos Métodos Numéricos

Cálculo Numérico BCC760 Raízes de equações algébricas e transcendentes

C alculo Num erico Ra ızes de Equa c oes Ana Paula Ana Paula C alculo Num erico

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

SME0300 Cálculo Numérico Aula 4

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Lista 1 - Cálculo Numérico - Zeros de funções

Resolução de sistemas de equações não-lineares: Método de Newton

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Raízes de uma função. Laura Goulart. 16 de Março de 2016 UESB. Laura Goulart (UESB) Raízes de uma função 16 de Março de / 1

Métodos Numéricos Zeros Newton-Raphson e Secante. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

CCI-22 CCI-22. 4) Equações e Sistemas Não Lineares. Matemática Computacional. Bissecção, Posição Falsa, Ponto Fixo, Newton-Raphson, Secante

Cálculo Numérico. Zeros de funções reais

Introdução aos Métodos Numéricos

Raízes de uma função. Laura Goulart. 14 de Março de 2019 UESB. Laura Goulart (UESB) Raízes de uma função 14 de Março de / 17

Solução aproximada de equações de uma variável

Introdução aos Métodos Numéricos

Parte 1: Exercícios Teóricos

Processamento de Imagens CPS755

UNIVERSIDADE FEDERAL DO ABC. 1 Existência e unicidade de zeros; Métodos da bissecção e falsa posição

Cálculo Numérico. que é denominado erro relativo. Temos então para os dados acima:

Cálculo Numérico. Aula 6 Método das Secantes e Critérios de Parada /04/2014

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Solução numérica de equações não-lineares

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Exercícios sobre zeros de funções Aula 7

Universidade Tecnológica Federal do Paraná

Equações não lineares

Resolução de Sistemas de

Andréa Maria Pedrosa Valli

EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL: PRIMEIRO BIMESTRE: EDGARD JAMHOUR. QUESTÃO 1: Indique as afirmativas verdadeiras.

Aula 6. Zeros reais de funções Parte 3

DCC008 - Cálculo Numérico

Introdução à Otimização de Processos. Prof. Marcos L Corazza Departamento de Engenharia Química Universidade Federal do Paraná

Cálculo Numérico. Aula 4 Zeros de Funções /04/2014. Prof. Rafael mesquita Adpt. por Prof. Guilherme Amorim

Artur M. C. Brito da Cruz. Escola Superior de Tecnologia Instituto Politécnico de Setúbal 2015/2016 1

Cálculo Numérico Algoritmos

Cálculo Numérico. que é denominado erro relativo. Temos então para os dados acima:

Métodos iterativos dão-nos uma valor aproximado para s. Sequência de valores de x que convergem para s.

Matemática Computacional Ficha 5 (Capítulo 5) 1. Revisão matéria/formulário

Universidade Federal do Rio Grande do Norte. Métodos Computacionais Marcelo Nogueira

C alculo Num erico Ra ızes de Equa c oes Ana Paula Ana Paula C alculo Num erico

Capítulo 05. Raízes: étodos Intervalares

Métodos Numéricos Professor Tenani - 3 / 42

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

AULA 5. Raízes de equações não lineares. Equilíbrio térmico de um painel solar. Método da bisseção. Laboratório Numérico 1

Métodos Numéricos Zeros Posição Falsa e Ponto Fixo. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

Método do Ponto Fixo

Introdução aos Métodos Numéricos

Fundamentos IV. Gustavo Vinhal. September 13, Escola de Ciências Exatas e Computação

2.3- Método Iterativo Linear (MIL)

Cálculo Numérico Faculdade de Ciências Sociais Aplicadas e Comunicação FCSAC Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU

Cálculo Numérico. Aula 5 Método Iterativo Linear e Newton-Raphson /04/2014

CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES

UNIVERSIDADE FEDERAL DO ABC

Equações Não Lineares. 35T12 Sala 3G4 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Semana 4 Zeros das Funções

Aula 4. Zeros reais de funções Parte 1

O método da falsa posição

SME Cálculo Numérico. Lista de Exercícios: Gabarito

Prof. MSc. David Roza José 1/37

Prof. Lorí Viali, Dr. PUCRS FAMAT: Departamento de Estatística. Curso: Engenharia de Produção

MINISTÉRlO DA EDUCACAO UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CAMPUS PATO BRANCO

Considere a função f(x). Para algum x a f (x) pode não existir. Suponha que. Max f(x) s. a a x b

Matemática Computacional - 2 o ano LEMat e MEQ

Encontre um valor aproximado para 3 25 com precisão de 10 5 utilizando o método da bissecção.

TP062-Métodos Numéricos para Engenharia de Produção Zeros: Introdução

UNIVERSIDADE FEDERAL DE PERNAMBUCO Lista de Exercícios / Cálculo Numérico 1ª Unidade

DCC008 - Cálculo Numérico

Transcrição:

Solução de sistemas não-lineares Prof. Wagner H. Bonat Universidade Federal do Paraná Departamento de Estatística Laboratório de Estatística e Geoinformação LEG/DEST/UFPR Sistemas não-lineares 1 / 34

Sumário 1 2 Sistemas de equações LEG/DEST/UFPR Sistemas não-lineares 2 / 34

Equações não-lineares Equações precisam ser resolvidas frequentemente em todas as áreas da ciência. Equação de uma variável: f (x) = 0. A solução ou raiz é um valor numérico de x que satisfaz a equação. fx(x) 5.0 5.2 5.4 5.6 5.8 6.0 Sem solução fx(x) 0.0 0.2 0.4 0.6 0.8 1.0 Uma solução fx(x) 1 0 1 2 3 Uma solução fx(x) 10 0 10 20 30 Várias soluções 1.0 0.5 0.0 0.5 1.0 x 1.0 0.5 0.0 0.5 1.0 x 0 1 2 3 4 5 x 5 4 3 2 1 0 1 2 x A solução de uma equação do tipo f (x) = 0 é o ponto onde f (x) cruza ou toca o eixo x. LEG/DEST/UFPR Sistemas não-lineares 3 / 34

Solução de equações não lineares Quando a equação é simples a raiz pode ser determinada analiticamente. Exemplo trivial 3x + 8 = 0 x = 8 3. Em muitas situações é impossível determinar a raiz analiticamente. Exemplo não-trivial 8 4, 5(x sin(x)) = 0 x =? Solução numérica de f (x) = 0 é um valor de x que satisfaz à equação de forma aproximada. Métodos numéricos para resolver equações são divididos em dois grupos: 1 Métodos de confinamento; 2 Métodos abertos. LEG/DEST/UFPR Sistemas não-lineares 4 / 34

Métodos de confinamento Identifica-se um intervalo que possui a solução. Usando um esquema numérico, o tamanho do intervalo é reduzido sucessivamente até uma precisão desejada. Passo 1 Passo 2 Passo 3 fx(x) 0.6 0.4 0.2 0.0 0.2 0.4 0.1 0.2 0.3 0.4 0.5 x fx(x) 0.6 0.4 0.2 0.0 0.2 0.4 0.1 0.2 0.3 0.4 0.5 x fx(x) 0.6 0.4 0.2 0.0 0.2 0.4 0.1 0.2 0.3 0.4 0.5 x LEG/DEST/UFPR Sistemas não-lineares 5 / 34

Métodos abertos Assume-se uma estimativa inicial. Tentativa inicial deve ser próxima a solução. Usando um esquema numérico a solução é melhorada. O processo para quando a precisão desejada é atingida. Passo 1 Passo 2 Passo 3 fx(x) 0.6 0.4 0.2 0.0 0.2 0.4 0.1 0.2 0.3 0.4 0.5 x fx(x) 0.6 0.4 0.2 0.0 0.2 0.4 0.1 0.2 0.3 0.4 0.5 x fx(x) 0.6 0.4 0.2 0.0 0.2 0.4 0.1 0.2 0.3 0.4 0.5 x LEG/DEST/UFPR Sistemas não-lineares 6 / 34

Erros em soluções numéricas Soluções numéricas não são exatas. Critério para determinar se uma solução é suficientemente precisa. Seja x ts a solução verdadeira e x ns uma solução numérica. Quatro medidas podem ser consideradas para avaliar o erro: 1 Erro real x ts x ns. 2 Tolerância em f (x) f (x ts ) f (x ns ) = 0 ɛ = ɛ. 3 Tolerância na solução: Tolerância máxima da qual a solução numérica pode desviar da solução verdadeira. Útil em geral quando métodos de confinamento são usados b a 2. 4 Erro relativo estimado: xns n xns n 1 xns n 1. LEG/DEST/UFPR Sistemas não-lineares 7 / 34

Método da bisseção Método de confinamento. Sabe-se que dentro de um intervalo [a, b], f (x) é contínua e possui uma solução. Neste caso f (x) tem sinais opostos nos pontos finais do intervalo. fx(x) 1.0 0.5 0.0 0.5 1.0 a f(b) < 0 f(a) > 0 x ns b fx(x) 1.0 0.5 0.0 0.5 1.0 a f(b) > 0 x ns f(a) < 0 b 0.2 0.4 0.6 0.8 1.0 x 0.2 0.4 0.6 0.8 1.0 x LEG/DEST/UFPR Sistemas não-lineares 8 / 34

Algoritmo: Método da bisseção Encontre [a, b], tal que f (a)f (b) < 0. Calcule a primeira estimativa x ns (1) usando x ns (1) = a+b 2. Determine se a solução exata está entre a e x ns (1) ou entre x ns (1) e b. Isso é feito verificando o sinal do produto f (a)f (x (1) ns ): 1 Se f (a)f (x ns (1) ) < 0, a solução está entre a e x ns (1). 2 Se f (a)f (x ns (1) ) > 0, a solução está entre x ns (1) e b. Selecione o subintervalo que contém a solução e volte ao passo 2. Repita os passos 2 a 4 até que a tolerância especificada seja satisfeita. LEG/DEST/UFPR Sistemas não-lineares 9 / 34

Implementação R: Método da bisseção bissecao <- function(fx, a, b, tol = 1e-04, max_iter = 100) { fa <- fx(a); fb <- fx(b) if(fa*fb > 0) stop("solução não está no intervalo") solucao <- c() sol <- (a + b)/2 solucao[1] <- sol limites <- matrix(na, ncol = 2, nrow = max_iter) for(i in 1:max_iter) { test <- fx(a)*fx(sol) if(test < 0) { solucao[i+1] <- (a + sol)/2 b = sol } if(test > 0) { solucao[i+1] <- (b + sol)/2 a = sol } if( abs( (b-a)/2) < tol) break sol = solucao[i+1] limites[i,] <- c(a,b) } out <- list("tentativas" = solucao, "Limites" = limites, "Raiz" = solucao[i+1]) return(out)} LEG/DEST/UFPR Sistemas não-lineares 10 / 34

Exemplo Encontrando a raiz de D(θ) = 2n [ log ( ) ] ˆθ + ȳ(θ θ ˆθ) 3.84. # Implementando a função ftheta <- function(theta){ dd <- 2*length(y)*(log(theta.hat/theta) + mean(y)*(theta - theta.hat)) return(dd - 3.84) } # Resolvendo numericamente set.seed(123) y <- rexp(20, rate = 1) theta.hat <- 1/mean(y) Ic_min <- bissecao(fx = ftheta, a = 0, b = theta.hat) Ic_max <- bissecao(fx = ftheta, a = theta.hat, b = 3) # Solução aproximada c(ic_min$raiz, Ic_max$Raiz) # [1] 0.7684579 1.8545557 LEG/DEST/UFPR Sistemas não-lineares 11 / 34

Método regula falsi Método de confinamento. Sabe-se que dentro de um intervalo [a, b], f (x) é contínua e possui uma solução. Ilustração. fx(x) 1.0 0.5 0.0 0.5 1.0 a1 f(a1) f(b1) b1 0.2 0.4 0.6 0.8 1.0 x LEG/DEST/UFPR Sistemas não-lineares 12 / 34

Algoritmo: Método regula falsi Escolha os pontos a e b entre os quais existe uma solução. Calcule a primeira estimativa: x (i) = af (b) bf (a) f (b) f (a). Determine se a solução está entre a e x i, ou entre x (i) e b. 1 Se f (a)f (x (i) ) < 0, a solução está entre a e x (i). 2 Se f (a)f (x (i) ) > 0, a solução está entre x (i) e b. Selecione o subintervalo que contém a solução como o novo intervalo [a, b] e volte ao passo 2. Repita passos 2 a 4 até convergência. LEG/DEST/UFPR Sistemas não-lineares 13 / 34

Implementação R: Método regula falsi regula_falsi <- function(fx, a, b, tol = 1e-04, max_iter = 100) { fa <- fx(a); fb <- fx(b) if(fa*fb > 0) stop("solução não está no intervalo") solucao <- c() sol <- (a*fx(b) - b*fx(a))/(fx(b) - fx(a)) solucao[1] <- sol limites <- matrix(na, ncol = 2, nrow = max_iter) for(i in 1:max_iter) { test <- fx(a)*fx(sol) if(test < 0) { b = sol solucao[i+1] <- (a*fx(b) - b*fx(a))/(fx(b) - fx(a)) } if(test > 0) { a = sol solucao[i+1] <- sol <- (a*fx(b) - b*fx(a))/(fx(b) - fx(a)) } if( abs(solucao[i+1] - solucao[i]) < tol) break sol = solucao[i+1] limites[i,] <- c(a,b) } out <- list("tentativas" = solucao, "Limites" = limites, "Raiz" = sol) return(out)} LEG/DEST/UFPR Sistemas não-lineares 14 / 34

Aplicação: Regula-falsi Encontre as raízes de D(θ) = 2n [ log ( ) ] ˆθ + ȳ(θ ˆθ) 3.84. θ # Resolvendo numericamente Ic_min <- regula_falsi(fx = ftheta, a = 0.1, b = theta.hat) Ic_max <- regula_falsi(fx = ftheta, a = theta.hat, b = 3) # Solução aproximada c(ic_min$raiz, Ic_max$Raiz) # [1] 0.7688934 1.8545456 LEG/DEST/UFPR Sistemas não-lineares 15 / 34

Comentários: Métodos de confinamento Sempre convergem para uma resposta, desde que uma raiz esteja no intervalo. Podem falhar quando a função é tangente ao eixo x, não cruzando em f (x) = 0. Convergência é lenta em comparação com outros métodos. São difíceis de generalizar para sistemas de equações não-lineares. LEG/DEST/UFPR Sistemas não-lineares 16 / 34

Método de Newton Função deve ser contínua e diferenciável. Função deve possuir uma solução perto do ponto inicial. Ilustração: fx(x) 0.5 0.0 0.5 1.0 1.5 x1 x2 1.0 0.5 0.0 0.5 1.0 x LEG/DEST/UFPR Sistemas não-lineares 17 / 34

Algoritmo: Método de Newton Escolha um ponto x 1 como inicial. Para i = 1, 2,... até que o erro seja menor que um valor especificado, calcule x (i+1) = x (i) f (x) f (x). Implementação computacional newton <- function(fx, f_prime, x1, tol = 1e-04, max_iter = 10) { solucao <- c() solucao[1] <- x1 for(i in 1:max_iter) { solucao[i+1] = solucao[i] - fx(solucao[i])/f_prime(solucao[i]) if( abs(solucao[i+1] - solucao[i]) < tol) break } return(solucao) } LEG/DEST/UFPR Sistemas não-lineares 18 / 34

Aplicação: Método de Newton Encontre as raízes de D(θ) = 2n [ log ( ) ] ˆθ + ȳ(θ ˆθ) 3.84. θ Derivada D (θ) = 2n(ȳ 1/θ). # Derivada da função a ser resolvida fprime <- function(theta){2*length(y)*(mean(y) - 1/theta)} # Solução numerica Ic_min <- newton(fx = ftheta, f_prime = fprime, x1 = 0.1) Ic_max <- newton(fx = ftheta, f_prime = fprime, x1 = 2) c(ic_min[length(ic_min)], Ic_max[length(Ic_max)]) # [1] 0.7684495 1.8545775 LEG/DEST/UFPR Sistemas não-lineares 19 / 34

Método Gradiente Descendente Método do Gradiente descendente em geral é usado para otimizar uma função. Suponha que desejamos maximizar F (x) cuja derivada é f (x). Sabemos que um ponto de inflexão será obtido em f (x) = 0. Note que f (x) é o gradiente de F (x), assim aponta na direção de máximo/mínimo. Assim, podemos caminhar na direção da raiz apenas seguindo o gradiente, i.e. x (i+1) = x (i) αf (x (i) ). α > 0 é um parâmetro de tuning usado para controlar o tamanho do passo. Escolha do α é fundamental para atingir convergência. Busca em gride pode ser uma opção razoável. LEG/DEST/UFPR Sistemas não-lineares 20 / 34

Algoritmo: Método Gradiente descendente Escolha um ponto x 1 como inicial. Para i = 1, 2,... até que o erro seja menor que um valor especificado, calcule x (i+1) = x (i) αf (x (i) ). Implementação computacional grad_des <- function(fx, x1, alpha, max_iter = 100, tol = 1e-04) { sol <- c() sol[1] <- x1 for(i in 1:max_iter) { sol[i+1] <- sol[i] + alpha*fx(sol[i]) if(abs(fx(sol[i+1])) < tol) break } return(sol) } LEG/DEST/UFPR Sistemas não-lineares 21 / 34

Aplicação: Método Gradiente descendente Encontre as raízes de D(θ) = 2n [ log ( ) ] ˆθ + ȳ(θ ˆθ) 3.84. θ # Solução numerica Ic_min <- grad_des(fx = ftheta, alpha = 0.02, x1 = 0.1) Ic_max <- grad_des(fx = ftheta, alpha = -0.01, x1 = 4) c(ic_min[length(ic_min)], Ic_max[length(Ic_max)]) # [1] 0.7684546 1.8545880 LEG/DEST/UFPR Sistemas não-lineares 22 / 34

Sistemas de equações Sumário 1 2 Sistemas de equações LEG/DEST/UFPR Sistemas não-lineares 23 / 34

Sistemas de equações Sistemas de equações Sistema com duas equações: f 1 (x 1, x 2 ) = 0 f 2 (x 1, x 2 ) = 0. A solução numérica consiste em encontrar ˆx 1 e ˆx 2 que satisfaça o sistema de equações. LEG/DEST/UFPR Sistemas não-lineares 24 / 34

Sistemas de equações Sistemas de equações A idéia é facilmente estendida para um sistema com n equações f 1 (x 1,..., x n ) = 0 f n (x 1,..., x n ) = 0.. Genericamente, tem-se f(x) = 0. LEG/DEST/UFPR Sistemas não-lineares 25 / 34

Sistemas de equações Algoritmo: Método de Newton Escolha um vetor x 1 como inicial. Para i = 1, 2,... até que o erro seja menor que um valor especificado, calcule x (i+1) = x (i) J(x (i) ) 1 f (x (i) ) onde é chamado Jacobiano de f(x). f 1 f 1 f x 1 x 2... 1 x n f J(x (i) 2 f 2 f ) = x 1 x 2... 2 x n...... f n f n f x 1 x 2... n x n LEG/DEST/UFPR Sistemas não-lineares 26 / 34

Sistemas de equações Implementação: Método de Newton Implementação computacional newton <- function(fx, jacobian, x1, tol = 1e-04, max_iter = 10) { solucao <- matrix(na, ncol = length(x1), nrow = max_iter) solucao[1,] <- x1 for(i in 1:max_iter) { J <- jacobian(solucao[i,]) grad <- fx(solucao[i,]) solucao[i+1,] = solucao[i,] - solve(j, grad) if( sum(abs(solucao[i+1,] - solucao[i,])) < tol) break } return(solucao) } LEG/DEST/UFPR Sistemas não-lineares 27 / 34

Sistemas de equações Aplicação: Método de Newton Resolva f 1 (x 1, x 2 ) = x 2 1 2 (expx 1/2 + exp x/2 ) = 0 f 2 (x 1, x 2 ) = 9x1 2 + 25x2 2 225 = 0. Precisamos obter o Jacobiano, assim tem-se ] J(x (i) ) = [ 1 2 ( expx1/2 2 exp x1/2 2 ) 1 18x 1 50x 2. LEG/DEST/UFPR Sistemas não-lineares 28 / 34

Sistemas de equações Aplicação: Método de Newton # Sistema a ser resolvido fx <- function(x){c(x[2] - 0.5*(exp(x[1]/2) + exp(-x[1]/2)), 9*x[1]^2 + 25*x[2]^2-225 )} # Jacobiano Jacobian <- function(x) { jac <- matrix(na,2,2) jac[1,1] <- -0.5*(exp(x[1]/2)/2 - exp(-x[1]/2)/2) jac[1,2] <- 1 jac[2,1] <- 18*x[1] jac[2,2] <- 50*x[2] return(jac) } LEG/DEST/UFPR Sistemas não-lineares 29 / 34

Sistemas de equações Aplicação: Método de Newton # Resolvendo sol <- newton(fx = fx, jacobian = Jacobian, x1 = c(1,1)) tail(sol,4) # Solução # [,1] [,2] # [7,] 3.031159 2.385865 # [8,] 3.031155 2.385866 # [9,] NA NA # [10,] NA NA fx(sol[8,]) # OK # [1] -3.125056e-12 9.907808e-11 LEG/DEST/UFPR Sistemas não-lineares 30 / 34

Sistemas de equações Comentários: Método de Newton Método de Newton irá convergir tipicamente se três condições forem satisfeitas: 1 As funções f 1, f 2,..., f n e suas derivadas forem contínuas e limitadas na vizinhança da solução. 2 O Jacobiano deve ser diferente de zero na vizinhança da solução. 3 A estimativa inicial de solução deve estar suficientemente próxima da solução exata. Derivadas parciais (elementos da matriz Jacobiana) devem ser determinados. Isso pode ser feito analitica ou numericamente. Cada passo do algoritmo envolve a inversão de uma matriz. LEG/DEST/UFPR Sistemas não-lineares 31 / 34

Sistemas de equações Método Gradiente descendente O método estende naturalmente para sistema de equações não-lineares. Escolha um vetor x 1 como inicial. Para i = 1, 2,... até que o erro seja menor que um valor especificado, calcule x (i+1) = x (i) + αf(x (i) ). Implementação computacional fx2 <- function(x) { fx(abs(x)) } grad_des <- function(fx, x1, alpha, max_iter = 100, tol = 1e-04) { solucao <- matrix(na, ncol = length(x1), nrow = max_iter) solucao[1,] <- x1 for(i in 1:c(max_iter-1)) { solucao[i+1,] <- solucao[i,] + alpha*fx(solucao[i,]) #print(solucao[i+1,]) if( sum(abs(solucao[i+1,] - solucao[i,])) < tol) break } return(sol) } LEG/DEST/UFPR Sistemas não-lineares 32 / 34

Sistemas de equações Aplicação: Método Gradiente descendente Resolva f 1 (x 1, x 2 ) = x 2 1 2 (expx 1/2 + exp x/2 ) = 0 f 2 (x 1, x 2 ) = 9x 2 1 + 25x 2 2 225 = 0. # [,1] [,2] # [5,] 3.154278 2.362746 # [6,] 3.034792 2.385386 # [7,] 3.031159 2.385865 # [8,] 3.031155 2.385866 # [9,] NA NA # [10,] NA NA # [1] -3.125056e-12 9.907808e-11 LEG/DEST/UFPR Sistemas não-lineares 33 / 34

Sistemas de equações Comentários: Método Gradiente descendente Vantagem: Não precisa calcular o Jacobiano!! Desvantagem: Precisa de tuning. Em geral precisa de mais iterações que o método de Newton. Cada iteração é mais barata computacionalmente. Uma variação do método é conhecido como steepest descent. Avalia a mudança em f (x) para um gride de α e da o passo usando o α que torna F (x) maior/menor. O tamanho do passo pode ser adaptativo. LEG/DEST/UFPR Sistemas não-lineares 34 / 34