math.Exp în Go

math.Exp calculează e la puterea x, math.Exp2 calculează 2 la puterea x, iar math.Expm1 calculează e^x - 1 precis.

Sintaxă
import "math"

func Exp(x float64) float64
func Exp2(x float64) float64
func Expm1(x float64) float64

Ce face math.Exp

math.Exp(x) returnează ex, unde e ≈ 2.71828 (constanta math.E). Funcția exponențială apare la creștere și scădere naturală: dobândă continuă, răcire, dezintegrare. Inversa ei este math.Log.

math.Exp2(x) returnează 2x și acceptă și exponenți zecimali.

math.Expm1(x) calculează ex − 1. Pentru x foarte aproape de 0, Exp(x) - 1 pierde aproape toate cifrele exacte, iar Expm1 nu.

Parametri

Parametru Descriere
x Exponentul.

Ce returnează

Rezultatul ca float64. Pentru x foarte mare (peste ~709 la Exp) rezultatul este +Inf.

Exemple

Exemplul 1: Exp, Exp2 și Log

package main

import (
    "fmt"
    "math"
)

func main() {
    fmt.Printf("%.4f\n", math.Exp(1))
    fmt.Printf("%.4f\n", math.Exp(2))
    fmt.Println(math.Exp2(10))
    fmt.Printf("%.4f\n", math.Exp2(0.5))
    fmt.Println(math.Log(math.Exp(3)))
}

Rezultat

2.7183
7.3891
1024
1.4142
3

Exemplul 2: De ce există Expm1

Pentru x = 1e-10 rezultatul corect este aproximativ 1.00000000005e-10. Varianta naivă greșește chiar de la a opta cifră.

package main

import (
    "fmt"
    "math"
)

func main() {
    x := 1e-10
    fmt.Println(math.Exp(x) - 1)
    fmt.Println(math.Expm1(x))
}

Rezultat

1.000000082740371e-10
1.00000000005e-10

Greșeli frecvente

  • Confunzi math.Exp(x) (e la puterea x) cu math.Pow(x, y) (x la puterea y).
  • Calculezi math.Exp(x) - 1 pentru dobânzi sau rate foarte mici și pierzi precizie: folosește math.Expm1.

Comenzi înrudite

  • math.Log: Logaritmii din Go: Log (natural, baza e), Log10 (baza 10), Log2 (baza 2) și Log1p (ln(1+x) precis lângă 0).
  • math.Pow: math.Pow ridică x la puterea y, iar math.Pow10 calculează 10 la puterea n.