본문 바로가기

선형대수학

LA-4) 연립방정식,역행렬,행렬식을 구하는 방법 [R]

library(matlib)
library(pracma)
#GE(가우스 소거법)
A <- matrix(c(3,-2,0,
              -1,5,-1,
              0,-1,2),byrow = T,ncol=3)
b<- c(-3,8,10)
gaussianElimination(A,b)
> gaussianElimination(A,b)
     [,1] [,2] [,3]     [,4]
[1,]    1    0    0 1.086957
[2,]    0    1    0 3.130435
[3,]    0    0    1 6.565217

#LU분해
lu_solve <- function(A,b){
  lu <- lu(A)
  U <- lu$U
  L <- lu$L
  #LY =b
  Y <- solve(L,b)
  X <- solve(U,Y)
  print(X)
  }
lu_solve(A,b)
> lu_solve(A,b)
[1] 1.086957 3.130435 6.565217

역행렬

수반행렬이 뭔지 모르겠다면?

https://pastryofjsmath.tistory.com/31

 

LA-1) 행렬식과 여인수,수반행렬

R코드를 이용하면 바로 구하실 수 있습니다.A R코드를 이용하면 상당한 편함을 느끼실 수 있습니다.cofactor(여인수),minor(소행렬식),adjoint 등 구하실려면, 다음 패키지를 불러오세요.library(RConics)libr

pastryofjsmath.tistory.com

 

#A역행렬
solve(A)
#수반행렬로 역행렬 구하기
{1/det(A)}*adjoint(A)
#GE로 풀기
gaussianElimination(A=A,B = diag(3))
#LU분해로 역행렬구하기
lu_solve(A,diag(3))

여기서 주요 포인트는 요소 0을 최대한 가진 행과열을 만들 수 있게 행연산을 실시하는 것이다.

그리고 이에 대한 계산도 위의 행렬식 구하는 방법으로 다시 조정을 시켜주어야 하며,

모두 영행(열)으로 구성되어 있다면 (-> 기본행연산으로 조작을 시켜서 만들 수 있음) 행렬식은 0이다.

(= rank가 적어도 하나 이상 부족해진다면)

 

다음은 사이즈가 큰 행렬을 구역으로 나누어 행렬식 성질로 간단하게 나타내는 방법이다.

구역 행렬 설명

마지막으로 연립방정식을 풀 수 있는 크래머방법에 대한 설명이다.