Sunteți pe pagina 1din 5

Programação Numérica aula 5

Aplicação numérica:(3 horas)


Métodos numéricos para encontrar raízes de funções transcendentes e polinomiais:
Método da falsa posição.
Método de Newton-Raphson.
Método da secante.

Principais métodos numéricos para busca de raízes:

Nesta aula usaremos métodos numéricos para determinar soluções para equações
polinomiais e, também, para as equações transcendentais através de programas com estruturas de
repetição evitando o uso de métodos analíticos que teriam um processo de resolução muito
complicado e demorado. Os métodos que serão aplicados na resolução das equações são iterativos e
partem de um intervalo inicial ou uma aproximação inicial para a raiz, e mediante algumas
condições, tal como a precisão dada para a resolução do problema. Os métodos seguem um
conjunto de passos que descrevemos a seguir.

Segundo [Tolêdo], um bom roteiro de trabalho seria:

1 - Estimativa inicial Iniciar a execução do método a partir da aproximação inicial.


2 - Geração de aproximações
3 - Aplicar os mais diversos métodos iterativos para gerar uma seqüência xk; k = 0,1,2,3,…,n
de aproximações da raiz.

Critério de parada:
Estabelecer um critério que indica quando o processo iterativo deve parar, por
exemplo, o critério |x* – α| ≤ e ou |f(x*)| ≤ e, onde e = tolerância.
Tolerância ou estimativa de exatidão
Estimar o erro cometido em associação com o critério de parada.

Método da falsa posição

Seja f (x) uma função contínua no intervalo [a,b] de forma que f (a)·f (b) < 0 e que, no
intervalo dado, exista apenas uma raiz x’ da equação f(x) = 0. No método da bissecção a raiz
aproximada de x’ é calculada fazendo a média aritmética de a e b, ou seja,

x = (a+b)/2

Como condição inicial, o método da falsa posição toma a média aritmética ponderada do intervalo
[a,b] com pesos | f (a)| e | f (b)|, que pode ser expressa da seguinte forma:

a.f(b) − b.f(a)
xk =
f(b) − f(a)
já que f (a) e f (b) têm sinais opostos.

Segundo [Tolêdo], graficamente, esta média é o ponto x, que é a intersecção da reta que une os
pontos (a, f(a)) e (b, f(b)) com o eixo dos x. Após a divisão do intervalo, escolhe-se o novo
subintervalo de acordo com a variação do sinal da curva f. O método da falsa posição aplicado na fi
gura abaixo nos mostra que f (a)·f(x0) < 0, logo o novo intervalo que contém a raiz é dado por
[a,x0]. Seguindo esse mesmo raciocínio, deve-se continuar o processo para determinar o novo
intervalo que contém a raiz.

Podemos descrever o algoritmo para o método da forma como segue:

1 – determinar um intervalo [a,b] que possua uma raiz. Calculamos f(a) e f(b) verificando
que f(a).f(b) < 0.
a.f(b) − b.f(a)
2 – calcular o valor pressuposto da raiz usando a fórmula: xk = .
f(b) − f(a)
3 – calcular f(xk ) . Se f(xk ) ≤ Er , onde Er = precisão, parar o proceso e informar a raíz, se
não, se f(a).f(xk) < 0, o novo intervalo é [a, xk ], volte para o passo 1.
se f(b).f(xk) < 0, o novo intervalo é [ xk ,b], volte para o passo 1.
Programa exemplo 1 – método da bissecção

Programa de aplicação do método da bissecção para a função f(x)=sen(x)-ln(x).

%program bisseccao_funca_transcendente
#12/04/2010;segunda-feira;15:49
#Autor: Adalberto Gassenferth Jr.
#Objetivo: calcula a raiz da f(x)=sen(x)-ln(x)
# pelo metodo da bissecçao
clear;

#Programa principal
%begin
clc;
printf("\n\nMetodo da bissecçao para a funçao f(x)=sen(x)-ln(x).\n\n");
printf("Qual a precisao de parada");
pe=input("?");
clc;
printf("Valor inicial do intervalo");
a=input("?");
clc;
printf("Valor final do intervalo");
b=input("?");
a1=a;
b1=b;
do
fa=sin(a)-log(a);
fb=sin(b)-log(b);
xi=(a+b)/2;
fxi=sin(xi)-log(xi);
pre=((fxi)^2)^0.5;

if ((fxi*fa)<0)
b=xi;
else
a=xi;
endif;
until (pre<pe);
clc;
printf("\n\n A raiz de f(x)=sen(x)-ln(x) e xi=%g no intervalo (%g,%g).",xi,a1,b1);
%end
Programa exemplo – 2 método da falsa posição

Programa de aplicação do método da falsa-posição para a função f(x)=sen(x)-ln(x).

%program falsa_posicao_funca_transcendente
#12/04/2010;segunda-feira;15:49
#Autor: Adalberto Gassenferth Jr.
#Objetivo: calcula a raiz da f(x)=sen(x)-ln(x)
# pelo metodo da falsa-posiçao

#Programa principal
%begin

clc;
printf("\n\nMetodo da falsa-posicao para a funçao f(x)=sen(x)-ln(x).\n\n");
printf("Qual a precisao de parada");
pe=input("?");
clc;
printf("Valor inicial do intervalo");
a=input("?");
printf("Valor final do intervalo");
b=input("?");
a1=a;
b1=b;
do
fa=sin(a)-log(a);
fb=sin(b)-log(b);
xi=(a*fb-b*fa)/(fb-fa);
fxi=sin(xi)-log(xi);
pre=((fxi)^2)^0.5;

if ((fxi*fa)<0)
b=xi;
else
a=xi
endif;
until (pre<pe);
clc;
printf("\n\n A raiz de f(x)=sen(x)-ln(x) e xi=%g no intervalo (%g,%g).",xi,a1,b1);
%end

Exercícios

1) Altere os programas-exemplo e calcule as raízes para as seguintes funções:


a) f(x) = cos(x)+ln(x) , construa um gráfico para obter um intervalo inicial.
b) f(x) = e x + x procure no intervalo [-1,0].
c) f(x) = tg(x)+2x , construa um gráfico para obter um intervalo inicial.
d) f(x) = x 3 +2x 2 − x +1 , construa um gráfico para obter um intervalo inicial.
2) Use o programa abaixo para (alterado quando necessário) gerar o gráfico dos itens anteriores.

%program graficos
#Última gravação: 12/04/2010;segunda-feira;16:32
#Software: GNU Octave 3.1.50;mEd 3.4.1
#Autor: Adalberto
#Objetivo: Exibir o gráfico de uma função
clear all;
#Subrotinas

%var
global _;
%begin
clc;x1=input("x1=");x2=input("x2=");
if(x1>0)
input("\nPara ver o grafico clique enter,\n\n Apos ver o grafico clique em GNU Octave e
tecle enter.\n\n");
x=x1:0.01:x2;
plot (x,log(x));
title ("funcao Ln(x)");
xlabel ("x");ylabel ("y");
input("");
close;
else
clc;
printf("\n\nLn(x) nao esta definida para x<=0.\n\n");
endif;

%end.

3) Pesquise sobre os métodos de Newton-Raphson e da Secante para construir um programa para


cada método.

Referências

1 -Tolêdo, José Humberto Dias


Métodos numéricos : livro didático / José Humberto Dias Tolêdo ; design instrucional Karla Leonora Dahse Nunes. –
Palhoça : UnisulVirtual, 2009.}

S-ar putea să vă placă și