// 1->2
// 3->5
// 4->4
// 5->4
// 9->4
// 10000->5
int x = 10000;
double j = 5.20969e-006*x*x*x*x*x+-0.0521979*x*x*x*x+1.01133*x*x*x+-6.57624*x*x+16.7449*x+-9.12781;
x가 1,3,4,5,9까지는 정상적으로 출력되는데
10000일때는 안됨
어찌된건가요?
// 1->2
// 3->5
// 4->4
// 5->4
// 9->4
// 10000->5
int x = 10000;
double j = 5.20969e-006*x*x*x*x*x+-0.0521979*x*x*x*x+1.01133*x*x*x+-6.57624*x*x+16.7449*x+-9.12781;
x가 1,3,4,5,9까지는 정상적으로 출력되는데
10000일때는 안됨
어찌된건가요?
int 형은 32비트의 경우 42억/2~0~42억/2-1
근데 라그랑주보간이 뭐였는지 기억이 안난다. 수치해석은 테일러급수, 가우스세이델소거 막 이런거 기억이 가물가물. 어쨋든 int와 float을 double로 바꿔보셈. 그왼 모르겠음.
1~10에 비해 10000은 너무 멀리 있어서 오차가 커져서 그래요
보간 식 계수의 정밀도를 double로 늘려서 해보세요. x는 int든 말든 상관 없는게 어처피 double로 먼저 캐스팅되어서.