User talk:Contribution: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
Contribution (talk | contribs)
Contribution (talk | contribs)
Line 104: Line 104:
  table=[]
  table=[]
  for y in range(0,len(y_axis)):
  for y in range(0,len(y_axis)):
     line=[]
     row=[]
     for x in range(0,len(x_axis)):
     for x in range(0,len(x_axis)):
         monzo=[]
         monzo=[]
Line 110: Line 110:
             # combine the abscissa monzo and the ordinate monzo
             # combine the abscissa monzo and the ordinate monzo
             monzo.append(x_axis[x][a]+y_axis[y][a])
             monzo.append(x_axis[x][a]+y_axis[y][a])
         line.append(monzo)
         row.append(monzo)
     table.append(line)
     table.append(row)
   
   
  ##### SHOW RESULT #####
  ##### SHOW RESULT #####

Revision as of 19:13, 15 May 2020

When I suggested to switch to JavaScript

on Talk:31-limit, I did not primarily think on doing it right within the Wiki. I even think that user-specific JS isn't enabled here ...
Is there any place where this could be tried out first without fighting against wiki limitations of some sort?
Best regards --Xenwolf (talk) 15:06, 13 May 2020 (UTC)

Hello, I have a Wordpress website under construction but I don't know JavaScript. Best regards.

I see, I am also a newcomer in this respect, but it seems to be the current hottest language. If I get an idea what your point is, I could try to implemenent it somewhere. As I understand it so far, there is a big 1 in the middle and then a Cartesian coordinate system around it with prime factors not exceeding 31 above or below the fraction line, right? --Xenwolf (talk) 18:45, 14 May 2020 (UTC)


Yes, the rules are :


1) 1/1 is the center of symmetry between reciprocals.

2) The positive abscissa is the Pythagorean scale. The negative abscissa is deducted by rule 1.

3) The positive ordinate is the 5-31 quasi-primes scale, presented as follow:

a ; a*a ;

b ; a*b ; a-1*b ; b*b ;

c ; a*c ; a-1*c ; b*c ; b-1*c ; c*c ;

d ; a*d ; a-1*d ; b*d ; b-1*d ; c*d ; c-1*d ; d*d ; etc...

The negative ordinate is deducted by rule 1.

4) 5-limit allows also a*a*a and its symmetrical reciprocal


Below is a piece of Python code doing it (better solutions may be possible):

primes=[2,3,5,7,11,13,17,19,23,29,31]
   
# reciprocal of a given monzo
def reciprocal(monzo):
   for p in range(0,len(monzo)):
       monzo[p]*=-1
   return(monzo)
   
# ABSCISSA MONZOS LIST
x_axis=[]
for a in range(0,26+1):
   # pythagorean interval 
   monzo=[0]*len(primes)
   monzo[1]+=a
   
   # insert it at the end of the list  
   x_axis.append(monzo)
   
   # insert its reciprocal at the beginning of the list, so that 1/1 is the center of symmetry between reciprocals
   x_axis.insert(0,reciprocal(monzo.copy()))
   
# ORDINATE MONZOS LIST
y_axis=[]
   
# insert 1/1
monzo=[0]*len(primes)
y_axis.insert(0,monzo)
   
# first prime
for a in range(2,len(primes)):   
   # pure harmonic series
   monzo=[0]*len(primes)
   monzo[a]+=1
   
   # insert the pure harmonic at the beginning of the list
   y_axis.insert(0,monzo) 
   
   # insert its subharmonic version at the end of the list, so that 1/1 is the center of symmetry between reciprocals
   y_axis.append(reciprocal(monzo.copy()))    
   
   # second prime   
   for b in range(2,a+1):
       
       # combine the pure harmonic with another prime, both by putting it in the numerator or in the denominator
       for c in range(1,-1-1,-2):
           monzo=[0]*len(primes)
           monzo[a]+=1
           
           # when c=1, the second prime is put in the numerator ; when c=-1, the second prime is put in the denominator
           monzo[b]+=c
           
           # before inserting, eliminate the cases where the first and the second prime are reciprocal
           if(monzo!=[0]*len(primes)):
               
               # insert the combination at the beginning 
               y_axis.insert(0,monzo)
               
               # insert its reciprocal at the end, so that 1/1 is the center of symmetry between reciprocals
               y_axis.append(reciprocal(monzo.copy()))
               
               # insert 125/64 exception and its reciprocal
               if(monzo==[0,0,2,0,0,0,0,0,0,0,0]):
                   monzo[2]+=1
                   y_axis.insert(0,monzo)
                   y_axis.append(reciprocal(monzo.copy()))

# CARTESIAN COORDINATE PLANE OF MONZOS
table=[]
for y in range(0,len(y_axis)):
   row=[]
   for x in range(0,len(x_axis)):
       monzo=[]
       for a in range(0,len(primes)):
           # combine the abscissa monzo and the ordinate monzo
           monzo.append(x_axis[x][a]+y_axis[y][a])
       row.append(monzo)
   table.append(row)

##### SHOW RESULT #####
print(table)

Would be curious to see your implementation :)