7-4 余弦函数 (15 分)
根据麦克劳林公式计算任意角的余弦。
输入格式
x ε
注:x 为角(单位:弧度),ε 为计算精度。
输出格式
y
注:y 为 x 的余弦值。用 %f 格式限定符输出 6 位小数。
输入样例1
1.047197551196598 0.00000001
输出样例1
0.500000
输入样例2
315.2064629101759 0.000001
输出样例2
0.500000
要求:所计算的最后一项的绝对值小于 ε。
注:pi=3.1415926535897932384626...。
#include<stdio.h>
#include<math.h>
int main() {
double x, y;
double pi = 6.28318530718;//周期为2pi!
//将x进行等价化减少计算时间
scanf("%lf %lf", &x, &y);
x = fmod(x, pi);//用fmod函数来进行求余(浮点数之间无法直接求余)
double sum = 1;
double fenmu = 1;
double k1 = 2;//k1即为变换的关键(2,4,6,8,)
double now = 1;
int i = 1;
for (; 1;) {
if (fabs(now) < y) {
break;//这里进行判断
}
i++;
fenmu = fenmu * (k1 - 1);
fenmu = fenmu * k1;//这样来求阶乘
now = (pow(x, k1)) / fenmu;
if (i % 2 == 0) {//这样来分正负
sum -= now;
}
else {
sum += now;
}
k1 += 2;
}
printf("%.6lf", sum);
return 0;
}
如有简单方法,欢迎共同讨论蛤!