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;
bA
no 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