cos :余弦函数
函数原型:double cos(double x)
头文件:#include<math.h>
是否是标准函数:是
函数功能:求x的余弦值,这里,x为弧度。
返回值:计算结果的双精度值。
例程如下: 求cosx。
#include <stdio.h>
#include <math.h>
int main(void)
{
double result
double x = M_PI。
#include<stdio.h>#define
pi
3.14159265
//pi定义
double
mypow(double,int)
//自定义指数函数
int
mult(int)
//阶乘函数
double
mysin(double)
//sin函数
double
mycos(double)
//cos函数
double
mypow(double
x,int
n)
{
int
i
double
result=1
if(n>0)
for(i=1i<=ni++)
result*=x
return
result
}
int
mult(int
n)
{
int
i
int
result=1
if(n>0)
for(i=1i<=ni++)
result*=i
return
result
}
double
mysin(double
x)
{
int
flag=1//标志正负
int
i
double
result=0
while(x>=2*pi)
x-=2*pi
while(x<0)
x+=2*pi
if(x>pi)
{
x=2*pi-x
flag=-flag
}
if(x>pi/2)
//将任意弧度转化到[0,pi/2]
x=pi-x
if(x>pi/4)
//[pi/4,pi/2]调用cosX在[0,pi/4]求解,减少误差
return
flag*mycos(pi/2-x)
for(i=0i<10i++)//taylor展开
{
result+=((double)1)*mypow(x,2*i+1)*mypow(-1,i)/mult(2*i+1)
}
return
flag*result
}
double
mycos(double
x)//与sin函数过程类似
{
int
flag=1
int
i
double
result=0
while(x>=2*pi)
x-=2*pi
while(x<0)
x+=2*pi
if(x>1.5*pi)
x=2*pi-x
if(x>pi/2
&&
x<=pi)
{
x=pi-x
flag=-flag
}
if(x>pi
&&
x<=1.5*pi)
{
x-=pi
flag=-flag
}
if(x>pi/4)
return
flag*mysin(pi/2-x)
for(i=0i<10i++)
{
result+=((double)1)*mypow(x,2*i)*mypow(-1,i)/mult(2*i)
}
return
flag*result
}
int
main()//测试程序
{
int
x
while(1)
{
scanf("%d",&x)//可以输入任意一个角度(角度制),-1终止程序
printf("cosx=%lf\n",mycos(x*pi/180))//转换成弧度,再调用前面的函数。
printf("sinx=%lf\n",mysin(x*pi/180))
if(x==-1)
break
}
return
0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)