com.powsybl.math.matrix.LUDecomposition Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of powsybl-math Show documentation
Show all versions of powsybl-math Show documentation
A set of mathematical utilities
The newest version!
/**
* Copyright (c) 2017, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.math.matrix;
/**
* LU decomposition utility class. As some decomposition implementation may allocate resources that need to be released
* a try-with-resource block has to be used to ensure correct resource management.
*
* try (LUDecomposition decomposition = m.decomposeLU()) {
* decomposition.solve(...)
* }
*
*
* @see https://en.wikipedia.org/wiki/LU_decomposition
*
* @author Geoffroy Jamgotchian {@literal }
*/
public interface LUDecomposition extends AutoCloseable {
/**
* Method to call when matrix has been updated to refresh LU decomposition so that new data can be taken into
* account in next {@link #solve(double[])} or {@link #solve(DenseMatrix)}.
* @param allowIncrementalUpdate allow decomposition incremental update (so using previous decomposition values)
*/
void update(boolean allowIncrementalUpdate);
/**
* Method to call when matrix has been updated to refresh LU decomposition so that new data can be taken into
* account in next {@link #solve(double[])} or {@link #solve(DenseMatrix)}.
*/
default void update() {
update(true);
}
/**
* Solve A * x = b where b is a column vector.
*
* @param b a column vector
*/
void solve(double[] b);
/**
* Solve AT * x = b where b is a column vector.
*
* @param b a column vector
*/
void solveTransposed(double[] b);
/**
* Solve A * x = b where b is a dense matrix.
*
* @param b a matrix
*/
void solve(DenseMatrix b);
/**
* Solve AT * x = b where b is a dense matrix.
*
* @param b a matrix
*/
void solveTransposed(DenseMatrix b);
/**
* {@inheritDoc}
*/
@Override
void close();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy