lunes, 21 de enero de 2019

Suma por diferencia con añadido de una unidad



El día 29/10/18 publiqué en Twitter (@connumeros) la siguiente propiedad del número de fecha 291018:

291018 presenta dos productos muy parecidos basados en el número 540:
291018=(540-33)(540+34)
291018=(540-7)(540+6)

Es algo parecido a la diferencia de cuadrados (suma por diferencia) con el añadido de una unidad al sumando o al sustraendo. Pueden darse los dos casos, que representaremos por

N=(m+p)(m-p+1) o bien N=(m+p)(m-p-1)

Al primer caso le llamaremos C(-1), porque el sustraendo es una unidad menor que p, y al segundo C(+1).

Es fácil ver que N ha de ser par, pues si m y p son ambos pares o impares, su suma m+p será par, y si son de distinta paridad, lo es el otro factor. Al multiplicar siempre habrá un factor par, lo que convierte también en par el producto.

A la inversa, todo número par mayor que 2 (para evitar el valor 0) presenta dos soluciones triviales:

Todo número par n>2 cumple esta descomposición haciendo m=n/2+1 y p=n/2-1, pues entonces n=(n/2+1+n/2-1)(n/2+1-(n/2-1)-1)=n*1

También cumple esta otra: m=n/2, p=n/2, con n=(n/2+n/2)(n/2-n/2+1)=n*1

A partir de ahora eliminaremos estos dos casos, y sólo consideraremos el caso m-p>2.

Con esa restricción, el primer número que admite esta descomposición es el 10, si hacemos m=4 y p=1

10=(4+1)(4-2)=5*2

Será pues un caso del tipo C(+1).

Para saber si un número se puede descomponer de esta forma podemos usar la siguiente función:

Public Function sumapordif$(n) ‘Es de tipo string para contener soluciones
Dim m, p, a, k
Dim c$

c$ = "": k = 0 ‘c$ contiene soluciones y k las cuenta
For m = 2 To n - 1
For p = 1 To m – 3 ‘Respetamos una diferencia mayor que 2
a = 0
If n = (m + p) * (m - p - 1) Then a = 1 ‘Probamos las dos fórmulas
If n = (m + p) * (m - p + 1) Then a = -1
If a <> 0 Then k = k + 1: c$ = c$ + Str$(m) + Str$(p) + "#" + Str$(a)
‘Si alguna de las dos se verifica, se incorpora la solución y se incrementa el contador
Next p
Next m
If k > 0 Then c$ = Str$(k) + c$ ‘Se incorpora el contador a la solución
sumapordif = c$
End Function

Con ella podemos descubrir los primeros números pares que admiten solución:

10          1 4 1# 1
14          1 5 2# 1
18          2 5 1# 1 6 3# 1
20          1 4 1#-1
22          1 7 4# 1
24          1 6 2# 1
26          1 8 5# 1
28          2 5 2#-1 6 1# 1
30          3 5 1#-1 7 3# 1 9 6# 1
34          1 10 7# 1
36          3 6 3#-1 7 2# 1 8 4# 1
38          1 11 8# 1
40          2 6 2#-1 7 1# 1
42          3 6 1#-1 9 5# 1 12 9# 1
44          2 7 4#-1 8 3# 1
46          1 13 10# 1
48          1 10 6# 1
50          3 7 3#-1 8 2# 1 14 11# 1
52          2 8 5#-1 9 4# 1
54          4 7 2#-1 8 1# 1 11 7# 1 15 12# 1
56          1 7 1#-1
58          1 16 13# 1
60          5 8 4#-1 9 3# 1 9 6#-1 10 5# 1 12 8# 1

Para cada número figura en primer lugar el número de soluciones. Así, 60 presenta 5 soluciones. Después figuran los valores de m y p seguidos de # y de +1 o -1 según el tipo de solución.

Vemos que la solución para el 54 es 4 7 2#-1 8 1# 1 11 7# 1 15 12# 1. Eso significa que posee cuatro soluciones, una del tipo C(-1) y las otras del otro tipo.

En efecto, se cumple:


54=(7+2)(7-1)=(8+1)(8-2)=(11+7)(11-8)=(15+12)(15-13)


Soluciones dobles con el mismo valor de m

Un problema más difícil es el de determinar si un número, como el 291018 admite dos (o más) soluciones con el mismo valor de m. El algoritmo puede resultar algo complejo, por lo que hay que estudiarlo con atención. Para los valores de m usamos el rango desde 2 hasta la mitad del número, ya que m+p ha de ser divisor propio de n (si desechamos los casos triviales). Después, para cada valor de m contamos los casos favorables y, si son mayores que 1, los reservamos en la variable c$ para construir la función. Este es el listado:

Public Function sumapordifdup$(n)
Dim p, h, v, b, m, n2
Dim c$


If n Mod 2 <> 0 Then sumapordifdup = "": Exit Function ‘Desechamos los impares
n2 = n / 2 ‘n/2 es el tope para m
v = 0 ‘Contador de soluciones si procede
m = 2 ‘Inicio de m
c$ = "" ‘Contenedor de la solución
While m < n2 And v = 0 ‘Avanza hasta la mitad de n si no hay solución
p = 1: h = 0: c$ = "" ‘Se inician los valores para p
While p < m - 1 And v = 0
b = m + p ‘Se construye la suma m+p para ver si es divisor
If n Mod b = 0 Then ‘Si es divisor, se prueban las dos posibilidades
If n = b * (m - p - 1) Or n = b * (m - p + 1) Then c$ = c$ + Str$(m) + Str$(p): h = h + 1
‘La línea anterior es fundamental, porque cuenta soluciones para un mismo valor de m
End If
p = p + 1
Wend
If h > 1 Then v = h ‘Si hay más de una solución, se para el proceso
m = m + 1
Wend
If v>0 then sumapordifdup$ = c$ else sumapordifdup$ = “”
End Function

Aplicada esta función a nuestro valor 291018 se obtiene:




Coincide con el planteamiento inicial de esta entrada.

Esta función no nos informa sobre si el tipo es C+1 o C-1, pero es que se ha querido simplificar. Después de obtenida la solución se puede efectuar una comprobación manual.

Con esta función podemos obtener los primeros números que satisfacen una relación doble como la solicitada:

N            Valores de m (duplicado) y p

36          7 2 7 5
60          9 3 9 6
70          9 1 9 5
90          11 4 11 7
126        12 2 12 6
168        15 6 15 9
180        14 1 14 6
198        15 3 15 7
216        17 7 17 10
270        19 8 19 11
286        18 4 18 8
300        18 2 18 7
330        21 9 21 12
378        20 1 20 7
390        21 5 21 9
396        23 10 23 13
450        22 3 22 8
468        25 11 25 14

Por ejemplo, 330=(21+9)(21-10)=(21+12)(21-11) Posee, pues, las dos soluciones pedidas para el valor 21, que era lo exigido.

Vemos que existen muchos ejemplos de una propiedad que parecía más restrictiva, pero este tipo de hechos no se descubren hasta no emprender el estudio.

Si descomponemos estos números en factores primos, observaremos que poseen más de cuatro divisores, lo que propicia que se dé la casualidad que estamos comentando:





miércoles, 9 de enero de 2019

Número igual al cubo de la suma de sus cifras



Hace unas semanas, ordenando mis papeles, encontré una hoja de hace casi cuarenta años en la que resumía un ejercicio para la calculadora programable Texas Instrument TI-58. Me impresionó recordar lo complicado que era su lenguaje de programación y las dificultades que tuvimos que soportar quienes iniciamos el uso de la Informática en las aulas. Por ello, he querido, a través de mi propia persona, rendir homenaje al profesorado que dio esos primeros pasos.

Resulta que lo que yo estaba buscando en esa hoja eran los números de Dudeney (no puedo recordar si en aquellos años los conocía por este nombre, creo que sí), aquellos que coinciden con el cubo de la suma de sus cifras, como 4913=(4+9+1+3)3. Yo lo expresaba de distinta forma, como vemos en mi manuscrito escaneado:

Se expresa en él la búsqueda de números cuya raíz cúbica coincide con la suma de sus cifras. Es preferible la formulación de más arriba, que evita el uso de la raíz, con toda la complicación de su expresión decimal.

En este manuscrito se incluía también un diagrama de flujo, que ahora, con la programación estructurada y la orientada a objetos, ha quedado como algo antiguo, pero que en su momento nos ayudó mucho a razonar. En él se evita el uso de la raíz cúbica.


La falta de costumbre me ha obligado a estudiar este esquema con detenimiento, lo que aumenta mi asombro al recordar la precariedad de medios de entonces. Y peor era su traducción al lenguaje propio de la TI-58, muy próximo al ensamblador. Véase una muestra:


¿Cómo abordaríamos este problema pasadas cuatro décadas?

En el caso de este blog acudiríamos a Excel o Calc, con su lenguaje Basic, o al lenguaje PARI, que se nos ha hecho imprescindible.


  
Uso de la función SUMACIFRAS

En este curso hemos usado con frecuencia la suma de cifras de un número, pero para evitar la consulta a otras entradas, reproduzco de nuevo aquí la función usada. Se aplica a dos argumentos, el número n y el exponente k al que se elevan las cifras en la suma:

Public Function sumacifras(n, k)
Dim h, i, s, m

h = n ‘Copia el valor de n
s = 0 ‘Variable que contendrá la suma
While h > 9 ‘Se extraen cifras hasta que sólo quede una
i = Int(h / 10) ‘Dos líneas para extraer la siguiente cifra
m = h - i * 10
h = i ‘El valor de h va descendiendo al extraerle cifras
s = s + m ^ k ‘Se incrementa la suma
Wend
s = s + h ^ k ‘Última cifra
sumacifras = s
End Function

En esta entrada sólo usaremos exponente 1, por lo que las llamadas a la función serán del tipo sumacifras(n;1)

Con esta función se puede organizar la búsqueda de los números de Dudeney:

For i = 1 To 100
b = i ^ 3
If sumacifras(b, 1) = i Then msgbox(b)
Next i

Con un código algo más preciso, se puede construir la tabla:


En ella quedan destacadas las igualdades entre la raíz cúbica y la suma de cifras. No hay más soluciones, como demostraremos más adelante. Estos números están publicados en blogs y páginas de Matemáticas, y en especial en 

A061209         Numbers which are the cubes of their digit sum.                
0, 1, 512, 4913, 5832, 17576, 19683

Llama la atención la simplicidad del código en PARI:

(PARI) for(n=0, 999999, sumdigits(n)^3==n&&print1(n", ")) \\ M. F. Hasler, Apr 12 2015

¿Por qué interrumpimos la búsqueda en las seis cifras? Esto lo razoné hace cuarenta años, cuando me iniciaba en la programación con números enteros. 

Copio y adapto mi razonamiento:

En un número n de k cifras, la suma de las mismas S es como máximo 9+9+9+…+9 k veces, luego S<10k. Por otra parte, n estará comprendido entre 10(k-1) y 10k. Si el número tiene más de seis cifras tendremos que su raíz cúbica cumplirá R>=10(k-1)/3 y (k-1)/3>2k. 

Será imposible que S=R, ya que S<10k<102k<R

La desigualdad central se ve mejor con logaritmos decimales:

10k<102k equivale a 1+log(k)<2k, en el que 1<k y log(k)<k, luego la desigualdad se cumple.

Esta es la razón por la que es inútil buscar más números de Dudeney.

Una vez resuelto el problema con la potencia tres, es sencillo extenderlo a las siguientes potencias. Lo dejamos como ejercicio. Por cierto, para cuadrados sólo existen dos soluciones, 1 y 81.

Las soluciones con cuartas potencias son
1             1
7             2401
22          234256
25          390625
28          614656
36          1679616
              
Las tienes publicadas en http://oeis.org/A061210, y se puede demostrar que no existen soluciones con más de ocho cifras.

Con quintas potencias son estas:

1             1
28          17210368
35          52521875
36          60466176
46          205962976



Caso general

En http://oeis.org/A023106 están publicados todos aquellos números que son potencia de la suma de sus cifras, sin especificar el exponente:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 81, 512, 2401, 4913, 5832, 17576, 19683, 234256, 390625, 614656, 1679616, 17210368, 34012224, 52521875, 60466176, 205962976, 612220032, 8303765625, 10460353203, 24794911296, 27512614111, 52523350144, 68719476736,…

Podemos reproducir esta lista, no considerando los de una cifra,  que son casos particulares (exponente 1). Basta usar esta función, que para cada número te devuelve “NO” si no tiene la propiedad exigida, y la suma de cifras y el exponente si la tiene:

Public Function tipodudeney(n) As String
Dim p$
Dim i, j, s, t

p$ = "" ‘Resultado, en principio vacío
For i = 2 To Sqr(n) ‘Recorremos posibles raíces enésimas de n
s = Int(Log(n) / Log(i) + 0.000001) ‘Evaluamos el posible exponente entero
If n = i ^ s Then ‘Si efectivamente, es raíz enésima, sumamos cifras
t = sumacifras(n, 1)
If t = i Then p$ = p$ + Str(i) + " " + Str(s) + "  " ‘Si existe coincidencia, añadimos solución
End If
Next i
If p = "" Then p = "NO" ‘No existe solución
tipodudeney = p$ ‘Se publica raíz y exponente
End Function

Con un poco de paciencia, porque en Excel va lento (y en Calc más), logramos las primeras soluciones. Estas son las inferiores a 500000:



Entre ellas figuran exponentes 2, 3 y 4, con soluciones ya conocidas.

Dejamos aquí el estudio. Ha sido interesante revisar uno de mis primeros trabajos en programación. Si encuentro otro, lo adaptaré también.


domingo, 30 de diciembre de 2018

Resumen de cálculos sobre el año 2019


Expresiones sencillas – Autogeneraciones

Comienzo la bienvenida al 2019 con dos expresiones que son simétricas en sus dígitos:
2019=673×3×(7-6)
2019=3×(676-3)

Estas expresiones del 2019 también usan dígitos simétricos, pero son más complejas:
2019=(7+13+9)×5×(5+9)-(3+1+7)
2019=2314-(55+4)×1×(3+2)
2019=5×(4+6+36)×(6+3)-6-45
2019=5×46×(3+6)-(6+36+4+5) (los mismos dígitos que la anterior)
2019=71×(7+54)-4×(571+7)

 2019 concatena dos números consecutivos: 20//19
Por eso se autogenera: 2019=2019×(20-19)
Podría haber sido 2019=2019-2×0×19

Una autogeneración más compleja para el 2019:
2019=(2+0)×(1+920+1+92+0)-1×9
O esta:
2019=2019×(2-0-1-92×0×(1+9))

Una forma especial de autogenerarse 2019 es mediante conjuntos formados por la elección aleatoria de sus dígitos:
2019=121×(19+0)-2-2-(2+1)×(92+0)
2019=(2+1)×(99×9-0!)-(29+2)×21
2019=(1+0+92)×(1+1+9)×2-9-9-9

Sumas de potencias, alternadas y otras

Potencias quintas:
2019=4^5+1^5+4^5+1^5-2^5+1^5

Al nuevo año también lo generan factoriales, esta vez como suma alternada:
2019=6!-5!+6!-4!+6!-2!+3!-1!

Otras sumas alternadas para 2019. Ahora de potencias heterogéneas:
2019=3^7-17^2+11^2
2019=46^2-15^2+2^7
2019=2^8-1^6+42^2

Sumas alternadas de cuadrados:
2019=42^2-1^2+16^2
2019=42^2-23^2+28^2
2019=38^2-1^2+24^2
2019=44^2-41^2+42^2

Sumas alternadas de cinco cubos:
2019=13^3-6^3+4^3-3^3+1^3
2019=13^3-5^3+4^3-5^3+2^3
2019=13^3-2^3+7^3-9^3+6^3

2019 también admite sumas alternadas con números triangulares (tipo n(n+1)/2):
2019=60×61/2-16×17/2+25×26/2
2019=53×54/2-12×13/2+36×37/2
2019=51×52/2-4×5/2+37×38/2
2019=60×61/2-28×29/2+34×35/2

Desarrollos monocifra

Comienzan los desarrollos monocifra para el año nuevo:
2019 con el 1: 
2019=(1+1)^11-(1+1)^(1+1+1+1+1)+1+1+1
O bien: 2019=((11×11+11)(1+1+1+1+1)+11+1+1)(1+1+1)

2019 con el 2:
2019=2222-222+22-2-2/2
O bien: 2019=2^(22/2)-2×2×2×2×2+2+2/2

2019 con el 3:
2019=3×(333+333+3+3)+3
2019=(3×3+333)×3!-33
2019=(333+3!-3)×3!+3

2019 con el 4:
2019=44×44+44+44-4-4/4
2019=(444+44+4×4)×4+4-4/4
2019=(444×(4+4)+4444)/4+4!-4

2019 con el 5
2019=(555-55+5)(5-5/5)-5/5
2019=(55-5-5)(55-5-5)-5!/(5×5-5)

2019 con el 6:
2019=(666+6+6/6)×(6×6)/(6+6)
2019=6×(6+666)/(6+6)×6+(6+6+6)/6

2019 con el 7:
2019=(77+7)(7+77)-7!+(7+7+7)/7
2019=777+777+77×7-77+(7+7+7)/7


2019 con el 8:
2019=88×(8+8+8)-88-(8+8)+88/8
2019=(8+8+8)×88+(8+8+8)/8-(88+8)

2019 con el 9: 
2019=((9+9)(999+9)+9+9+9)/9
2019=999+999+9+9+(9+9+9)/9

Pandigitales

El 2019 se genera con varias expresiones pandigitales. Aquí tenemos cuatro:
2019=3×(5+0+4+1)/2×9×(8+7)-6
2019=82×6×(3+4)-19×75+0
2019=2158-34-(0+6+9)×7
2019=46×5×9-27-8×1×3+0


Subidas y bajadas de cifras

Ascenso y descenso de cifras para el 2019:
2019=(1+2)×(3+4+5+6)×7×8-(98+7+6)×(5+4)-(3+2+1)
2019=(1+23+4+5+6+7!)-(8+9)×(8+7+6+5+4)×(3+2+1)

Descenso y ascenso de cifras para el 2019: 
2019=9×(8+7+6+5+4)×(3+2+1+2)-3-45-6-78-9
2019=9×(8+7+6+5+4)/(3+2)×(1+23+4+5+6)-78-9


2019 generado con cifras del 1 al 12: 
2019=(-1+2)×3×(4+5+678-9×1-(0+1+1+1+2))


Desarrollo para el 2019 con las cifras de los primeros primos:
Hasta el 29:  2019=(2+3+5+7+1)(113+1)-(7+1+9+2+3+2+9)
Hasta el 31:  2019=23×(5+7+1+1+1)×(3+1+7)-(192+3+2)×9-3×1

2019 generado por las cifras de los nueve primeros impares:
2019=1×3×((57+9+1+1)×1×(3+1+5+1)-7)


Dos bajadas de cifras del once al uno para generar el 2019:
2019=(1+11+0+9+8+7+65)×4×(3+2)-1
2019=(1+110+9+8+7)×(6+5+4)-3-2-1



Descomposiciones en sumas

Todo número admite descomposición en suma de tres triangulares o menos.
2019 es suma de solo dos triangulares de dos formas distintas:
2019=T(2)+T(63)=2×3/2+63×64/2
2019=T(11)+T(62)=11×12/2+62×63/2

No hay más.


2019 no se descompone en suma de dos cuadrados, por tener el factor primo 3 (tipo 4k+3), pero sí forma terna primitiva (catetos primos entre sí) con 1155 y 1656:

2019^2=1155^2+1656^2


Sumas simétricas

2019 admite 58 descomposiciones en sumas simétricas de tres números primos:
2019=11+1997+11=13+1993+13=23+1973+23=…=983+53+983=991+37+991

2019 admite 26 descomposiciones en sumas simétricas de tres números capicúas:
2019=454+1111+454=515+989+515=525+969+525=…=949+121+949=959+101+959

2019 admite 2 descomposiciones en sumas simétricas de tres cuadrados:
2019=23^2+31^2+23^2
2019=13^2+41^2+13^2

2019 se puede generar con diez sumas distintas (salvo el orden) de tres potencias. Destacamos algunas:
2019=5^2+5^4+37^2
2019=7^3+26^2+10^3
2019=13^2+5^4+35^2


Propiedades más teóricas

El número triangular de orden 2019 es suma de otros dos triangulares, cuya diferencia también es triangular:
T(2019)=2039190=T(1425)+T(1430)=1016025+1023165
T(1430)-T(1425)=T(119)=7140

2019 es un número semiprimo (tiene dos factores primos, 2019=3×673) y suma de cuatro semiprimos consecutivos:
2019=501+502+505+511=3×167+2×251+5×101+7×73


2019 tiene dos factores primos, (2019=3×673), cuyas dos concatenaciones 3673 y 6733 son números primos y la suma de los dos factores es un cuadrado, 3+673=676=26^2


2019 es un número feliz, porque reiterando la suma de los cuadrados de sus cifras se desemboca en la unidad:
2^2+1^2+0^2+9^2=86
8^2+6^2=100
1^2+0^2+0^2=1
(http://oeis.org/A007770)

2019 equivale a la suma de las 22 primeras potencias enteras:
2019=1^2+2^2+2^3+3^2+4^2+5^2+3^3+2^5+6^2+7^2+8^2+9^2+10^2+11^2+5^3+2^7+12^2+13^2+14^2+6^3+15^2+3^5


¿Qué tiene que ver 2019 con el número 62? Una relación entre las funciones PHI (número de coprimos con 2019 y menores que él) y SIGMA (suma de los divisores):
PHI(2019+62)=PHI(2081)=2080
SIGMA(2019-62)=SIGMA(1957)=2080


Otra relación entre las funciones PHI y SIGMA en el número 2019
PHI(2019×SIGMA(2019))=PHI(2019)^2
En efecto: SIGMA(2019)=2696; PHI(2019×2696)=1806336
PHI(2019)=1344 Y 1344^2=1806336


Cifras de números importantes

2019 con las cifras de los números importantes. Comenzamos con los tres “grandes”:

2019 con  PI:
2019=314×(1-5+9)+265+35×8-97+9/3-2

2019 con E:
2019=271×8+2×81-82×(8-4)+5+9-0!+4

2019 con PHI, el número de oro:
2019=1618+0+339+8×8-7-4+9
https://es.wikipedia.org/wiki/N%C3%BAmero_%C3%A1ureo


2019 con el número de plata (uno más la raíz cuadrada de 2):
2019=2414+213-562-3×7-(3+0)×9+5+0!-4
https://www.gaussianos.com/el-numero-plateado/


2019 con las cifras del número de bronce:
2019=3302-7×75-637-7×(3+19)+9+4×6
https://es.wikipedia.org/wiki/N%C3%BAmero_met%C3%A1lico


2019 con las cifras de la raíz cuadrada de 2:
2019=1414+21×35-62-37-30-(9-5-0)/4

2019 con las cifras de la raíz de 3:
2019=1732+0+50×8+0-7×5-68-87+7×(2+9)

Cálculos finales

No podían faltar los productos cíclicos en la bienvenida al 2019:

2019 admite 16 representaciones como suma de tres productos cíclicos. Se insertan tres de ellas:
2019=15×18+18×53+53×15
2019=16×19+19×49+49×16
2019=23×26+26×29+29×23


Últimos cálculos con 2019. Esta vez, dos clásicos en nuestras publicaciones diarias:

2019 y los factoriales

2019=6!×2!+(5!+4!)×(2!+2!)+2!+1!
2019=(4!-1!)×5!-6!-4!+2!+0!
2019=4!×(1!+3!)×2!×3!+2!+0!


2019 engendrado mediante expresiones palindrómicas:

2019=2×(222+5)+1111+(5+222)×2
2019=5+77+35×53+77+5
2019=4+393+5×7×7×5+393+4



miércoles, 19 de diciembre de 2018

Equivalencia entre sumas de cubos



Sabemos desde Fermat que un cubo no se puede descomponer en suma de otros dos cubos, pero sí es posible que una suma de cubos sea equivalente a otra distinta. El día 23/11/18, de forma indirecta, publiqué en Twitter (@connumeros) esta igualdad:

19^3+2^3=16^3+14^3+3^3

Como veremos más adelante, estas equivalencias son más frecuentes de lo que se podría esperar en una primera aproximación. Comenzaremos, pues, con este tipo, en el que una suma de dos cubos es equivalente a otra de tres.

Para ello diseñaremos una función, que más tarde modificaremos, que admita un número n y busque sumas equivalentes del tipo dado, en las que n sea la mayor base de cubo en la expresión. La salida de la función será en modo texto, para poder leer bien todas las soluciones.

Usaremos este algoritmo:

Public Function doblecubo$(n)
Dim p, q, r, k, a, b, u, v
Dim c$

If n < 2 Then doblecubo = "NO": Exit Function ‘El número debe ser mayor que 2
c$ = "": k = 0 c$ recoge las soluciones y k las cuenta
For p = 1 To n
a = n ^ 3 + p ^ 3 ‘Se forma la suma de dos añadiendo otro sumando
b = a ^ (1 / 3) ‘Tope de búsqueda
For q = 1 To b ‘Doble bucle de búsqueda
For r = 1 To q
u = a - q ^ 3 - r ^ 3
If u > 0 Then v = Round(u ^ (1 / 3)) Else v = 0
If v > 0 And a = q ^ 3 + r ^ 3 + v ^ 3 And v <= r And v <= q Then k = k + 1: c$ = c$ + Str$(n) + Str$(p) + "=" + Str$(q) + Str$(r) + Str$(v) + "  "
‘Si se acepta el tercer cubo, se vuelca en c$ y se incrementa el contador
Next r
Next q
Next p
If k = 0 Then doblecubo = "NO" Else doblecubo = c$
End Function

Con esta función formamos una tabla con los primeros números que admiten esta descomposición. La segunda columna representa los cinco cubos que intervienen.

Parece ser que sólo los números  1, 2, 3, 4, 5, 6, 10, 12 y 13 no participan en equivalencias de este tipo:

7             7 1 = 6 4 4 
8             8 7 = 9 5 1 
9             9 7 = 10 4 2 
11          11 7 = 9 9 6 
14          14 2 = 12 8 8   14 10= 13 11 6   14 13= 17 3 1 
15          15 3 = 12 11 7   15 5= 14 9 3 
16          16 7 = 15 10 4   16 14= 18 10 2 
17          17 7 = 13 12 11   17 11= 15 14 5 
18          18 14 = 20 8 4   18 17= 20 14 1 
19          19 2 = 16 14 3   19 5= 17 12 7 
20          20 12 = 19 14 5 
                                           
Por ejemplo, con base 16 obtenemos dos equivalencias:

16^3+7^3=15^3+10^3+4^3; 16^3+14^3=18^3+10^3+2^3

(Puedes escribir estas equivalencias en una celda de Excel (con signo + o = delante) y te devolverá VERDADERO)

Si sumamos los cubos del primer par, encontramos los valores comunes de las dos sumas, que están publicados en http://oeis.org/A085336

344, 855, 1072, 1674, 2752, 3402, 3500, 3744, 4439, 4941, 5256, 6244, 6840, 6867, 6984, 8576, 9288, 9604, 9728, 10261, 10656, 10745, 10773, 10989, 13357, 13392, 14167, 14364, 15093,…

Estudiando todos los números siguientes no parece que haya más excepciones. Incluso el número de soluciones aumenta con buen ritmo. Si modificamos la función para que devuelva el número de soluciones, observamos una tendencia al crecimiento con muchas oscilaciones. Su coeficiente R2 es muy bajo, debido a las oscilaciones y  el crecimiento tiene una pendiente media de 0,277.

Problema de Ramanujan

En la anécdota famosa del taxi


aparece el número 1729 como el menor que se expresa de dos formas distintas como suma de dos cubos: 1729=1^3+12^3=10^3+9^3

Cambiaremos nuestra función sumacubos para que cubra este caso. No es difícil. Basta con suprimir un bucle FOR-NEXT y añadir alguna desigualdad:

Public Function doblecubo$(n)
Dim p, q, k, a, b, u, v
Dim c$

If n < 2 Then doblecubo = "NO": Exit Function
c$ = "": k = 0
For p = 1 To n
a = n ^ 3 + p ^ 3
b = a ^ (1 / 3)
For q = 1 To b
u = a - q ^ 3
If u > 0 Then v = Round(u ^ (1 / 3)) Else v = 0
If v > 0 And a = q ^ 3 + v ^ 3 And v <> p And v <> n And v <= q Then k = k + 1: c$ = c$ + Str$(n) + Str$(p) + "=" + Str$(q) + Str$(v) + "  "
Next q
Next p
If k = 0 Then doblecubo = "NO" Else doblecubo = c$
End Function

El siguiente listado está basado en la base del primer cubo, por lo que algunos resultados están duplicados:

10          10 9 = 12 1 
12          12 1 = 10 9 
15          15 9 = 16 2 
16          16 2 = 15 9 
20          20 18 = 24 2 
24          24 2 = 20 18   24 19= 27 10 
27          27 10 = 24 19 
30          30 18 = 32 4   30 27= 36 3 

Vemos que la primera equivalencia, 10,9 con 12, 1 es la de Ramanujan. Después le siguen

4104=15^3+9^3=16^3+2^3, 13832=20^3+18^3=24^3+2^3,…

La lista con los primeros valores la tienes en http://oeis.org/A001235

1729, 4104, 13832, 20683, 32832, 39312, 40033, 46683, 64232, 65728, 110656, 110808, 134379, 149389, 165464, 171288, 195841,…


¿Puede un cubo ser equivalente a una suma de tres?

La respuesta es afirmativa. Basta adaptar la función doblecubo(n) no añadiendo un sumado nuevo en las primeras líneas. Por ejemplo:

6^3=5^3+4^3+3^3 

9^3=8^3+6^3+1^3, 12^3=10^3+8^3+6^3, 18^3=15^3+12^3+9^3,… 

Tienes publicadas las bases del primer miembro de la igualdad en http://oeis.org/A023042

A023042                            Numbers whose cube is the sum of three distinct nonnegative cubes.

6, 9, 12, 18, 19, 20, 24, 25, 27, 28, 29, 30, 36, 38, 40, 41, 42, 44, 45, 46, 48, 50, 53, 54, 56, 57, 58, 60, 63, 66, 67, 69, 70, 71, 72, 75, 76, 78, 80, 81, 82, 84, 85, 87, 88, 89, 90, 92, 93, 95, 96, 97, 99, 100, 102, 103, 105, 106, 108, 110, 111, 112, 113

Aunque en esa página figuran dos listados en PARI, por su semejanza con la función doblecubo, se inserta el nuestro original y su resultado:

for(n=2,100,k=0;for(p=1,n,a=n^3;for(q=1,n,for(r=1,q,u=a-q^3-r^3;if(u>>0,v=round(u^(1/3)),v=0);if(v>>0&&a==q^3+r^3+v^3,k+=1))));if(k>>0,print1(n,", ")))



Un cubo suma de cuatro

Con nuestra herramienta Cartesius 


podemos usar este planteamiento  (en el listado se busca solución para el cubo de 7):

xtotal=4
xt=1..7
xt=suc(n^3)
suma=343
creciente

Se fija un total de cuatro cubos del 1 al 7 para que sumen el cubo de 7.
Así obtenemos la solución

7^3=6^3+5^3+1^3+1^3

Cambiando datos:

12^3=11^3+7^3+3^3+3^3
13^3=12^3+7^3+5^3+1^3
13^3=10^3+9^3+7^3+5^3
Tienes publicadas las bases 7, 12, 13,… en http://oeis.org/A274334

A274334                            Numbers n such that n^3 is the sum of 4 positive cubes.                 
7, 12, 13, 14, 18, 20, 21, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 66, 67, 68,…


Soluciones con más sumandos

Podemos destacar

8^3=6^3+6^3+4^3+2^3+2^3
9^3=7^3+7^3+3^3+2^3+2^3
9^3=8^3+5^3+4^3+3^3+1^3
10^3=9^3+6^3+3^3+3^3+1^3
10^3=7^3+7^3+5^3+5^3+4^3
7^3=6^3+4^3+3^3+3^3+2^3+1^3

Y muchas más.

El estudio que hemos desarrollado explica, como ya sospechábamos, el hecho de que en nuestros cálculos diarios de Twitter aparezcan tantas combinaciones de cubos.







lunes, 10 de diciembre de 2018

Simulaciones - Experimento de Bernouilli


Todos tenemos la experiencia de encuestas de opinión que no aciertan, o pronósticos de lluvia que no se cumplen. Solemos exigir a la Teoría de la Probabilidad y a la Estadística resultados que no nos pueden dar. Con esta simulación intentaremos comprobar las propiedades ya sabidas de los experimentos aleatorios:


  • Repetido un experimento aleatorio en las mismas condiciones, no tiene que dar los mismos resultados.
  • Los resultados son imprevisibles.
  • En general (no siempre), cada experimento suele ser independiente de los anteriores y no se ve influido por ellos.
  • A pesar de lo afirmado, en largas series de repeticiones de un experimento aleatorio se observan unas ciertas regularidades.


Usaremos la hoja de cálculo Simulador, programada en LibreOffice Calc y Excel, que para la simulación que se propondrá funcionará perfectamente.

Está alojada en

Versión Excel:
http://www.hojamat.es/estadistica/tema1/open/simulador.xslm

Versión LibreOffice:

http://www.hojamat.es/estadistica/tema1/open/simulador.ods

La puedes descargar para tu uso.

Para entender algo mejor la relación entre probabilidad y frecuencia simularemos una distribución de Bernouilli, que es la más sencilla de todas. Consiste en imaginar un suceso, por ejemplo tirar un dado y que resulte un 6, y construir una variable cuyo valor sea 1 si ocurre ese suceso y 0 si no ocurre. Así, el 1 tendrá probabilidad 1/6 de salir y el 0, suceso contrario, 5/6, es decir, mucho más probable. Suponemos que en una serie de intentos, el resultado de cada uno no se ve influido por los anteriores.

Primera simulación

Imagina que disponemos de una bola roja y dos blancas en una bolsa, y que extraemos varias veces una bola, la identificamos y la devolvemos a su sitio. Esperaremos que por cada vez que salga una roja aparecerán dos blancas, es decir, intuitivamente asignamos a la roja (que representaremos por el 1) una probabilidad de 1/3 y a las blancas una de 2/3. Si repetimos el experimento muchas veces tendremos la expectativa de que la frecuencia de las blancas será el doble que la de la roja. Observa estas tiradas que hemos conseguido con el simulador:


En ella han aparecido 39 ceros y 21 unos. Como contiene 60 tiradas, habríamos esperado 20 unos (rojas) y 40 ceros (blancas). Existe, pues una diferencia de una unidad, o expresado en porcentaje del  1,67%.

La primera idea que debes tener respecto a la relación entre probabilidad (tu expectativa previa) y la frecuencia observada después de un experimento es que presentan valores bastante aproximados, pero no exactos, salvo casualidades.

Si no se tiene en cuenta esto, dejaremos de creer en los sondeos de opinión o los pronósticos meteorológicos, porque creeremos que se equivocan. Se debe pensar siempre que estos experimentos miden nuestras expectativas, y no la realidad. ¿Se puede intentar disminuir la diferencia entre frecuencia y probabilidad? Pues sí y no. Seguimos hablando de expectativas: si aumentas el número de experimentos esperarás que el error en porcentaje disminuya, pero tampoco esto te da seguridad. Siempre medimos la esperanza y no la certeza. Inténtalo tú:

Abre el simulador y trabaja en su primera hoja Simulación. Sigue estos pasos:
Como tipo de simulación elige Bernouilli con el desplegable:


Como parámetro A, situado en el bloque Otros parámetros, y que contendrá la probabilidad, escribe esto: =1/3, y te dará un valor de 0,3333:



En el ejemplo hemos simulado 60 repeticiones del experimento. Puedes aumentar a 30 filas por 9 columnas (o bien otro valores) para que nos resulten 270 intentos



Señala como mínimo el 0 y como máximo el 1:



Para terminar, en la parte baja del cuadro concreta como criterio Máximo-Mínimo, y, más abajo, número de intervalos igual a 2. Capturamos el cuadro completo:



Observa que hemos dejado la Media y la Sigma de una simulación anterior, porque no van a intervenir. Con esto tienes definido un nuevo experimento con más repeticiones. Según el carácter de los fenómenos aleatorios, esperaremos un error menor, pero eso nunca es seguro.

Pulsa el botón Simulador.




Te aparecerán muchos unos y ceros. A nosotros nos resultó esto:



No vas a contar todos esos ceros y unos. Pasa a la siguiente hoja, Estadísticos, y lee las frecuencias:



En nuestro caso, en lugar de 180 y 90, que sería lo esperado, hemos obtenido 184 y 86, con un error de 4 unidades, 4,44% de error. Luego el error ha aumentado. No te puedes fiar de los fenómenos aleatorios.

Es muy probable que tú hayas obtenido mejor resultado. Lo hemos repetido y los errores obtenidos han sido 10, 1, 2, 5,  0, 8, 7, 6,…Como ves, muy variables y con poca fiabilidad. Es posible que tú también hayas obtenido resultados bastante dispares.

Si deseas introducirte en la Estadística debes aceptar este hecho. Sólo son seguros los resultados posteriores a un experimento, y no nuestras expectativas previas.

Seguimos insistiendo. Ese error hay que reducirlo. Para ello aumentaremos aún más el número de experimentos. Busca la casilla de Repeticiones de la simulación y marca 20 repeticiones, lo que equivale a 5400 experimentos.

Pulsa de nuevo en el botón Simulador y verás oscilar los datos 20 veces. Pasa a la hoja Estadísticos. Lee las frecuencias. A nosotros nos han resultado 1738 bolas rojas y 3662 blancas, en lugar de las esperadas 1800 y 3600, con un error de 62 bolas, que representa un 1,1% de error. Es una mejora, pero no espectacular.

Como regla empírica se suele tomar un 3% de error esperado en 1000 experimentos (esto tiene fundamentación teórica).

Si comparas los valores obtenidos en los estadísticos de la simulación en comparación con los teóricos, la impresión de buen ajuste mejora:



También parece que una columna es el doble de alta que la otra en el gráfico:



Hemos aprendido que cuando se realiza un experimento aleatorio el error que hay que medir es el relativo, el porcentaje, que calculas dividiendo el error absoluto (aquí 62 bolas) entre el total de experimentos (540) y pasarlo, si se desea, a porcentaje.

Hemos repetido el experimento de los 5400 intentos y nos han aparecido estos errores:
0,02%, 0,07%, 1,02%, 0,46%

En conjunto es más fiable que el primer experimento.

Si deseas simular experimentos en los que confíes que se dé una proximidad entre probabilidad y frecuencia, deberás aumentar el número de experimentos (con el consiguiente gasto. Por ello son populares los sondeos con 1000, 5000 o 10000 encuestados, pero no más).

En este ejemplo de Bernouilli conocemos la probabilidad, pero en un sondeo o una previsión meteorológica no lo sabemos y tendremos que manejarnos con cotas de error (ya lo irás viendo)

Por curiosidad, hemos aumentado el número de repeticiones a 200 (tarda un poco), es decir, 54000 experimentos, consiguiendo un error de 0,2%.

Si deseas afinar más tus resultados deberás aumentar el número de repeticiones, con el consiguiente gasto en tiempo y dinero.

NOTA: En estas simulaciones estamos juzgando la exactitud de la función ALEATORIO de las hojas de cálculo. Si esta no está bien programada sufriremos errores sistemáticos, pero como nuestro objetivo es aclarar conceptos, no parece muy grave.

Segunda simulación

Cuando se interviene en procesos aleatorios en la vida real llaman mucho la atención las rachas: tener cuatro varones seguidos, sacar un seis en el parchís tres veces o que veas en la calle varios coches aparcados de la misma marca.

Simularemos experimentos de Bernouillli para descubrirlas. Como todo esto es aleatorio, nunca sabremos si aparecerán o no.

Tener cuatro varones seguidos

Ya sabes cómo se programa el simulador: como parámetro A escribiremos =1/2, que es la probabilidad aproximada de nacer varón. Luego concretaremos una sola columna para leer mejor y, por ejemplo, 200 filas. ¿Has obtenido una racha de cuatro unos (también valdría de ceros, pues tienen la misma posibilidad)?

En nuestro intento ha aparecido una racha de cuatro unos y otra de cinco muy cercana a la anterior:



Esto significa que no es un suceso tan raro. Aparecieron en 200 intentos más rachas de cuatro elementos (ceros o unos) e incluso una racha de ocho unos.

Otra forma de verlo es contar con cuatro columnas y ver si en alguna aparecen cuatro unos (con esto anticipamos la distribución binomial, que estudiaremos en su momento):



En el primer intento hemos conseguido 17 filas en las que aparecen cuatro varones. En la imagen tienes dos casos seguidos:



El último 1 de la fila resulta porque hemos añadido la función producto para contar mejor los 17 casos.

Podemos considerar que la probabilidad de que aparezcan cuatro varones es 0,54=0,0625, que multiplicado por 200 nos da el valor teórico, 12,5, por lo que nuestra simulación, con 17, no era demasiado acertada.

Tercera simulación

Recordarás la Ley de Murphy en sus distintas variantes: “Si algo puede salir mal, probablemente saldrá mal”. En efecto, a veces falla todo lo que era susceptible de fallo. Por eso, en instalaciones en las que la seguridad es prioritaria se suelen duplicar o triplicar los equipos. Imagina que en un quirófano existen tres alimentadores de energía, cada uno con una fiabilidad del 90%. ¿Podrán fallar todos a la vez?

Simularemos Bernouilli con parámetro A igual a 0,1 (probabilidad de fallo) y planificaremos tres columnas, que representarán a los tres equipos, y 1000 filas. ¿Aparecerá un fallo triple? Lo sabremos si aparece una fila con tres unos. Lo hemos intentado y logrado al primer intento:


Los que entendéis la probabilidad habréis comprendido que se  espera un fallo cada mil intentos, porque 0,1*0,1*0,1=0,001

Podéis plantearos otras simulaciones de sucesos cuya probabilidad podáis estimar y comprobar después si la simulación se acerca a las expectativas previas.