Un problema diofántico es aquel en el que sólo interesan las soluciones enteras, descartándose todas las demás. Por ejemplo, la ecuación:
x + y = 10
tiene infinitas soluciones. Algunas de ellas son:
pero si utilizamos la palabra diofántica, y consideramos, por tanto, la ecuación diofántica:
x + y = 10
entonces, de las tres soluciones anteriores, solamente la primera y tercera deben considerarse, y la segunda eliminarse, puesto que aparecen números decimales.
Veamos otro ejemplo muy común en el estudio de las ecuaciones y sistemas. En un corral hay conejos y gallinas, contándose en total 22 patas. ¿Cuántas gallinas y conejos hay?. Si llamamos x al número de gallinas e y al número de conejos y teniendo en cuenta que una gallina tiene dos patas y un conejo cuatro, resulta la ecuación:
2x + 4y = 22
que, después de simplificar, se queda en
x + 2y = 11
Éste es un problema diofántico, pues tanto x como y deben ser números enteros. El lector puede comprobar que las soluciones de la ecuación son:
Observemos que por la propia naturaleza del problema, también se han descartado soluciones enteras con valores negativos.
x2+y2 = z2
Es necesario disponer de soluciones de la ecuación anterior, razón por la cual se incluye un programa problemas-pitagoricos.stk para conseguirlo. Más adelante se explica cómo ponerlo en funcionamiento.
El capítulo 4 está dedicado a la resolución del siguiente problema: dado el siguiente triángulo rectángulo ABC, A = 90º
Los catetos son b,c y la hipotenusa es a. Las proyecciones de los catetos b y c sobre la hipotenusa son u y v, con a = u+v. La altura sobre la hipotenusa es h. Pues bien, se trata de buscar un algoritmo de forma que todas las medidas sean números naturales.
Como muestra de ello, tenemos el siguiente:
cuyas bisectrices e incentro son:
Si conoce Maple puede ahorrarse muchos cálculos mientras busca la forma final del problema. Además, puede mostrar dibujos reales con ayuda del paquete geometry. Vamos a mostrarlo aquí. A modo de plantilla, los pasos a seguir son los siguientes:
with(geometry);
triangle(ABC,[point(A,-2,-1),point(B,54,32),point(C,14,62)]);
el primer argumento ABC es el nombre que quiere darle al triángulo.
Si quiere detalles del triángulo que acabamos de definir, escriba:
detail(ABC); GeometryDetail(["name of the object", ABC], ["form of the object", triangle2d], ["method to define the triangle", points], ["the three vertices", [[-2, -1], [54, 32], [14, 62]]])
bisector(bA,A,ABC):bisector(bB,B,ABC):bisector(bC,C,ABC):
Por ejemplo, en la orden bisector(bA,A,ABC), el primer argumento bA es el nombre que quiere darle a la bisectriz, bA en éste caso. El segundo argumento es el vértice por el que pasa la bisectriz y el tercero el nombre del triángulo.
Si queremos conocer la bisectriz bA, y entramos:
bA; bAno sale nada. En su lugar, escribimos, como antes:
detail(bA); assume that the names of the horizontal and vertical axes are _x and _y, respectively / GeometryDetail\["name of the object", bA], [ ["form of the object", line2d], ["equation of the line", (1/2) (1/2) (1/2) ]\ -96 4225 _x + 72 4225 _y - 120 4225 = 0]/
Observe el aspecto tan deplorable de la bisectriz. Eliminando los radicales y dividiendo por el máximo común divisor de 96, 72 y 120 obtenemos finalmente:
-4x+3y-5=0
incircle(inc,ABC):El primer argumento es el nombre que quiere asignarle. Si quiere informarse, introduzca:
detail(inc); assume that the names of the horizontal and vertical axes are _x and _y, respectively / GeometryDetail|["name of the object", inc], \ ["form of the object", circle2d], ["name of the center", center_inc], [ [ 101]] ["coordinates of the center", [24, ---]], [ [ 3 ]] [ 50] [ ["radius of the circle", --], ["equation of the circle", [ 3 ] [ 4295 2 2 202 ]\ ---- + _x + _y - 48 _x - --- _y = 0]| 3 3 ]/
draw([ABC(color=green,thickness=3),bA(color=blue),bB(color=blue),bC(color=blue)]);cuya salida es:
El programa está hecho en Scheme-Lisp, en una de sus versiones, stklos, y funciona bajo el sistema operativo Linux. Para poder utilizarlo descargue el intérprete stklos de su página Web, en concreto
Una vez descargado, siga las instrucciones de compilación e instalación. Ésta es la opción más sencilla, aunque debe poseer conocimientos sobre ello. Debe prestar atención a las librerías que necesita tener instaladas en el sistema para que el proceso de compilación tenga éxito.
Cuando lo haya conseguido, en un emulador de terminal (xterm por ejemplo), escriba:
pedro@servidor2:~/maniobras> stklos * STklos version 1.10 * Copyright (C) 1999-2011 Erick Gallesio - Universite de Nicey siga las instrucciones contenidas en la documentación.* * [Linux-3.16.7-24-desktop-x86_64/pthread/no-readline/utf8] stklos> (load "problemas-pitagoricos.stk")
Si conoce Emacs o Xemacs, mejor todavía, porque puede recuperar órdenes del intérprete y no tener que escribirlas una y otra vez. Así pues, ejecute [x]emacs e introduzca Alt x shell (Alt es la tecla Alt). Acto seguido, introduzca stklos. Por último, recordar que las teclas para subir y bajar en el histórico son Alt p y Alt n.
Si desea hacer algún comentario, utilice la siguiente dirección de correo:
Pedro González Ruiz