/// <summary>
 /// Gets process-noise matrix [6 x 3] where the location is affected by (dt * dt) / 2 and velocity with the factor of dt - integrals of dt.
 /// Factor 'dt' represents time interval.
 /// </summary>
 /// <param name="accelerationNoise">Acceleration noise.</param>
 /// <param name="timeInterval">Time interval.</param>
 /// <returns>Process noise matrix.</returns>
 public static double[,] GetProcessNoise(double accelerationNoise, double timeInterval = 1.0)
 {
     double[,] array  = new double[6, 3];
     array[0, 0]      = timeInterval * timeInterval / 2.0;
     array[1, 0]      = timeInterval;
     array[2, 1]      = timeInterval * timeInterval / 2.0;
     array[3, 1]      = timeInterval;
     array[4, 2]      = timeInterval * timeInterval / 2.0;
     array[5, 2]      = timeInterval;
     double[,] array2 = array;
     double[,] array3 = Matrix.Diagonal <double>(MatrixExtensions.ColumnCount <double>(array2), accelerationNoise);
     return(Matrix.Multiply(Matrix.Multiply(array2, array3), Matrix.Transpose <double>(array2)));
 }