-
Notifications
You must be signed in to change notification settings - Fork 0
/
GraficoValorMaximo.py
57 lines (48 loc) · 1.76 KB
/
GraficoValorMaximo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from NumerosSerie import NumerosConjetura
def InputDefecto(texto,valorPorDefecto):
"solo funciona con valores enteros las respuestas son mayores o menores a 1"
valor=input(texto)
try:valor=abs(int(valor))
except: valor=valorPorDefecto
if valor==0:valor=1
return(valor)
print(" Valores maximos en la serie de collatz")
print(" los valores en parantesis son por defecto\n")
minimo=InputDefecto(" Numero minimo (def 1) : ",1)
maximo=InputDefecto(" Numero maximo (def 2000) :",2000)
intervalo=InputDefecto(" Intervalo (def 1) : ",1)
print("\nCalculando los valores, espere....")
#analizandp variables maximas y minimas
if maximo<minimo:
variableayuda=minimo
minimo=maximo
maximo=variableayuda
MaximoNumerosAnalizados=5000 #<-- Mandar anuncios cada x nros
contadorNumeros=0
#generando lista de numeros analizados
listaDeValoresX=[] #numeros
listaDeValoresY=[] #valor max serie collatz
cicloValoresDeEntrada=True
numeroCiclo=minimo
while cicloValoresDeEntrada:
valorY=NumerosConjetura(numeroCiclo)[2]
valorX=numeroCiclo
listaDeValoresX.append(valorX)
listaDeValoresY.append(valorY)
numeroCiclo+=intervalo
if numeroCiclo>maximo:
cicloValoresDeEntrada=False
contadorNumeros=contadorNumeros+1
if contadorNumeros>MaximoNumerosAnalizados:
contadorNumeros=0
print(" al "+str(round(100-(maximo-numeroCiclo)/(maximo-minimo)*100,3))+"%")
#--- GRAFICANDO-----------------------------------
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.scatter(listaDeValoresX,listaDeValoresY)
plt.title("Número Máximo Serie collatz "+str(minimo)+" - "+str(maximo))
plt.xlabel("Números analizados")
plt.ylabel("Valor máximo serie Collatz")
plt.show()