zenn.skin 무료버전 배포중!
자세히보기

행렬 5

DataScience
[Numpy] 배열과 행렬

Numpy에서 다차원 배열을 '배열'과 '행렬'을 이용해 나타낸다. 이 때 배열과 행렬은 일반적으로 사용하는 '배열'의 형태이다. 둘의 차이는 행렬곱 연산에 사용되는 연산자의 차이뿐이다. import numpy as np A = np.array([[1,2], [3,4]]) #배열 B = np.matrix([[1,2], [3,4]]) #행렬 위와 같이 정의했을 때 각각의 자료형은 다음과 같다 배열은 ndarray 객체이고, 행렬은 matrix 객체이다 전에는 둘의 행렬곱 연산에 차이가 있었다 ndarray는 dot 연산을 이용해 나타냈고, matrix는 * 연산을 이용해 행렬곱을 나타냈다 지금은 둘을 혼용해서 사용가능하다 배열과 행렬을 곱했을 때는 matrix 객체를 반환한다 @연산자를 사용해 행렬곱이 가..

Math/Linear Algebra
행 사다리꼴, 기약 행 사다리꼴

1. 기본 행 연산 - 행렬 A에 대한 다음의 3가지 연산을 '기본 행 연산'이라 한다. - 기본 행 연산을 거친 것을 '행 동치'라 한다 - 정방인 항등행렬을 한 번 행 연산한 행렬을 '기본행렬'이라 한다 - 선도 1을 포함하는 행의 개수를 주어진 행렬의 계수(rank)라 한다 - rank를 알면 역행렬이 존재하는지 판별할 수 있다 (1) 2 행을 서로 바꾼다 (2) 임의의 행에 0이 아닌 상수를 곱한다 (3) 임의의 행에 0이 아닌 상수를 곱한 후 다른 행에 더한다 2. 행 사다리꼴(REF) - m x n 행렬 A가 기본 행 연산을 한 후 다음 조건을 만족하면 행렬 A를 행 사다리꼴이라 한다. (1) 0으로만 이루어진 행은 행렬의 맨 아래 존재한다 (2) 0이 아닌 원소를 갖는 행의 첫 수는 1이어야..

Math/Linear Algebra
numpy - dot, 행렬의 곱셈

이전에 c++를 사용해 행렬곱을 구현한 적이 있었다. 파이썬에서는 numpy 라이브러리를 이용하면 간단하게 행렬곱을 구할 수 있다. - 다음과 같이 A와 B가 주어질 때, 행렬곱의 결과는 다음과 같다 1. numpy.matmul import numpy as np A=[[2,4,-1],[-1,3,3],[4,-2,1],[-3,0,2]] B=[[4,-2],[-2,1],[3,-1]] result=np.matmul(A,B) print(result) matmul 함수에 행렬 A와 B를 넣으면 행렬곱을 구할 수 있다. 하지만 행렬에 스칼라곱을 하면 에러가 발생한다. import numpy as np A=[[2,4,-1],[-1,3,3],[4,-2,1],[-3,0,2]] B=3 result=np.matmul(A,B) ..

Math/Linear Algebra
가우스-조단 소거법

1. 가우스-조단 소거법? 가우스-조단 소거법은 선형방정식들이 주어질 때, 변수들을 체계적으로 소거하여 해를 구하기 위해 사용하는 방법이다. 다음 3가지 연산을 반복적으로 적용해 해를 구한다. - 한 방정식에 0이 아닌 상수를 곱한다 - 방정식들의 위치를 서로 교환한다 - 한 방정식에 0이 아닌 상수를 곱하여 다른 방정식에 더한다 가우스-조단 소거법은 크게 2단계로 이루어진다. [1단계]전향소거법 : 각 방정식에다 다른 식의 계수와 반대가 되도록 적절한 상수를 곱한 후 두 식을 더해 변수를 소거 [2단계]역대입법 : 방정식으로부터 하나의 변수값을 구한 후 다른 방정식들로부터 해를 도출 2. 가우스-조단 소거법을 이용한 해 구하기 -다음과 같은 선형시스템이 주어졌을 때 해를 구해보자 1)전향소거법 - 전향..

Math/Linear Algebra
행렬의 곱셈

행렬의 곱셈 방법을 알아보고 이를 이용해 간단한 프로그램을 만들어보자:) 1. 행렬의 곱셈 두 행렬을 2x2 배열로 나타내고 index를 이용해 표현하면 다음과 같다. 새로운 행렬C의 행과 열의 index를 보면 C의 행index는 A의 행index값과 같고 C의 열index는 B의 열index와 같음을 알 수 있다. 2x3행렬 A와 3x3행렬인 B를 곱할 때, A의 열과 B의 행만큼 더해진다. 이를 이용하면 두 행렬을 곱할 때 새로운 행렬의 원소가 다음과 같음을 알 수 있다. 2. 프로그래밍 -두 행렬의 행과 열을 입력받아 동적배열을 만든 후, 두 행렬을 곱한 행렬을 출력해보자. 변수를 만들고 두 행렬 A, B의 행과 열을 입력받는다 각 행렬을 행과 열 크기에 맞게 동적으로 할당받고, 새로운 행렬 C도..