jueves, 29 de noviembre de 2018

Suma de cuadrados de cifras (2) Un cuadrado menos los de sus cifras

Podíamos sustituir en la propiedad estudiada en la entrada anterior (pulsa sobre Entrada antigua en la parte baja de este texto)  la suma por la diferencia, es decir, que en lugar de sumar al cuadrado de un número los de sus cifras, se restaran estas para lograr un resultado dado.

Un ejemplo: 2675=522-52-22

Es fácil obtener un listado de los primeros números que presentan esta propiedad. Basta recorrer los números naturales y restar a cada uno los cuadrados de sus cifras. Estos son los primeros resultados no nulos (lo serían los provenientes de números de una cifra):

99, 119, 139, 159, 179, 199, 219, 239, 259, 279, 396, 436, 476, 516, 556, 596, 636, 676, 716, 756, 891, 951, 1011, 1071, 1131, 1191, 1251, 1311, 1371, 1431, 1584, 1664, 1744,…

Todos cumplen ser equivalentes a un cuadrado menos los cuadrados de sus cifras. Por ejemplo, el último, 1744, cumple: 1744=422-42-22

Llama la atención el hecho de que la última cifra se mantenga en cada periodo de diez términos, pero es lógico, ya que al ir cambiando las unidades de un número, las de su cuadrado se compensan con el cuadrado de esas unidades.

Supongamos la siguiente distribución de cifras en base de numeración 10:

N=abcd…p y N+1=abcd…(p+1)

Tendrían todas su cifras iguales menos la última, es decir

N=10k+p, N+1=10k+p+1

Si aplicamos a ambos números la resta de los cuadrados de sus cifras, los primeros sumados serán idénticos, cambiando tan solo p con p+1. Llamemos A y B a esas diferencias:

A=N2-sumacuad(abcd..)-p2

B=(N+1)2-sumacuad(abcd…)-(p+1)2

Resto: B-A=(N+1)2-N2+p2-(p+1)2=100k2+(p+1)2+20k(p+1)-100k2-p2-20kp+p2-(p+1)2=20k

Esto demuestra que dos números consecutivos restados con los cuadrados de sus cifras forman una progresión aritmética si todas las cifras son idénticas salvo la última. Como esta puede tomar valores entre 0 y 9, cada progresión tendrá 10 términos. Además, hemos demostrado que la diferencia entre ambos es 20k, siendo k el número formado por las primeras cifras iguales.

C-p+1)2+p2=(p+1)2-p2+20k-(p+1)2+p2=20k

Si dos números consecutivos coinciden en sus primeras cifras, que forman un múltiplo de 10, 10k, la diferencia en la sucesión es 20k

Tomemos, por ejemplo, 124 y 125

1242-12-22-42=15355
1252-12-22-52=15595

La diferencia 15595-15355=240, que coincide con 20*12, en el que 12 es el número formado por las primeras cifras de 124 y 125.

Función menossumacifras

Para determinar si un número posee esta propiedad, bastará modificar la función MASSUMACIF  (ver entrada anterior) por otra MENOSSUMACIF que reste los cuadrados de las cifras en lugar de sumarlas. El problema radica en el rango de búsqueda. Si en la anterior se buscaba entre 1 y la raíz cuadrada del número, ahora se efectuará entre esa raíz y otra que garantice que se puedan restar los cuadrados de las cifras. Para ello añadimos al número dado tantas potencias de la cifra 9 como cifras tenga más uno. Quedaría así:

Function menossumacif(n, k)
Dim i, r, t, ms

ms = 0
r = Int(n ^ (1 / k))
t = numcifras(n) + 1 ‘Se toma el número de cifras más 1
t = t * 9 ^ k ‘Se cuentan potencias de 9
t = (n + t) ^ (1 / k) ‘Tope de búsqueda
i = r ‘Inicio de búsqueda
While i <= t And ms = 0
If i ^ k - sumacifras(i, k) = n Then ms = i
i = i + 1
Wend
menossumacif = ms
End Function

Si aplicamos esta función a uno de los términos de la sucesión obtenida deberá obtenerse la solución y un cero para los números que no pertenecen a la misma.

MENOSSUMACIF(11799;2)=109, y se cumple que 1092-12-02-92=11799

MENOSSUMACIF(11801)=0, porque no tiene esa propiedad.

Uso de PARI

Este es el listado obtenido con el lenguaje PARI. El código usado es similar al de la entrada anterior con el código

list(a)=my(v=List(), t); for(p=1, a, t=p^2-norml2(digits(p));listput(v, t)); vecsort(Vec(v));
print(list(100))


0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 119, 139, 159, 179, 199, 219, 239, 259, 279, 396, 436, 476, 516, 556, 596, 636, 676, 716, 756, 891, 951, 1011, 1071, 1131, 1191, 1251, 1311, 1371, 1431, 1584, 1664, 1744, 1824, 1904, 1984, 2064, 2144, 2224, 2304, 2475, 2575, 2675, 2775, 2875, 2975, 3075, 3175, 3275, 3375, 3564, 3684, 3804, 3924, 4044, 4164, 4284, 4404, 4524, 4644, 4851, 4991, 5131, 5271, 5411, 5551, 5691, 5831, 5971, 6111, 6336, 6496, 6656, 6816, 6976, 7136, 7296, 7456, 7616, 7776, 8019, 8199, 8379, 8559, 8739, 8919, 9099, 9279, 9459, 9639, 9999

Se puede observar la constancia de la última cifra en ciertos conjuntos de diez elementos.


lunes, 19 de noviembre de 2018

Suma de cuadrados de cifras (1) - Un cuadrado más los de sus cifras

Esta entrada inicia una serie que iremos publicando a lo largo del curso 2018-19 sobre las suma de los  cuadrados de las cifras de un número natural. El tema de las cifras, al depender de la base de numeración, no es el preferido en este blog, pero como sus resultados suelen ser atractivos y muy apreciados por los seguidores, lo tocamos con cierta frecuencia.

La serie desarrollará tres tipos de propiedades o curiosidades

  • Igualdades entre números que implican el cuadrado de las cifras.
  • Propiedades y curiosidades clásicas, ya estudiadas, como los números felices.
  • Iteraciones con recurrencias en las que interviene la suma citada.


Abordamos la primera cuestión:

En el mes de diciembre de 2017, a propósito de la fecha 9/12/17, publiqué en Twitter (Antonio Roldán, @Connumeros) la siguiente curiosidad: 91217 equivale al cuadrado de un número sumado con los cuadrados de sus cifras:

91217=302^2+3^2+0^2+2^2

Como siempre en estas ocasiones, esto me motivó a estudiar mejor la suma de los cuadrados de las cifras de un número, pero, al investigar lo ya publicado, me di cuenta de que esta suma bien merecía lo que en este blog llamo “unas vueltas”, pues son varias las cuestiones interesantes que surgen de la misma. Nos llevará varias  entradas, constituyendo una serie, porque he visto que dicha suma da para muchas cuestiones distintas. Es probable que al final del curso 2018-19 se recojan en una publicación.

Comenzaremos con la propiedad que publiqué en Twitter: ¿qué números son equivalentes al cuadrado de otro, sumado con los cuadrados de sus cifras? Para ello necesitaré una función que calcule esa suma. Ya tengo una en Basic de hoja de cálculo que está diseñada no sólo para los cuadrados, sino para cualquier potencia. La puedes usar en Excel o en LibreOffice Calc, por ejemplo. Es la siguiente:

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

h = n ‘Variable auxiliar
s = 0 ‘Recibirá la suma
While h > 9
i = Int(h / 10)
m = h - i * 10
h = i ‘Estas tres líneas extraen una cifra del número
s = s + m ^ k ‘La potencia se incorpora a la suma
Wend
s = s + h ^ k
sumacifras = s
End Function

Es evidente que en nuestro caso el valor de k siempre será 2, ya que usaremos cuadrados. Puedes eliminar la variable k y sustituirla por 2. Aquí no lo haremos por no perder generalidad en esta función.

En el caso de k=2, la función tiene en el lenguaje PARI una traducción muy simple. Basta pedir

norml2(digits(n))

Listado de números con la propiedad pedida

Una vez tenemos la función que suma los cuadrados de las cifras de n bastará sumar el número con esa suma, es decir

 n+sumacifras(n;2)

Con ello podemos construir un listado:



Por ejemplo, 162=9^2+9^2, 179=13^2+1^2+3^2, 293=16^2+1^2+6^2,…

Salen desordenados, por lo que hay que acudir a http://oeis.org/A209303, página de OEIS en la que se publican ordenados:  2, 8, 18, 32, 50, 72, 98, 101, 123, 128, 149, 162, 179, 213, 251, 293, 339, 389, 404, 443, 446,…Podemos conseguir que se nos presenten ordenados (En Excel basta con el comando de ordenar) con el lenguaje PARI:

list(a)=my(v=List(), t); for(p=1, a, t=p^2+norml2(digits(p));listput(v, t)); vecsort(Vec(v)); 
print(list(20))


Como era de esperar, este listado sólo incluye números no muy grandes. En el caso de 91217 no hubiéramos descubierto la propiedad consultándolo. Necesitamos una función que nos indique de forma directa si un número posee esta propiedad o no, si es la suma de otro número más los cuadrados de sus cifras.

Función MASSUMACIF

Con la base de la función sumacifras podemos recorrer, para un número N, desde 1 hasta la raíz k-ésima de N, todos los números posibles, hasta ver si uno cumple la propiedad:

Function massumacif(n, k)
Dim i, r, ms

ms = 0
r = Int(n ^ (1 / k))
i = 1
While i <= r And ms = 0
If i ^ k + sumacifras(i, k) = n Then ms = i
i = i + 1
Wend
massumacif = ms
End Function

Esta función devolverá un cero si no posee la propiedad, y la base del cuadrado si la cumple.  Con ella volvemos al inicio de la cuestión. Si la aplicamos al 91217, con el segundo parámetro igual a 2 (cuadrados) nos devuelve 302.

massumacif(91217;2)=302

Es muy simple la versión de esta función en el lenguaje PARI. El siguiente código produce el mismo listado, idéntico al que se consiguió ordenando la sucesión primitiva.

for(i=1,1000,ms=0;r=sqrt(i);j=1;while(j<=r&&ms==0,if(j^2+norml2(digits(j))==i,ms=j;print1(i,", "));j+=1))




Tipos de números

No hemos encontrado cuadrados ni números triangulares en esta sucesión, al menos menores que 70000. Sí figuran primos. Los primeros son:
2, 101, 149, 179, 251, 293, 389, 443, 971, 1181, 1259, 1427, 2843, 2957, 3323, 5237, 5387,…

Sólo hemos identificado tres potencias no cuadrados, 2, 32 y 128, que corresponden a potencias de 2 de una sola cifra, 2, 4 y 8.

Como curiosidad última, sí existen capicúas en la sucesión. Los primeros son 101, 404, 909, 10001, 29292, 40004,…

Los que poseen cifra 0 se justifican fácilmente, como 404, que coincide  con 20^2+2^2+0^2. Más difícil es 29292, que sin ordenador hubiera sido difícil obtener que

29292=171^2+1^2+7^2+1^2

Variantes de esta operación

En la suma del cuadrado de un número con la suma de cuadrados de sus cifras podíamos eliminar el que el número se eleve al cuadrado. Simplemente le sumamos el cuadrado de sus cifras. En A258881 tienes publicadas de forma desordenada esas sumas:

0, 2, 6, 12, 20, 30, 42, 56, 72, 90, 11, 13, 17, 23, 31, 41, 53, 67, 83, 101, 24, 26, 30, 36, 44, 54, 66, 80, 96, 114, 39, 41, 45, 51, 59, 69, 81, 95, 111, 129, 56, 58, 62, 68, 76, 86, 98, 112, 128, 146, 75, 77, 81, 87, 95, 105, 117, 131, 147, 165, 96,…

Te invitamos a que uses la función MASSUMACIF, debidamente corregida (basta sustituir  i^2 por i y eliminar la variable r, siendo sustituida por i) para obtener un listado ordenado en Excel:

2
6
11
12
13
17
20
23
24
26
30
31
36

El listado de MASSUMACIF0 puede ser

Function massumacif0(n, k)
Dim i, r, ms

ms = 0
i = 1
While i <= n ‘Se suprime la raíz de n
If i + sumacifras(i, k) = n Then ms = ms + 1 ‘Se acumula la variable ms
i = i + 1
Wend
massumacif0 = ms ‘El resultado es el número de repeticiones
End Function

En PARI podemos efectuar una corrección similar y resultará

for(i=1,100,ms=0;j=1;while(j<=i&&ms==0,if(j+norml2(digits(j))==i,ms=j;print1(i,", "));j+=1))

Su resultado coincide con el de Excel:


Números con soluciones múltiples

En http://oeis.org/A225049 están publicados los números de la anterior sucesión que presentan varias soluciones:

30, 41, 56, 81, 95, 96, 98, 101, 112, 114, 121, 125, 131, 142, 146, 152, 157, 168, 173, 177, 182, 186, 191, 196, 197, 199, 206, 209, 213, 215, 216, 217, 227, 230, 232, 234, 240, 243, 245, 247, 248, 257, 260, 262, 266, 272, 276, 284, 285, 287, 292, 299, 300

Por ejemplo 131 = 57+5^2+7^2 = 73+7^2+3^2 = 105+1^2+5^2 = 122 + 1^2+4^2+4^2.

Con el uso de massumacif0(i), si exigimos que su valor sea mayor que 1, obtenemos el mismo listado:

30
41
56
81
95
96
98
101

jueves, 8 de noviembre de 2018

Simulaciones - Distribución uniforme (2/2)


Otros ejemplos de distribución uniforme

El seis triple

En muchos juegos de mesa, sacar un 6 tres veces seguidas es un acontecimiento importante. Según la teoría, la probabilidad de que esto ocurra es de 1/(6*6*6)=1/216. Podemos esperar que de cada 216 tiradas triples que efectuemos, una de ellas presente 6-6-6. Podíamos simularlo para ver qué ocurre.

Para ello concretamos el Simulador:

 Distribución uniforme entera (es decir, discreta).
 Mínimo 1 y máximo 6
 200 filas y 3 columnas (las filas son opcionales. Podrían ser 216 o el doble)
 Criterio Máximo-mínimo


Así, a simple vista percibiremos bien si resulta un 6 triple.

Nosotros hemos efectuado dos simulaciones sin obtener el seis triple, que sólo ha aparecido en el tercer intento:


¿Por qué, entonces, creemos que es más fácil conseguirlo? Todo el que ha jugado recuerda haber enlazado tres 6 seguidos. Ocurre que recordamos mejor las jugadas favorables, y no las desfavorables, como cuando en el juego de la Oca nos toca la cárcel o la muerte, o las veces que necesitamos un cinco para salir en el parchís y no nos sale en muchas jugadas.

La lotería primitiva

En esta lotería española pueden salir los números del 1 al 49, y los apostadores eligen entre varios tipos de apuestas. Se puede tratar como distribución uniforme porque todos los resultados presentan la misma probabilidad (1/13983816), aunque tenemos que acudir a un muestro sin reemplazamiento, que refleja mejor el proceso. En el sorteo aparecerán seis números y se gana más o menos dinero según las coincidencias entre nuestra apuesta y el resultado del sorteo. Suponemos la apuesta más sencilla, compuesta de seis números.



Nuestro objetivo es el de comprobar la dificultad de acertar varios resultados, que suelen tenerse en cuenta entre tres o seis aciertos, cambiando la cuantía del premio según el número de aciertos.

Abrimos el Simulador.

Le concretamos los siguientes datos:



 Máximo y mínimo, de 1 a 49, que son los números del sorteo
 Distribución Muestreo sin y con enteros
 Seis filas y una columna, para simular bien el sorteo
 Criterios Máximo-Mínimo

Es importante que actives exactamente lo que se ha sugerido. Al pulsar el botón Simulación aparecerán seis números distintos del 1 al 49. Si no lo logras, repasa bien todos los criterios necesarios.

Para hacer ver la dificultad de acertar, hemos adjuntado nuestra apuesta a la izquierda de la simulación:


Ahora se trata de usar reiteradamente el botón de simulación y comprobar cuántos números hemos acertado. Nosotros hemos estado un buen rato jugando a simular y siempre hemos obtenido menos de tres aciertos. Valga esta experiencia para enseñarnos a jugar con prudencia.

Uso de la distribución uniforme para probabilidades dadas por una tabla

Con el Simulador y el uso de la distribución uniforme continua (con decimales) se pueden simular probabilidades dadas por una tabla. Por ejemplo, supongamos que disponemos de tres bolas rojas, dos verdes y dos amarillas para efectuar experimentos aleatorios. Lo normal sería introducirlas en una bolsa e ir sacando una a una con reposición. Esto, en las aulas, podría ser divertido y algo caótico.

Una alternativa es simularlo con ordenador.

Partimos de la tabla de probabilidades

Roja         3/7
Verde      2/7
Amarilla  2/7

En primer lugar, la cambiamos a probabilidades acumuladas, es decir, que cada una sea la actual más todas las anteriores. Así:

Roja         3/7
Verde      5/7
Amarilla  7/7

Esto es para organizar unas desigualdades más adelante.

El proceso es como sigue:

En el simulador organizamos una distribución uniforme con decimales, mínimo 0 y máximo 1 (los 7/7). Como criterio le damos que use el Máximo y mínimo, y fijamos, por ejemplo, 100 filas y una columna. En el parámetro A se ha escrito 3/7 y en el B 5/7 (esto no es obligatorio).

Copiamos la imagen de la hoja:



Si iniciamos la simulación obtendremos una columna con 100 números entre 0 y 1 expresados con decimales:



Estos números (y esto no lo consigue la herramienta) debemos convertirlos en Rojo, Verde y Amarillo. Para eso añadimos una fórmula a la derecha de cada número, de forma que si este no llega a 3/7 (que hemos escrito en la celda E21) , es que se trata de la Roja, y en caso contrario, si tampoco llega a 5/7 (probabilidad acumulada escrita en E22), se trata de la Verde, y si no, es Amarilla.

La primera vez que se organiza esto resulta complicado, pero hay que insistir y buscar otros ejemplos. Esta fórmula, en nuestro caso, es:

=SI(G5<E$21;"Roja";SI(G5<E$22;"Verde";"Amarilla"))

(hemos copiado la de G5)

En ella se ve claramente el mecanismo: Si el número contenido en G5 es menor que el parámetro A (3/7), se trata de Roja. Si no es Verde o Amarilla según quede menor o mayor que el otro parámetro. El resultado lo tienes en la imagen:


Los números que no llegan a 3/7 producen una roja, los siguientes hasta 5/7 la verde y el resto amarilla. Para ver si la simulación es razonable hemos contado los colores, resultando 38 rojas, 23 verdes y 29 amarillas. A la derecha ves la comparación con la teoría: las amarillas han resultado muy aproximadas y las otras con errores de centésimas, luego aceptamos el procedimiento.

Media y desviación típica

En teoría (no en una simulación concreta), si la distribución uniforme es continua entre los extremos a y b, su media es (a+b)/2 y su varianza (b-a)^2/12. Con el simulador podríamos aproximarnos a esos valores. Construimos un ejemplo:

Estimar la media y desviación típica de una distribución uniforme generada entre los extremos 10 y 20

Concretaremos distribución uniforme con decimales, extremos 10 y 20, y para obtener una buena aproximación, usaremos 100 repeticiones del experimento, con una sola columna y 20 filas (todo esto ha sido opcional. Puedes cambiarlo)


En este caso también concretaremos la opción de usar máximo y mínimo y fijaremos los intervalos en 10:

De esta forma generaremos 2000 datos uniformes entre 10 y 20. Su media debería ser (10+20)/2=15 y su varianza (20-10)^2/12=8,33. La desviación típica esperada será la raíz cuadrada de esta cantidad, 2,88.

Iniciamos la simulación y obtenemos:


Ha resultado bastante aproximado: media 14,96 y desviación típica 2,9008. En el gráfico se percibe bastante bien la uniformidad:


Es buena práctica, en cursos elementales de Estadística, construir estas simulaciones, porque ayudan a fijar conceptos.