Java 计算级数

Java 计算级数,java,math,series,Java,Math,Series,赋值:编写一个方法来计算以下序列: m(i)=1-(1/2)+(1/3)-(1/4)+(1/5)-…+((-1)^(i+1))/i 编写一个显示以下代码的测试程序: i: m(i): 5 0,78333 10 0,64563 .. .. 45 0,70413 50 0,68324 我已经试了几个小时了,但我想不出怎么解决这个问题。也许我只是个傻瓜哈哈:) 以下是我目前的代码: package computingaseri

赋值:编写一个方法来计算以下序列: m(i)=1-(1/2)+(1/3)-(1/4)+(1/5)-…+((-1)^(i+1))/i

编写一个显示以下代码的测试程序:

i:       m(i):
5        0,78333
10       0,64563
..       ..
45       0,70413
50       0,68324
我已经试了几个小时了,但我想不出怎么解决这个问题。也许我只是个傻瓜哈哈:)

以下是我目前的代码:

package computingaseries;

public class ComputingASeries {

    public static void main(String[] args) {

        System.out.println("i\t\tm(i)");
        for (int i = 5; i <= 50; i += 5) {
            System.out.println(i + "\t\t" + m(i));
        }
    }
定义x时必须去掉“1-”,即x=(-1)^(i+1))/i

编辑

对于x==1没有特殊情况,x总是定义为x=Math.pow(-1,i+1)/i。注意(-1^(1+1))/1=(-1)^2)/1=1/1=1。 tal+=x也进入for循环。

公共类特殊系列{
public class SpecialSeries {

    public static double m(int n){
        double sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += Math.pow(-1, (i+1))/(double)i;
        }  
        System.out.println(n+"\t"+sum);
        return sum;
    }  

    public static void main(String[] args) {
        System.out.println("i:\tm(i)");
        for (int i = 5; i < 50; i+=5) {
            m(i);
        }
    }
}
公共静态双m(整数n){ 双和=0;
对于(int i=1;我提示,^不是你所想的幂。此外,整数除法和浮点除法之间的区别是基本的。Math.pow现在可以工作了,谢谢:)但是输出错误:/Dan W回答的也是正确的,你必须对幂使用正确的运算符,所以我已经消除了“1-”正如你告诉我的,现在看起来还好吗?Math.pow工作正常,但输出完全混乱。你能发现问题吗?更新代码@top:)这是不正确的,因为x的定义总是x=((Math.pow(-1,(i+1)))/i);i==1没有特殊情况,即((-1)^(1+1))/1=(-1)^2)/1=1/1=1,这是序列的第一项。此外,tal+=x进入for循环中,对于任何i都没有特殊情况。代码应该如下所示:double tal=0;double x=0;for(int i=1;i
i       m(i)
5       0.2
10      -0.1
15      0.06666666666666667
20      -0.05
25      0.04
30      -0.03333333333333333
35      0.02857142857142857
40      -0.025
45      0.022222222222222223
50      -0.02
public class SpecialSeries {

    public static double m(int n){
        double sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += Math.pow(-1, (i+1))/(double)i;
        }  
        System.out.println(n+"\t"+sum);
        return sum;
    }  

    public static void main(String[] args) {
        System.out.println("i:\tm(i)");
        for (int i = 5; i < 50; i+=5) {
            m(i);
        }
    }
}