Relatorio de Métodos Numéricos

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