我正在尝试使用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
我很感激你的帮助。哪里出错?提前谢谢。
答案 0 :(得分:1)
查看javadoc for solve,它接受其中PolynomialFunction是子类的UnivariateRealFunction,因此您的语法是正确的。我希望你使用旧版本的commons数学库。检查您是否正在使用最新的commons数学实现(2.2),并且您的类路径中没有旧版本。
答案 1 :(得分:0)
您没有在.java文件中创建一个类 - 它不是有效的Java。你需要创建一个类,然后在其中创建一个方法,然后将四行代码放在方法中。您可能需要获得Java教程并进行一些研究 - 否则您将会在这里进行很多操作!