Math.sin în Java

Funcțiile trigonometrice sinus, cosinus și tangentă; unghiul se dă în radiani, nu în grade.

Sintaxă
static double sin(double radiani)
static double cos(double radiani)
static double tan(double radiani)

Ce face Math.sin

Math.sin, Math.cos și Math.tan primesc unghiul în radiani. Un cerc complet are 2π radiani (360°), deci 90° înseamnă π/2. Pentru a lucra în grade, convertești întâi cu Math.toRadians.

Rezultatele sunt aproximări double: Math.sin(Math.PI) nu dă exact 0, ci un număr foarte mic (1.2246467991473532E-16), pentru că nici Math.PI nu este exact π. Rotunjește rezultatul la afișare.

Parametri

Parametru Descriere
radiani Unghiul, în radiani.

Ce returnează

Un double: sin și cos între -1 și 1, tan orice valoare.

Exemple

Exemplul 1: Valori pentru unghiuri cunoscute

Tangenta lui 90° ar trebui să fie infinită; pentru că Math.PI / 2 nu este exact π/2, apare un număr uriaș.

public class Main {
    public static void main(String[] args) {
        int[] grade = {0, 30, 45, 60, 90};
        for (int g : grade) {
            double r = Math.toRadians(g);
            System.out.printf("%2d°: sin=%.4f cos=%.4f tan=%.4f%n", g, Math.sin(r), Math.cos(r), Math.tan(r));
        }
        System.out.println(Math.sin(Math.PI));
    }
}

Rezultat

 0°: sin=0.0000 cos=1.0000 tan=0.0000
30°: sin=0.5000 cos=0.8660 tan=0.5774
45°: sin=0.7071 cos=0.7071 tan=1.0000
60°: sin=0.8660 cos=0.5000 tan=1.7321
90°: sin=1.0000 cos=0.0000 tan=16331239353195370.0000
1.2246467991473532E-16

Exemplul 2: Înălțimea unui copac

Stai la 20 m de copac și vezi vârful sub un unghi de 35°. Înălțimea este distanța × tan(unghi).

public class Main {
    public static void main(String[] args) {
        double distanta = 20;
        double unghi = Math.toRadians(35);
        double inaltime = distanta * Math.tan(unghi);
        System.out.printf("Înălțimea copacului: %.2f m%n", inaltime);
    }
}

Rezultat

Înălțimea copacului: 14.00 m

Exemplul 3: Puncte pe un cerc

Valoarea -0.0 de la ultimul punct apare pentru că cos(3π/2) este un număr negativ foarte mic, rotunjit la afișare.

public class Main {
    public static void main(String[] args) {
        double raza = 10;
        for (int i = 0; i < 4; i++) {
            double unghi = 2 * Math.PI * i / 4;
            double x = raza * Math.cos(unghi);
            double y = raza * Math.sin(unghi);
            System.out.printf("Punctul %d: (%.1f, %.1f)%n", i, x, y);
        }
    }
}

Rezultat

Punctul 0: (10.0, 0.0)
Punctul 1: (0.0, 10.0)
Punctul 2: (-10.0, 0.0)
Punctul 3: (-0.0, -10.0)

Greșeli frecvente

  • Dai unghiul în grade: Math.sin(90) nu este 1, ci sinusul a 90 de radiani (0.894). Scrie Math.sin(Math.toRadians(90)).
  • Compari Math.sin(x) == 0: din cauza rotunjirilor rar este exact 0. Compară cu o toleranță.

Comenzi înrudite

  • Math.toRadians: Transformă un unghi din grade în radiani (toRadians) și invers (toDegrees).
  • Math.asin: Funcțiile trigonometrice inverse: din valoarea unui sinus, cosinus sau tangente obții unghiul, în radiani.
  • Math.atan2: Returnează unghiul punctului (x, y) față de axa orizontală, între -π și π, ținând cont de cadranul în care se află.
  • Math.sinh: Funcțiile hiperbolice: sinus, cosinus și tangentă hiperbolică, definite cu ajutorul lui eˣ.