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

区间[0.1,1.5]内无穷级数求和代码错误排查求助

级数求和代码错误排查与修正

错误分析

你的代码核心问题出在项的递推逻辑,尤其是分母的计算:

  • 原代码中用i*(i-1)作为新项的分母,但级数每一项的分母是累积的双阶乘(2! → 4! = 2!×4×3 → 6! =4!×6×5…),直接用当前i的乘积会导致分母被严重低估,计算结果偏离正确值。
  • 单独维护分子变量a但未同步维护分母的阶乘累积,导致累加项a/(i*(i-1))完全不符合级数的项定义。

修正后的代码

Scanner sc = new Scanner(System.in);
System.out.print("x=");
double x = sc.nextDouble();
sc.close();
if (x < 0.1 || x > 1.5) {
    System.out.println("error");
    return;
}

// 预计算4x²,避免重复计算
double fourXSq = 4 * x * x;
// 初始化级数第一项:-(2x)²/2! = -4x²/2
double term = -fourXSq / 2;
double s = term;
// current表示下一项分母需要乘的第一个数(从4开始,对应4!的4)
int current = 4;

// 循环直到项的绝对值小于精度阈值0.001
while (Math.abs(term) > 0.001) {
    // 递推下一项:前一项 × (-4x²) / (current × (current-1))
    term = term * (-fourXSq) / (current * (current - 1));
    s += term;
    current += 2;
}

System.out.printf("function=%.4f%n", 2 * (Math.cos(x) * Math.cos(x) - 1));
System.out.printf("summa=%.4f", s);

修正说明

  1. 直接递推每一项的值term,基于前一项计算,避免拆分分子分母导致的逻辑混乱。
  2. 预计算4x²(即(2x)²),提升计算效率。
  3. 分母通过current*(current-1)累积计算,每次循环current加2,对应阶乘的后续两个乘数(4×3、6×5…),完全符合级数项的分母要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:11:16