행렬과 벡터를 사용한 수학 연산

덧셈, 뺄셈, 곱셈 및 나눗셈을 포함한 수학 연산을 행렬 및 벡터 요소별로 수행할 수 있습니다.

수학 함수는 원래 스칼라 값에 관련 작업을 수행하도록 설계되었습니다. 대부분의 기능을 행렬과 벡터에 적용할 수 있습니다. 다음을 포함합니다. MathAbs, MathArccos, MathArcsin, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathLog10, MathMod, MathPow, MathRound, MathSin, MathSqrt, MathTan, MathExpm1, MathLog1p, MathArccosh, MathArcsinh, MathArctanh, MathCosh, MathSinh, and MathTanh. 이러한 연산은 행렬과 벡터의 요소별 처리를 의미합니다. Example

//---
  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]]
  */

MathMod 그리고MathPow 의 경우 두 번째 요소는 적절한 크기의 스칼라 또는 행렬/벡터일 수 있습니다.

다음 예제는 수학 함수를 벡터에 적용하여 표준 편차를 계산하는 방법을 보여줍니다.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 초기화 함수를 사용하여 벡터를 채웁니다.
  vector r(10ArrayRandom); // 0에서 1까지의 난수 배열
//--- mean값 계산
  double avr=r.Mean();       // mean 값 배열
  vector d=r-avr;            // mean에서 편차의 배열을 계산
  Print("avr(r)="avr);
  Print("r="r);
  Print("d="d);
  vector s2=MathPow(d2);   // 제곱 편차의 배열
  double sum=s2.Sum();       // 제곱 편차의 합
//--- 두 가지 다른 방법으로 표준 편차를 계산합니다.
  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
*/
//+------------------------------------------------------------------+
//| 벡터를 랜덤 넘버로 채우기                                           |
//+------------------------------------------------------------------+
void ArrayRandom(vectorv)
 {
  for(ulong i=0i<v.Size(); i++)
    v[i]=double(MathRand())/32767.;
 }