본문 바로가기
반응형

수업32

[수치계산] 오차&비선형 방정식의 해 - 수렴성 수렴성 (convergence) 방법의 선택 2017. 6. 9.
[수치계산] 오차&비선형 방정식의 해 - 할선법 할선법 (secant method) ● 가위치법의 개선 방법 ● 근을 포함하는 구간을 구할 필요 없이 임의의 두 점에서 시작 #include #include #define THRESHOLD 0.000001 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 = x2 - ((f(x2) * (x2 - x1)) / (f(x2) - f(x1))); printf("%d \t %f \t\t %f \t\t %f.. 2017. 6. 9.
[수치계산] 오차&비선형 방정식의 해 - Newton Raphson법 Newton - Raphson 법 ● 가장 효율적이고도 주로 사용되는 방법 중의 하나 ● 초기값 x1에 대해 점(x1, f(x1))에 접하는 접선을 구하고, 이 접선이 축과 만나는 점이 새로운 근 x2가 됨 Tip. Used APIs- double log(double x) #include #include #define THRESHOLD 0.000001 double f(double x) { double ret = 0; ret = log(x + 5.0) + x; return ret; } double f2(double x) { double ret = 0; ret = 1 / (x + 5.0) + 1; return ret; } int main() { double x = 7.0; double x2 = 0; int .. 2017. 6. 9.
[수치계산] 오차&비선형 방정식의 해 - 고정점 반복법 고정점 반복법 (fixed - point iteration) ● 수렴? 발산? - 고정점 반복법은 초기값의 선택에 발산할 수도 있음을 주의! #include #include #define THRESHOLD 0.000001 double g(double x) { double ret = 0; ret = exp(-x); return ret; } void main() { double x = 0; double x2 = 0; int i = 1; printf("i \t xi \t\t g(x3) \n"); printf("%d \t %f \t %f \n", i, x, g(x)); while (1) { x2 = g(x); i++; if (THRESHOLD > fabs(x - g(x))) break; printf("%d \t.. 2017. 6. 9.
[수치계산] 오차&비선형 방정식의 해 - 가위치법 가위치법 (regula false method) ● 이분법의 수렴 속도를 개선 ● f(x1)과 f(x2)를 직선으로 연결시켜 이 직선과 x축이 만나는 점이 x3 1. if f(x1) * f(x3) < 0, x2 = x3 2. esle x1 = x3 #include #include #define THRESHOLD 0.000001 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 = x2 - ((f(.. 2017. 6. 9.
[수치계산] 오차&비선형 방정식의 해 - 이분법 이분법 (bisection method) ● 중간값 정리 - 함수 f(x)가 구간 (x1, x2)에서 연속이고, f(x1)과 f(x2)의 부호가 서로 반대이면 x1, x2사이에 적어도 한 개의 근이 존재함 ● 이진탐색 (binary search)와 유사 ● 계산 방법 1. x3 = (x1 + x2) / 22. if f(x1) * f(x3) < 0,, x2 = x33. else x1 = x34. 1번 반복 Tip. Used APIs- double exp(double x) : e - double fabs(double x) : 절대값 #include #include #define THRESHOLD 0.00001 double f(double x) { double ret = 0; ret = x - exp(-x);.. 2017. 6. 9.
반응형