new nth_root procedure for power series
This commit is contained in:
parent
29118d0783
commit
49cc75320d
@ -97,7 +97,6 @@ class as_form:
|
||||
RxyzQ, Rxyz, x, y, z = C.fct_field
|
||||
# We need to have only polynomials to use monomial_coefficients in linear_representation_polynomials,
|
||||
# and sometimes basis elements have denominators. Thus we multiply by them.
|
||||
print([denominator(omega.form) for omega in basis])
|
||||
denom = LCM([denominator(omega.form) for omega in basis])
|
||||
basis = [denom*omega for omega in basis]
|
||||
self_with_no_denominator = denom*self
|
||||
@ -194,12 +193,12 @@ def artin_schreier_transform(power_series, prec = 10):
|
||||
power_series = power_series - (coeff*t^(-p*M) - coeff.nth_root(p)*t^(-M))
|
||||
jump = max(-(power_series.valuation()), 0)
|
||||
try:
|
||||
T = ((power_series)^(-1)).nth_root(jump) #T is defined by power_series = 1/T^m
|
||||
T = nth_root2((power_series)^(-1), jump, prec=prec) #T is defined by power_series = 1/T^m
|
||||
except:
|
||||
print("no ", str(jump), "-th root; divide by", power_series.list()[0])
|
||||
return (jump, power_series.list()[0])
|
||||
T_rev = new_reverse(T, prec = prec)
|
||||
t_old = T_rev(t^p/(1 - t^((p-1)*jump)).nth_root(jump))
|
||||
t_old = T_rev(t^p/nth_root2(1 - t^((p-1)*jump), jump, prec=prec))
|
||||
z = 1/t^(jump) + Rt(correction)(t = t_old)
|
||||
return(jump, correction, t_old, z)
|
||||
|
||||
|
@ -27,7 +27,7 @@ def group_action_matrices_dR(AS, threshold=8):
|
||||
ei = n*[0]
|
||||
ei[i] = 1
|
||||
generators += [ei]
|
||||
basis = [AS.holomorphic_differentials_basis(), AS.cohomology_of_structure_sheaf_basis(), AS.de_rham_basis(threshold=threshold)]
|
||||
basis = [AS.holomorphic_differentials_basis(threshold = threshold), AS.cohomology_of_structure_sheaf_basis(threshold = threshold), AS.de_rham_basis(threshold=threshold)]
|
||||
return group_action_matrices(basis[2], generators, basis = basis)
|
||||
|
||||
def group_action_matrices_old(C_AS):
|
||||
|
@ -9,4 +9,4 @@ Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
f1 = superelliptic_function(C_super, x^7)
|
||||
f2 = superelliptic_function(C_super, x^4)
|
||||
AS = as_cover(C_super, [f1, f2], prec=1000)
|
||||
print(AS.unifomizer().valuation() == 1)
|
||||
print(AS.uniformizer().valuation() == 1)
|
@ -16,4 +16,16 @@ def naive_hensel(fct, F, start = 1, prec=10):
|
||||
while(i < prec):
|
||||
w0 = w0 - fct(W = w0)/alpha + O(t^(prec))
|
||||
i += 1
|
||||
return w0
|
||||
return w0
|
||||
|
||||
def nth_root2(fct, n, prec=10):
|
||||
'''Given power series in F((t)), find its n-th root up to precision prec.'''
|
||||
F= parent(fct).base_ring()
|
||||
Rt.<t> = LaurentSeriesRing(F, default_prec=prec)
|
||||
RW.<W> = PolynomialRing(Rt)
|
||||
v = fct.valuation()
|
||||
fct1 = Rt(fct*t^(-v))
|
||||
a0 = fct1[0]
|
||||
if v%n != 0:
|
||||
raise ValueError('The valuation of the power series is not divisible by n.')
|
||||
return t^(v//n)*naive_hensel(W^n - fct1, F, start = a0.nth_root(n), prec=prec)
|
@ -1,18 +1,15 @@
|
||||
def reduction(g):
|
||||
F = g.parent().base()
|
||||
x, y = g.parent().gens()
|
||||
Rxy.<x, y> = PolynomialRing(F, 2)
|
||||
Fxy = FractionField(Rxy)
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
Fx = FractionField(Rx)
|
||||
FxRy.<y> = PolynomialRing(Fx)
|
||||
g = Fxy(g)
|
||||
g1 = g.numerator()
|
||||
g2 = g.denominator()
|
||||
print('aa', FxRy(g2))
|
||||
|
||||
|
||||
F = GF(3).algebraic_closure()
|
||||
R.<x, y> = PolynomialRing(F, 2)
|
||||
g = x
|
||||
reduction(g)
|
||||
p = 5
|
||||
#F.<a> = GF(p^2, 'a')
|
||||
F.<a> = GF(p^8, 'a')
|
||||
#F = GF(p).algebraic_closure()
|
||||
#a = F.gen(2)
|
||||
Rx.<x> = PolynomialRing(F)
|
||||
P1 = superelliptic(x, 1)
|
||||
m = 4
|
||||
s = (p^8 - 1)/(p^2 - 1)
|
||||
b = a^s
|
||||
C = as_cover(P1, [(P1.x)^(m), b*(P1.x)^(m)], prec=300)
|
||||
print(C)
|
||||
A, B = group_action_matrices_dR(C)
|
||||
print('matrices')
|
||||
print(magma_module_decomposition(A, B, matrices=False))
|
20
tests.sage
20
tests.sage
@ -1,16 +1,16 @@
|
||||
#load('init.sage')
|
||||
print("Expansion at infty test:")
|
||||
load('superelliptic/tests/expansion_at_infty.sage')
|
||||
print("superelliptic form coordinates test:")
|
||||
load('superelliptic/tests/form_coordinates_test.sage')
|
||||
print("p-th root test:")
|
||||
load('superelliptic/tests/pth_root_test.sage')
|
||||
#print("Expansion at infty test:")
|
||||
#load('superelliptic/tests/expansion_at_infty.sage')
|
||||
#print("superelliptic form coordinates test:")
|
||||
#load('superelliptic/tests/form_coordinates_test.sage')
|
||||
#print("p-th root test:")
|
||||
#load('superelliptic/tests/pth_root_test.sage')
|
||||
#print("not working! superelliptic p rank test:")
|
||||
#load('superelliptic/tests/p_rank_test.sage')
|
||||
print("a-number test:")
|
||||
load('superelliptic/tests/a_number_test.sage')
|
||||
#print("as_cover_test:")
|
||||
#load('as_covers/tests/as_cover_test.sage')
|
||||
#print("a-number test:")
|
||||
#load('superelliptic/tests/a_number_test.sage')
|
||||
print("as_cover_test:")
|
||||
load('as_covers/tests/as_cover_test.sage')
|
||||
print("group_action_matrices_test:")
|
||||
load('as_covers/tests/group_action_matrices_test.sage')
|
||||
print("dual_element_test:")
|
||||
|
Loading…
Reference in New Issue
Block a user