세미나

세미나

Seminar

220404

Classification strategies in machine learning techniques predicting regime changes and durations in the Lorenz system

Google Drive

원드라이브


가우스 소거법으로 역행렬 구하는 알고리즘

Algorithm to Get Inverse Matrix using Gaussian Elimination

알고리즘

예시

$$ \begin{align*} & \begin{bmatrix} -2& 3 & 4 & 0 \\ 2 & 0 & 1 & 0 \\ -5& 5 & 6 & 0 \\ 1 & 0 & 1 & 1 \end{bmatrix} & \cdots \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \\ \to & \begin{bmatrix} -2& 3 & 4 & 0 \\ 2 & 0 & 1 & 0 \\ -5& 5 & 6 & 0 \\ 1 & 0 & 1 & 1 \end{bmatrix} & \cdots \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \end{align*} $$

코드

다음은 가우스 소거법으로 역행렬을 구하는 줄리아 코드다.

using LinearAlgebra

M = [-2 3 4 0
      2 0 1 0
     -5 5 6 0
      1 0 1 1]
inv_M = inv(M)

n = size(M)[1]
M = Float64.(M)
X = Matrix(1.0I,n,n)
for j = 1:n
    if iszero(M[j,j])
        for i = j:n
            if !iszero(M[i,i])
                M[[j,i],:] = M[[i,j],:]
                break
            end
        end
    end

    pivot = M[j,j]
    for i = 1:n
        if i == j continue end
        r = (- M[i,j] / pivot)
        M[i,:] += r*M[j,:]
        X[i,:] += r*X[j,:]
    end
end

for i = 1:n
    pivot = M[i,i]
    M[i,:] /= pivot
    X[i,:] /= pivot
end
M
X
inv_M
댓글