# Revision history [back]

### Automate the code for Topological recursion

Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$.

This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/  var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(z1, z2): return 1 / (z1 - z2)^2

def W03(z1, z2, z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical()

def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical()

def W12(z1, z2): var('w12') # use w only locally inside this function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() 

I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows

 var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(0,2,L): return 1/(L[0]-L[1])^2

def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z))

   if g > 0:
E = E + W(g-1,n+,L.append(z,-z))





### Automate the code for Topological recursion

Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$.

This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/ https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/

 var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(z1, z2): return 1 / (z1 - z2)^2

def W03(z1, z2, z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical()

def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical()

def W12(z1, z2): var('w12') # use w only locally inside this function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() 

I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows

 var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(0,2,L): return 1/(L[0]-L[1])^2

def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z))

   if g > 0:
E = E + W(g-1,n+,L.append(z,-z))





### Automate the code for Topological recursion

Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$.

This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/

 var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

2*b^2) def K(z): return 1 / z / (y(z) - y(-z))

y(-z)) def W02(z1, z2): return 1 / (z1 - z2)^2

z2)^2 def W03(z1, z2, z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical()

0).canonicalize_radical() def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical()

0).canonicalize_radical() def W12(z1, z2): var('w12') # use w only locally inside this function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() 

I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows

 

var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(0,2,L): return 1/(L[0]-L[1])^2

def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z))

   if g > 0:
E = E + W(g-1,n+,L.append(z,-z))





### Automate the code for Topological recursion

Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$.

This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/

 var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2) 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z)) def W02(z1, z2): return 1 / (z1 - z2)^2 def W03(z1, z2, z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical() def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical() def W12(z1, z2): var('w12') # use w only locally inside this function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() 

I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows



var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(0,2,L): return 1/(L[0]-L[1])^2

def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z))

   if g > 0:
E = E + W(g-1,n+,L.append(z,-z))





### Automate the code for Topological recursion

Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$.

This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/

 var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z)) y(-z))

def W02(z1, z2): return 1 / (z1 - z2)^2 z2)^2

def W03(z1, z2, z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical() 0).canonicalize_radical()

def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical() 0).canonicalize_radical()

def W12(z1, z2): var('w12') # use w only locally inside this function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() 0).canonicalize_radical()

I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows



var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(0,2,L): return 1/(L[0]-L[1])^2

def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z))

   if g > 0:
E = E + W(g-1,n+,L.append(z,-z))





### Automate the code for Topological recursion

Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$.

This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/

var('b,z1,z2,z3');

def y(z): return 2arcsinh( y(z):

return 2*arcsinh( z / (sqrt(2)b) (sqrt(2)*b) ) / sqrt(z^2 + 2*b^2) def K(z):
2*b^2)


def K(z):

return 1 / z / (y(z) - y(-z))y(-z))


def W02(z1, z2): z2):

return 1 / (z1 - z2)^2z2)^2


def W03(z1, z2, z3): z3):

var('w03')    # use w03 only locally inside this function
E = ( K(w03) / (w03 - z1) \
* ( W02(w03, z2) * W02(-w03, z3) +
W02(w03, z3) * W02(-w03, z2) )
)
return E.residue(w03 == 0).canonicalize_radical() def W11(z1):


def W11(z1):

var('w11')    # use w11 only locally inside this function
E = K(w11) / (w11 - z1) * W02(w11, -w11)


def W12(z1, z2): var('w12') # use w only locally inside this function function

E = ( K(w12) / (w12 - z1) \
* ( W03(w12, -w12, z2)
+ W02( w12, z2) * W11(-w12)
+ W02(-w12, z2) * W11( w12) )
)


I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows

var('b,z1,z2,z3');

def y(z): return 2arcsinh( z / (sqrt(2)b) ) / sqrt(z^2 + 2*b^2)

def K(z): return 1 / z / (y(z) - y(-z))

def W02(0,2,L): return 1/(L[0]-L[1])^2

def W(g,n,L): W(g,n,L):

    var('z,z1')
P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn}
E = 0
for parts in Partition(n+1,2):
for par in SetPartitions(P,2).list():
E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z))
E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z))

if g > 0:
E = E + W(g-1,n+,L.append(z,-z))


 
 
 7 None updated 2022-06-08 02:26:18 +0100 Automate the code for Topological recursion Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$. This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/ var('b,z1,z2,z3'); def y(z): return 2*arcsinh( z / (sqrt(2)*b) ) / sqrt(z^2 + 2*b^2) def K(z): return 1 / z / (y(z) - y(-z)) def W02(z1, z2): return 1 / (z1 - z2)^2 def W03(z1, z2, z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical() def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical() def W12(z1, z2): var('w12') # use w only locally inside this function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows var('b,z1,z2,z3'); def y(z): return 2arcsinh( y(z): return 2*arcsinh( z / (sqrt(2)b) (sqrt(2)*b) ) / sqrt(z^2 + 2*b^2) def K(z): 2*b^2) def K(z): return 1 / z / (y(z) - y(-z)) def W02(0,2,L): return 1/(L[0]-L[1])^2y(-z)) def W02(0,2,L): return 1/(L[0]-L[1])^2 def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z)) if g > 0: E = E + W(g-1,n+,L.append(z,-z)) return (K(z)*E).residue(z == 0).canonicalize_radical() 8 None updated 2022-06-08 03:40:10 +0100 Max Alekseyev 3714 ●3 ●25 ●88 Automate the code for Topological recursion Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$. This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/ var('b,z1,z2,z3'); def y(z): var('b,z1,z2,z3'); def y(z): return 2*arcsinh( z / (sqrt(2)*b) ) / sqrt(z^2 + 2*b^2) def K(z): def K(z): return 1 / z / (y(z) - y(-z)) def W02(z1, z2): z2): return 1 / (z1 - z2)^2 def W03(z1, z2, z3): z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical() def W11(z1): def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical() def W12(z1, z2): var('w12') # use w only locally inside this function function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows var('b,z1,z2,z3'); def y(z): var('b,z1,z2,z3'); def y(z): return 2*arcsinh( z / (sqrt(2)*b) ) / sqrt(z^2 + 2*b^2) def K(z): def K(z): return 1 / z / (y(z) - y(-z)) def W02(0,2,L): def W02(0,2,L): return 1/(L[0]-L[1])^2 def W(g,n,L): def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z)) if g > 0: E = E + W(g-1,n+,L.append(z,-z)) return (K(z)*E).residue(z == 0).canonicalize_radical() 9 None updated 2022-06-11 05:47:36 +0100 Automate the code for Topological recursion Let me start by giving a brief idea of the recursion. This recursion generate bunch of meromorphic function, and the recursion depend on two variables. Let call the variable $g,n$. Let me state the recursion $$W_{g,n}(z_1, \ldots z_n) = Res_{z=0} \left( W_{g-1, n+1} (z,-z,z_2, \ldots ,z_n)\right) + \sum_{g_1 + g_2 = g} \sum_{n_1 +n_2 = n+1} W_{g_1 , n_1}(z, Part1) W_{g_2 , n_2}(-z, Part2)$$ where Part1 and Part2 are disjoint set whose unioun is ${z_2, \ldots , z_n }$ The recursion is on Euler characteristics, so Euler characteristics on the LHS is $2g -2 +n$ and on the RHS notice that for all the tuples $g^{'} , n^{'}$ , $2g^{'} -2 +n^{'}< 2g -2 +n$. This is continuation of the post I made, we have few examples of computation here of the above definition. https://ask.sagemath.org/question/62686/computing-with-the-residue-in-sagemath/ var('b,z1,z2,z3'); def y(z): return 2*arcsinh( z / (sqrt(2)*b) ) / sqrt(z^2 + 2*b^2) def K(z): return 1 / z / (y(z) - y(-z)) def W02(z1, z2): return 1 / (z1 - z2)^2 def W03(z1, z2, z3): var('w03') # use w03 only locally inside this function E = ( K(w03) / (w03 - z1) \ * ( W02(w03, z2) * W02(-w03, z3) + W02(w03, z3) * W02(-w03, z2) ) ) return E.residue(w03 == 0).canonicalize_radical() def W11(z1): var('w11') # use w11 only locally inside this function E = K(w11) / (w11 - z1) * W02(w11, -w11) return E.residue(w11 == 0).canonicalize_radical() def W12(z1, z2): var('w12') # use w only locally inside this function E = ( K(w12) / (w12 - z1) \ * ( W03(w12, -w12, z2) + W02( w12, z2) * W11(-w12) + W02(-w12, z2) * W11( w12) ) ) return E.residue(w12 == 0).canonicalize_radical() I want to automatise the above code, so I wrote a pseudo code, if someone can help me to complete it. My code goes as follows var('b,z1,z2,z3'); def y(z): return 2*arcsinh( z / (sqrt(2)*b) ) / sqrt(z^2 + 2*b^2) def K(z): return 1 / z / (y(z) - y(-z)) def W02(0,2,L): return 1/(L[0]-L[1])^2 def W(g,n,L): var('z,z1') P=list(var('z_%d' % i) for i in range(2,n+1)); # Set of variable for {z2, \ldots zn} E = 0 for parts in Partition(n+1,2): for par in SetPartitions(P,2).list(): E = E + W(g,par[0],par.append(z))W(0,par[1].append(-z)) if g > 0: E = E + W(g-1,n+,L.append(z,-z)) return (K(z)*E).residue(z == 0).canonicalize_radical() 
 
 
 Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license. about | faq | help | privacy policy | terms of service Powered by Askbot version 0.7.59 Please note: Askbot requires javascript to work properly, please enable javascript in your browser, here is how //IE fix to hide the red margin var noscript = document.getElementsByTagName('noscript')[0]; noscript.style.padding = '0px'; noscript.style.backgroundColor = 'transparent'; askbot['urls']['mark_read_message'] = '/s/messages/markread/'; askbot['urls']['get_tags_by_wildcard'] = '/s/get-tags-by-wildcard/'; askbot['urls']['get_tag_list'] = '/s/get-tag-list/'; askbot['urls']['follow_user'] = '/followit/follow/user/{{userId}}/'; askbot['urls']['unfollow_user'] = '/followit/unfollow/user/{{userId}}/'; askbot['urls']['user_signin'] = '/account/signin/'; askbot['urls']['getEditor'] = '/s/get-editor/'; askbot['urls']['apiGetQuestions'] = '/s/api/get_questions/'; askbot['urls']['ask'] = '/questions/ask/'; askbot['urls']['questions'] = '/questions/'; askbot['settings']['groupsEnabled'] = false; askbot['settings']['static_url'] = '/m/'; askbot['settings']['minSearchWordLength'] = 4; askbot['settings']['mathjaxEnabled'] = true; askbot['settings']['sharingSuffixText'] = ''; askbot['settings']['errorPlacement'] = 'after-label'; askbot['data']['maxCommentLength'] = 800; askbot['settings']['editorType'] = 'markdown'; askbot['settings']['commentsEditorType'] = 'rich\u002Dtext'; askbot['messages']['askYourQuestion'] = 'Ask Your Question'; askbot['messages']['acceptOwnAnswer'] = 'accept or unaccept your own answer'; askbot['messages']['followQuestions'] = 'follow questions'; askbot['settings']['allowedUploadFileTypes'] = [ "jpg", "jpeg", "gif", "bmp", "png", "tiff" ]; askbot['data']['haveFlashNotifications'] = true; askbot['data']['activeTab'] = 'questions'; askbot['settings']['csrfCookieName'] = 'asksage_csrf'; askbot['data']['searchUrl'] = ''; /*<![CDATA[*/ $('.mceStatusbar').remove();//a hack to remove the tinyMCE status bar$(document).ready(function(){ // focus input on the search bar endcomment var activeTab = askbot['data']['activeTab']; if (inArray(activeTab, ['users', 'questions', 'tags', 'badges'])) { var searchInput = $('#keywords'); } else if (activeTab === 'ask') { var searchInput =$('#id_title'); } else { var searchInput = undefined; animateHashes(); } var wasScrolled = $('#scroll-mem').val(); if (searchInput && !wasScrolled) { searchInput.focus(); putCursorAtEnd(searchInput); } var haveFullTextSearchTab = inArray(activeTab, ['questions', 'badges', 'ask']); var haveUserProfilePage =$('body').hasClass('user-profile-page'); if ((haveUserProfilePage || haveFullTextSearchTab) && searchInput && searchInput.length) { var search = new FullTextSearch(); askbot['controllers'] = askbot['controllers'] || {}; askbot['controllers']['fullTextSearch'] = search; search.setSearchUrl(askbot['data']['searchUrl']); if (activeTab === 'ask') { search.setAskButtonEnabled(false); } search.decorate(searchInput); } else if (activeTab === 'tags') { var search = new TagSearch(); search.decorate(searchInput); } if (askbot['data']['userIsAdminOrMod']) { $('body').addClass('admin'); } if (askbot['settings']['groupsEnabled']) { askbot['urls']['add_group'] = "/s/add-group/"; var group_dropdown = new GroupDropdown();$('.groups-dropdown').append(group_dropdown.getElement()); } var userRep = $('#userToolsNav .reputation'); if (userRep.length) { var showPermsTrigger = new ShowPermsTrigger(); showPermsTrigger.decorate(userRep); } }); if (askbot['data']['haveFlashNotifications']) {$('#validate_email_alert').click(function(){notify.close(true)}) notify.show(); } var langNav = $('.lang-nav'); if (langNav.length) { var nav = new LangNav(); nav.decorate(langNav); } /*]]>*/ if (typeof MathJax != 'undefined') { MathJax.Hub.Config({ extensions: ["tex2jax.js"], jax: ["input/TeX","output/HTML-CSS"], tex2jax: {inlineMath: [["$","$"],["\$","\$"]]} }); } else { console.log('Could not load MathJax'); } //todo - take this out into .js file$(document).ready(function(){ $('div.revision div[id^=rev-header-]').bind('click', function(){ var revId = this.id.substr(11); toggleRev(revId); }); lanai.highlightSyntax(); }); function toggleRev(id) { var arrow =$("#rev-arrow-" + id); var visible = arrow.attr("src").indexOf("hide") > -1; if (visible) { var image_path = '/m/default/media/images/expander-arrow-show.gif?v=19'; } else { var image_path = '/m/default/media/images/expander-arrow-hide.gif?v=19'; } image_path = image_path + "?v=19"; arrow.attr("src", image_path); \$("#rev-body-" + id).slideToggle("fast"); } for (url_name in askbot['urls']){ askbot['urls'][url_name] = cleanUrl(askbot['urls'][url_name]); } `