Использование библиотеки apache.commons.math для Java "ошибка не может найти символ" - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь использовать apache-библиотеку для решения полиномиального уравнения.Я не профессионал 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 ]

1 голос
/ 13 июля 2011

Глядя на javadoc для решения , он принимает UnivariateRealFunction s, из которых PolynomialFunction является подклассом, поэтому ваш синтаксис правильный. Я ожидаю, что вы используете старую версию библиотеки математики обыкновенных. Убедитесь, что вы используете последнюю математическую реализацию commons (2.2) и что в вашем пути к классам нет старых версий.

0 голосов
/ 13 июля 2011

Вы не создали класс в своем файле .java - это недопустимый Java. Вам нужно создать класс, затем метод внутри него, а затем поместить в него четыре строки кода. Вам, вероятно, нужно получить учебник по Java и немного изучить - иначе вы будете здесь много!

...