我很难找到一个算法或理解这个问题说实话。 我在网上搜索过,但没有找到答案。 问题说: 编写一个方法来计算名为SpecialSeries的类中的系列总和。 该方法的签名是:计算系列的总和
public static double sumOfSeries(double x, int numTerms)
我很难找到一个算法或理解这个问题说实话。 我在网上搜索过,但没有找到答案。 问题说: 编写一个方法来计算名为SpecialSeries的类中的系列总和。 该方法的签名是:计算系列的总和
public static double sumOfSeries(double x, int numTerms)
我觉得这个代码就足以计算您的意甲:
public static double sumOfSeries(double x, int numTerms){
double result = 0;
if(x<=1 && x>=-1){
double startval=3;
for(int i=0; i<numTerms-1;i++){
result+= (double)(oddevenfact(startval-2)/oddevenfact(startval-1))*(Math.pow(x, startval)/startval);
startval+=2;
}
if(numTerms!=0) result+=x;
}
return result;
}
static double oddevenfact(double x){
if (x>2) return(oddevenfact(x-2) * (long) x);
return((double) x);
}
public class SpecialSeries {
public static double SumOfSeries(double x, int numTerms) {
if (numTerms == 1) {
return x;
}
int maxOdd = numTerms * 2 - 1;
int maxEven = numTerms * 2 - 2;
double powerTerm = Math.pow(x, maxOdd)/maxOdd;
int numerator = 1;
for (int numMult = maxOdd - 2; numMult > 2; numMult -= 2) {
numerator *= numMult;
}
int denominator = 2;
for (int numMult = maxEven; numMult > 2; numMult -= 2) {
denominator *= numMult;
}
return powerTerm * numerator/denominator + sumOfSeries(x, numTerms - 1);
}
public static void main(String[] args) {
try {
int numTerms = Integer.parseInt(args[0]);
double x = Double.parseDouble(args[1]);
System.out.println(sumOfSeries(x, numTerms));
} catch (Exception e) {
e.printStackTrace();
}
}
}
,我们可以做更多的数学简化,或继续用于执行力度
爪哇implimenttion
public class SpecialSeries {
public static double sumOfSeries(double x, int numTerms){
double sum = x;
//System.out.println("u["+0+"] = "+x);
for (int k = 1; k < numTerms; k++) {
double uk = Math.pow(x,2*k+1)/(double)(2*k+1);
for (int i = 2*k-1; i >0; i-=2) {
uk *= i/(double)(i+1);
}
//System.out.println("u["+k+"] = "+uk);
sum += uk;
}
return sum;
}
public static void main(String[] args) {
System.out.println(sumOfSeries(1, 5));
}
}
到目前为止你做了什么? – Sedrick
嗯,这不完全是一个合适的SO问题。但是,如果您想检查一下,我确实发现了这一点,希望它能将您推向正确的方向:https://github.com/java-tester-x/javaexercises/blob/master/difficult/SpecialSeries.java – Cody
The开始的最佳地点将是手工完成一些。我建议先从X的值开始,然后手工完成这个系列,这可能会给你提示如何解决这个问题。 – Eabryt