Una de las ecuaciones más habituales en el mundo académico y técnico es la llamada ecuación de segundo grado:

a x^2 + b x + c = 0

Algunos os acordaréis de que había casos en los que no existía solución. Al avanzar en los estudios, se matizaba este comentario diciendo que «no había soluciones reales«. Hablaremos de ello en el último punto.

Nos interesa ver cómo se puede resolver esta ecuación de forma automática.

Utilizaremos dos métodos de programación. En el primero, con el software de programación de robótica, mblock. Vamos a programar el panda para que nos diga las dos soluciones. Recordad que mblock deriva de scratch, en este último tenemos un simpático gato.

En el segundo método, dejaremos que sea nuestra placa compatible con arduino la que resuelva el problema, enviando la solución a la pantalla de nuestro ordenador.

La ecuación de segundo grado

Es un polinomio de segundo grado igualado a cero, exactamente la ecuación que hemos puesto arriba, donde a, b y c son números reales. Aparece innumerables veces en las matemáticas y en la física.

Esta ecuación tiene 2 soluciones que obtenemos de la siguiente ecuación:

x = \frac {-b \pm \sqrt {b^2 - 4ac}}{2a}	

El símbolo ± indica que debemos seleccionar primero el ‘+’, lo que nos dará la primera solución, y después el ‘-‘, que nos proporciona la segunda.

Inmediatamente observamos que podemos tener problemas con la raíz cuadrada. Todos sabemos que no es posible obtener la raíz cuadrada de un número negativo (o quizás sí, lo veremos más adelante). Un número elevado al cuadrado siempre es positivo.

En función del valor que tome el radicando (denominado discriminante: b2-4ac) , tendremos 3 casos, que deberemos programar. Es decir, haremos una instrucción condicional:

  • cuando b2 – 4 a c > 0 obtenemos la raíz cuadrada de un número positivo, o sea, dos soluciones
  • Si b2 – 4 a c = 0, la raíz de 0 es cero, por lo que habrá dos soluciones iguales (es una raíz doble)
  • finalmente, si b2 – 4 a c < 0, no existe la raíz cuadrada de un número negativo (mejor dicho, no es un número real)

Las calculadoras que resuelven ecuaciones de segundo grado, suelen dar error en el tercer caso, porque no pueden obtener raíces de números negativos.

Las calculadoras que se utilizan en niveles avanzados saben calcular raíces de números negativos, que no son números reales pero «sí que existen» (son los números imaginarios o complejos).

El programa que vamos a hacer tampoco dará error, es decir, sabrá calcular esos números extraños.

Programando la ecuación de segundo grado con arduino

Hacemos un programa con las 3 condiciones del discriminante que hemos visto arriba. Si es mayor que cero, tenemos dos soluciones reales, si es cero una solución o raíz real doble y si es negativo y no podemos hacer la raíz, tenemos dos números complejos.

El programa, realizado con visualino, es el siguiente:

ecuación de segundo grado

En la imagen se observa la salida por el monitor del ordenador (abajo a la derecha). La variable contadorImpresion se utiliza para imprimir una sola vez las raíces. En «inicio» vemos los coeficientes a, b y c de la ecuación que valen 1, -5 y 6 respectivamente.

Hemos utilizado dos funciones, una de ellas calcula las raíces cuando son reales y la otra las calcula cuando, debido a una raíz de un número negativo, son complejas.

Función de cálculo de las raíces reales:

ecuación de segundo grado

Función de cálculo de las raíces complejas:

ecuación de segundo grado

Ver el último apartado para conocer algo más de los números complejos y por qué escribimos así la solución.

Este programa tiene un defecto importante: cada vez que deseemos calcular una ecuación de segundo grado, tenemos que cambiar los coeficientes y volver a subir el programa a la placa.

Es muy poco eficiente. Vamos a modificarlo para que nos permita introducir por teclado los coeficientes.

Mejorando la programación: lectura de coeficientes por monitor

Hay que hacer una modificación en el programa principal para pedir los datos por el puerto serie:

Vemos en la siguiente figura distintas salidas para varios grupos de coeficientes (los coeficientes iniciales que se ven en inicio son indiferentes):

ecuación de segundo grado

Los números deben introducirse en una línea, separados por espacios o comas. Además será conveniente, una vez subido el programa, dar al botón de reset de la placa para que dé tiempo a ver el mensaje de introducción.

La ecuación de segundo grado utilizando mblock

Utilizamos ahora mblock para calcular las soluciones. Recordemos que los cálculos del apartado anterior los ha hecho nuestra placa arduino. Ahora resolveremos con nuestro ordenador, por lo que no hará falta conectar nada.

Hay que recordar que las variables que hemos definido en el programa previamente son las que aparecen en elipses o círculos naranjas (a, b, c, discriminante, real1, real2, real, imaginaria). Las funciones real y compleja son:

ecuación de segundo grado

Veamos una salida de este programa cuando introducimos a=1, b=0, c=1, que corresponde a la ecuación x2 + 1 = 0; las soluciones son +i y -i (ver punto siguiente). El simpático panda nos indica las dos soluciones en dos pantallas.

ecuación de segundo grado

Admito que es un poco chocante ver a un panda hablando de números complejos.

La otra raíz, que sale en la siguiente pantalla del programa, es x2 = 0 – 1i. (Tened en cuenta que 0 + 1i = i y 0 – 1 i = -i)

Los números reales

Seguro que os ha parecido bastante raro que se pueda calcular la raíz cuadrada de un número negativo. Los números como los conocemos hoy no aparecieron por arte de magia.

Los árabes inventaron los números que ahora utilizamos, y los antiguos moradores de la India nos legaron otro número decisivo: el 0 (cero). Solo hay que imaginarse el mérito de los primeros matemáticos trabajando con notaciones como los números romanos.

Por otra parte, los griegos conocían la existencia de los números racionales (los formados como relación entre dos números). Para ellos, todos los números eran así, racionales.

Pero un día, echando un vistazo a un cuadrado, se dieron cuenta, aplicando su teorema de Pitágoras, de que la medida de la diagonal era proporcional a √2.

Se quedaron horrorizados. Ellos mismos demostraron, muy a su pesar, que no se podía poner ese número como cociente de dos enteros. Prohibieron divulgar el descubrimiento. Eran números irracionales.

Al final, todo se sabe, y los números, que empezaron por los naturales de los dedos (1, 2, 3…), habían añadido el fascinante cero, los negativos, los racionales de los griegos y los irracionales, también de los griegos, aunque ellos no quisieran.

Y así, los números llenaron toda una recta, la recta de los números reales, que se componía de los números racionales y de los números irracionales (no solo estaban las raíces, también pi, e y otros infinitos números irracionales).

¿Qué es un número complejo o imaginario?

Pero los matemáticos no estaban contentos. Cayeron en la cuenta de que cuando alguien quería hacer la raíz de -1, no podía. Por definición la raíz cuadrada de un número es otro número que elevado al cuadrado nos da el primero (ejemplo: si la raíz cuadrada de 4 es dos, es porque 22 es 4). Por tanto no puede existir la raíz cuadrada de un número negativo.

Decidieron dar existencia a esos números haciendo √-1 = i, la llamada unidad imaginaria. De esa forma todos los números tendrían una parte real y otra imaginaria y podrían incluso, representarse en un plano.

Por supuesto, la historia de los números complejos forma parte de la matemática avanzada, y su aparición fue algo más sofisticada. Sus aplicaciones han sido de enorme trascendencia. Su uso es habitual, por ejemplo, en los cálculos eléctricos.

Pero nosotros no vamos a entrar en más detalles. En el ejemplo del panda, el cálculo es así:

b 2 – 4 a c = 02 – 4 x 1 x 1 = – 4; √-4 = √-1 x √4 = 2i, por lo tanto:

x = \frac {-0 \pm \sqrt {0^2 - 4\cdot 1\cdot1}}{2\cdot 1}=\frac {-0 \pm 2\cdot i}{2}

(fotografía de cabecera: geralt, pixabay)