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= {{14}, {916}};
  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(10ArrayRandom); // 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(d2);   // 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(vectorv)
 {
  for(ulong i=0i<v.Size(); i++)
    v[i]=double(MathRand())/32767.;
 }