Numpy 행렬곱, 연립방정식
행렬곱
행렬곱은 두 개의 행렬에서 한 개의 행렬을 만들어내는 이항연산이다. 행렬곱을 할 수 있는 조건은
행렬곱 연산
(1,2)*(2,2) = (1,2)
(3,2)*(2,1) = (3,1)
- 양 끝의 숫자로 결과 행렬이 만들어지고(1과 2, 3과1)
- 마주하는 가운데 숫자가 같아야한다.(2=2, 2=2)
행렬곱 함수 dot
arr1 = np.arange(4)
arr2 = np.arange(6)
arr1 = arr1.reshape(2,2)
arr2 = arr2.reshape(2,3)
print(arr1)
print(arr2)
print("="*50)
r1 = np.dot(arr1,arr2)
print(r1)
print("="*50)
실행 결과
연립방정식
5x + 2y = 18
3x + 1y = 10
x = 2, y=4
예제1
집과 독서실에서의 얻을 수 있는 효과적인 공부시간 구하기
- 비타500을 마시면 2시간 집중적으로 공부할 수 있다.
- 컨디션을 마시면 4시간 집중적으로 공부할 수 있다.
- 집에서는 비타500을 5개, 컨디션 2개 마실 수 있다.
- 독서실에서는 비타500을 2개, 컨디션을 1개 마실 수 있다.
- 비타500의 가격은 1000원이고 컨디션의 가격은 5000원이다.
1.배열 준비
#비타500과 컨디션의 효과적인 공부 지속시간 배열
arr1 = np.array([2,4])
#집과 독서실에서 마실 수 있는 비타500과 컨디션의 개수 배열
arr2 = np.array([[5,3],[2,1]])
#비타500과 컨디션의 가격 배열
arr3 = np.array([1000,5000])
arr4 = np.array([18,8])
2.행렬곱
# 집, 독서실에서 마시는 비타500과 컨디션의 개수
r1 = np.dot(arr1,arr2)
print(r1)
print("*"*50)
# 집, 독서실에서 마시는 비타500과 컨디션의 가격
r2 = np.dot(arr2, arr3)
print(r2)
print("*"*50)
3.연립방정식
# 연립방정식의 해 구하기
r3 = np.linalg.solve(arr2,arr4)
print(r3)
2-3번 실행 결과
예제2
시간대별(오전,오후) 사용된 휘발유와 등유의 개수가 몇 개인지 파악!!
백데이터
<기계 가동 가능 시간>
- 오전 새기계 4시간, 중고기계 3시간
- 오후 새기계 5시간, 중고기계 4시간
<시간당 생산 능력>
- 새기계 휘발류 5개 생산 가능, 등유 4개 생산 가능
- 중고기계 휘발류 3개 생산 가능, 등유 2개 생산 가능
arr1 = np.array([[4,3],[5,4]])
arr2 = np.array([[5,4],[3,2]])
r1 = np.dot(arr1,arr2)
print(r1)