Class SensitivityMatrix

java.lang.Object
neqsim.process.util.uncertainty.SensitivityMatrix
All Implemented Interfaces:
Serializable

public class SensitivityMatrix extends Object implements Serializable
Represents a sensitivity matrix for uncertainty propagation in process simulations.

The sensitivity matrix contains partial derivatives of output variables with respect to input variables, enabling uncertainty propagation and sensitivity analysis for optimization.

Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • inputVariables

      private final String[] inputVariables
    • outputVariables

      private final String[] outputVariables
    • jacobian

      private final double[][] jacobian
    • inputIndex

      private final Map<String,Integer> inputIndex
    • outputIndex

      private final Map<String,Integer> outputIndex
  • Constructor Details

    • SensitivityMatrix

      public SensitivityMatrix(String[] inputVariables, String[] outputVariables)
      Creates a new sensitivity matrix.
      Parameters:
      inputVariables - names of input variables
      outputVariables - names of output variables
  • Method Details

    • setSensitivity

      public void setSensitivity(String outputVariable, String inputVariable, double sensitivity)
      Sets a sensitivity value (partial derivative).
      Parameters:
      outputVariable - the output variable name
      inputVariable - the input variable name
      sensitivity - the partial derivative d(output)/d(input)
    • getSensitivity

      public double getSensitivity(String outputVariable, String inputVariable)
      Gets a sensitivity value.
      Parameters:
      outputVariable - the output variable name
      inputVariable - the input variable name
      Returns:
      the partial derivative, or 0 if not found
    • getJacobian

      public double[][] getJacobian()
      Gets the raw Jacobian matrix.
      Returns:
      the Jacobian matrix (output x input)
    • getSensitivitiesForOutput

      public double[] getSensitivitiesForOutput(String outputVariable)
      Gets the sensitivity row for a specific output.
      Parameters:
      outputVariable - the output variable name
      Returns:
      array of sensitivities to all inputs, or null if not found
    • propagateUncertainty

      public double[] propagateUncertainty(double[] inputStdDevs)
      Propagates input uncertainties to output uncertainties.

      Uses the formula: Cov(Y) = J * Cov(X) * J^T where J is the Jacobian.

      Parameters:
      inputStdDevs - standard deviations of input variables
      Returns:
      standard deviations of output variables
    • propagateCovariance

      public double[][] propagateCovariance(double[][] inputCovariance)
      Propagates uncertainties with correlation.
      Parameters:
      inputCovariance - covariance matrix of inputs
      Returns:
      covariance matrix of outputs
    • getInputVariables

      public String[] getInputVariables()
      Gets the input variable names.
      Returns:
      array of input variable names
    • getOutputVariables

      public String[] getOutputVariables()
      Gets the output variable names.
      Returns:
      array of output variable names
    • getMostInfluentialInputs

      public Map<String,String> getMostInfluentialInputs()
      Identifies the most influential input for each output.
      Returns:
      map of output variable to most influential input variable
    • getNormalizedSensitivities

      public double[][] getNormalizedSensitivities(double[] inputValues, double[] outputValues)
      Calculates normalized sensitivities (elasticities).
      Parameters:
      inputValues - current values of input variables
      outputValues - current values of output variables
      Returns:
      normalized sensitivity matrix (% change in output / % change in input)