Saltar a contenido

Paso 3: Funciones Científicas

En este paso, añadiremos todas las funciones matemáticas avanzadas que hacen que nuestra calculadora sea "científica".

📦 Código a añadir

Añade el siguiente código después del código del Paso 2 en tu archivo calculadora.py:

# Funciones científicas
def seno():
    try:
        valor = float(entrada.get())
        resultado = math.sin(math.radians(valor))
        limpiar()
        escribir(str(resultado))
    except:
        limpiar()
        escribir("Error")

def coseno():
    try:
        valor = float(entrada.get())
        resultado = math.cos(math.radians(valor))
        limpiar()
        escribir(str(resultado))
    except:
        limpiar()
        escribir("Error")

def tangente():
    try:
        valor = float(entrada.get())
        resultado = math.tan(math.radians(valor))
        limpiar()
        escribir(str(resultado))
    except:
        limpiar()
        escribir("Error")

def logaritmo():
    try:
        valor = float(entrada.get())
        if valor > 0:
            resultado = math.log10(valor)
            limpiar()
            escribir(str(resultado))
        else:
            limpiar()
            escribir("Error")
    except:
        limpiar()
        escribir("Error")

def logaritmo_natural():
    try:
        valor = float(entrada.get())
        if valor > 0:
            resultado = math.log(valor)
            limpiar()
            escribir(str(resultado))
        else:
            limpiar()
            escribir("Error")
    except:
        limpiar()
        escribir("Error")

def exponencial():
    try:
        valor = float(entrada.get())
        resultado = math.exp(valor)
        limpiar()
        escribir(str(resultado))
    except:
        limpiar()
        escribir("Error")

def potencia():
    escribir("**")

def raiz_cuadrada():
    try:
        valor = float(entrada.get())
        if valor >= 0:
            resultado = math.sqrt(valor)
            limpiar()
            escribir(str(resultado))
        else:
            limpiar()
            escribir("Error")
    except:
        limpiar()
        escribir("Error")

def factorial():
    try:
        valor = int(float(entrada.get()))
        if valor >= 0:
            resultado = math.factorial(valor)
            limpiar()
            escribir(str(resultado))
        else:
            limpiar()
            escribir("Error")
    except:
        limpiar()
        escribir("Error")

def porcentaje():
    try:
        valor = float(entrada.get())
        resultado = valor / 100
        limpiar()
        escribir(str(resultado))
    except:
        limpiar()
        escribir("Error")

🔍 Explicación detallada

Funciones Trigonométricas

seno(), coseno(), tangente()

  • Entrada: Ángulo en grados
  • Conversión: math.radians() convierte grados a radianes
  • Salida: Valor trigonométrico entre -1 y 1 (sin, cos) o cualquier valor (tan)

Ejemplos: - sin(30°) = 0.5 - cos(60°) = 0.5 - tan(45°) = 1.0

Funciones Logarítmicas

logaritmo() - Logaritmo base 10

  • Función: math.log10(x)
  • Dominio: x > 0 (números positivos únicamente)
  • Uso: Escalas logarítmicas, cálculos científicos

logaritmo_natural() - Logaritmo natural (base e)

  • Función: math.log(x)
  • Base: e ≈ 2.71828
  • Uso: Cálculos de crecimiento exponencial, análisis matemático

Funciones Exponenciales

exponencial() - e^x

  • Función: math.exp(x)
  • Resultado: e elevado a la potencia x
  • Uso: Crecimiento exponencial, distribuciones estadísticas

potencia() - x^y

  • Símbolo: Añade "**" para potenciación en Python
  • Uso: El usuario escribe la base, presiona x^y, luego el exponente
  • Ejemplo: 2 [x^y] 3 = 2**3 = 8

Funciones Especiales

raiz_cuadrada() - √x

  • Función: math.sqrt(x)
  • Dominio: x ≥ 0 (no permite raíces de números negativos)
  • Resultado: Valor positivo de la raíz cuadrada

factorial() - x!

  • Función: math.factorial(x)
  • Dominio: Números enteros no negativos (0, 1, 2, 3...)
  • Conversión: int(float(entrada.get())) maneja decimales
  • Ejemplos: 5! = 120, 0! = 1

porcentaje() - %

  • Operación: Divide el valor por 100
  • Uso: Convertir porcentajes a decimales
  • Ejemplo: 25% = 0.25

📊 Tabla de funciones y sus dominios

Función Dominio Rango Ejemplo
sin(x) Todos los reales [-1, 1] sin(90°) = 1
cos(x) Todos los reales [-1, 1] cos(0°) = 1
tan(x) x ≠ 90°, 270°, ... (-∞, ∞) tan(45°) = 1
log(x) x > 0 (-∞, ∞) log(100) = 2
ln(x) x > 0 (-∞, ∞) ln(e) = 1
exp(x) Todos los reales (0, ∞) exp(1) = e
√x x ≥ 0 [0, ∞) √16 = 4
x! x ≥ 0, entero [1, ∞) 4! = 24

⚠️ Validaciones importantes

  1. Logaritmos: Solo aceptan números positivos
  2. Raíz cuadrada: Solo acepta números no negativos
  3. Factorial: Solo acepta enteros no negativos
  4. Trigonometría: Funciona en grados (más intuitivo para usuarios)

✅ Verificación

Después de añadir este código: 1. Guarda el archivo 2. Verifica que no hay errores de sintaxis 3. Todas las funciones manejan errores de forma consistente

➡️ Siguiente paso

Continúa con Paso 4: Funciones de Memoria para añadir las capacidades de memoria de la calculadora.