求余弦函数的近似值
題目要求
本題要求實現一個函數,用下列公式求cos(x)的近似值,精確到最后一項的絕對值小于e:
cos(x)=x?0?? /0!?x?2?? /2!+x?4?? /4!?x?6?? /6!+?
函數接口定義:
double funcos( double e, double x );
其中用戶傳入的參數為誤差上限e和自變量x;
函數funcos應返回用給定公式計算出來、并且滿足誤差要求的cos(x)的近似值。
輸入輸出均在雙精度范圍內。
實現代碼
#include <stdio.h> #include <math.h>double funcos( double e, double x ); double funcos( double e, double x ){double m=0,n,k=1;//k是每一項的絕對值,m是所有項的和,n是某一項的階乘 int l=1;//l是判斷正負號的 m+=k;if(m<e) return m;//第一項絕對值就小于e for(int i=2;;i=i+2){n=1;//求階乘 for(int j=i;j>=1;--j){n=n*j;}k=pow(x,i)/n;if(l%2==1) m-=k;//判斷每一項的符號加到總項里 else m+=k;if(k<e) return m;//如果這一項的絕對值<e,那么返回m l++; } } int main() { double e, x;scanf("%lf %lf", &e, &x);printf("cos(%.2f) = %.6f\n", x, funcos(e, x));return 0; }/* 你的代碼將被嵌在這里 */總結
- 上一篇: java封装概念_Java面向对象---
- 下一篇: ROS底盘控制节点 源码分析