006. Problema: Resolver ecuación de primer grado

Problema

Resuelve la ecuación de primer grado con los datos de entrada. Escribe el resultado, o si el resultado es indeterminado o imposible.

$$ax + b = 0$$

Consejo: Antes de escribir código debemos saber cómo se resuelve el problema. Piensa en cómo lo resuelves sin código. Haz el algoritmo paso a paso en un papel o en el editor de código. Luego compara tu solución con la del artículo.

1. Análisis

Nos piden resolver una ecuación de primer grado. Los valores conocidos -entrada- son a, b. Para resolver la ecuación tenemos que saber qué es y cómo se resuelven. De lo contrario, estamos atorados. Repasemos.

Ecuación de primer grado

  • Una ecuación de primer grado es una igualdad matemática que tiene una o más incógnitas.

  • El grado de la ecuación lo recibe de la potencia a la que está elevada la incógnita. Por ejemplo, x^2 es una ecuación de segundo grado.

  • El grado nos dice el número de soluciones que tiene la ecuación. Una ecuación de primer grado solo tiene una solución.

La ecuación que nos pasan tiene la forma de a * x + b = 0. El cálculo consiste en:

  1. Agrupar los términos que llevan x en la primera parte de la ecuación (antes del signo =). Los que no, los pasamos a la segunda parte.

  2. Despejar x.

  3. Resolver la operación.

Recuerda que si pasamos un término de un lado a otro de la ecuación, se realizan operaciones opuestas. Si suman, pasan restando. Si multiplican, pasan dividiendo.

Con eso resolvemos la ecuación. Pero, la solución puede caer en tres casos o escenarios diferentes. Los casos son:

  • Si a es diferente de 0, resolvemos la operación.

  • Si a = 0 y b diferente de 0, la solución es imposible.

  • Si a = 0 y b = 0, la solución es indeterminada.

El 0 es problemático porque la ecuación despejada termina siendo 0/0, o -b/0.

Este problema nos da los casos o escenarios en los que puede caer el programa. En muchas ocasiones, estos casos no vienen dados. Debemos pensar en ellos y encontrarlos.

2. Diseño del algoritmo

1. Idea de solución

Usar un condicional compuesto para resolver el problema. En la primera rama, evaluamos el caso feliz, donde a diferente de 0. En la segunda rama, evaluamos los casos donde la solución es imposible o indeterminada.

2. Diseño

Observamos que no nos piden resolver paso a paso la ecuación. Luego, el despeje de x lo podemos hacer manualmente.

Primer diseño

Pseudocódigo

3. Comprobación en seco

abresultado
03imposible: -3/0
00indeterminada: 0/0
24-2

3. Codificación

def resolver_ecuacion(a, b):
    if a != 0:
        return -b / a
    elif a == 0 and b != 0:
        return "imposible"
    elif a == 0 and b == 0:
        return "indeterminada"

# Ejemplos de uso
print(resolver_ecuacion(0, 3))  # imposible
print(resolver_ecuacion(0, 0))  # indeterminada
print(resolver_ecuacion(2, 4))  # -2

4. Complejidad

Tiempo: O(1) constante

No hay una colección de datos, es una entrada sola.

Espacio: O(1) constante

No hay una estructura de datos extra que ocupe espacio en memoria.

Conclusión

Hemos analizado y resuelto una ecuación de primer grado considerando diferentes escenarios. La implementación en código refleja los casos posibles: solución única, solución imposible o solución indeterminada.

Bibliografía

Joyanes Aguilar, L. (2008). Fundamentos de programación. Madrid: McGraw-Hill.

0
Subscribe to my newsletter

Read articles from Gilberto Ramirez directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Gilberto Ramirez
Gilberto Ramirez

I'm a software engineer with experience in web development. The main technologies I work with are .NET, React, and SQL. Personally, I prefer the backend. I'm keen on writing my dev journey. I think this is a great way to share and appropriate what I've learned.