Você está na página 1de 3

1

MTODO DA SECANTE
Alessandro Gois Souza e Carlos Emanuel.
Fundao Universidade Federal de Rondnia, Ncleo de Cincia e Tecnologia, Departamento de Engenharia e Fsica - DENFI
Curso de Bacharelado em Engenharia Eltrica - 4o Perodo - Matrcula: 200711809 e 200711776 - Disciplina de Clculo Numrico

ResumoEste relatrio prope-se a apresentar o mtodo da


secante para o uso de clculo de razes de equaes algbricas e transcedentais, bem como um algoritmo que permite
a implementao do mesmo no software Matlab 7.0. Far-se-a
posteriormente uma comparao da eficincia deste mtodo em
relao aos mtodos de Newton-Rapshon e da Bisseco, que
foram apresentados em relatrios anteriores.
Index TermsMtodo da Secante, aproximao da derivada,
mtodo da Bisseco, mtodo de Newton-Rapshon, convergencia...

I. I NTRODUO

Mtodo da secante tem relao direta com o mtodo de


Newton-Rapshon, que foi descrito no relatorio anterior.
A divergncia entre esses mtodos que no da secante faz-se
uma aproximao da derivada contida no mtodo de Newton,
sendo esta substituida por uma taxa de variao no instantnea
conveniente. Geometricamente, podemos deduzir esse mtodo
utilizando-se do artifcio da semelhana de tringulo. Para tanto
consideremos a seguinte figura:

B. Objetivos Especficos
Utilizao do mtodo da Secante para encontrar os zeros da
funo abaixo e comparao com os resultados obtidos pelo
mtodo de Newton e da Bisseco.
f (x) = x3 3x + 3

(3)

III. M ATERIAIS E M TODO


Materiais
Foi necessrio fazer uso de um notebook, com a seguinte
configurao:

Processador Pentium Dual-core


Memria: 2 GB RAM
HD: 160 GB SATA

E ainda:

Software Matlab 7.0


Software TexnicCenter

Mtodos
No matlab, criou-se o seguinte programa, com a finalidade de
se calcular as razes do polinmio desejado usando o Mtodo da
secante:

Figura 1.

Analizando a figura acima, vemos que os tringulos 1 e 2 so


semelhantes, deste modo, a razo entre seus lados so iguais.
f (x(k)) f (x(k 1))
f (x(k))
=
x(k) x(k 1)
x(k) x(k + 1)

(1)

Desenvolvendo essa equao, isolando-se o valor de x(k + 1)


chegamos ao seguinte resultado, que a equao bsica do
mtodo proposto por este trabalho.
x(k 1).f (x(k)) x(k).f (x(k 1))
x(k + 1) =
(2)
f (x(k)) f (x(k 1))
O mesmo resultado pode ser obtido a partir do mtodo de
Newton-Rapshon, mediante a substituio do valor da derivada
pela taxa de variao mdia entre os dois pontos.

II. O BJETIVOS
A. Objetivo Geral
Desenvolver um algoritmo que implemente o mtodo da
secante no Matlab.

a = -2;
b = -0.8;
tol = 10^-3;
Max = 10;
fun = (x^3-3*x+3)
X(1)=a; X(2)=b;
f=inline(fun);
Y(1)=f(X(1));
Y(2)=f(X(2));
for i=2:Max
X(i+1)=(X(i-1)*Y(i)-X(i)*Y(i-1))/(Y(i)-Y(i-1));
Y(i+1)=f(X(i+1));
if Y(i+1)==0
disp(Foi encontrada uma raiz exacta);break;
end
if (abs(X(i+1)-X(i)) < tol)
disp(O metodo da secante ja convergiu);break;
end
iter=i;
end
if iter >= Max
disp(A raiz nao foi encontrada com a tolerancia desejada);
end
%Construcao da tabela com o resultado
n=length(X);
k=0:n-1; output=[k
X Y];
disp(
passo
xi
yi)
disp(output)
%Construcao do grafico
fplot(fun,[a-0.5,b+0.5],r)
hold on
plot(X(1:n),Y(1:n),*)
plot([a-0.5,b+0.5],[0 0],k)
for i=2:n
plot([X(i-1),X(i)],[f(X(i-1)) , f(X(i))])
end
text(X(1:n),zeros(1,n),num2str(k))
hold off

Para se calcular as raizes utilizando o mtodo de NewtonRapson, usou-se o seguite algoritmo no matlab:

fun =
x^3-3*x+3

%Mtodo de Newton-Raphson
clear
clc
x0 = input (x zero inicial: );
format short
t=inline(x^3 - 3*x + 3)
q=diff(x^3 - 3*x + 3)
x=x0;
c=0;
C=0;
ite=10;
%Incio da Convergncia
for i=1:ite
c=c+1;
x;
A(c)=t(x);
B(c)=subs(q,x);
Z(c)= x - A(c)/B(c);
x=Z(c);
end
disp(Raz da Funo)
disp([x])
%Construo da Tabela com resultados
disp (Iterao x f(x))
disp([(1:c) Z(1:c) A(1:c)])

O metodo da secante ja convergiu


passo
xi
yi
0
-2.0000
1.0000
1.0000
-0.8000
4.8880
2.0000
-2.3086
-2.3787
3.0000
-1.8148
2.4674
4.0000
-2.0662
0.3773
5.0000
-2.1116
-0.0807
6.0000
-2.1036
0.0019
7.0000
-2.1038
0.0000

O algoritmo tambm nos revela o grfico da equao polinomial com as retas secantes que mostram a convergncia da raiz.

Para se calcular as raiz desse polinmio utilizando o mtodo


da Bisseco, o seguite algoritmo foi usado no matlab:
clear
clc
%%%Dados iniciais%%%
a=-2;
b=-3;
A(1)=a;
B(1)=b;
f=inline(x^3-3*x+3)
%%%condio de execuo%%%
if f(a)*f(b)>0
Erro (A funo no muda de sinal)
break
end
%%%execuo%%%
precisao=10^(-3);
Interacoes= input (numero de interaes:
);
%%%looping%%%
for i=1:Interacoes
%comando%
X(i)=((A(i)+B(i))/2);
Y(i)=f(X(i));
%condio dos intervalos%
if(X(i)-A(i))<precisao
disp (Houve convergncia)
%Se houve convergncia o sistema para%
end
if Y(i)==0
disp(Foi encontrada uma raiz exata)
break
elseif f(A(i))*Y(i)<0 %bisseco%
A(i+1)=A(i);
B(i+1)=X(i);
else
A(i+1)=X(i);
B(i+1)=B(i);
end
%informao%
Inter=i;
if Inter>=Interacoes
disp(No foi encontrado um valor com a preciso desejada)
end
end

Nesse algoritmo foi utilizado o intervalo inicial de -3 a -2, pois


nele se encontra a raiz desejada.

IV. R ESULTADOS
Utilizando o primeiro algoritmo, que o do mtodo da secante,
obtm-se os seguitentes resultados:

Figura 2.

Grafico da equao polinomial

Utilizando o segundo algoritmo, que o do mtodo de NewtonRapshon, ao execut-lo pede-se o passo inicial que -2, obtm-se
assim os seguitentes resultados:
x zero inicial:

-2

t =
Inline function:
t(x) = x^3 - 3*x + 3
q =
3*x^2-3
Raz da Funo
-2.1038
Iterao
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000

x
f(x)
-2.1111
1.0000
-2.1038
-0.0754
-2.1038
-0.0003
-2.1038
-0.0000
-2.1038
0
-2.1038
0
-2.1038
0
-2.1038
0
-2.1038
0
-2.1038
0

Utilizando o terceiro algoritmo, que o do mtodo da Bisseco, ao executa-lo pede-se o nmero de interaes o qual
optaremos por 10. Obtm-se assim os seguitentes resultados:
f =
Inline function:
f(x) = x^3-3*x+3

numero de interaes:
Interaes
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000

a
-2.0000
-2.0000
-2.0000
-2.0000
-2.0625
-2.0938
-2.0938
-2.1016
-2.1016
-2.1035

10
b
-3.0000
-2.5000
-2.2500
-2.1250
-2.1250
-2.1250
-2.1094
-2.1094
-2.1055
-2.1055

xi
-2.5000
-2.2500
-2.1250
-2.0625
-2.0938
-2.1094
-2.1016
-2.1055
-2.1035
-2.1045

yi
-5.1250
-1.6406
-0.2207
0.4138
0.1027
-0.0575
0.0230
-0.0171
0.0030
-0.0071

Para uma melhor anlise usaremos agora 30 interaes no


programa. E assim dado o seguinte resultado:
f =
Inline function:
f(x) = x^3-3*x+3
numero de interaes:

Interaes
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000
11.0000
12.0000
13.0000
14.0000
15.0000
16.0000
17.0000
18.0000
19.0000
20.0000
21.0000
22.0000
23.0000
24.0000
25.0000
26.0000
27.0000
28.0000
29.0000
30.0000

a
-2.0000
-2.0000
-2.0000
-2.0000
-2.0625
-2.0938
-2.0938
-2.1016
-2.1016
-2.1035
-2.1035
-2.1035
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038

30

b
-3.0000
-2.5000
-2.2500
-2.1250
-2.1250
-2.1250
-2.1094
-2.1094
-2.1055
-2.1055
-2.1045
-2.1040
-2.1040
-2.1039
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038

xi
-2.5000
-2.2500
-2.1250
-2.0625
-2.0938
-2.1094
-2.1016
-2.1055
-2.1035
-2.1045
-2.1040
-2.1038
-2.1039
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038
-2.1038

yi
-5.1250
-1.6406
-0.2207
0.4138
0.1027
-0.0575
0.0230
-0.0171
0.0030
-0.0071
-0.0021
0.0004
-0.0008
-0.0002
0.0001
-0.0000
0.0001
0.0000
-0.0000
0.0000
0.0000
0.0000
-0.0000
-0.0000
-0.0000
-0.0000
-0.0000
0.0000
0.0000
-0.0000

V. D ISCUSSO E CONCLUSES
Da anlise das tabelas apresentadas acima, conclui-se facilmente que o mtodo da secante converge mais rapidamente que
o mtodo da bisseco. No entanto, v-se que ele converge mais
vagarosamente que o mtodo de Newton-Rapshon, porm uma
grande vantagem desse mtodo que ele no necessita do valor
da derivada da funo em cada interao.

R EFERNCIAS
[1] Clculo Numrico - Aspectos Tericos e Computacionais. Mrcia
A.Gomes Ruggiero e Vera Lcia da Rocha Lopes - 2a. edio, PersonMakron Books, 1997.
[2] Clculo Numrico - Com aplicaes. Lenidas C. Barroso e Magali
Maria - 2a. edio, Harbra, 1987.