that's what i need to find where the error is (. Make a scatter plot of Nsteps versus starting number. You should adjust your marker symbol and size such that you can discern patterns in the data, rather than just seeing a solid mass of points.)
*** basically this is my code:***
#in[]
import numpy as np
import matplotlib.pyplot as plt
def collatz(N):
iteration=0
listNumbers=[N]
while N != 1:
iteration += 1
if (N%2) == 0:
N = N/2
else:
N= (N*3) + 1
print(i,'number of interactions',iteration)
print(listNumbers)
return iteration
N= int(input(' enter a number:'))
iteration=collatz(N)
#out[]
enter a number:7
10000 number of interactions 16
[7]
#in[]
s=np.array([])
for i in range(1,10001,1):
K=collatz(i)
s=np.append(s,K)
print(s)
#out (too big to paste here but i put the first 10 lines)
1 number of interactions 0
[1]
2 number of interactions 1
[2]
3 number of interactions 7
[3]
4 number of interactions 2
[4]
5 number of interactions 5
[5]
6 number of interactions 8
[6]
7 number of interactions 16
[7]
8 number of interactions 3
[8]
9 number of interactions 19
[9]
10 number of interactions 6
[10]
#in[]
plt.figure()
plt.scatter(range(1,100001,1),s) #gives me the x and y must be the same size error here plt.xlabel('number of interations')
plt.ylabel('numbes')
plt.ylim(0,355)
plt.xlim(0,100000)
plt.show()
#Make a scatter plot of Nsteps versus starting number. You should adjust your marker symbol
and size such that you can discern patterns in the data, rather than just seeing a solid mass of
points.
Try:
plt.scatter(np.arange(s.size), s)
This will set the range of x values depending on the actual size of your array.