계수
: 변수 앞의 상수 곱.
변수
: 모르는 수, 변하는 수
차수
: 변수가 몇 번 곱해졌는지
상수
: 변수가 없는 항
일차식 : 가장 높은 차수가 1인 다항식
6x + 4y -7 은 1차식이라 할 수 있음.
f(x, y) = 3x + 6y + 4
선형 대수를 다루면 일차식이라도 변수가 다양해져서 변수의 이름을 x0, x1, x2 와 같이 지정할 수 있다.
행렬의 가로줄을 행(row), 세로줄을 열(column) 이라 부른다.
행이 3, 열이 4 이면 3 * 4 행렬, 차원이라 부른다.
행렬의 원소를 표현하기 위해선 A[][] 를 표기해준다. Aij 이면 i행 j열이 되는 것이다.
벡터
일종의 행렬이며, 행이 하나이거나 열이 하나인 행렬을 말한다.
열이 하나면 열 벡터, 행이 하나면 행 벡터. (그냥 벡터이면 열 벡터를 뜻함)
백터의 차원은 단순히 열이나 행의 개수를 부른다
주로 행렬은 대문자 알파벳, 벡터는 소문자 알파벳으로 나타낸다.
✅ 2차원 행렬 직접 선언하기
import numpy as np
A =np.array([
[1,-1,2],
[3,2,2],
[4,1,2],
[7,5,6]
])
✅ 2차원 랜덤하게 선언하기
C = np.random.rand(3,5)
.random.rand()
메서드는 안에 있는 파라미터 3,5 를 기반으로 3행 5열을 0과 1 사이의 랜덤한 숫자로 행렬을 생성한다.
✅ 2차원 0으로 채우기
D = np.zeros((2,4))
✅ 원하는 값 찾아오기
만약 1행 3열의 값을 가져오길 원한다면
A[0][2]
0부터 시작하므로 한칸씩 당겨서 적어준다.
행렬 선언과 원하는 행과 열 값 가져오기
import numpy as np
# 1: 행렬 A를 정의해보세요
A = np.array([
[0,1,-1],
[1,2,3],
[2,1,0],
[-1,2,-4]
])
# 2: 행렬 B를 정의해보세요
B = np.array([
[0,2],
[1,1],
[-1,-2]
])
print(A)
print(B)
print(A[1][1]) # 3: 여기서 A의 2행 2열 원소에 접근해보세요
print(A[3][0]) # 4: 여기서 A의 4행 1열 원소에 접근해보세요
덧셈을 하기 위해선 두 행렬의 차원이 같아야 한다. (모양이 같아야 한다.)
이를 전제로 두 행렬을 더하면,
같은 위치에 있는 숫자끼리 단순히 더해주면 된다
예컨대 1행 1열의 숫자끼리, 1행 2열의 숫자끼리, 2행 1열의 숫자끼리 더하는 것이다.
위 상황은 행렬끼리의 곱이 아닌 수 X 행렬의 경우이다.
위와 같은 경우를 스칼라 곱 이라고 하며, 이는 행렬에서 원소가 아닌 수를 스칼라 라고 하기 때문이다. 따라서 i = 5 는 스칼라이다.
스칼라곱 은 단순히 행렬의 원소를 스칼라에 각각 실수배 해주면 끝이다!
내적곱과 외적곱이 있다.
행렬과 행렬을 곱하는 경우이다.
곱하는 방법을 보자.
위와 같은 행렬에서 결과 행렬 AB의 1행 1열은 A의 1행과 B의 1열을 각각 곱해서 모두 더한 값이다.
따라서 AB[0][0] = 1 5 + 3 4 + 1 * 3 = 20 이 된다.
마찬가지로 AB의 1행 2열은 A의 1행과 B의 2행을 각각 곱해서 모두 더한 수이다.
쉽게말해 결과행렬의 행은 첫 행렬에서, 열은 두 번째 행렬에서 가져오는 것이다.
A 행렬을 M N 행렬,
B 행렬을 N P 행렬이라고 했을 때,
📌 행렬의 곱을 위해선 A 의 열과 B의 행이 같아야 한다. (곱할 숫자들이 매칭되기 위해서) 따라서 N으로 같은 두 행렬은 곱이 가능하다.
📌 결과행렬 AB는 M * P 행렬이다. 이는 행렬 곱의 과정을 보면 더 쉽게 이해가 가능하다.
📌 행렬의 곱은 순서가 중요하다. AXB 와 BXA 는 다르다.
요소별 곱하기는 곱하기지만 오히려 더하기와 비슷하다. 같은 위치의 숫자끼리만 더하는 것인데, 따라서 같은 차원을 갖는 행렬 사이에서만 연산이 가능하다.
행렬 사이 요소별 곱하기의 표시는 동그라미로 가능하다.
numpy로 요소별 곱하는 코드. *
연산자를 사용한다.
import numpy as np
A = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
B = np.array([
[0, 1, 2],
[2, 0, 1],
[1, 2, 0]
])
A * B
arrray([0, 2, 6]
[8, 0, 6]
[7, 16, 0])