鱼C论坛

 找回密码
 立即注册
查看: 1033|回复: 1

求求帮忙

[复制链接]
发表于 2021-10-20 22:12:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用泰勒公式求sinx和cosx的近似值,精确到10e-5
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-20 23:03:55 | 显示全部楼层
本帖最后由 jackz007 于 2021-10-21 00:58 编辑
  1. #include <stdio.h>
  2. #include <math.h>

  3. /* 本程序利用泰勒级数近似计算 sin(x) 和 cos(x) 的数值,精确到 10e-5 */
  4. /* 算法参考:http://www.ab126.com/shuxue/3820.html */

  5. double sinx(double x)
  6. {
  7.         long long b , i , j , s                      ;
  8.         double e , v                                 ;
  9.         for(e = 1.0 , s = 1 , v = 0.0 , i = 1 ; e >= 0.00001 ; i += 2 , s = - s) {
  10.                 for(b = 1 , j = i ; j ; j --) b *= j ;
  11.                 e = pow(x , i) / b                   ;
  12.                 v += s * e                           ;
  13.         }
  14.         return v                                     ;
  15. }

  16. double cosx(double x)
  17. {
  18.         long long b , i , j , s                      ;
  19.         double e , v                                 ;
  20.         for(e = v = 1.0 , s = -1 , i = 2 ; e >= 0.00001 ; i += 2 , s = - s) {
  21.                 for(b = 1 , j = i ; j ; j --) b *= j ;
  22.                 e = pow(x , i) / b                   ;
  23.                 v += s * e                           ;
  24.         }
  25.         return v                                     ;
  26. }

  27. int main(void)
  28. {
  29.         double x = 0.0                               ;
  30.         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
  31.         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
  32.         x = M_PI / 6                                 ;
  33.         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
  34.         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
  35.         x = M_PI / 3                                 ;
  36.         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
  37.         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
  38.         x = M_PI / 2                                 ;
  39.         printf("sin(%lf) = %lf\n" , x , sinx(x))     ;
  40.         printf("cos(%lf) = %lf\n" , x , cosx(x))     ;
  41. }
复制代码

        编译、运行实况:
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. sin(0.000000) = 0.000000
  4. cos(0.000000) = 1.000000
  5. sin(0.523599) = 0.500000
  6. cos(0.523599) = 0.866025
  7. sin(1.047198) = 0.866025
  8. cos(1.047198) = 0.500000
  9. sin(1.570796) = 1.000000
  10. cos(1.570796) = 0.000000

  11. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 00:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表