math.Sinh în Go

Funcțiile hiperbolice sinh, cosh, tanh și inversele lor asinh, acosh, atanh.

Sintaxă
import "math"

func Sinh(x float64) float64
func Cosh(x float64) float64
func Tanh(x float64) float64
func Asinh(x float64) float64
func Acosh(x float64) float64
func Atanh(x float64) float64

Ce face math.Sinh

Funcțiile hiperbolice sunt definite prin exponențiala ex: sinh(x) = (ex − e−x)/2, cosh(x) = (ex + e−x)/2, tanh(x) = sinh(x)/cosh(x). Apar în fizică (forma unui cablu suspendat este un cosinus hiperbolic) și în rețele neuronale (tanh este o funcție de activare care dă valori între -1 și 1).

math.Asinh, math.Acosh și math.Atanh sunt inversele. Acosh cere x ≥ 1, iar Atanh cere x între -1 și 1; în afara acestor intervale rezultatul este NaN (iar Atanh(±1) este ±Inf).

Argumentul nu este un unghi, deci nu se pune problema gradelor sau radianilor.

Parametri

Parametru Descriere
x Numărul de intrare.

Ce returnează

Valoarea funcției, ca float64.

Exemple

Exemplul 1: Funcțiile hiperbolice și inversele lor

package main

import (
    "fmt"
    "math"
)

func main() {
    x := 1.0
    fmt.Printf("sinh(1) = %.4f\n", math.Sinh(x))
    fmt.Printf("cosh(1) = %.4f\n", math.Cosh(x))
    fmt.Printf("tanh(1) = %.4f\n", math.Tanh(x))
    fmt.Printf("asinh(sinh(1)) = %.4f\n", math.Asinh(math.Sinh(x)))
    fmt.Printf("acosh(cosh(1)) = %.4f\n", math.Acosh(math.Cosh(x)))
    fmt.Printf("atanh(tanh(1)) = %.4f\n", math.Atanh(math.Tanh(x)))
    fmt.Println(math.Acosh(0.5), math.Atanh(1))
}

Rezultat

sinh(1) = 1.1752
cosh(1) = 1.5431
tanh(1) = 0.7616
asinh(sinh(1)) = 1.0000
acosh(cosh(1)) = 1.0000
atanh(tanh(1)) = 1.0000
NaN +Inf

Exemplul 2: tanh comprimă orice număr între -1 și 1

package main

import (
    "fmt"
    "math"
)

func main() {
    for _, x := range []float64{-10, -1, 0, 0.5, 3, 100} {
        fmt.Printf("tanh(%v) = %.4f\n", x, math.Tanh(x))
    }
}

Rezultat

tanh(-10) = -1.0000
tanh(-1) = -0.7616
tanh(0) = 0.0000
tanh(0.5) = 0.4621
tanh(3) = 0.9951
tanh(100) = 1.0000

Greșeli frecvente

  • Confunzi math.Sinh cu math.Sin: funcțiile hiperbolice nu sunt periodice și cresc foarte repede.

Comenzi înrudite

  • math.Sin: Funcțiile trigonometrice sinus, cosinus și tangentă; unghiul se dă în radiani. Sincos le dă pe primele două deodată.
  • math.Asin: Funcțiile trigonometrice inverse: arcsinus, arccosinus, arctangentă și Atan2, care dă unghiul unui punct (x, y).
  • math.Exp: math.Exp calculează e la puterea x, math.Exp2 calculează 2 la puterea x, iar math.Expm1 calculează e^x – 1 precis.