You are on page 1of 15

Centro Universitrio de Braslia - Uniceub

Pr-Reitor Administrativo-Financeiro
Departamento de Informtica
Faculdade de Tecnologia e Cincias Sociais Aplicadas - FATECS
Coordenao do Curso de Engenharia Civil

Calculo Numrico
Relatrio de Mtodos Numricos

Data: 26/09/2014
Nome: Andr Antnio Lacerda de Souza
Matrcula: 21357120
Turno: Noturno
Curso: Engenharia Civil
Professor: Sebastien Rondineau

Bisseco
Mtodo da Bisseco um mtodo numrico utilizado para encontrar zero de funes continuas
com intervalos opostos (f(b) positivo e f(a) negativo e vice-versa).

Algoritimo
function y = f_1(x);
y = x^3 - x - 2;
function [c0,ln,n]= bisseccao;
% Inicializao
n=1;
% iterao
an= 1;
% limite inferior do intervalo
bn= 2;
% limite superior do intervalo
epsilon= 0.01; % erro desejado

% rotina
l(n)= bn-an;

% comprimento do segmento

while (l(n) >epsilon)


cn= (an+bn)/2;

% ponto mdio

if (f_1(an)*f_1(cn)<0)
an= an;
bn= cn;
elseif (f_1(an)*f_1(cn) >0)
an= cn;
bn= bn;
else
ln= 0;
endif
l(n+1)= bn-an;
n= n+1;
endwhile
ln=l(n);
n_iteracao = n-1;
c0= cn;
%Grfico
X_N = 1:n_iteracao+1;
semilogy(X_N,l,cn);
xlabel("nmero de iteraes n");
ylabel("convergncia");
title("Bisseco");
legend("f(x)= x^3 - x - 2");
endfunction;

% comprimento do segmento

Grfico

Ponto Fixo
Ponto fixo um mtodo numrico usado para encontrar zero de uma funo g(x) , verificando
assim se a funo converge ou no.

Algoritimo
function y = f_2(x);
%Funo
y= x^2-x+2;
function [x_fixo,n, epsilon_final,n_iteracao]= pontofixo;
%inicializao
episilon = 0.001;
% erro relativo desejado
n_max = 100;
%numero mximo de iteraes
n = 1;
%primeira iterao
x_n = 1;
x(n) =x_n;
%inicializao da sequncia
erro(n) = episilon + 1;
%inicializao do erro relativo

while ((erro(n) > episilon) && (n <= n_max))


x(n+1)=f_2(x(n));
erro(n+1) = abs(x_n - x(n));
n = n+1;
endwhile
x_fixo = x(n);
epsilon_final = erro(n-1);
n_iteracao = n-1;
%Grfico
X_N = 1:n_iteracao+1;
semilogy(X_N,erro,x);
xlabel("nmero de iteracoes n");
ylabel("erro absoluto");
title("ponto fixo");
legend("f(x)=x^2-x+2");
endfunction;

Grfico

Ponto Fixo Otimizado


A forma otimizada acelera o processo de convergncia da funo realizando menos iteraes.

Algoritimo
function y = f_p(x);
%Funo
y= cos(x);
function [x_pf, n_iteracao, erro_n] = ponto_fixo_otimizado(x_0, n_max, epsilon);
format long;
% Inicializao
n=1;

%primeira iterao

%n_max : numero mximo de iteraes


% epsilon : erro relativo mximo desejado
x(n) = x_0;
erro(n) = 1+epsilon;
alpha(n) = 1;

% Inicializao da sequncia

%rotina
while ((n <=n_max) && (erro(n) > epsilon))
x(n+1) = x(n) - alpha(n) * (f_p(x(n)) - x(n) );
df(n+1) = (f_p(x(n+1) - x(n+1)) / (x(n+1) - x(n));
alpha(n+1) = 1/(1 - df(n+1));
erro(n+1) = abs(x(n+1) - x(n));
n = n+1;
endwhile
x_pf = x(n);
n_iteracao = n-1;
erro_n = erro(n);

%aproximao do ponto fixo da funo f_p


% numero de iteraes necessrias para aproximar o ponto fixo
% erro relativo da aproximao

%Grfico
X_N = 1:n_iteracao+1;
semilogy(X_N,erro_rel,x);
xlabel("nmero de iteraes n");
ylabel("erro absoluto");
title("ponto fixo otimizado");
legend("f(x)=cos(x)");
endfunction;

Grfico

Mtodo de Newton
O mtodo de Newton tem com objetivo se aproximar das razes de uma funo. Primeiramente
escolhe-se uma aproximao inicial e depois calculado a equao da reta tangente (derivada)
da funo nesse ponto e a interseo com o eixo das abcissas, procurando uma melhor
aproximao para a raiz. Repetindo-se o processo, cria-se um mtodo iterativo para encontramos
a raiz da funo.

Algoritimo
function y=f_m(x);
y=x.^3 9*x+3;
%Funo
function y=d_m(x);
y=3*x.^2 9;
%Derivada
function [raiz,n_iteracoes,erro] = metodo_newton;
x_0 = 1;
%ponto de inicializao
epsilon = 0.001;
%preciso desejada
n_max = 50;
%mximo de iteraes
n=1;
%primeira iterao
x(n) = x_0;
%inicializao da sequncia
erro(n) = 1+epsilon;
%erro
while (n <=n_max)&&(erro(n)>epsilon)
x(n+1)= x(n)- (f_m(x(n))/d_m(x(n)));
erro(n+1) = abs(x(n+1) - x(n));
n=n+1;
endwhile
raiz=x(n);
n_iteracoes=n-1;
erro=erro(n);
% Grfico
figure(1)
p = 1:(n_iteracoes+1);
semilogy(p,x);
xlabel("nmero de iteraes n");
ylabel("convergncia");
title("Mtodo Newton");
legend("f(x)= x^3 - 9*x+3");

endfunction

%condies para o ciclo de iteraes

Grfico

Mtodo da Secante
No calculo numrico, o mtodo das secantes um algoritmo que usa uma sequncia de razes
de linhas secantes buscando razes para aproximar quantitativamente a raiz de uma funo f. A
vantagem do mtodo da secante porque ele no necessita o calculo de derivadas que em
algumas situaes pode se tornar uma tarefa muito trabalhosa e at mesmo impossvel. Em
termos de convergncia menos eficaz que o mtodo de Newton, mas isso compensado pelo
fato de cada iterao no necessitar do clculo da derivada, tornando-se assim normalmente
mais rpido que o mtodo de Newton.

Algoritimo
function y = f_3(x);

%Funo

y = x^2 + x - 6;
function [x_final, n_iteracao] = metodo_secante5;
clear all;
format long
n=1;

%primeira iterao

n_max = 200;

%numero mximo de iteraes

an=1;

%ponto com f(an) negativo no eixo y

bn=5;

%ponto com f(bn) positivo no eixo y

XX = linspace(an, bn, 101);


epsilon= 1e-3;

%preciso desejada

y1=f_3(an);

%f(an)

y2=f_3(bn);

%f(bn)

x(n)=abs (bn-an);

%critrio de parada

%inicializao
while ((n <=n_max) && (x(n)>epsilon))
y1=f_3(an);

%condies para o ciclo de iteraes


%f(an)

y2=f_3(bn);

%f(bn)

cn = (an*y2 - bn*y1) / (y2-y1);

%ponto de composio da prxima iterao

y3= f_3(cn);

%f(cn)

if (y1>0)
temp = an;

%Varivel intermediria

an=bn;
bn = temp;
elseif (y2<0)
amp = bn;
bn=an;
an = amp;

%Varivel intermediria

endif

if (y1<y3)
an= cn;
bn= bn;
elseif (y2>y3)
an= an;
bn= cn;
endif;
x(n+1)=abs(bn-an);
n= n+1;
endwhile;
if (abs(y1) > abs(y2))
x_final=bn;
elseif (abs(y1) < abs(y2))
x_final=an;
endif;
n_iteracao=n-1;
%Grfico
figure(2)
plot(XX, f_3(XX));
xlabel("x");
ylabel("y=f(x)");
title("Mtodo secante");
legend("f(x)= x^2 - x - 6");
grid on;
figure(1)
p= 1:length(x);
semilogy(p,x);
xlabel("nmero de iteraes n");
ylabel("erro absoluto");
title("Mtodo secante");
legend("f(x)= x^2 - x - 6");

endfunction;

%Condies de definio do x_final

Grfico

Secante Otimizada
O mtodo secante otimizada consiste em otimizar a quantidade de iteraes economizado assim
memria do computador.

Algoritmo
function y = f_5(x);

%Funo

y = x.^2 -x - 6;
function [c0, n_iteracao] = metodosecanteotimizada;
n=1;
n_max = 50;

%numero mximo de iteraes

an=1;

%ponto com f(an) negativo no eixo y

bn=5;

%ponto com f(bn) positivo no eixo y

XX = linspace(an, bn, 101);


epsilon= 1e-3;

%preciso desejada

l(n) = abs(bn-an);

%critrio de parada

y1 = f_5(an)

%f(an)

y2 = f_5(bn)

%f(bn)

while (n <=n_max) && (l(n)>epsilon)


x = (an*y2 - bn*y1) / (y2-y1);
y3 = f_5(x);
if (y3*y1)<0
bn=x;
elseif (y3*y2)>0
an=x;
elseif(y3>0)&&(y3<y2)
bn=x;
elseif (y3<0)&&(y1<y3)
an=x;
endif
l(n+1)=abs(bn-an);
n= n+1;
endwhile
if (abs(y1) > abs(y2))
c0=bn;
elseif (abs(y1) < abs(y2))

c0=an;
endif
n_iteracao=n-1;
%Grfico
figure(2)
plot(XX, f_3(XX));
xlabel("x");
ylabel("y=f(x)");
title("Mtodo Secante Otimizado");
legend("f(x)= x^2 - x - 6");
grid on;
figure(1)
p= 1:length(l);
semilogy(p,l);
xlabel("nmero de iteraces n");
ylabel("erro absoluto");
title("Mtodo Secante Otimizado");
legend("f(x)= x^2 - x - 6");
grid on
endfunction;

Grfico

You might also like