





Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Este documento explica três métodos numéricos para encontrar raízes de equações: método de bisseções, método de falsa posição e método de newton. Os métodos são ilustrados através do exemplo da equação x + 1 − tan(x) = 0, e os passos para calcular as raízes com diferentes precisões são apresentados.
Tipologia: Provas
1 / 9
Esta página não é visível na pré-visualização
Não perca as partes importantes!






Algumas equações que dependem de uma variável x podem ser resolvidas para obter um ou mais valores de x que verificam a equação. Por exemplo, a equação x^2 + 4 x + 3 = 0 tem duas soluções, x = 1 e x = 3 , e a equação ex^ = 3 tem uma única solução x = ln( 3 ) =
Para facilitar a procura das soluções de uma equação transcendente, é conveniente rescrevê- la na forma f (x) = 0 ; por exemplo, a equação x + 1 = tan(x) pode ser escrita como x + 1 − tan(x) = 0. O problema de encontrar as soluções consiste então em encontrar as raízes da função f (x), ou seja, os pontos onde o gráfico de f (x) corta o eixo das abcissas. No exemplo anterior, f (x) = x + 1 − tan(x), o gráfico da função no intervalo 0 ≤ x ≤ 2 π obtém-se no Maxima com o seguinte comando:
(%i1) plot2d(x+1-tan(x),[x,0,2%pi],[y,-5,5],[ylabel,"f(x)"]);*
e o resultado (ver figura 1.1) mostra que nesse intervalo existem duas soluções, próximas dos valores x = 1 .1 e x = 4 .5.
No caso das funções contínuas, se em dois pontos diferentes a e b (admitindo a < b), os sinais de f (a) e f (b) são diferentes, deve existir pelo menos uma raiz de f (x) no intervalo a < x < b. No caso da figura 1.1, vê-se que f ( 0 ) é positiva mas f ( 1. 3 ) é negativa; assim sendo, existe pelo menos uma raiz entre 0 e 1.3. Em x = 3 , f ( 3 ) é positiva, mas comparando com o valor negativo de f ( 1. 3 ) não se pode concluir que existam raízes no intervalo 1. 3 < x < 3, já que nesse intervalo a função não é contínua.
Dados dois valores diferentes x 1 e x 2 , onde x 1 < x 2 e f (x 1 ) f (x 2 ) < 0 (ou seja, os sinais de f (x 1 ) e f (x 2 ) são diferentes), calculam-se o ponto meio xm = (x 1 + x 2 )/ 2 e o valor da função nesse ponto, f (xm). Se f (xm) for nula, xm é a raiz procurada; caso contrário, se o sinal de f (xm) for o mesmo de f (x 1 ) substitui-se x 1 por xm, se o sinal de f (xm) for o mesmo de f (x 2 ) substitui-se x 2 por xm e o processo repete-se indefinidamente até se obter
2 Raízes de equações
f(x)
x
0
2
4
0 1 2 3 4 5 6
Figura 1.1: Gráfico da função x + 1 − tan(x).
um intervalo de comprimento muito reduzido:
|x 2 − x 1 | < ε (1.1)
onde ε/2 é a precisão com que se quer calcular a raiz. O valor final de xm será o que melhor aproxima o valor da raiz, com a precisão desejada.
Exemplo 1. Calcule a raiz de f (x) = x + 1 − tan(x) no intervalo 0 < x < 1. 3 com 2 casas decimais, usando o método de bisseções.
Resolução. Definem-se primeiro a função e os pontos iniciais:
(%i2) f(x) := float (x+1-tan(x))$ (%i3) [x1, x2]: [1, 1.2]$
É importante usar float, para garantir que a função dê sempre um número e não uma expressão.
Os valores da função nos pontos iniciais são
(%i4) [f(x1), f(x2)]; (%o4) [.4425922753450977, - .3721516221263186]
e como os sinais são diferentes, é possível usar o método das bissecções. O ponto meio e o valor da função nesse ponto são:
(%i5) [xm: (x1+x2)/2, f(xm)]; (%o5) [1.1, .1352403427513478]
Como o sinal da função nesse ponto é positivo, substitui-se x 1 pelo ponto meio e repete-se o passo anterior:
(%i6) x1: xm$ (%i7) [xm: (x1+x2)/2, f(xm)]; (%o7) [1.15, - .08449694875532554]
4 Raízes de equações
Exemplo 1. Calcule a raiz de f (x) = x + 1 − tan(x) no intervalo 0 < x < 1. 3 com 3 casas decimais, usando o método de falsa posição.
Resolução. Aproveitando que a função é a mesma que já foi definida no exemplo da secção anterior, basta definir novamente os valores iniciais e modificar o ciclo while usado na secção anterior. É conveniente também guardar os valores da função já calculados, para evitar a redundância de serem calculados novamente a cada iteração:
(%i16) [x1, x2]: [1.1, 1.2]$ (%i17) [f1, f2]: [f(x1), f(x2)]; (%o17) [.1352403427513478, - .3721516221263186]
Os valores da função nos dois extremos do intervalo são armazenados nas variáveis f 1 e f 2 ; o resultado (%o17) permite também conferir que o sinal da função muda entre x 1 e x 2. Como será claro nos resultados no fim deste exemplo, neste método a distância entre x 1 e x 2 não tem que ser pequena para que o valor xr esteja muito próximo da raiz. Assim sendo, a condição de paragem |x 2 − x 1 | < ε já não serve e no seu lugar deve comparar-se cada valor xr com o que tenha sido obtido na iteração anterior, que representaremos por x 0. Inicialmente pode admitir-se que x 0 e xr são os próprios x 1 e x 2.
(%i18) [x0, xr]: [x1, x2]$
Para obter a precisão de 3 casas decimais, usa-se o comando:
(%i19) while abs(xr-x0) > 0.0005 do (x0:xr, xr:x2-f2(x2-x1)/(f2-f1), fr:f(xr), print (x1, x2, xr), if f1fr>0 then (x1:xr,f1:fr) else (x2:xr,f2:fr))$ 1.1 1.2 1. 1.126654017428903 1.2 1. 1.131297851469829 1.2 1. 1.132100363591035 1.2 1.**
Note-se que o valor da raiz com três casas decimais, 1.132, foi obtido na quarta iteração, enquanto que no método de bisseções foram precisas 7 iterações. Neste caso foram também apresentados os valores de x 1 e x 2 em cada iteração, para mostrar que o valor de x 2 permanece sempre em 1.2 e, como tal, |x 2 − x 1 | não diminui muito.
Quando a equação f (x) = 0 pode ser escrita na forma,
x = g(x) (1.3)
o método de aproximações sucessivas consiste em começar com um valor inicial x 0 e calcular a sequência x 1 = g(x 0 ), x 2 = g(x 2 ),... Dependendo da função g e do valor inicial,
1.4 Método de aproximações sucessivas 5
em alguns casos a sequência aproxima-se de um limite, isto é, dentro de uma tolerância numérica dada, o valor de g(xn) será igual a xn a partir de algum inteiro n e, nesse caso xn será raiz de f (x).
Exemplo 1. Encontre a raiz de f (x) = x + 1 − tan(x) mais próxima de x = 1. 1 , com 3 casas decimais, usando o método de aproximações sucessivas.
Resolução. A equação x + 1 − tan(x) = 0 pode também ser escrita:
x = tan(x) − 1
Definindo a função g(x) = tan(x) − 1 e com valor inicial x 0 = 1. 1 , os seguintes 6 valores na sequência xi são: (%i20) g(x) := float (tan(x)-1)$ (%i21) xi: 1.1$ (%i22) for i:1 thru 6 do (xi: g(xi), print (xi))$ . .
**-.
1.** que converge rapidamente para o valor da raiz.
1.6 Sistemas de equações transcendentes 7
usada para forçar a que a expressão dentro dos parêntesis seja calculada e simplificada imediatamente. Usando o valor inicial x 0 = 1 .1, os seguintes 6 valores na sequência xi são: **(%i29) xi: 1.1$ (%i30) for i:1 thru 6 do (xi: xi-f(xi)/df(xi), print (xi))$
1.** Note-se a rapidez com que o método converge; após apenas 3 interações já se obtêm 4 casas decimais para a raiz e após a quinta iteração já é obtida a solução com o número máximo de casas decimais (15) que é possível obter com o formato de dupla precisão numérica usado pela função float.
O método de Newton pode ser generalizado facilmente para resolver um sistema de n variáveis com n equações contínuas e deriváveis. Por exemplo, no caso de duas equações com duas variáveis, f (x, y) = 0 e g(x, y) = 0 , os primeiros termos nas séries de Taylor para as duas funções são:
f (xi+ 1 , yi+ 1 ) = f (xi, yi) + (xi+ 1 − xi)
∂ f ∂ x
(xi,yi)
∂ f ∂ y
(xi,yi)
g(xi+ 1 , yi+ 1 ) = g(xi, yi) + (xi+ 1 − xi)
∂ g ∂ x
(xi,yi)
∂ g ∂ y
(xi,yi)
Os índices (xi, yi) indicam que x e y devem ser substituídas por (xi, yi). Substituindo f (xi+ 1 , yi+ 1 ) = 0 e g(xi+ 1 , yi+ 1 ) = 0 e escrevendo o sistema em forma matricial, obtém-se,
J(xi, yi) (ri+ 1 − ri) = −F(xi, yi) (1.8)
onde J(xi, yi) é a matriz jacobiana:
J(x, y) =
∂ f ∂ x
∂ f ∂ y ∂ g ∂ x
∂ g ∂ y
calculada em x = xi e y = yi. As matrizes ri+ 1 , ri e F(xi, yi) são:
ri+ 1 =
xi+ 1 yi+ 1
ri =
xi yi
F(xi, yi) =
f (xi, yi) g(xi, yi)
8 Raízes de equações
A equação (1.8) permite definir a relação de recorrência para xi+ 1 e yi+ 1 ,
ri+ 1 = ri − J−^1 (xi, yi) F(xi, yi) (1.11)
onde J−^1 (x, y) é a matriz inversa da matriz jacobiana.
Exemplo 1. Encontre os pontos de intersecção da circunferência x^2 + y^2 = 3 com a hipérbole y = 1 /x.
Resolução. Os gráficos da circunferência e da hipérbole podem ser traçados com o comando:
(%i31) plot2d ([sqrt(3-x^2), -sqrt(3-x^2), 1/x], [x,-3,3], [y,-2.25,2.25], [legend,false], [color,blue,blue,red]);
x
-1.
-0.
0
1
2
-3 -2 -1 0 1 2 3
Figura 1.2: Gráficos da circunferência x^2 + y^2 = 3 e a hipérbole y = 1 /x.
O gráfico (figura 1.2) mostra que existem quatro pontos de intersecção, simétricos em relação às retas y = ±x. Basta encontrar um desses quatro pontos, por exemplo, o que está mais próximo do ponto inicial x 0 = 0. 5 , y 0 = 1. Escrevendo as duas equações na forma f (x, y) = 0 e g(x, y) = 0, as duas funções são definidas pelas expressões, (%i32) f: x^2+y^2-3$ (%i33) g: 1-xy$*
e a inversa da matriz jacobiana é:
(%i34) Jinv: invert (jacobian ([f,g], [x,y]))$
Define-se a função vectorial F(ri),
(%i35) F(ri) := matrix ([subst ([x=ri[1][1], y=ri[2][1]], f)], [subst ([x=ri[1][1], y=ri[2][1]], g)])$