sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...,直到最后一项的绝对值小于10的负七次方为止。C语言编程
#include<stdio.h>#include<math.h>voidmain(){doublex,y,z,n,sin;scanf("%lf",&y);z=x=y/3...
#include<stdio.h>
#include<math.h>
void main()
{double x,y,z,n,sin;
scanf("%lf",&y);
z=x=y/360*6.28;
for(n=1,sin=x;fabs(x)>1e-7;n=n+1)
{x=-x*z*z/(2*n+1)/2*n;
sin=sin+x;}
printf("%lf\n",sin);
}
输入数据以度数为单位,转换为弧度进行计算;
分别用30°,390°,1110°,1830°验证。
其实我压根就没理解这里的sin到底是三角函数的那个还是sum求和的那个。。明明自变量是n啊,跳出循环的条件也是n的函数啊~那么验证的那四个数到底要不要转为2π以内的呢? 展开
#include<math.h>
void main()
{double x,y,z,n,sin;
scanf("%lf",&y);
z=x=y/360*6.28;
for(n=1,sin=x;fabs(x)>1e-7;n=n+1)
{x=-x*z*z/(2*n+1)/2*n;
sin=sin+x;}
printf("%lf\n",sin);
}
输入数据以度数为单位,转换为弧度进行计算;
分别用30°,390°,1110°,1830°验证。
其实我压根就没理解这里的sin到底是三角函数的那个还是sum求和的那个。。明明自变量是n啊,跳出循环的条件也是n的函数啊~那么验证的那四个数到底要不要转为2π以内的呢? 展开
2个回答
展开全部
这是泰勒展示没错。sin表示的就是一个求出来的和,你看原公式不就是sin=一个求和式的形式嘛。。。
我觉得x=-x*z*z/(2*n+1)/2*n;这一行貌似有问题,2*n没有加括号。
验证时其实不用转化,泰勒公式对所有x都成立。结果可能有一点差别,因为这个求和过程终止于你所定义的条件(<1e-7).
我觉得x=-x*z*z/(2*n+1)/2*n;这一行貌似有问题,2*n没有加括号。
验证时其实不用转化,泰勒公式对所有x都成立。结果可能有一点差别,因为这个求和过程终止于你所定义的条件(<1e-7).
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询