De Huber-functie met parameter $$\delta > 0$$ wordt gedefinieerd als:

$$ L(x;\delta)=\left\{ \begin{array}{rl} \frac{1}{2}x^2 & \text{voor} |x| \le \delta\\ \delta \times (|x| - \frac{1}{2}\delta) & \text{voor} |x| \gt \delta\\ \end{array} \right. $$

Programmeer de gevectoriseerde functie huber(), met als argumenten:

Merk op: indien het argument een NumPy-rij is, wordt het resultaat van je functie, ten behoeve van de evaluatie in Dodona, naar een lijst omgezet waarbij afgekapt wordt op 6 decimalen. Het resultaat van je functie MOET wel degelijk een NumPy-rij zijn. Daarnaast zal je resultaat ook afgebroken worden op 6 cijfers na de komma (de functies format_p() en prec() die je in het verbeterscript ziet verschijnen, zorgen hiervoor).

Voorbeeld

 
huber(np.linspace(-1.0, 1.0, 21), 0.5) = [ 0.375  0.325  0.275  0.225  0.175  0.125  0.08   0.045  0.02   0.005  0.
  0.005  0.02   0.045  0.08   0.125  0.175  0.225  0.275  0.325  0.375]
huber(-0.5, 0.5) = 0.125