- Tam Sayı Tipleri
- Reel Tipler (double, float)
- Karmaşık sayı (complex)
- String Tipi
- Yapılar, Sınıflar ve Arayüzler
- Dinamik Dizi Nesnesi
- Matrisler ve vektörler
- Tip Dönüşümü
- Void Tipi ve NULL Sabiti
- Kullanıcı Tanımlı Tipler
- Nesne İşaretçileri
- Referanslar: Şekillendirici & ve Anahtar Sözcük this
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) |
Köşegende 1'lerin ve diğer yerlerde 0'ların olduğu bir matris oluşturur |
|
void matrix.Identity(const int rows) |
Ana köşegen üzerinde 1'lerin olduğu bir kare matris oluşturur |
|
void matrix.Ones(const int rows, const int cols) |
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) |
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) |
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) |
İ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) |
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) |
Bir metin veya ikili dosyadaki verilerden bir matris oluşturur |
|
void vector.FromString(const string source, const string sep=" ") |
Bir dizgeden metin verilerine dayalı bir vektör oluşturur |
|
void vector.Arange(const scalar start, const scalar stop, const scalar step=1) |
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) |
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) |
İ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) |
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) |
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) |
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() |
Matrisin eksenlerini tersine çevirir veya değiştirir; değiştirilmiş matrisi geri döndürür |
|
matrix matrix.Dot(const matrix b) |
İki matrisin nokta çarpımı |
|
matrix matrix.Inner(const matrix b) |
İki matrisin iç çarpımı |
|
matrix matrix.Outer(const matrix b) |
İki matrisin dış çarpımı |
|
matrix matrix.MatMul(const matrix b) |
İki matrisin matris çarpımı |
|
matrix matrix.MatrixPower(const int power) |
Kare matrisi n kuvvetine (tam sayı) yükseltir |
|
matrix matrix.Kron(const matrix b) |
İki matrisin Kronecker çarpımı |
|
bool matrix.Cholesky(matrix& L) |
Matrisin Cholesky ayrışmasını hesaplar |
|
bool matrix.QR(matrix& Q, matrix& R) |
Matrisin qr ayrışmasını hesaplar |
|
bool matrix.SVD(matrix& U, matrix& V, vector& singular_values) |
Matrisin tekil değer ayrışmasını hesaplar |
|
bool matrix.Eig(matrix& eigen_vectors, vector& eigen_values) |
Kare matrisin özdeğerlerini ve sağ özvektörlerini hesaplar |
|
bool matrix.EigH(matrix& eigen_vectors, vector& eigen_values) |
Hermit matrisinin özdeğerlerini ve özvektörlerini geri döndürür |
|
bool matrix.EigVals(vector& eigen_values) |
Genel matrisin özdeğerlerini hesaplar |
|
bool matrix.EigValsH(vector& eigen_values) |
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) |
Matrisin veya vektörün normunu geri döndürür |
|
double matrix.Cond(const norm) |
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() |
Dizinin determinantını hesaplar |
|
int matrix.Rank() |
Gauss yöntemini kullanarak dizinin matris sıralamasını geri döndürür |
|
int matrix.SLogDet(int& sign) |
Dizinin determinantının işaretini ve logaritmasını hesaplar |
|
double matrix.Trace() |
Matrisin köşegenlerinin toplamını geri döndürür |
|
vector matrix.Solve(const vector b) |
Lineer matris denklemini veya lineer cebirsel denklem sistemini çözer |
|
vector matrix.LstSq(const vector b) |
Lineer cebirsel denklem sisteminin en küçük kareler çözer (kare olmayan veya dejenere matrisler için) |
|
matrix matrix.Inv() |
Matrisin (çarpımsal) tersini hesaplar |
|
matrix matrix.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) |
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) |
Maksimum değerin indeksini geri döndürür |
|
double vector.ArgMin() double matrix.ArgMin() vector matrix.ArgMin(const int axis) |
Minimum değerin indeksini geri döndürür |
|
double vector.Max() double matrix.Max() vector matrix.Max(const int axis) |
Matrisdeki/vektördeki maksimum değeri geri döndürür |
|
double vector.Mean() double matrix.Mean() vector matrix.Mean(const int axis) |
Eleman değerlerinin aritmetik ortalamasını hesaplar |
|
double vector.Min() double matrix.Min() vector matrix.Min(const int axis) |
Matrisdeki/vektördeki minimum değeri geri döndürür |
|
double vector.Sum() double matrix.Sum() vector matrix.Sum(const int axis) |
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) |
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) |
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) |
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) |
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) |
Verilerini değiştirmeden matrisin şeklini değiştirir |
|
void matrix.Resize(const ulong rows,const ulong cols) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
Matris/vektör öğelerinin değerlerinin varyansını hesaplar |
|
double vector.CorrCoef(const vector& v) matrix matrix.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) |
İki vektörün çapraz korelasyonunu hesaplar. 'mode' parametresi lineer konvolüsyon hesaplama modunu belirler |
|
vector vector.Convolve(const vector& v, enum mode) |
İ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) |
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 |