관리 메뉴

개발자비행일지

파이썬 연립방정식풀기 본문

▶ Python

파이썬 연립방정식풀기

Cyber0946 2020. 7. 7. 18:13

파이썬으로 연립방정식을 풀어보도록 하자. 파이썬의 내장함수를 사용하면 쉽게 연립 방정식을 풀수 있다. 그 전에 연립방정식을 행렬로 어떻게 표현하는지 알아보도록 하자. 

연립방정식은 다음과 같습니다.

위에 보인 2차 연립방정식을 푸는 이 방법은 누구라도 알 수 있다. 하지만 차수가 커질 수록 이 풀이가 어려워진다. 4차 , 5차 연립방정식이 되면 시간도 걸리고 어디까지 계산했는지 헷갈리기 시작하고, 6차 연립방정식부터는 풀 수야 있지만 손으로 푼다는 것은 시간 낭비다.

이런 경우 파이썬의 linalg.solve( ) 함수를 사용하면 아주 간단히 지가 알아서 풀어준다. 하지만 그전에 행렬로 표현해야 한다. 

위의 식에서 aC2차 연립방정식에서 보았듯이 그냥 숫자(계수)이고, x1, x2x3는 미지수 x, y, z에 해당한다. 위의 3차 연립방정식을 행렬로 표현하면 다음과 같다.

물론 이미 다 알고 계시겠지만 옛날 생각을 다시 한 번 떠올려 본다는 기분으로 살펴보면 좌변의 3x3(33) 행렬과 3x1(31) 행렬의 곱은 다음과 같다.

행렬의 곱셈

 

 

[첫번째 행렬을 계수행렬이라고 한다.] 파이썬에서 다음과 같은 행렬형태의 배열을 만들어주면 linalg.solve( ) 함수가 바로 연립방정식을 풀어주며, 이 함수는 numpy 모듈에 포함되어있다.  자 그럼 예제로 다음의 2차 연립방정식을 풀어보겠습니다.

 행렬식으로 표현하면 다음과 같다.

 앞에 있는 첫번째 행렬 즉 계수 행렬을 파이썬으로 표현하면 다음과 같다. 

계수행렬이 2x2행렬이므로 배열(Array)를 정의할 때 array( [ [ ], [ ] ] )이 되어야 하고 만약 3x3행렬을 정의한다면 당연히 array( [ [ ], [ ], [ ] ] )과 같이선언해 주어야 한다. 

미지수 [x, y]를 구하기 때문에 계수행렬과 방정식의 우변에 해당하는 행렬을 linalg.solve( ) 함수를 이용하여 해를 구한다.

 

[미지수 xy1차원의 배열형태로 주어집니다.]

 

고등학교나 대학에서 배운 선형대수학에서 연립방정식을 역행렬로 푸는 방법이 있는데, 파이썬의 numpy 모듈 역시 이 방법을 지원합니다행렬 중에서 단위행렬(Unit Matrix)이라는 것이 있는데 행렬의 대각성분이 모두 1이고, 대각성분을 제외한 것은 모두 0인 행렬이다.

 

 

[단위행렬(Unit Matrix)는 행과 열의 개수가 같은 정방행렬(nxn)이며, 단위행렬을 nxn의 행렬 A에 곱해도 그 결과는 행렬 A가 됩니다. 수에 있어서 1과 같습니다.]

어떤 행렬(A)에 또 다른 행렬(A-1)을 곱했을 때 그 결과가 단위행렬(I)이 되는 경우  A-1을 행렬 A의 역행렬이라고한다. 이 성질을 이용하면 계수행렬의 역행렬을 사용해 연립방정식의 미지수를 구할 수 있다. 

[A는 계수행렬, X는 미지수의 행렬입니다따라서 계수행렬의 역행렬을 구하면 미지수행렬의 값을 구할 수 있습니다.]

 

파이썬에서 역행렬을 구해주는 함수는 np.linalg.inv( ) 함수이고, 행렬을 곱하는 경우(행렬 [AA]와 행렬 [BB]의 곱)에는 dot( ) 함수를 사용해야합니다. , np.dot(AA, BB)와 같이 적어주면 된다.

 

 

'▶ Python' 카테고리의 다른 글

파이썬 os모듈 사용법  (0) 2020.07.10
파이썬으로 pdf 파일 제목 추출하기  (0) 2020.07.10
파이썬 부등식  (0) 2020.07.07
파이참 단축키  (0) 2020.07.07
파이썬으로 10진법에서 2진법 16진법 으로 변경하기  (0) 2020.03.22