MQL5 ReferansıDil TemelleriVeri TipleriMatrisler ve vektörler 

Matrisler ve vektörler

vector tipi, MQL5'te vektörlerle çalışılmasına olanak sağlayan özel bir veri tipidir. Bir vektör, double tipinde bir tek boyutlu dizidir. Fizik, geometri vb. dahil olmak üzere birçok bilim alanında kullanılan lineer cebirin temel kavramlarından biridir. Vektörler, lineer denklem sistemlerini çözmek için, 3D grafiklerde ve diğer uygulama alanlarında kullanılır. Vektörler toplanabilir ve çarpılabilir. Vektörler arasındaki uzunluk veya mesafe norm kavramı ile ifade edilir. Programlamada, vektörler genellikle, üzerinde sıradan vektör işlemlerinin olmayan, yani dizilerin toplanamadığı veya çarpılamadığı ve normları olmadığı, homojen eleman dizileriyle temsil edilir.

Vektörler, matrislerle çalışırken satır vektörleri ve sütun vektörleri olarak temsil edilebilir. Ayrıca lineer cebirdeki vektörler kovaryans ve kontravaryans kavramlarını kullanır. Bu kavramlar, bir MQL5 kodu yazarken herhangi bir fark yaratmaz, çünkü vektör tipindeki her bir nesnenin ne olduğuna yalnızca programcı karar verir. Örneğin, 3D grafikler söz konusu olduğunda bu, döndürme, yer değiştirme, sıkıştırma vb. vektörü olabilir.

Genel olarak, lineer cebir açısından, bir sayı aynı zamanda bir vektördür, ancak bu, tek boyutlu vektör uzayında geçerlidir. Vektörün kendisi, matrisin özel bir hali olarak düşünülebilir.

matrix tipi, MQL5'te matrisleri temsil eden başka bir özel veri tipidir. Bir matris aslında double tipinde iki boyutlu bir dizidir. Belirli türdeki veri kümeleriyle daha kolay çalışma için vektörler ve matrisler MQL5 diline eklenmiştir. Programcıların lineer cebirin tüm avantajlarından mümkün olan en basit ve matematiğe en çok benzeyen biçimde yararlanmalarını sağlarlar. Matrisler, matematikte lineer veya diferansiyel denklem sistemlerini kompakt şekilde yazmak için yaygın olarak kullanılır. Bu durumda matris satırlarının sayısı denklemlerin sayısına ve sütunların sayısı bilinmeyenlerin sayısına karşılık gelir. Sonuç olarak, lineer denklem sistemleri matris işlemleri ile çözülebilir.

Matrisler için aşağıdaki şu cebirsel işlemler tanımlıdır:

  • Aynı boyutlu matrislerin eklenmesi;
  • Uygun boyutlu matrislerin çarpımı: soldaki matrisin sütun sayısı, sağdaki matrisin satır sayısına eşit olmalıdır;
  • Matris çarpım kuralına göre, bir matrisin bir sütun vektörü ile çarpımı ve bir satır vektörünün bir matrisle çarpımı. Burada vektör, matrisin özel bir halidir;
  • Bir sayı ile, yani bir skaler ile matris çarpımı

Matematik birçok farklı matris türünü dikkate alır. Örneğin, birim, simetrik, ters simetrik, üst ve alt üçgensel matrisler ve diğer matrisler. Çeşitli normal formlar, matris teorisinde önemli bir rol oynar. Belirli dönüşümler yoluyla elde edilebilen, matrisin belirli bir kanonik formunu temsil ederler. Pratikte, örneğin stabilite gibi ek özelliklere sahip normal formlar kullanılır.

Vektörlerin ve matrislerin veya daha doğrusu bu veri tiplerinin özel yöntemlerinin kullanılması, matematiksel gösterime yakın daha basit, daha kısa ve daha anlaşılır kod oluşturulmasına olanak sağlar. Bu, programcıyı iç içe döngüler oluşturmaktan ve hesaplamaya dahil olan dizilerin doğru indekslenmesine sürekli dikkat etmekten kurtarır. Dolayısıyla bu yöntemlerin kullanılması karmaşık programların geliştirilmesinde güvenilirliği ve hızı artırır.

 

matrix ve vector tiplerinde uygulanan yöntemlerin listesi

matrix ve vector tipleri, ilgili NumPy kütüphanesi yöntemlerine karşılık gelen yöntemleri içerir. Bu yöntemleri kullanarak algoritmaları ve kodları Python'dan MQL5'e minimum çabayla çevirebilirsiniz. Birçok veri işleme görevi, matematiksel denklemler, sinir ağları ve makine öğrenimi görevleri, hazır Python yöntemleri ve kütüphaneleri kullanılarak çözülebilir.

matrix/vector yöntemi

NumPy'deki benzer yöntem

Açıklama

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

eye

Köşegende 1'lerin ve diğer yerlerde 0'ların olduğu bir matris oluşturur

void matrix.Identity(const int rows)

identity

Ana köşegen üzerinde 1'lerin olduğu bir kare matris oluşturur

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

ones

1'lerle dolu ve istenilen satır ve sütun sayısına sahip yeni bir matris oluşturur

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

zeros

0'larla dolu ve istenilen satır ve sütun sayısına sahip yeni bir matris oluşturur

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

full

Skaler değerle dolu ve istenilen satır ve sütun sayısına sahip yeni bir matris oluşturur

void matrix.Copy(const matrix a)

copy

İlgili matrisin bir kopyasını oluşturur

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

frombuffer

Tek boyutlu bir diziden bir matris oluşturur

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

fromfile

Bir metin veya ikili dosyadaki verilerden bir matris oluşturur

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

fromstring

Bir dizgeden metin verilerine dayalı bir vektör oluşturur

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

arange

Belirli bir aralıkta eşit aralıklı değerlere sahip bir vektör oluşturur

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

diag

Bir köşegeni çıkarır veya bir köşegen matris oluşturur

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

tri

İstenilen köşegende ve altında 1'lerin ve diğer yerlerde 0'ların olduğu bir matris oluşturur

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

tril

k'nıncı köşegenin üzerindeki elemanların 0'a çevrildiği matrisin bir kopyasını geri döndürür

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

triu

k'nıncı köşegenin altındaki elemanların 0'a çevrildiği matrisin bir kopyasını geri döndürür

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

vander

Bir Vandermonde matrisi oluşturur

vector matrix.Row(const unsigned nrow)

 

Bir satır vektörü geri döndürür

vector matrix.Col(const unsigned ncol)

 

Bir sütun vektörü geri döndürür

unsigned matrix.Rows()

 

Matristeki satır sayısını geri döndürür

unsigned matrix.Cols()

 

Matristeki sütun sayısını geri döndürür

void matrix.Init()

 

Matrisi başlatır

matrix matrix.Transpose()

transpose

Matrisin eksenlerini tersine çevirir veya değiştirir; değiştirilmiş matrisi geri döndürür

matrix matrix.Dot(const matrix b)

dot

İki matrisin nokta çarpımı

matrix matrix.Inner(const matrix b)

inner

İki matrisin iç çarpımı

matrix matrix.Outer(const matrix b)

outer

İki matrisin dış çarpımı

matrix matrix.MatMul(const matrix b)

matmul

İki matrisin matris çarpımı

matrix matrix.MatrixPower(const int power)

matrix_power

Kare matrisi n kuvvetine (tam sayı) yükseltir

matrix matrix.Kron(const matrix b)

kron

İki matrisin Kronecker çarpımı

bool matrix.Cholesky(matrix& L)

cholesky

Matrisin Cholesky ayrışmasını hesaplar

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

qr

Matrisin qr ayrışmasını hesaplar

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

svd

Matrisin tekil değer ayrışmasını hesaplar

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

eig

Kare matrisin özdeğerlerini ve sağ özvektörlerini hesaplar

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

eigh

Hermit matrisinin özdeğerlerini ve özvektörlerini geri döndürür

bool matrix.EigVals(vector& eigen_values)

eigvals

Genel matrisin özdeğerlerini hesaplar

bool matrix.EigValsH(vector& eigen_values)

eigvalsh

Hermit matrisinin özdeğerlerini hesaplar

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

 

Alt üçgensel matris ve üst üçgensel matrisin çarpımı olan matrisin LU ayrışması

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

 

Yalnızca satır permütasyonları ile LU ayrışması olarak, kısmi pivotlu LUP ayrışması: PA=LU

double matrix.Norm(const norm)

norm

Matrisin veya vektörün normunu geri döndürür

double matrix.Cond(const norm)

cond

Matrisin koşul numarasını hesaplar

vector matrix.Spectrum()

 

AT*A çarpımının özdeğerlerinin kümesi olarak matrisin spektrumunu hesaplar

double matrix.Det()

det

Dizinin determinantını hesaplar

int matrix.Rank()

matrix_rank

Gauss yöntemini kullanarak dizinin matris sıralamasını geri döndürür

int matrix.SLogDet(int& sign)

slogdet

Dizinin determinantının işaretini ve logaritmasını hesaplar

double matrix.Trace()

trace

Matrisin köşegenlerinin toplamını geri döndürür

vector matrix.Solve(const vector b)

solve

Lineer matris denklemini veya lineer cebirsel denklem sistemini çözer

vector matrix.LstSq(const vector b)

lstsq

Lineer cebirsel denklem sisteminin en küçük kareler çözer (kare olmayan veya dejenere matrisler için)

matrix matrix.Inv()

inv

Matrisin (çarpımsal) tersini hesaplar

matrix matrix.PInv()

pinv

Moore-Penrose yöntemiyle matrisin yalancı tersini hesaplar

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)

 

Belirtilen hassasiyetle iki matrisin/vektörün öğelerini karşılaştırır

double matrix.Flat(const ulong index)

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

flat

Matris öğesinin iki yerine bir indeks aracılığıyla adreslenmesine olanak sağlar

double vector.ArgMax()

double matrix.ArgMax()

vector matrix.ArgMax(const int axis)

argmax

Maksimum değerin indeksini geri döndürür

double vector.ArgMin()

double matrix.ArgMin()

vector matrix.ArgMin(const int axis)

argmin

Minimum değerin indeksini geri döndürür

double vector.Max()

double matrix.Max()

vector matrix.Max(const int axis)

max

Matrisdeki/vektördeki maksimum değeri geri döndürür

double vector.Mean()

double matrix.Mean()

vector matrix.Mean(const int axis)

mean

Eleman değerlerinin aritmetik ortalamasını hesaplar

double vector.Min()

double matrix.Min()

vector matrix.Min(const int axis)

min

Matrisdeki/vektördeki minimum değeri geri döndürür

double vector.Sum()

double matrix.Sum()

vector matrix.Sum(const int axis)

sum

Belirtilen eksen(ler) boyunca da gerçekleştirilebilen matris/vektör öğelerinin toplamını geri döndürür

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

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

clip

Matrisin/vektörün öğelerini belirtilen geçerli değerler aralığıyla sınırlar

vector vector.CumProd()

vector matrix.CumProd()

matrix matrix.CumProd(const int axis)

cumprod

Belirtilen eksen boyunca olanlar da dahil olmak üzere matris/vektör öğelerinin kümülatif çarpımını geri döndürür

vector vector.CumSum()

vector matrix.CumSum()

matrix matrix.CumSum(const int axis)

cumsum

Belirtilen eksen boyunca olanlar da dahil olmak üzere matris/vektör öğelerinin kümülatif toplamını geri döndürür

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

Belirtilen eksen boyunca da gerçekleştirilebilen matris/vektör öğelerinin çarpımını geri döndürür

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

reshape

Verilerini değiştirmeden matrisin şeklini değiştirir

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

resize

Belirtilen şekle sahip yeni bir matris geri döndürür

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

 

Matristeki satırları değiştir

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

 

Matristeki sütunları değiştir

double vector.Ptp()

double matrix.Ptp()

vector matrix.Ptp(const int axis)

ptp

Matrisin/vektörün veya belirtilen matris ekseninin Max() - Min()'e eşit olan değer aralığını geri döndürür

double vector.Percentile(const int percent)

double matrix.Percentile(const int percent)

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

percentile

Matris/vektör öğelerinin değerlerinin veya belirtilen eksen boyuncaki öğelerin değerlerinin belirtilen yüzdelik dilimini geri döndürür. 'percent' parametresinin geçerli değerleri [0, 100] aralığındadır

double vector.Quantile(const int percent)

double matrix.Quantile(const int percent)

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

quantile

Matris/vektör öğelerinin değerlerinin veya belirtilen eksen boyuncaki öğelerin değerlerinin belirtilen dağılım dilimini geri döndürür. 'percent' parametresi [0, 1] aralığında değerler alır

double vector.Median()

double matrix.Median()

vector matrix.Median(const int axis)

median

Matris/vektör öğelerinin medyanını hesaplar. Medyan, matris/vektör öğelerinin en yüksek yarısını, en düşük yarısından ayıran orta değerdir

double vector.Average()

double matrix.Average()

vector matrix.Average(const int axis)

average

Matris/vektör değerlerinin aritmetik ortalamasını hesaplar. Paydadaki ağırlıkların toplamı 0'a eşit olamaz, ancak bazı ağırlıklar 0 olabilir

double vector.Std()

double matrix.Std()

vector matrix.Std(const int axis)

std

Matris/vektör öğelerinin değerlerinin veya belirtilen eksen boyuncaki öğelerin değerlerinin standart sapmasını geri döndürür

double vector.Var()

double matrix.Var()

vector matrix.Var(const int axis)

var

Matris/vektör öğelerinin değerlerinin varyansını hesaplar

double vector.CorrCoef(const vector& v)

matrix matrix.CorrCoef()

corrcoef

Pearson korelasyon katsayısını (lineer korelasyon katsayısı) hesaplar. Korelasyon katsayısı [-1, 1] aralığındadır

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

correlate

İki vektörün çapraz korelasyonunu hesaplar. 'mode' parametresi lineer konvolüsyon hesaplama modunu belirler

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

convolve

İki vektörün ayrık, lineer konvolüsyonunu geri döndürür. 'mode' parametresi lineer konvolüsyon hesaplama modunu belirler

matrix matrix.Cov()

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

cov

Kovaryans matrisini hesaplar. İki örneğin (iki rastgele değişken) kovaryansı, onların lineer bağımlılığının bir ölçüsüdür