如何在C语言中解决正弦或余弦函数的表示方法我是一个

如何在C语言中解决正弦或余弦函数的表示方法我是一个,第1张

如何在C语言中解决正弦或余弦函数的表示方法我是一个?头文件包含。math.h

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12030584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存