Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/09/12 09:33:23 (12 years ago)
Author:
gkronber
Message:

#1902 changed calculation of gradients for covariance functions to reduce allocations of arrays

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/CovariancePeriodic.cs

    r8417 r8455  
    117117    }
    118118
    119     public double[] GetGradient(int i, int j) {
     119    public double GetGradient(int i, int j, int k) {
     120      double v = Math.PI * sd[i, j] / p;
     121      switch (k) {
     122        case 0: {
     123            double newK = Math.Sin(v) / l;
     124            newK = newK * newK;
     125            return 4 * sf2 * Math.Exp(-2 * newK) * newK;
     126          }
     127        case 1: {
     128            double r = Math.Sin(v) / l;
     129            return 4 * sf2 / l * Math.Exp(-2 * r * r) * r * Math.Cos(v) * v;
     130          }
     131        case 2: {
     132            double newK = Math.Sin(v) / l;
     133            newK = newK * newK;
     134            return 2 * sf2 * Math.Exp(-2 * newK);
    120135
    121       var res = new double[3];
    122       double k = sd[i, j];
    123       k = Math.PI * k / p;
    124       {
    125         double newK = Math.Sin(k) / l;
    126         newK = newK * newK;
    127         res[0] = 4 * sf2 * Math.Exp(-2 * newK) * newK;
     136          }
     137        default: {
     138            throw new ArgumentException("CovariancePeriodic only has three hyperparameters.", "k");
     139          }
    128140      }
    129       {
    130         double r = Math.Sin(k) / l;
    131         res[1] = 4 * sf2 / l * Math.Exp(-2 * r * r) * r * Math.Cos(k) * k;
    132       }
    133       {
    134         double newK = Math.Sin(k) / l;
    135         newK = newK * newK;
    136         res[2] = 2 * sf2 * Math.Exp(-2 * newK);
    137       }
    138 
    139       return res;
    140141    }
    141142
Note: See TracChangeset for help on using the changeset viewer.