1 | initial version |
For the above rational function f
and for the integration on curves that could without doubt detect if a pole is enclosed the following alternative solution worked for me:
var( 'z0,z1,t0,t1,t' );
assume( 0 < t < 1 );
E = (z0*z1 - 1) * (z0 - z1) / ( (t*z0 - 1)*(t*z1 - 1)*(t - z0)*(t - z1)*z0 )
assume( 0<t<1 )
DEN = E.denominator()
E0 = sum( [ E.residue( z0==pole ) for pole, mult in DEN.roots( z0 ) if abs(pole) < 1 and mult==1 ] )
E1 = sum( [ E.residue( z1==pole ) for pole, mult in DEN.roots( z1 ) if abs(pole) < 1 and mult==1 ] )
DEN0 = E0.denominator()
DEN1 = E1.denominator()
E01 = sum( [ E0.residue( z1==pole ) for pole, mult in DEN0.roots( z1 ) if abs(pole) < 1 ] )
E10 = sum( [ E1.residue( z0==pole ) for pole, mult in DEN1.roots( z0 ) if abs(pole) < 1 ] )
print "E = %s\n" % E
print "E0 = %s" % E0.factor()
print "E01 = %s\n" % E01
print "E1 = %s" % E1.factor()
print "E10 = %s\n" % E10
(One really needs a machine provable True in abs(pole) < 1. This may fail in more complicated cases to be correctly recognized.) Results printed:
E = (z0*z1 - 1)*(z0 - z1)/((t*z0 - 1)*(t*z1 - 1)*(t - z0)*(t - z1)*z0)
E0 = -(2*t*z1 - z1^2 - 1)/((t*z1 - 1)*(t - z1)*(t + 1)*(t - 1))
E01 = 1/(t^2 - 1)
E1 = 1/((t + 1)*(t - 1)*z0)
E10 = 1/(t^2 - 1)
The Residue Theorem is now only needed to conclude.
Unfortunately, i could not convince sage to correctly compute the integrals:
f = (z0*z1 - 1) * (z0 - z1) / ( (t*z0 - 1)*(t*z1 - 1)*(t - z0)*(t - z1)*z0 )
g = f.subs( { z0: exp( i*t0 ) ,
z1: exp( i*t1 ) } )
I10 = g . integrate( t1, 0, 2*pi ) . integrate( t0, 0, 2*pi ) . factor()
I01 = g . integrate( t0, 0, 2*pi ) . integrate( t1, 0, 2*pi ) . factor()
print "I10 is", I10
print "I01 is", I01
Here we get at least in both cases the same false result:
sage: version()
'SageMath version 7.6, Release Date: 2017-03-25'
I10 is -4*pi^2/t^2
I01 is -4*pi^2/t^2