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 |