-1
我正在一些簡單的東西...我想,但有一些讓我困擾。餘弦泰勒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'像'x> 1e10'仍然有問題。如何使用你自己的代碼精確地在很大範圍內工作'cos()'的細節不是「容易」 – chux