이것저것 배운것/수업내용 - MATLAB

Bisection - 이분법

RuDas 2014. 12. 2. 12:03

function root = bisection(func, x1, x2, threshold)

%func = 함수

%x1, x2 = 범위

%threshold = 오차율


if feval(func, x1)*feval(func, x2) > 0 % feval(func,x)

    disp('해는 이 구간에 없습니다..')

    return

end


j = 0;

fprintf('| iteration  |     x    |    error  |\n')


while(1) % begin of while

    j=j+1; %iteration번호

    x3=(x1+x2)/2; % new x3 계산

    

    if feval(func, x2)*feval(func, x3) < 0

        xold=x1; x1=x3;

    else

        xold=x2; x2=x3;

    end

    

    if x3 ~= 0

        rel_error=abs((x3-xold)/x3); % 상대오차 계산

    end

    if rel_error <= threshold

        break;

    end

    fprintf('| %10.5f |% 9.5f | %9.5f |\n',j,x3,rel_error)

end% end of while


root = x3; 

반응형

'이것저것 배운것 > 수업내용 - MATLAB' 카테고리의 다른 글

secent - 할선법  (0) 2014.12.02
Newton-Raphson 법  (0) 2014.12.02
Tayler_e(exp)  (0) 2014.12.02
Tayler_Cos  (0) 2014.12.02
Tayler_Sin  (0) 2014.12.02