매트릭스와 벡터

Type벡터는 벡터 작업을 가능하게 하는 MQL5의 특수 데이터 유형입니다. 벡터는 double 타입의 1차원 배열입니다. 벡터는 물리학, 기하학 등 많은 과학 분야에서 사용되는 선형 대수의 기본 개념 중 하나입니다. 벡터는 3D 그래픽 및 기타 응용 분야에서 선형 방정식 시스템을 푸는 데 사용됩니다. 벡터는 더해지고 곱해질 수 있습니다. 벡터 사이의 길이 또는 거리는 Norm을 통해 얻을 수 있습니다. 프로그래밍에서 벡터는 일반적으로 정규 벡터 연산이 없는 동종 요소의 배열로 표현됩니다 즉, 배열을 더하거나 곱할 수 없는 경우, norm이 없는 경우.

벡터는 행렬로 작업할 때 행 벡터와 문자열 벡터로 나타낼 수 있습니다. 또한 선형 대수학의 벡터는 공분산과 반공분산의 개념을 사용합니다. 이러한 개념은 MQL5 코드를 작성할 때 아무런 차이가 없습니다. 프로그래머만 벡터 유형의 각 객체가 무엇인지 결정하기 때문입니다. 예를 들어, 3D 그래픽의 회전, 변위 또는 압축 벡터의 경우입니다.

일반적으로 선형 대수학의 관점에서 볼 때 숫자도 벡터이지만 1차원 벡터 공간에 있습니다. 벡터 자체는 행렬의 특수한 경우로 간주할 수 있습니다.

Yypematrix는 행렬을 나타내는 MQL5의 또 다른 특수 데이터 유형입니다. 행렬은 실제로 double 유형의 2차원 배열입니다. 특정 유형의 데이터 세트에 대한 더 쉬운 작업을 위해 벡터와 행렬이 MQL5에 도입되었습니다. 이를 통해 개발자는 단순하고 수학과 같은 형태로 선형 대수의 이점을 얻을 수 있습니다. Matrix는 선형 또는 미분 방정식 시스템을 간결하게 작성하기 위해 사용할 수 있습니다. 행렬 행의 수는 방정식의 수에 해당하고 열의 수는 미지수와 같습니다. 결과적으로 선형 방정식은 행렬 연산을 통해 풀 수 있습니다.

행렬에 대해 다음 대수 연산이 정의됩니다:

  • 동일한 크기의 행렬 추가
  • 적합한 크기 행렬의 곱셈: 왼쪽 행렬의 열 개수는 오른쪽 행렬의 행 개수와 같아야 합니다.
  • 열 벡터로 행렬 곱하기 행렬 곱셈 규칙에 따라 행 벡터를 행렬로 곱합니다. 이러한 관점에서 벡터는 행렬의 특수한 경우입니다.
  • 숫자, 즉 스칼라로 행렬 곱하기

수학은 다양한 행렬 유형을 고려합니다. 예를 들어 단위 행렬, 대칭, 비대칭 대칭, 상부 및 하부 삼각 행렬 및 기타 유형이 있습니다. 다양한 정규형은 행렬 이론에서 중요한 역할을 합니다. 그것들은 특정 변환을 통해 얻을 수 있는 행렬의 특정 표준 형식을 나타냅니다. 실제로는 안정성과 같은 추가 속성이 있는 일반 형식이 사용됩니다.

벡터와 행렬을 사용하거나 관련 유형의 특수 메서드를 사용하면 수학 표기법에 가까운 더 간단하면서 간결하고 명확한 코드를 생성할 수 있습니다. 이러한 방법을 사용하면 중첩 루프를 생성하거나 계산시 배열의 올바른 인덱싱을 염두에 둘 필요가 없습니다. 따라서 이러한 방법을 사용하면 복잡한 프로그램을 개발할 때 안정성과 속도가 향상됩니다.

 

행렬 및 벡터 메서드 목록

Typesmatrix 그리고벡터넘파이 라이브러리 메서드에 해당하는 메서드를 포함합니다. 이러한 방법을 사용하면 최소한의 노력으로 알고리즘과 코드를 Python에서 MQL5로 변환할 수 있습니다. 많은 데이터 처리 작업, 수학 방정식, 신경망 및 기계 학습 작업은 이미 만들어진 Python 메서드와 라이브러리를 사용하여 해결할 수 있습니다.

메서드 matrix/vector

NumPy의 Analogous 메서드

설명

void matrix.Eye(const int rows, const int cols, const int ndiag=0)

eye

대각선에 1이 있고 다른 곳에 0이 있는 행렬 구성

void matrix.Identity(const int rows)

identity

주대각선에 1이 있는 정사각 행렬을 구성합니다.

void matrix.Ones(const int rows, const int cols)

ones

1로 채워진 주어진 행과 열의 새로운 행렬을 구성합니다.

void matrix.Zeros(const int rows, const int cols)

zeros

0으로 채워진 주어진 행과 열로 새로운 행렬을 구성합니다.

void matrix.Full(const int rows, const int cols, const scalar value)

full

스칼라 값으로 채워진 주어진 행과 열의 새 행렬을 구성합니다.

void matrix.Copy(const matrix a)

copy

주어진 행렬의 복사본을 구성합니다.

void matrix.FromBuffer(const int rows, const int cols, const scalar array[], const int count=-1, const int offset=0)

frombuffer

1차원 배열에서 생성된 행렬 생성

void matrix.FromFile(const int rows, condt int cols, const int file_handle, const int count=-1, const int offset=0)

fromfile

텍스트 또는 이진 파일의 데이터에서 행렬 구성

void vector.FromString(const string source, const string sep=" ")

fromstring

문자열의 텍스트 데이터에서 초기화된 벡터 생성

void vector.Arange(const scalar start, const scalar stop, const scalar step=1)

arange

주어진 간격 내에서 균일한 간격의 값 생성

void matrix.Diag(const vector v, const int ndiag=0)

diag

대각 행렬 추출 또는 대각 행렬 구성

void matrix.Tri(const int rows, const int cols, const int ndiag=0)

tri

주어진 대각선 아래에 1이 있고 다른 곳에 0이 있는 행렬을 구성합니다.

void matrix.Tril(const int rows, const int cols, const scalar array[], const int ndiag=0)

tril

k번째 대각선 위의 요소가 0인 행렬의 복사본을 반환합니다.

void matrix.Triu(const int rows, const int cols, const scalar array[], const int ndiag=0)

triu

k번째 대각선 아래의 요소가 0인 행렬의 복사본을 반환합니다.

void matrix.Vander(const vector v, const int cols=-1, const bool increasing=false)

vander

방데르몽드 행렬 생성

vector matrix.Row(const unsigned nrow)

 

행 벡터 반환

vector matrix.Col(const unsigned ncol)

 

열 벡터 반환

unsigned matrix.Rows()

 

행렬의 행 수 반환

unsigned matrix.Cols()

 

행렬의 열 수를 반환

void matrix.Init()

 

행렬 초기화

matrix matrix.Transpose()

transpose

행렬의 축을 반전시키거나 치환합니다; 수정된 행렬을 반환

matrix matrix.Dot(const matrix b)

dot

두 행렬의 내적

matrix matrix.Inner(const matrix b)

inner

두 행렬의 내적

matrix matrix.Outer(const matrix b)

outer

두 행렬의 외적 계산

matrix matrix.MatMul(const matrix b)

matmul

두 행렬의 행렬 곱

matrix matrix.MatrixPower(const int power)

matrix_power

정방 행렬을 (정수) 거듭제곱 n으로 올립니다.

matrix matrix.Kron(const matrix b)

kron

두 행렬의 크로네커 곱 반환

bool matrix.Cholesky(matrix& L)

cholesky

촐레스키 분해 반환

bool matrix.QR(matrix& Q, matrix& R)

qr

행렬의 qr 분해 계산

bool matrix.SVD(matrix& U, matrix& V, vector& singular_values)

svd

특이값 분해

bool matrix.Eig(matrix& eigen_vectors, vector& eigen_values)

eig

정방 행렬의 고유값 및 오른쪽 고유 벡터 계산

bool matrix.EigH(matrix& eigen_vectors, vector& eigen_values)

eigh

에르미트 행렬의 고유값과 고유 벡터를 반환합니다.

bool matrix.EigVals(vector& eigen_values)

eigvals

일반 행렬의 고유값 계산

bool matrix.EigValsH(vector& eigen_values)

eigvalsh

에르미트 행렬의 고유값 계산

bool matrix.LU(matrix& L, matrix& U)

 

하부 삼각 행렬과 상부 삼각 행렬의 곱으로 행렬의 LU 분해

bool matrix.LUP(matrix& L, matrix& U, matrix& P)

 

행 순열만 있는 LU 분해를 참조하는 부분 피벗을 사용한 LUP 분해: PA=LU

double matrix.Norm(const norm)

norm

행렬 또는 벡터 norm 반환

double matrix.Cond(const norm)

cond

행렬의 조건 번호 계산

vector matrix.Spectrum()

 

행렬의 스펙트럼을 곱 AT*A의 고유값 집합으로 계산합니다.

double matrix.Det()

det

배열의 행렬식 계산

int matrix.Rank()

matrix_rank

가우스 방법을 사용하여 배열의 행렬 순위 반환

int matrix.SLogDet(int& sign)

slogdet

배열 행렬식의 부호와 로그 계산

double matrix.Trace()

trace

행렬의 대각선을 따라 합을 반환합니다.

vector matrix.Solve(const vector b)

solve

선형 행렬 방정식 또는 선형 대수 방정식 시스템 풀기

vector matrix.LstSq(const vector b)

lstsq

선형 대수 방정식의 최소 제곱 해를 반환합니다(비제곱 또는 축퇴 행렬의 경우).

matrix matrix.Inv()

inv

행렬의 (승법) 역행렬 계산

matrix matrix.PInv()

pinv

무어-펜로즈 방법으로 행렬의 의사 역행렬 계산

int matrix.Compare(const matrix matrix_c, const double epsilon)

int matrix.Compare(const matrix matrix_c, const int digits)

int vector.Compare(const vector vector_c, const double epsilon)

int vector.Compare(const vector vector_c, const int digits)

 

지정한 정밀도로 두 행렬/벡터의 요소를 비교

double matrix.Flat(const ulong index)

bool matrix.Flat(const ulong index,const double value)

flat

두 개 대신 하나의 인덱스를 통해 행렬 요소의 주소 지정 허용

double vector.ArgMax()

double matrix.ArgMax()

vector matrix.ArgMax(const int axis)

argmax

최대값의 인덱스를 반환

double vector.ArgMin()

double matrix.ArgMin()

vector matrix.ArgMin(const int axis)

argmin

최소값의 인덱스를 반환

double vector.Max()

double matrix.Max()

vector matrix.Max(const int axis)

max

행렬/벡터의 최대값을 반환

double vector.Mean()

double matrix.Mean()

vector matrix.Mean(const int axis)

mean

요소 값의 산술 평균 계산

double vector.Min()

double matrix.Min()

vector matrix.Min(const int axis)

min

행렬/벡터의 최소값을 반환

double vector.Sum()

double matrix.Sum()

vector matrix.Sum(const int axis)

sum

행렬/벡터 요소의 합을 반환. 주어진 축(축)에 대해서도 수행할 수 있음

void vector.Clip(const double min_value,const double max_value)

void matrix.Clip(const double min_value,const double max_value)

clip

행렬/벡터의 요소를 유효한 값의 지정한 범위로 제한

vector vector.CumProd()

vector matrix.CumProd()

matrix matrix.CumProd(const int axis)

cumprod

주어진 축을 따르는 요소를 포함하여 행렬/벡터 요소의 누적 곱을 반환합니다.

vector vector.CumSum()

vector matrix.CumSum()

matrix matrix.CumSum(const int axis)

cumsum

주어진 축을 따르는 요소를 포함하여 행렬/벡터 요소의 누적 합계를 반환합니다.

double vector.Prod(const double initial=1)

double matrix.Prod(const double initial=1)

vector matrix.Prod(const int axis,const double initial=1)

prod

주어진 축에 대해서도 수행할 수 있는 행렬/벡터 요소의 곱을 반환

void matrix.Reshape(const ulong rows, const ulong cols)

reshape

데이터를 변경하지 않고 행렬의 모양 변경

void matrix.Resize(const ulong rows,const ulong cols)

resize

모양과 크기가 변경된 새 행렬을 반환

bool matrix.SwapRows(const ulong row1, const ulong row2)

 

행렬의 행 바꾸기

bool matrix.SwapCols(const ulong col1, const ulong col2)

 

행렬의 열 바꾸기

double vector.Ptp()

double matrix.Ptp()

vector matrix.Ptp(const int axis)

ptp

Max() - Min()에 해당하는 행렬/벡터 또는 지정된 행렬 축의 값의 범위를 반환

double vector.Percentile(const int percent)

double matrix.Percentile(const int percent)

vector matrix.Percentile(const int percent,const int axis)

percentile

지정된 축을 따라 행렬/벡터 요소 또는 요소 값의 지정된 백분위수를 반환 '퍼센트' 매개변수의 유효한 값은 [0, 100] 범위에 있습니다.

double vector.Quantile(const int percent)

double matrix.Quantile(const int percent)

vector matrix.Quantile(const int percent,const int axis)

quantile

지정된 축을 따라 행렬/벡터 요소 또는 요소 값의 지정된 분위수를 반환 '퍼센트' 매개변수는 [0, 1] 범위의 값을 사용합니다.

double vector.Median()

double matrix.Median()

vector matrix.Median(const int axis)

median

행렬/벡터 요소의 중앙값을 계산. 중앙값은 배열/벡터 요소의 상위 절반을 요소의 하위 절반과 구분하는 중간 값입니다.

double vector.Average()

double matrix.Average()

vector matrix.Average(const int axis)

average

행렬/벡터 값의 산술 평균을 계산. 분모의 가중치의 합은 0이 될 수 없지만 일부 가중치는 0이 될 수 있습니다.

double vector.Std()

double matrix.Std()

vector matrix.Std(const int axis)

std

주어진 축을 따라 행렬/벡터 요소 또는 요소 값의 표준 편차를 반환.

double vector.Var()

double matrix.Var()

vector matrix.Var(const int axis)

var

행렬/벡터 요소 값의 분산을 계산

double vector.CorrCoef(const vector& v)

matrix matrix.CorrCoef()

corrcoef

피어슨 상관 계수(선형 상관 계수)를 계산. 상관 계수는 [-1, 1] 범위에 있습니다.

vector vector.Correlate(const vector& v,enum mode)

correlate

두 벡터의 상호 상관을 계산. 'mode' 매개변수는 선형 컨볼루션 계산 모드를 결정합니다.

vector vector.Convolve(const vector& v, enum mode)

convolve

두 벡터의 이산 선형 컨볼루션을 반환합니다. 'mode' 매개변수는 선형 컨볼루션 계산 모드를 결정합니다.

matrix matrix.Cov()

matrix vector.Cov(const vector& v); (resulting matrix 2 x 2)

cov

공분산 행렬을 계산. 두 표본(두 랜덤 변수)의 공분산은 선형 종속성을 측정한 것입니다.