使用apache.commons.math库为java“找不到符号”错误

时间:2011-07-13 18:43:34

标签: java compiler-errors apache-commons

我正在尝试使用apache library来求解多项式方程。我不是一名java专业人士,所以我可能犯了一个愚蠢的错误。这就是为什么这段代码不起作用的原因:

import org.apache.commons.math.analysis.*;
import org.apache.commons.math.analysis.solvers.*;
import org.apache.commons.math.analysis.polynomials.*;
import org.apache.commons.math.analysis.LaguerreSolver.*;

double rp = 1, M=10000, Mp = 500; 
double rrp = rp*rp, rp2 = 2.0*rp; // shorthand variables for powers of rp
double[] c = { -rrp*rrp, rp2*rrp, -(Mp/M+1)*rrp, rrp, rp2, 1.0 };

PolynomialFunction lagrangian = new PolynomialFunction(c);
LaguerreSolver solver = new LaguerreSolver();
double rs = solver.solve(100, lagrangian, rp, 2*rp);
System.out.println("rs: "+rs);

收到此消息失败:

/home/confus/Desktop/EJS_4.3.3.1/workspace/output/lagrange_pkg/lagrange.java:334: cannot find symbol
symbol  : method solve(int,org.apache.commons.math.analysis.polynomials.PolynomialFunction,double,double)
location: class org.apache.commons.math.analysis.solvers.LaguerreSolver
    double rs = solver.solve(100, lagrangian, rp, 2*rp);  // > Initialization.Init Page:18
                  ^
1 error

我很感激你的帮助。哪里出错?提前谢谢。

2 个答案:

答案 0 :(得分:1)

查看javadoc for solve,它接受​​其中PolynomialFunction是子类的UnivariateRealFunction,因此您的语法是正确的。我希望你使用旧版本的commons数学库。检查您是否正在使用最新的commons数学实现(2.2),并且您的类路径中没有旧版本。

答案 1 :(得分:0)

您没有在.java文件中创建一个类 - 它不是有效的Java。你需要创建一个类,然后在其中创建一个方法,然后将四行代码放在方法中。您可能需要获得Java教程并进行一些研究 - 否则您将会在这里进行很多操作!