Upload
andre-antonio
View
216
Download
0
Embed Size (px)
DESCRIPTION
Bissecção, Ponto Fixo, Ponto Fixo Otimizado, Metodo de Newton, Método Secante e Método Secante Otimizado
Citation preview
Centro Universitrio de Braslia - Uniceub
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
Pr-Reitor Administrativo-Financeiro
Departamento de Informtica
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= cn; bn= bn; else ln= 0; endif l(n+1)= bn-an; % comprimento do segmento 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;
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
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; % Inicializao da sequncia erro(n) = 1+epsilon; alpha(n) = 1; %rotina while ((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); %aproximao do ponto fixo da funo f_p n_iteracao = n-1; % numero de iteraes necessrias para aproximar o ponto fixo erro_n = erro(n); % 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 epsilon) %condies para o ciclo de iteraes 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
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 epsilon)) %condies para o ciclo de iteraes
y1=f_3(an); %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
endif
if (y1y3)
an= an;
bn= cn;
endif;
x(n+1)=abs(bn-an);
n= n+1;
endwhile;
if (abs(y1) > abs(y2)) %Condies de definio do x_final
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;
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 epsilon)
x = (an*y2 - bn*y1) / (y2-y1);
y3 = f_5(x);
if (y3*y1)0
an=x;
elseif(y3>0)&&(y3
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