Mathematische Operationen mit Matritzen und Vektoren
Mathematische Operationen, einschließlich Addition, Subtraktion, Multiplikation und Division, können mit Matrizen und Vektoren elementweise durchgeführt werden.
Mathematische Funktionen wurden ursprünglich entwickelt, um relevante Operationen mit skalaren Werten durchzuführen. Die meisten der Funktionen können auf Matrizen und Vektoren angewendet werden. Dazu gehören MathAbs, MathArccos, MathArcsin, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathLog10, MathMod, MathPow, MathRound, MathSin, MathSqrt, MathTan, MathExpm1, MathLog1p, MathArccosh, MathArcsinh, MathArctanh, MathCosh, MathSinh, und MathTanh. Diese Operationen implizieren eine elementweise Verarbeitung von Matrizen und Vektoren. Beispiel
//---
matrix a= {{1, 4}, {9, 16}};
Print("matrix a=\n",a);
a=MathSqrt(a);
Print("MatrSqrt(a)=\n",a);
/*
matrix a=
[[1,4]
[9,16]]
MatrSqrt(a)=
[[1,2]
[3,4]]
*/
|
Für MathMod und MathPow kann das zweite Element entweder ein Skalar oder eine Matrix/ein Vektor der entsprechenden Größe sein.
Das folgende Beispiel zeigt, wie man die Standardabweichung durch Anwendung von mathematischen Funktionen auf einen Vektor berechnet.
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion |
//+------------------------------------------------------------------+
void OnStart()
{
//--- Verwendung der Initialisierungsfunktion zum Füllen des Vektors
vector r(10, ArrayRandom); // Array mit Zufallszahlen von 0 bis 1
//--- berechnen des Mittelwerts
double avr=r.Mean(); // Mittelwert des Arrays
vector d=r-avr; // Berechnen eines Arrays der Abweichungen vom Mittelwert
Print("avr(r)=", avr);
Print("r=", r);
Print("d=", d);
vector s2=MathPow(d, 2); // Array der quadrierten Abweichungen
double sum=s2.Sum(); // Summe der quadrierten Abweichungen
//--- Berechnen der Standardabweichung mit zwei verschiedenen Methoden
double std=MathSqrt(sum/r.Size());
Print(" std(r)=", std);
Print("r.Std()=", r.Std());
}
/*
avr(r)=0.5300302133243813
r=[0.8346201971495713,0.8031556138798182,0.6696676534318063,0.05386516922513505,0.5491195410016175,0.8224433118686484,...
d=[0.30458998382519,0.2731254005554369,0.1396374401074251,-0.4761650440992462,0.01908932767723626,0.2924130985442671, ...
std(r)=0.2838269732183663
r.Std()=0.2838269732183663
*/
//+------------------------------------------------------------------+
//| Füllen des Vektors mit Zufallszahlen |
//+------------------------------------------------------------------+
void ArrayRandom(vector& v)
{
for(ulong i=0; i<v.Size(); i++)
v[i]=double(MathRand())/32767.;
}
|