본문 바로가기
수업/수치계산

[수치계산] 오차&비선형 방정식의 해 - 가위치법

by graygreat 2017. 6. 9.
728x90
반응형

가위치법 (regula false method)


● 이분법의 수렴 속도를 개선


● f(x1)과 f(x2)를 직선으로 연결시켜 이 직선과 x축이 만나는 점이 x3


1. if f(x1) * f(x3) < 0, x2 = x3


2. esle x1 = x3


     




#include <stdio.h>
#include <math.h>

#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 \t\t %f \n", i, x1, x2, x3, f(x3));

        if (f(x3) < THRESHOLD)  break;

        if (f(x1) * f(x3) < 0)  x2 = x3;
        else x1 = x3;

        i++;
    }
    return 0;
}



결과



반응형

댓글