Atividade apresentada
disciplina de Mtodos Numricos,
ministrada pela Professora Caroline
Mazetto, para turma do 6. Perodo
de Engenharia Eltrica.
CURITIBA
2014
1. INTRODUO
O trabalho consiste na implementao dos mtodos para encontrar as
razes de equaes transcendentes e polinomiais, e na anlise dos resultados
para resolver o problema proposto. Os mtodos que sero implementados so:
Bisseo, Falsa Posio, Iterao Linear, Newton-Raphson e Secante.
Alm de uma analise de todos os mtodos, considerando as vantagens e
desvantagens e a verificao de melhoria no desempenho dos respectivos
mtodos.
2. METODOLOGIA
Conforme solicitado foi desenvolvido um programa em C atravs do
programa DEV-C, dentro da funo principal optou-se por conter somente um
menu chamando as funes, para haver modularidade conforme as
especificaes, podendo o usurio, ao final de cada resultado, escolher outro
mtodo de resoluo, conforme Algoritmo 1.
//**********************************************************************//
// Funo Principal
//**********************************************************************//
void main()
{
int opcao = 0;
// Opes do menu
newton_rapshon ();
break;
case 5:
secante ();
break;
case 6:
exit(1);
break;
default:
printf( "Nenhuma Opcao valida\n\n" );
break;
}
}
}
//**********************************************************************//
// Funes
//**********************************************************************//
// Chamada da Funo f(x)
float f( float x )
{
return 4*sin(x)-exp(x);
}
// Chamada da derivada de f(x)
float df( float x )
{
return 4*cos(x)-exp(x);
}
// Chamada da Funo g(x)
float g( float x )
{
//return log(4*sin(x));
return asin(exp(x)/4);
}
// Chamada da derivada de g(x)
float dg( float x )
{
//return -cos(x)/sin(x);
return exp(x)/(4*sqrt(1 - exp(2*x)/16));
}
Algoritmo 2 - Funes
// f(x)
// df(x)
// g(x)
// dg(x)
2.2
MTODOS NUMRICOS
2.2.1
Mtodo da Bisseo
x =
a+b
2
// numero de iteraes
// erro maximo
float a = 0;
// valor inicial
float b = 1;
// valor inicial
float xn;
// raiz da funo
float xm;
// xn-1 (anterior)
do{
xm = xn;
n++;
// incremento
xn = (a + b)/2;
// algoritmo
// Escolha do intervalo
if (f(a) * f(xn) < 0)
b = xn;
// melhor extremo b
else
a = xn;
// melhor extremo a
esperado,
uma forma mais aprimorada e com convergncia mais rpida do que o mtodo
da bisseo.
x = a
(b + a) f(a)
para n = 1,2,3,
f(b) f(a)
possvel verificar qual ser o ponto fixo para este mtodo, segundo o
procedimento:
A analise da concavidade importante para verificar se a funo muda de
inclinao num dado intervalo, conforme abaixo:
"(x) < 0
"(0) < 0
(4
(1) (0.6476)
Tendo os valores acima, podemos concluir que f(x) <0, f(a) < 0 e f(b) > 0,
desta forma a o ponto fixo. Por fim temos o critrio de parada:
|b a| erro
//**********************************************************************//
// Funo - Metodo da Falsa Posico
//**********************************************************************//
// numero de iteraes
// erro maximo
float a = 0;
// valor inicial a
float b = 0.5;
// valor inicial b
float xn;
// raiz da funo
float xm;
// xn-1 (anterior)
do{
xm = xn;
n++;
// incremento
xn = a - (b-a)*f(a) / (f(b)-f(a));
// algoritmo
// Escolha do intervalo
if (f(a) * f(xn) < 0)
b = xn;
// melhor extremo b
else
a = xn;
// melhor extremo a
2.2.3
=0
= ( )
//**********************************************************************//
// Funo - Metodo da Iterao Linear
//**********************************************************************//
// numero de iteraes
// erro maximo
float xn = 0.5;
// raiz da funo
float xm;
// xn-1 (anterior)
do{
xm = xn;
n++;
// incremento
xn = g(xm);
// algoritmo
// Verificao de Convergncia
if (fabs(dg(xm)) > 1)
2.2.4
f(x
f(x
)
para n = 1,2,3,
)
//**********************************************************************//
// Funo - Metodo de Newton Rapshon
//**********************************************************************//
// numero de iteraes
// erro maximo
float a = 0;
// valor inicial
float b = 0.5;
// valor inicial
float xn = 0.5;
// raiz da funo
float xm;
// xn-1 (anterior)
do{
xm = xn;
n++;
// incremento
xn = xm-f(xm)/df(xm);
// algoritmo
// Verificao de Convergncia
if (df(a)*df(b) < 0)
2.2.5
Mtodo da Secante
= x
(x x ) f(x )
para n = 1,2,3,
f(x ) f(x )
// numero de iteraes
// erro maximo
float a = 0;
// valor inicial
float b = 0.5;
// valor inicial
float xn = 1;
// valor inicial
float xm = 0;
// valor inicial
float x;
// raiz de f(x)
do{
xm = xn;
xn = x;
n++;
// incremento
// algoritmo
// Verificao de Convergncia
if (f(a)*f(b) > 0)
3. CONCLUSO
Aps a execuo e anotao dos resultados de todos os mtodos foi
possvel completar a Tabela 1 e analisar os melhores mtodos so os que
convergem com menor numere de iteraes, na sequncia: Newton, Falsa
Posio, Secante, Iterao Linear e por ultimo o mtodo da Bisseo. Isto deve
se ao nvel de complexidade que os mtodos de convergncia mais rpidos
possuem, como Newton e Falsa Posio. Outro aspecto que demonstra a
preciso do mtodo de Newton o quo prxima sua raiz |2 10 | foi de zero
em relao aos outros mtodos.
Tabela 1- Comparativo de Desempenho 1
Mtodo:
Dados
Bisseo
Falsa Posio
Iterao Linear
[0,1]
[0,1]
X0 = 0.5
Newton
X0 = 0.5
Iniciais
xi
Secante
X0 = 0
X1 = 1
0.370552
-6
0.370559
f(xi)
4*10
1*10
Iteraes
17
-6
0.370563
-6
0.370555
7*10
-2*10
11
-7
0.370558
6*10-6
8
Mtodo:
Dados
Bisseo
Falsa Posio
Iterao Linear
[0,0.4]
[0,0.4]
X0 = 0.4
Newton
X0 = 0.4
Secante
X0 = 0
X1 = 0.4
Iniciais
xi
0.370563
0.370559
0.370564
0.370558
0.370558
f(xi)
6*10-6
2*10-6
10*10-6
-2*10-7
2*10-6
Iteraes
16