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) cumath.Pow(x, y)(x la puterea y). - Calculezi
math.Exp(x) - 1pentru dobânzi sau rate foarte mici și pierzi precizie: foloseștemath.Expm1.