일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 패스트 캠퍼스 #자율주행 #비전
- 파이썬 #
- 파이썬 음성파일 텍스트 변환
- PDF 개행문자
- 파이썬
- 크롬오류#크롬검색어자동완성끄기#검색어자동완성오류#검색어자동완성 제거#검색어 노란선#검색어반복입력
- 파이썬 파일 전송
- 파이썬 엑셀 파일 읽고 쓰기
- QGC#QGrouncControl#GLIB오류
- 파이썬 열
- 파이썬 유튜브
- ROS #spin() #spinOnce() #ROS기초
- 파이선 행
- 파이썬#파이썬경로#파이썬폴더#파이썬디렉토리
- 논문번역 꿀팁
- 파이썬 프로젝트
- pdf 번역
- 리눅스#모의해킹#리눅스명령어#head 명령어
- 파이썬 음성인식
- 파파고 꿀팁
- 통계 #ROC #TPR #FPR #TNR #이진분류 #Accuracy #Recall
- 파이썬 텍스트 변환 #파이썬 공부
- 파이썬#subprocess#communicate()
- 파이썬 예시
- ROS #Robotics #ROS기초
- 파이썬 채팅
- 스트림 암호 one-time-pad 공격#보안#암호
- 파파고 번역
- 파이썬 #파이썬프로젝트 #파이썬 예시 #파이썬 파일경로 #파이썬 자동화
- 리눅스기초#리눅스명령어#리눅스 tail#tail#모의해킹 리눅스
개발자비행일지
파이썬 연립방정식풀기 본문
파이썬으로 연립방정식을 풀어보도록 하자. 파이썬의 내장함수를 사용하면 쉽게 연립 방정식을 풀수 있다. 그 전에 연립방정식을 행렬로 어떻게 표현하는지 알아보도록 하자.
연립방정식은 다음과 같습니다.
위에 보인 2차 연립방정식을 푸는 이 방법은 누구라도 알 수 있다. 하지만 차수가 커질 수록 이 풀이가 어려워진다. 4차 , 5차 연립방정식이 되면 시간도 걸리고 어디까지 계산했는지 헷갈리기 시작하고, 6차 연립방정식부터는 풀 수야 있지만 손으로 푼다는 것은 시간 낭비다.
이런 경우 파이썬의 linalg.solve( ) 함수를 사용하면 아주 간단히 지가 알아서 풀어준다. 하지만 그전에 행렬로 표현해야 한다.
위의 식에서 a와 C는 2차 연립방정식에서 보았듯이 그냥 숫자(계수)이고, x1, x2, x3는 미지수 x, y, z에 해당한다. 위의 3차 연립방정식을 행렬로 표현하면 다음과 같다.
물론 이미 다 알고 계시겠지만 옛날 생각을 다시 한 번 떠올려 본다는 기분으로 살펴보면 좌변의 3x3(3행3열) 행렬과 3x1(3행1열) 행렬의 곱은 다음과 같다.
[첫번째 행렬을 계수행렬이라고 한다.] 파이썬에서 다음과 같은 행렬형태의 배열을 만들어주면 linalg.solve( ) 함수가 바로 연립방정식을 풀어주며, 이 함수는 numpy 모듈에 포함되어있다. 자 그럼 예제로 다음의 2차 연립방정식을 풀어보겠습니다.
행렬식으로 표현하면 다음과 같다.
앞에 있는 첫번째 행렬 즉 계수 행렬을 파이썬으로 표현하면 다음과 같다.
계수행렬이 2x2행렬이므로 배열(Array)를 정의할 때 array( [ [ ], [ ] ] )이 되어야 하고 만약 3x3행렬을 정의한다면 당연히 array( [ [ ], [ ], [ ] ] )과 같이선언해 주어야 한다.
미지수 [x, y]를 구하기 때문에 계수행렬과 방정식의 우변에 해당하는 행렬을 linalg.solve( ) 함수를 이용하여 해를 구한다.
[미지수 x와 y가 1차원의 배열형태로 주어집니다.]
고등학교나 대학에서 배운 선형대수학에서 연립방정식을 역행렬로 푸는 방법이 있는데, 파이썬의 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 |