You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义cosx函数计算结果错误求助(新手编程问题)

自定义cos1x函数的错误分析与修正

你的自定义cos1x函数存在三个核心错误,导致计算结果偏离标准库函数:

  • 初始值错误:余弦函数的泰勒展开式第一项是1,而非x,你当前代码将cosx初始化为x,直接导致结果整体偏移。
  • 首项计算错误:numerator初始值设为x不符合余弦泰勒展开的第二项(-x²/2!)的要求,应初始化为x*x/(2*1)。
  • 变量j未递增:循环内没有对j执行j+=2操作,导致后续项的分母始终为2*1,无法正确计算高阶项(如x⁴/4!需要分母4*3)。

修正后的cos1x函数代码

double cos1x(double x, int i)
{
  int j = 2;
  double cosx, numerator, pr;
  // 余弦泰勒展开第一项为1
  cosx = 1.0;
  // 初始化第一个需要参与加减的项:x²/(2!)
  numerator = x * x / (j * (j - 1));
  do
  {
    pr = numerator;
    // 根据i的奇偶性决定加减符号
    if(i % 2 == 1)
      cosx -= numerator;
    else
      cosx += numerator;
    i++;
    j += 2; // 递增j以计算下一个偶数阶的分母
    // 推导下一项:前一项 * x² / (j*(j-1))
    numerator = pr * x * x / (j * (j - 1));
  } while(fabs(pr - numerator) > 0.000001);
  return cosx;
}

修正后,自定义cos1x的计算结果会和标准库cos()函数的结果一致,精度满足你的循环终止条件(差值小于0.000001)。

内容的提问来源于stack exchange,提问作者Cheat3d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:20:20