martes, 2 de abril de 2019

Suma de potencias con bases en progresión aritmética



En el año 2017 publiqué en http://oeis.org/A292313 la sucesión de números equivalentes a una suma de tres cuadrados en progresión aritmética. Ahora he querido cambiar la cuestión, exigiendo a las bases que estén en progresión, pero no el resultado. Para un exponente general m, lo que buscaremos será aquellos números N que presenten la equivalencia con números enteros positivos:


En ella k representa la diferencia de la progresión y suponemos que es mayor que 0. Escrita así la igualdad podemos beneficiarnos de la simetría en los cálculos, como veremos más adelante.

Un ejemplo con cuadrados es 24318 = 872+902+932 = (90-3)2+902+(90+3)2

Comenzamos por ellos.

Suma de cuadrados en progresión aritmética

Encontrar los números que se puedan representar como suma de tres cuadrados con bases enteras positivas en progresión aritmética equivale a buscar aquellos que admitan la representación

N=(a-k)2 + a2 + (a+k)2

Esto parece fácil, pues basta crear una tabla de doble entrada para valores de a y k, siendo k<a.


El inconveniente radica en que están desordenados y que no se percibe a simple vista si existen duplicados (de hecho, 371 está repetido). Por eso, los valores 14, 29, 35, 50, 56, 66,… los encontraremos también con otras técnicas.

Como es costumbre en este blog, se caracterizarán estos números mediante una función. Para ello hay que considerar la expresión simplificada de la que los define:


En el problema propuesto, conocemos N, y el valor de a lo podemos ir cambiando entre 2 y la raíz cuadrada de N/3, que es una cota fácil de razonar. El valor de k depende de ellos, lo que nos evita un doble bucle de búsqueda, ya que es la raíz cuadrada de (N-3a2)/2. En la función que se usará nos preguntaremos si esa expresión es cuadrada, y en caso afirmativo, de ella obtendremos k y después N. Un ejemplo de función sería el siguiente:


Public Function basesenprog$(n)
Dim a, b, k, p, q, d
Dim s$

s$ = "" ‘Se usa un string para recoger las soluciones
k = Sqr(n / 3) ‘Cota para los valores de a
For a = 2 To k
b = (n - 3 * a ^ 2) / 2 ‘Se estudia el posible cuadrado de la diferencia de la p.a.
If escuad(b) Then d = Sqr(b) Else d = 0 ‘Si es cuadrado, se halla la diferencia d, y si no d=0
If d > 0 And d < a Then p = a - d: q = a + d: s$ = s$ + str$(p) + " " + str$(a) + " " + str$(q) + "&"
Next a
If s$ = "" Then s$ = "NO" ‘Si no hay solución, devuelve “NO”
basesenprog = s$
End Function

Con esta función y un bucle de búsqueda, obtenemos la lista ordenada de los números que obtuvimos con la tabla de doble entrada:



Cada uno viene acompañado de las tres bases en progresión aritmética. Por ejemplo, 140=22+62+102=4+36+100, con 6-2=10-6=4.

Con esta función también se detecta si un número presenta más de una solución. El primer número con esta propiedad es 371=12+92+172 y también 371=92+112+132.

Modificando la salida de la función, se pueden descubrir más números que admitan dos o más soluciones. Los primeros son estos:


El primero que presenta tres soluciones es 

2387=32+232+432=92+252+412=172+272+372

Las diferencias son 20, 16 y 10 respectivamente.

Si deseas las soluciones de los párrafos anteriores en forma de lista, puedes acudir al lenguaje PARI.

for(n=3,600,k=sqrt(n/3);a=2;v=0;while(a<=k&&v==0,b=(n-3*a^2)/2;if(b==truncate(b)&&issquare(b),d=sqrt(b);if(d>=1&&d<=a-1,v=1;print1(n,", ")));a+=1))

Obtendrás así el listado:

14, 29, 35, 50, 56, 66, 77, 83, 93, 107, 110, 116, 126, 140, 149, 155, 158, 165, 179, 194, 197, 200, 210, 219, 224, 242, 245, 251, 261, 264, 275, 290, 293, 302, 308, 315, 318, 332, 341, 350, 365, 371, 372, 381, 395, 398, 413, 428, 434, 435, 440, 450, 461, 462, 464, 482, 491, 504, 509, 515, 525, 530, 539, 557, 560, 563, 579, 590, 594, 596,…

Otra variante se inspira en la tabla de doble entrada y después elimina duplicados:

w=List();for(n=3,600,k=sqrt(n/3);for(a=2,k,for(c=1,a-1,v=(a-c)^2+a^2+(a+c)^2;if(v==n,listput(w,n)))));print(vecsort(Vec(w),,8))



Esta sucesión permanecía inédita y la hemos publicado en http://oeis.org/A306212


Suma de cubos en progresión aritmética

Acudiremos en este caso a las mismas técnicas que usamos con los cuadrados, pero de forma más breve. Buscamos números que presenten la equivalencia


En primer lugar, acudimos a una tabla de doble entrada para a y k:


Como se presenta el mismo inconveniente de los cuadrados, de presentación sin ordenar y sin depuración de repetidos, usaremos mejor el método de la función.

Para ello simplificaremos (a-k)3 + a3 + (a+k)3 = 3a3 + 6ak2 = N

Despejando k observamos que (N-3a3)/6a ha de ser cuadrado. Así que probaremos valores de a entre 2 y la raíz cúbica de N/3, tomando nota de cuando esa expresión sea cuadrada. Puede ser así:

Public Function basesenprog3$(n)
Dim a, b, k, p, q, d
Dim s$

s$ = ""
k = (n / 3) ^ (1 / 3) ‘Tope para la búsqueda
For a = 2 To k
b = (n - 3 * a ^ 3) / (6 * a) ‘Expresión que ha de ser cuadrada
If escuad(b) Then d = Sqr(b) Else d = 0
If d > 0 And d < a Then p = a - d: q = a + d: s$ = s$ + str$(p) + " " + str$(a) + " " + atr$(q) + "&"
‘Existe una solución
Next a
If s$ = "" Then s$ = "NO"
basesenprog3 = s$
End Function

Filtrando los primeros números naturales mediante esta función, obtenemos el listado:

36, 99, 153, 216, 288, 405, 408, 495, 645, 684, 792, 855, 972, 1071, 1197, 1224, 1407, 1548, 1584, 1701, 1728, 1968, 2079, 2241, 2304, 2403, 2541, 2673, 2736, 3051, 3060, 3240, 3264, 3537, 3540, 3888, 3960, 4059, 4131, 4257, 4500, 4587, 4833, 5049, 5160, 5256, 5472, 5643, 5832, 5940, 6336, 6369, 6669, 6840, 6903, 6984, 7227, 7293, 7776, 7839, 7860, 8217, 8316, 8541, 8568, 8712, 8988, 9339, 9399, 9576, 9792,...

Hemos publicado esta sucesión en http://oeis.org/A306213

El primer número que presenta dos soluciones es el 5643, ya que

5643=(9-8)3 + 93 + (9+8)3 = (11-5)3 + 113 + (11+5)3

Esta versión en PARI se basa en una tabla de doble entrada, eliminando repetidos:

w=List();for(n=3,10000,k=(n/3)^(1/3);for(a=2,k,for(c=1,a-1,v=(a-c)^3+a^3+(a+c)^3;if(v==n,listput(w,n)))));print(vecsort(Vec(w),,8))

Esta otra se basa en nuestra función Excel:

for(n=3,10000,k=(n/3)^(1/3);a=2;v=0;while(a<=k&&v==0,b=(n-3*a^3)/(6*a);if(b==truncate(b)&&issquare(b),d=sqrt(b),d=0);if(d>=1&&d<=a-1,v=1;print1(n,", "));a+=1))

Entre estas soluciones aparecen cuadrados destacables, como

62 = 13 + 23 + 33 y 482 = 43 + 83 + 123

Otra relación atractiva es 66 = (24-6)3 + 243 + (24+6)3 o 154 = (25-5)3 + 253 + (25+5)3

Podemos encontrar también muchos cubos. El primero es 63 = 3^3 + 4^3 + 5^3

Potencias cuartas

Actuamos de igual forma, iniciando una tabla de doble entrada y después una función. La tabla es la siguiente:


De ella se descubren los primeros elementos: 98, 353, 707, 962, 1568,…

Para construir la función necesitamos algo de Álgebra. Despejamos k, tal como procedimos en los casos anteriores:

(a-k)4 + a4 + (a+k)4 = 3a4 + 12a2k2 + 2k4 = N

De esta igualdad se deduce indirectamente que N>3a4 y que, por tanto, (N/3)1/4 es cota para a.
(Este resultado es general: Si (a-k)n + an + (a+k)n = N,
 la cota es (N/3)1/n. Se puede ver derivando la expresión para demostrar que es creciente respecto a k)

Seguimos:

2k4 + 12a2k2 - (N-3a4) = 0

Es una ecuación bicuadrada con solución positiva para k2:



Esto nos da una condición que debe cumplir esa expresión final, y es que sea cuadrado de un entero. Por eso, esta sería la función adecuada para descubrir los números que admiten estas sumas de potencias cuartas:

Public Function basesenprog4$(n)
Dim a, b, k, p, q, d
Dim s$

s$ = ""
k = Sqr(Sqr(n / 3)) ‘Cota superior N^(1/4)
For a = 2 To k
b = Sqr(2 * n + 30 * a ^ 4) / 2 - 3 * a ^ 2 ‘Valor de k^2
If escuad(b) Then d = Sqr(b) Else d = 0 ‘La variable d representa a k si existe solución
If d > 0 And d < a Then p = a - d: q = a + d: s$ = s$ + ajusta(p) + " " + ajusta(a) + " " + ajusta(q) + "&" ‘Formación de la solución en modo texto
Next a
If s$ = "" Then s$ = "NO"
basesenprog4 = s$
End Function

Con esta función se puede establecer la búsqueda, resultando, para las primeras soluciones:

98          1 2 3&
353        2 3 4&
707        1 3 5&
962        3 4 5&
1568      2 4 6&
2177      4 5 6&
2658      1 4 7&
3107      3 5 7&
4322      5 6 7&
4737      2 5 8&
5648      4 6 8&
7187      1 5 9&
7793      6 7 8&
7938      3 6 9&
9587      5 7 9&
11312    2 6 10&
12657    4 7 10&
13058    7 8 9&
15392    6 8 10&
15938    1 6 11&
17123    3 7 11&
19362    5 8 11&
20657    8 9 10&
23153    2 7 12&
23603    7 9 11&
25088    4 8 12&
28593    6 9 12&
30963    1 7 13&

La segunda columna presenta las tres bases en progresión aritmética.

Si ordenamos resulta el listado ordenado y sin repeticiones:

98, 353, 707, 962, 1568, 2177, 2658, 3107, 4322, 4737, 5648, 7187, 7793, 7938, 9587, 11312, 12657, 13058, 15392, 15938, 17123, 19362, 20657, 23153, 23603, 25088, 28593, 30963, 31202, 32738, 34832, 35747, 40962, 42528, 45233, 45377, 49712, 49763, 54722, 57153, 57267, 61250, 63938, 67667, 69152, 72113, 75792, 77922, 81473, 87713, 90083, 90368, 93602, 93827, 98787,...

Hemos publicado esta sucesión en http://oeis.org/A306214

Como en los casos anteriores,disponemos de dos versiones en PARI:

w=List();for(n=3,100000,k=(n/3)^(1/4);for(a=2,k,for(c=1,a-1,v=(a-c)^4+a^4+(a+c)^4;if(v==n,listput(w,n)))));print1(vecsort(Vec(w),,8))

y

for(n=3,100000,k=(n/3)^(1/4);a=2;v=0;while(a<=k&&v==0,d=sqrt(sqrt(2*n+30*a^4)/2-3*a^2);if(d==truncate(d)&&d>=1&&d<=a-1,v=1;print1(n,", "));a+=1))

Como curiosidad podemos destacar:

3923 = (56-28)4 + 564 + (56+28)4

Te invitamos a resolver el problema para potencias superiores. Ya tienes encauzados los cálculos y algoritmos.


No hay comentarios: