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

Java中arctan函数实现故障:代码返回输入值x的问题排查

反正切函数实现问题修复

待实现函数

待实现的反正切泰勒展开公式
这是反正切函数的泰勒展开近似公式,需要累加多组项来计算arctan(x)的近似值。

原代码问题

public class arctan {
    public static double arctan(double x) {
        double sum = 0;
        int k = 0;

        double arctan1 = (Math.pow(-1, k) * (Math.pow(x, 2 * k + 1) / (2 * k + 1)));
        for (int i = k; i < 100; i++) {
            sum =+ arctan1;
        }
        return (double) arctan1;
    }
}

你的代码有三个核心错误:

  1. 只计算了第一项:arctan1只算出了k=0时的项(也就是x本身),循环里完全没更新这个值,等于重复加同一个数。
  2. 累加操作写错:sum =+ arctan1是赋值操作,不是累加,正确写法是sum += arctan1。
  3. 返回值错误:你最后返回的是arctan1而不是累加后的sum,自然只会输出x。

修复后的代码

public class Arctan {
    public static double arctan(double x) {
        double sum = 0.0;
        // 循环计算泰勒展开的每一项,k从0到99
        for (int k = 0; k < 100; k++) {
            // 计算当前项:(-1)^k * x^(2k+1)/(2k+1)
            double term = Math.pow(-1, k) * Math.pow(x, 2 * k + 1) / (2 * k + 1);
            sum += term;
        }
        return sum;
    }
}

修复说明:

  • 直接用k作为循环变量,每次循环计算对应k的泰勒项
  • 每算出一项就累加到sum中
  • 最终返回累加后的sum,得到arctan(x)的近似值
  • 类名改成Java规范的大驼峰命名Arctan

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:20:41