Hasta ahora hemos visto cómo sumar, restar o multiplicar usando los operadores básicos (+, -, *, /). Pero, ¿qué pasa si necesitamos calcular una raíz cuadrada, un seno o redondear un número con precisión específica?
Aquí es donde entra en juego la clase System.Math.
La clase Math es una clase estática que proporciona constantes y métodos estáticos para operaciones trigonométricas, logarítmicas y otras funciones matemáticas comunes.
Al ser una clase estática, no necesitamos (y de hecho no podemos) crear una instancia de ella con new. Usamos sus métodos llamando directamente a la clase: Math.Metodo().
Constantes en la clase Math
La clase Math incluye constantes muy útiles:
| Constante | Valor en C# (Math) | Descripción |
|---|---|---|
Math.PI | 3.141592653589793 | Representa el valor de π (pi). |
Math.E | 2.718281828459045 | Base del logaritmo natural (número de Euler). |
Math.Tau | 6.283185307179586 | Representa el valor de τ (tau), que es 2π. |
Math.Sqrt2 | 1.4142135623730951 | Representa la raíz cuadrada de 2. |
Math.Sqrt3 | 1.7320508075688772 | Representa la raíz cuadrada de 3. |
Math.Log2E | 1.4426950408889634 | Logaritmo base 2 de E. |
Math.Log10E | 0.4342944819032518 | Logaritmo base 10 de E. |
Math.Epsilon | Double.Epsilon | El número positivo más pequeño distinto de cero. |
Console.WriteLine($"El valor de PI es: {Math.PI}");
Console.WriteLine($"El valor de E es: {Math.E}");
Métodos básicos de la clase Math
| Método | Descripción |
|---|---|
Math.Abs(valor) | Devuelve el valor absoluto del número. |
Math.Max(a, b) | Devuelve el mayor de dos valores. |
Math.Min(a, b) | Devuelve el menor de dos valores. |
Math.Sign(valor) | Devuelve un entero que indica el signo del número: -1 (negativo), 0 (cero) o 1 (positivo). |
Ejemplos:
double valor = -7.5;
double absoluto = Math.Abs(valor); // Resultado: 7.5
double a = 5, b = 10;
double maximo = Math.Max(a, b); // Resultado: 10
double minimo = Math.Min(a, b); // Resultado: 5
int signo1 = Math.Sign(valor); // Resultado: -1
int signo2 = Math.Sign(0); // Resultado: 0
int signo3 = Math.Sign(8.2); // Resultado: 1
Redondeo de números
El redondeo es crucial en ingeniería para simplificar los resultados y mejorar la precisión de la presentación de datos.
| Método | Descripción |
|---|---|
Math.Round(valor) | Redondea al entero más cercano. |
Math.Ceiling(valor) | Redondea hacia arriba (techo). |
Math.Floor(valor) | Redondea hacia abajo (piso). |
Math.Truncate(valor) | Elimina la parte decimal sin redondear. |
Ejemplos:
double valor1 = 3.56;
double redondeado = Math.Round(valor1); // Resultado: 4
double techo = Math.Ceiling(valor1); // Resultado: 4
double piso = Math.Floor(valor1); // Resultado: 3
double truncado = Math.Truncate(valor1); // Resultado: 3
Redondeo con precisión
El método Math.Round puede redondear un número a un número específico de decimales.
double numero = 3.14159;
Console.WriteLine($"Redondeo a 2 decimales: {Math.Round(numero, 2)}"); // 3.14
Funciones trigonométricas
La clase Math incluye métodos para realizar cálculos trigonométricos, como seno, coseno y tangente. Estos métodos utilizan radianes como unidad de medida.
Seno, coseno y tangente
| Método | Descripción |
|---|---|
Math.Sin | Devuelve el seno de un ángulo especificado en radianes. |
Math.Cos | Devuelve el coseno de un ángulo especificado en radianes. |
Math.Tan | Devuelve la tangente de un ángulo especificado en radianes. |
Ejemplos:
double angulo = Math.PI / 4; // 45 grados en radianes
Console.WriteLine($"Seno de {angulo} radianes: {Math.Sin(angulo)}");
Console.WriteLine($"Coseno de {angulo} radianes: {Math.Cos(angulo)}");
Console.WriteLine($"Tangente de {angulo} radianes: {Math.Tan(angulo)}");
Funciones inversas
| Método | Descripción |
|---|---|
Math.Asin | Devuelve el arco seno de un número. |
Math.Acos | Devuelve el arco coseno de un número. |
Math.Atan | Devuelve el arco tangente de un número. |
Ejemplos:
double valor = 0.5;
Console.WriteLine($"Arco seno de {valor}: {Math.Asin(valor)}");
Console.WriteLine($"Arco coseno de {valor}: {Math.Acos(valor)}");
Console.WriteLine($"Arco tangente de {valor}: {Math.Atan(valor)}");
Las funciones trigonométricas de Math aceptan y devuelven ángulos en Radianes, NO en Grados.
Para convertir grados a radianes y viceversa:
| Concepto | Descripción |
|---|---|
Math.PI | Representa el valor de π (aproximadamente 3.14159). |
| Convertir grados a radianes | (grados * Math.PI) / 180 |
| Convertir radianes a grados | (radianes * 180) / Math.PI |
Ejemplos:
double anguloGrados = 30.0;
double anguloRadianes = (anguloGrados * Math.PI) / 180; // Conversión a radianes
double seno = Math.Sin(anguloRadianes);
double coseno = Math.Cos(anguloRadianes);
double tangente = Math.Tan(anguloRadianes);
Funciones exponenciales y logarítmicas
| Método | Descripción |
|---|---|
Math.Log(valor) | Calcula el logaritmo natural (base e) de un valor. |
Math.Log10(valor) | Calcula el logaritmo en base 10 de un valor. |
Math.Exp(exponente) | Calcula el valor de e elevado al exponente dado. |
Ejemplos:
double valorLog = 10.0;
double logNatural = Math.Log(valorLog); // Logaritmo natural de 10
double logBase10 = Math.Log10(valorLog); // Logaritmo base 10 de 10
double exponente = 2.0;
double expResultado = Math.Exp(exponente); // e^2
Potencias y raíces
Potencias y raíces
Los cálculos de potencia y raíz cuadrada son comunes en ingeniería, especialmente en aplicaciones que involucran crecimiento exponencial, atenuación de señales y cálculos de energía.
| Método | Descripción |
|---|---|
Math.Pow(base, exponente) | Calcula el valor de la base elevada al exponente. |
Math.Sqrt(valor) | Calcula la raíz cuadrada de un número. |
Ejemplos:
double base = 3.0;
double exponente = 4.0;
double resultadoPotencia = Math.Pow(base, exponente); // 3^4 = 81
double valor = 16.0;
double resultadoRaiz = Math.Sqrt(valor); // √16 = 4
Math.Pow trabaja internamente con tipos double. Si lo usáis simplemente para elevar al cuadrado un entero (ej: x * x), es mucho más eficiente multiplicar la variable por sí misma que llamar a la función Pow.
Ejemplos prácticos
Calcular el área de un círculo
Este ejemplo muestra cómo calcular el área de un círculo utilizando la constante Math.PI.
double radio = 5;
double area = Math.PI * Math.Pow(radio, 2);
Console.WriteLine($"El área del círculo con radio {radio} es: {area}");
Calcular la hipotenusa de un triángulo rectángulo
Este ejemplo utiliza el teorema de Pitágoras para calcular la hipotenusa de un triángulo rectángulo.
double cateto1 = 3;
double cateto2 = 4;
double hipotenusa = Math.Sqrt(Math.Pow(cateto1, 2) + Math.Pow(cateto2, 2));
Console.WriteLine($"La hipotenusa es: {hipotenusa}"); // 5
Convertir grados a radianes
Este ejemplo convierte un ángulo en grados a radianes, necesario para funciones trigonométricas.
double grados = 45;
double radianes = grados * (Math.PI / 180);
Console.WriteLine($"{grados} grados son {radianes} radianes");
Calcular el logaritmo natural de un número
Este ejemplo calcula el logaritmo natural de un número utilizando Math.Log.
double numero = 10;
double logNatural = Math.Log(numero);
Console.WriteLine($"El logaritmo natural de {numero} es: {logNatural}");
Redondear un número a un número específico de decimales
Este ejemplo redondea un número a dos decimales utilizando Math.Round.
double numero = 3.14159;
double redondeado = Math.Round(numero, 2);
Console.WriteLine($"{numero} redondeado a 2 decimales es: {redondeado}"); // 3.14
Cálculo de la hipotenusa
La fórmula de la hipotenusa es común en ingeniería para calcular la longitud resultante de un vector a partir de sus componentes. Utilizando el teorema de Pitágoras, la hipotenusa se calcula como la raíz cuadrada de la suma de los cuadrados de los catetos.
double catetoA = 3.0;
double catetoB = 4.0;
double hipotenusa = Math.Sqrt(Math.Pow(catetoA, 2) + Math.Pow(catetoB, 2)); // Resultado: 5.0
Cálculo de distancia en un círculo
Supongamos que queremos calcular la distancia en la circunferencia de un círculo de radio r para un ángulo dado en grados.
double anguloGrados = 45.0;
double radio = 10.0;
// Convertimos el ángulo a radianes
double anguloRadianes = (anguloGrados * Math.PI) / 180;
// Calculamos la distancia a lo largo de la circunferencia
double distancia = radio * anguloRadianes; // Resultado: 7.85
Cálculo de decibelios (dB) en una señal de ingeniería
En ingeniería de señales, el cálculo de decibelios es importante para expresar la relación entre dos valores de potencia. Si tenemos una relación de potencia P1/P2, los decibelios se calculan como:
double P1 = 100.0; // Potencia de la señal
double P2 = 1.0; // Potencia de referencia
double decibelios = 10 * Math.Log10(P1 / P2); // Resultado: 20 dB
Movimiento parabólico de un proyectil
Este ejemplo simula el movimiento de un proyectil, considerando un ángulo de lanzamiento y una velocidad inicial. Se usa trigonometría y física básica para calcular la distancia máxima en el eje horizontal.
double velocidadInicial = 50.0; // m/s
double anguloLanzamientoGrados = 30.0;
// Convertimos el ángulo a radianes
double anguloLanzamientoRadianes = (anguloLanzamientoGrados * Math.PI) / 180;
// Calculamos la distancia máxima (asumiendo que y=0 al aterrizar)
double g = 9.81; // Gravedad
double distanciaMaxima = Math.Pow(velocidadInicial, 2) * Math.Sin(2 * anguloLanzamientoRadianes) / g;
Console.WriteLine("Distancia máxima: " + distanciaMaxima + " metros");
