Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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.
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
%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
%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
%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.
Referências