C語言程式設計–根據麥克勞林公式計算任意角的正弦餘弦
正弦餘弦 麥克勞林公式
問題
輸入格式
x ϵ
注:x 為角(機關:弧度),ϵ 為計算精度。
輸出格式
y
正弦輸入樣例
注:y 為 x 的正弦(餘弦)值。用 %f 格式限定符輸出 6 位小數。
要求:輸入任意角度得出計算值,所計算的最後一項的絕對值小于 ϵ。
C語言代碼
1. 求正弦
#include <stdio.h>
#include <math.h>
#define PI 3.141592654
int main()
{
int i=1,b=1;
double x,a,c,m,s=0;
scanf("%lf %lf",&x,&c);
while(fabs(x)>(PI))
{
x=x-PI; //轉化為小角度
}
a=x;
while(fabs(a/b)>=c) //判斷條件 精确度
{
s+=(a/b);
a=-1*a*x*x; //分子
b=b*(2*i)*(2*i+1); //分母
i++;
}
printf("%0.6f\n",s);//格式輸出
return 0;
}
2.求餘弦
輸入樣例1
1.047197551196598 0.00000001
輸出樣例1
0.500000
輸入樣例2
315.2064629101759 0.000001
輸出樣例2
0.500000
#include <stdio.h>
#include <math.h>
#define PI 3.141592654
int main()
{
int i=1,b=2; //注意
double x,c,m,s=1; //注意b s m 因正弦餘弦公式的不同 是以初始條件 會微調
scanf("%lf %lf",&x,&c);
while(fabs(x)>(PI))
{
x=x-PI;
}
m=-x*x; //注意
printf("%.10f\n",m);
while(fabs(m/b)>=c) //精确度
{
s+=(m/b);
printf("%0.6f\n",s);
m=-1*m*x*x; //分子
b=b*(2*i+1)*(2*i+2); //分母
i++;
}
printf("%0.6f\n",s);
return 0;
}