2017-04-22 6 views
0

Existe-t-il un moyen/une bibliothèque pour calculer jacobien dans Scala similaire à la fonction jacobienne à l'intérieur du paquet numDeriv dans R? J'utilise Breeze, mais je n'ai pas pu trouver quoi que ce soit en rapport avec Jacobian.Jacobien dans Scala

Pour plus de clarté, je veux faire quelque chose comme ce qui suit à Scala:

install.packages("numDeriv")  
library(numDeriv) 
logistG <- function(r, p, k, t){ 
     k * p * exp(r*t)/(k + p * (exp(r*t) - 1)) 
    } 

a <- function(x, k, deltaT){ 
c(r=x[1],logistG(r=x[1], p=x[2], k, deltaT)) 
     } 

k <- 100 
p0 <- 0.1*k 
r <- 0.2 
deltaT <- 0.1 
x <- c(r, p0) 
A <- jacobian(a, x=x, k=k, deltaT=deltaT) 

Répondre

0

Peut-être que vous pouvez convertir en Scala le code Java suivant que j'ai écrit une fois:

public static double[][] computeJacobian(Function<double[], double[]> func, double[] x) { 

    double EPS = 1E-6; 

    double[] d1 = func.apply(x); 
    double[][] J = new double[d1.length][x.length]; 
    for (int i = 0; i < d1.length; i++) { 
     double[] vals = x.clone(); 
     vals[i] += EPS; 
     double[] d2 = func.apply(vals); 
     for (int j = 0; j < d1.length; j++) { 
      J[j][i] = ((d2[j] - d1[j])/EPS); 
     } 
    } 
    return J; 

}