我正在嘗試編寫計算角度以弧度爲單位的tan的函數。我必須使用taylor系列使用迭代來實現,但只能用於前13個分子&分母。這是公式:http://upload.wikimedia.org/math/e/b/1/eb1675c46a1350a0983e57abf736b78c.png。在最後一次迭代之後,角度1.024的正確結果應該是大約1.642 ..等等。礦大約2.528551e + 000,這是完全錯誤的。 我會非常感謝所有的想法,我做錯了什麼。泰勒級數tan的計算
Here's我的功能:
double ttan(double x)
{
double nominator[13] = {1,1,2,17,62,1382,21844,929569,6404582,443861162,18888466084,113927491862,58870668456604};//first 13 nominators
double *n = nominator;
double denominator[13] = {1,3,15,315,2835,155925,6081075,638512875,10854718875,1856156927625,194896477400625,49308808782358125,3698160658676859375};//first 13 denominators
double *d = denominator;
int i=0;
int j=0;
double t;
double s;
double xx=x*x;
s=t=x;
for(int test=0;test<13;test++)
{
t=t* xx* *(n+i)/ *(d+j);
s+=t;
printf("%e\n",s);
i++;
j++;
}
int main(int argc, char **argv)
{
if (argc<2)
return 1;
char *endptr;
double p = strtod(argv[1], &endptr);
ttan(p);
return 0;
}
你迄今所做什麼樣的調試? – 2014-11-23 13:15:20
您最大的分母不在「雙」尾數的意義範圍之內 - 編譯器會警告這一點。 – 2014-11-23 13:27:08
@WV:我試圖用雙格式printf我的第13分母,它工作正常。 – deezy 2014-11-23 13:30:00