728x90
반응형
이분법 (bisection method)
● 중간값 정리
- 함수 f(x)가 구간 (x1, x2)에서 연속이고, f(x1)과 f(x2)의 부호가 서로 반대이면 x1, x2사이에 적어도 한 개의 근이 존재함
● 이진탐색 (binary search)와 유사
● 계산 방법
1. x3 = (x1 + x2) / 2
2. if f(x1) * f(x3) < 0,, x2 = x3
3. else x1 = x3
4. 1번 반복
Tip. Used APIs
- double exp(double x) : e
- double fabs(double x) : 절대값
#include <stdio.h> #include <math.h> #define THRESHOLD 0.00001 double f(double x) { double ret = 0; ret = x - exp(-x); return ret; } int main() { double x1 = 0; double x2 = 1; double x3 = 0; int i = 1; printf("i \t x1 \t\t x2 \t\t x3 \t\t f(x3) \n"); while (1) { x3 = (x1 + x2) / 2; printf("%d \t %f \t\t %f \t\t %f \t\t %f \n", i, x1, x2, x3, f(x3)); if (fabs(f(x3)) < 0.000001) break; if (f(x1) * f(x3) < 0) x2 = x3; else x1 = x3; i++; } return 0; }
결과
반응형
'수업 > 수치계산' 카테고리의 다른 글
[수치계산] 오차&비선형 방정식의 해 - Newton Raphson법 (0) | 2017.06.09 |
---|---|
[수치계산] 오차&비선형 방정식의 해 - 고정점 반복법 (0) | 2017.06.09 |
[수치계산] 오차&비선형 방정식의 해 - 가위치법 (0) | 2017.06.09 |
[수치계산] 오차&비선형 방정식의 해 - 2 (0) | 2017.06.09 |
[수치계산] 오차&비선형 방정식의 해 - 1 (0) | 2017.06.09 |
댓글