2016-02-10 9 views
1

Как создать символические переменные/функции с использованием векторов с помощью JScience? Создание плавающих переменных легко:Как создать символические переменные/функции с использованием векторов с помощью JScience?

Variable<Float64> varX = Variable.local<Float64>("x"); 

Как я могу сделать то же самое для вектора? Как только у меня есть векторная переменная, как мне создать a Polynomial с использованием этого вектора (скажем, с использованием евклидова расстояния)?

ответ

1

Учитывая коэффициенты Vector<Float64>, вы можете построить Polynomial<Float64>, как показано ниже. Как показано here, коэффициент наивысшего порядка является первым для удобства применения схемы Хорнера.

public static Polynomial<Float64> create(Vector<Float64> v) { 
    Variable<Float64> x = new Variable.Local<Float64>("x"); 
    Polynomial<Float64> px = Polynomial.valueOf(Float64.ZERO, x); 
    for (int i = 0, e = v.getDimension() - 1; i < v.getDimension(); i++, e--) { 
     px = px.plus(Polynomial.valueOf(v.get(i), Term.valueOf(x, e))); 
    } 
    return px; 
} 

Типичное использование:

Polynomial<Float64> px = create(Float64Vector.valueOf(3, 2, 1)); 
System.out.println(px); 
System.out.println(px.evaluate(Float64.ONE)); 

консоли:

[3.0]x² + [2.0]x + [1.0] 
6.0