Java 计算级数
赋值:编写一个方法来计算以下序列: m(i)=1-(1/2)+(1/3)-(1/4)+(1/5)-…+((-1)^(i+1))/i 编写一个显示以下代码的测试程序: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
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);
}
}
}