본문 바로가기

분류 전체보기147

[선형대수] 행렬 계수란(Rank) 행렬의 계수 (Rank) 행렬의 계수 정의 선형 독립 집합을 구성하는 최대 열 또는 행의 수 열공간의 차원의 수 (= 행공간의 차원의 수) 행렬에서 0이 아닌 특잇값의 수 정방행렬이 아니더라도, 열공간에서 정의된 계수와 행공간에서 정의된 계수는 같다. 즉, 행렬의 열공간과 행공간은 다르지만 차원의 수는 동일하다. 행렬 계수의 특징 계수는 음이 아닌 정수이다. 모든 행렬은 단 하나의 고유한 계수를 가진다. 최대 가능 계수를 갖는 행렬을 '최대계수' (Full Rank)라고 한다. 계수가 min{M, N} (각각 행과 열의 개수) 보다 작을 때, 이를 '축소계수', '계수부족', '특이'등으로 지칭한다. 행렬에 스칼라 곱은 계수에 영향을 미치지 않는다. 덧셈 및 곱셈 행렬의 계수 두 행렬 A, B의 계수를 .. 2024. 1. 5.
[선형대수] 행렬 Norm, 행렬공간 행렬 및 Norm 1. 행렬 Norm 행렬 Norm은 여러 종류의 정의가 있고 각 정의 별로 계산법과 의미가 다르다. 이에 반해, 벡터 Norm은 한가지 공식으로 정의된다. (벡터 Norm의 정의는 아래와 같다.) $$ Vector\;Norm = \sqrt{\sum_{i=1}^{N}a_i^2} $$ 행렬 Norm의 종류는 원소별 계열과 유도 계열로 구분되는데, 대표적으로 사용되는 것은 원소별 계열의 프로베니우스(Frobenius) Norm이다. 이는 유클리드 Norm이라고도 하며, L2 Norm이라고 한다. (프로베니우스 Norm의 정의는 아래와 같다.) $$ Frobenius\;Norm = \; \left\|A\right\|_F= \sqrt{\sum_{i=1}^{M}\sum_{j=1}^{N}a_{ij}.. 2024. 1. 5.
[선형대수] 직교벡터 분해 직교벡터 분해 목표벡터와 기준벡터가 주어졌을 때, 목표벡터를 평행벡터와 수직벡터로 분할하는 것이다. 이때, 평행벡터는 기준벡터에 평행하며 수직벡터는 기준벡터에 수직한다. 직교벡터 분해과정 다음과 같이 목표벡터 b, 기준벡터 a가 주어졌다고 하자. 이때 목표벡터 b의 평행벡터는 a에 스칼라 beta를 곱해준 것으로 표현된다. 목표벡터 b의 수직벡터는 기준벡터와 평행벡터의 차이로 표현된다. 평행벡터와 수직벡터는 내적 시, 0이 된다. 이를 활용해 beta를 계산할 수 있다. beta를 계산하면 평행벡터를 계산할 수 있다. 평행벡터를 계산하면 수직벡터를 계산할 수 있다. 수직 벡터를 구하는 과정을 직교화(Orthogonalize) 라고도 지칭한다. 이는 그람 슈미트 구현 시 사용된다. 간단하지만, 향 후 정리.. 2023. 12. 31.
OSQP Solver 빌드하기 OSQP는 Quadratic Programming 최적화 문제를 풀어주는 오픈소스 Solver이다. 오픈소스를 나의 개발 환경에 맞춰 사용하기 위해 소스코드를 직접 빌드하여 라이브러리를 생성했다. 이 과정을 정리하였고, 이는 OSQP 공식 Docs 안내 글을 참고하였다. OSQP : https://osqp.org/docs/release-0.6.3/get_started/sources.html#build-from-sources 준비사항 1. Compiler : TDM-GCC 설치하자 (https://jmeubank.github.io/tdm-gcc/download/) 2. CMake : (https://cmake.org/download/#latest) 3. OSQP 소스코드 : https://github.co.. 2023. 12. 22.
QP Solver Solver Optimization Problem을 풀어주는 Tool Optimization Problem 분류에 따라 Solve 알고리즘이 상이하고, Solver 또한 상이함 ex) MATLAB - linprog, quadrprog, OSQP 등.. OSQP Solver Linear Programming, Quadratic Programming을 풀 수 있는 Solver 오픈소스임 (License : Apache-2.0 License) OSQP 홈페이지 : https://osqp.org/ OSQP 문서 : https://osqp.org/docs/release-0.6.3/ OSQP Github (C 코드 개발 브랜치) : https://github.com/osqp/osqp GitHub - osqp/osq.. 2023. 11. 29.
FLOPS Flops는 floating point operations per second의 준말로 flops, flop/s라는 표현으로도 사용된다. 이는 1초동안 컴퓨터가 수행할 수 있는 부동 소수점 연산의 횟수이다. 컴퓨터의 performance를 나타내는 지표로 floating point 계산이 필요한 연산 능력을 측정하는데 유용하다. Flops와는 또 다른 개념으로 instructions per second가 있는데 이는 구분되는 개념이다. 먼저, Floating point는 부동 소숫점으로 실수를 나타낼 수 있는 표현 방식이다. Floting point 연산은 매우 크거나 작은 실수 연산에 필요하다. Floting point는 32-bit 포맷을 single precision이라 정의하고, 64-bit 포맷.. 2023. 10. 25.