| 
 | 
 
 
发表于 2021-10-20 23:03:55
|
显示全部楼层
 
 
 
 本帖最后由 jackz007 于 2021-10-21 00:58 编辑  
- #include <stdio.h>
 
 - #include <math.h>
 
  
- /* 本程序利用泰勒级数近似计算 sin(x) 和 cos(x) 的数值,精确到 10e-5 */
 
 - /* 算法参考:http://www.ab126.com/shuxue/3820.html */
 
  
- double sinx(double x)
 
 - {
 
 -         long long b , i , j , s                      ;
 
 -         double e , v                                 ;
 
 -         for(e = 1.0 , s = 1 , v = 0.0 , i = 1 ; e >= 0.00001 ; i += 2 , s = - s) {
 
 -                 for(b = 1 , j = i ; j ; j --) b *= j ;
 
 -                 e = pow(x , i) / b                   ;
 
 -                 v += s * e                           ;
 
 -         }
 
 -         return v                                     ;
 
 - }
 
  
- double cosx(double x)
 
 - {
 
 -         long long b , i , j , s                      ;
 
 -         double e , v                                 ;
 
 -         for(e = v = 1.0 , s = -1 , i = 2 ; e >= 0.00001 ; i += 2 , s = - s) {
 
 -                 for(b = 1 , j = i ; j ; j --) b *= j ;
 
 -                 e = pow(x , i) / b                   ;
 
 -                 v += s * e                           ;
 
 -         }
 
 -         return v                                     ;
 
 - }
 
  
- int main(void)
 
 - {
 
 -         double x = 0.0                               ;
 
 -         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
 
 -         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
 
 -         x = M_PI / 6                                 ;
 
 -         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
 
 -         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
 
 -         x = M_PI / 3                                 ;
 
 -         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
 
 -         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
 
 -         x = M_PI / 2                                 ;
 
 -         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
 
 -         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
 
 - }
 
  复制代码 
        编译、运行实况: 
- D:\00.Excise\C>g++ -o x x.c
 
  
- D:\00.Excise\C>x
 
 - sin(0.000000) = 0.000000
 
 - cos(0.000000) = 1.000000
 
 - sin(0.523599) = 0.500000
 
 - cos(0.523599) = 0.866025
 
 - sin(1.047198) = 0.866025
 
 - cos(1.047198) = 0.500000
 
 - sin(1.570796) = 1.000000
 
 - cos(1.570796) = 0.000000
 
  
- D:\00.Excise\C>
 
  复制代码 |   
 
 
 
 |