나는 쉽게 작업하고있다. 나는 추측한다. 그러나 나를 괴롭히는 뭔가가있다.Cosine Taylor aproximation C 언어
double x,t,cos_aprox,eps;
int k;
t=1.0;
k=1;
cos_aprox=1.0;`
printf("Introduceti x pentru care se calculeaza cos(x) si eroarea epsilon:\n");
if(scanf("%lf%lf",&x,&eps)!=2)
{
printf("Date eronate!!\n");
exit(1);
}
else
{
do
{
t=t*(-1)*x*x/(k*(k+1));
cos_aprox+=t;
k+=2;
}
while(fabs(t)>eps);
printf("Valoarea aproximativa a lui cos(%g) este %.9g. k este %d\n",x,cos_aprox,k);
printf("Valoarea lui cos(%g), folosind functia din biblioteca, este %.9g.",x,cos(x));
}
그것은 좋은 결과를 반환하지만 39 라디안 이상의 값을 선택할 때와 라이브러리 함수 cos(x)
사이에 상당한 차이가있다.
추측 하시겠습니까?
인수가'[-pi/4, pi/4]'범위에있는 경우에만 작동합니다. 축소에 필요한 pi의 자릿수에 대해 큰 정수 수학이 필요합니다. 논문 : http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.67.5616 – deamentiaemundi
개선을 위해 while 루프 앞에'x = fmod (x, 2 * pi);를 사용하십시오. 이것은 여전히'x> 1e10'과 같이 큰'x'에 문제가 있습니다. 자신의 코드를 사용하여'cos()'를 광범위하게 사용하는 방법에 대한 세부 사항은 "쉬운 것"이 아닙니다. – chux