Source code for physbo.misc.gauss_elim

# SPDX-License-Identifier: MPL-2.0
# Copyright (C) 2020- The University of Tokyo
#
# 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 https://mozilla.org/MPL/2.0/.

import numpy as np
import scipy


[docs] def gauss_elim(U, t): """ Calculate alpha using scipy.linalg.solve_triangular. alpha = (U^T U)^-1 t = U^-1 [(U^T)-1 t] Parameters ---------- U: (M, M) array_like A triangular matrix t: (M,) or (M, N) array_like Returns ------- alpha: numpy.ndarray Solution to the system L^T alpha = t. Shape of return matches t. """ alpha = scipy.linalg.solve_triangular( U.transpose(), t, lower=True, overwrite_b=False, check_finite=False ) alpha = scipy.linalg.solve_triangular( U, alpha, lower=False, overwrite_b=False, check_finite=False ) return alpha