我正在尝试编写计算角度以弧度为单位的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