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

falseposition - 가(假)위치법

RuDas 2014. 12. 2. 12:21

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

% x1, x2 : 초기경계값

% threshold: 반복여부를 결정하는 임계값

% root: 가위치법에 의해 최종적으로 구해진 근의 근사값


if feval(func, x1)*feval(func, x2) > 0 % feval(func,x)는 함수값을 계산하는 함수

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

    return

end


%rel_error=100.0; % 상대오차 초기값

%x3=x1;

j=0;

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

while(1)

    j=j+1;

%    xold=x3;

    x3=x2-feval(func, x2)*(x1-x2)/(feval(func, x1) - feval(func, x2)); %

    

    

    if feval(func, x1)*feval(func, x3) == 0

        break;

    elseif feval(func, x1)*feval(func, x3) < 0

        xold=x2; x2=x3;

    else

        xold=x1; x1=x3;

    end

    

    if x3 ~=0

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

    end

    

    if rel_error <= threshold

        break;

    end

%    j, x3, rel_error

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

end

root=x3;

반응형

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

newtondd(일반적 분할차분표)  (0) 2014.12.15
Lagrange_interpol(라그랑주 보간법)  (0) 2014.12.15
secent - 할선법  (0) 2014.12.02
Newton-Raphson 법  (0) 2014.12.02
Bisection - 이분법  (0) 2014.12.02