【问题标题】:Jacobian in ScalaScala 中的雅可比行列式
【发布时间】:2017-04-22 12:18:55
【问题描述】:

有没有一种方法/库来计算 Scala 中的 Jacobian 函数,类似于 R 中 numDeriv 包中的 Jacobian 函数?我正在使用 Breeze,但我无法在其中找到任何与 Jacobian 相关的内容。

为了清楚起见,我想在 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 scala matrix calculus scala-breeze


    【解决方案1】:

    也许您可以将我曾经编写的以下 Java 代码转换为 Scala:

        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;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多