十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如果只是需要值,那么调用math中的sin和cos函数即可.
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟主机、营销软件、网站建设、花垣网站维护、网站推广。
参数为弧度, 如果要使用的参数是角度,需要自行转换一下.
如果想自己写,可以参考泰勒展开, 计算近似值.一般计算到最后一项小于1e-6即可.
double cos1(double e)
{
double cos_x=0;
double temp=1;
for (int i=0;i5;)
{
cos_x += pow(-1,i)*pow(x,2*i)/temp;
i++;
temp *= 2*i*(2*i-1);
}
return cos_x;
}
通过输入一个角度的自定义变量a(输入范围在-180到180度)
先判断范围,若大于90或者小于-90,则a=180-a,设立标志位置1;否则不管
然后b=a乘pi除180度,换算成弧度制。
定义变量c=余弦的泰勒级数展开,原公式里面的x就是b,百度有公式(余弦的泰勒级数展开),一般取到前5项就好。
输出通过计算后的函数值即可。
1.
C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果
2.
下面用for循环实现sin的算法,程序代码如下:
#includestdio.h
#includemath.h
void
main()
{
int
i;
float
x,sum,a,b;
//sum代表和,a为分子,b为分母
char
s;
printf("please
input
x");
scanf("%f",x);
s=1;
sum=0;
a=x;
//分母赋初值
b=1;
//分子赋初值
for(i=1;a/b=1e-6;i++)
{
sum=sum+s*a/b;
//累加一项
a=a*x*x;
//求下一项分子
b=b*2*i*(2*i+1);
//求下一项分母
s*=-1;
}
printf("sum=%f\n",sum);
}
3.
关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式
sin
x=x-x^3/3!+x^5/5!
......
,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项,以便于每一项的累加
whie((a/b)=c),这里有错误,根据循环体来看,a是带符号的,所以a/b在循环一次后就变负值鸟,应该改成while(fabs(a/b)=c)才正确!
试试吧,应该是这样,希望对你有帮助!