Função para Cálculo da Bissecção para Gretl - Blog do Estudante de Atuariais

quinta-feira, 28 de março de 2019

Função para Cálculo da Bissecção para Gretl


function [x,a,b,k,resultado]=bisseccao(a,b,eps,del,kmax)
    // [x,a,b,k,resultado]=bisseccao(a,b,eps,del,kmax)
    f_a = f(a); f_b = f(b);
    for k=1:kmax
        x = (a+b)/2.0;
        f_x = f(x);
        printf('k=%g a=%g b=%g x=(a+b)/2=%g f(x)=%g\n',k,a,b,x,f_x);
        if (abs(f_x)<eps)
            // valor avaliado de f(x) é pequeno, aceita x como raiz
            resultado = 0;
            break
        end
        if (abs(a-b)<=del)
            resultado = 1;
            break
        end
        if (sign(f_x)~=sign(f_a))
            // raiz entre a e x
            b = x;
            f_b = f_x;     
        elseif (sign(f_x)~=sign(f_b))
            // raiz entre x e b
            a = x;
            f_a = f_x;
        else
            resultado = -1;
            break
        end
    end
    if (k>=kmax)
        resultado = -3
    end
endfunction

Nenhum comentário:

Postar um comentário