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 |