개념공부108 [선형대수] 행렬 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. [OpenGL] GLUT 먼저 OpenGL은 라이브러리가 아닌 API 규격이다. 함수의 이름, 기능, 인자, 작동 방식 등이 설명된 것이다. OpenGL에 명세된 내용은 그래픽 처리 장치 제조 업체에서 구현한다. 엔비디아, AMD, 인텔 과 같은 제조업체에서 구현되어 드라이버와 함께 그래픽 카드에 탑재된다. 이렇게 작성된 코드들을 라이브러리처럼 사용하게 된다. GLUT이란 OpenGL 유틸리티 툴킷으로 운영체제로부터 독립적이고 이식성이 좋은 코드를 구현하기 위해 개발되었다. GLUT 외에도 GLFW (Graphics Library Framework) 또한 유틸리티 라이브러리이다. 유틸리티 라이브러리는 GLFW, GLUT, FreeGLUT, GLU 등 다양하게 존재한다. 하지만 GLUT와 GLU는 1998년 이후로 업데이트 되지 .. 2023. 9. 11. 이전 1 2 3 4 5 6 7 8 ··· 18 다음