def algdepanalytic(F,D=4,check=False,K=None): """ sage code for algebraic dependendecy of numerical data Author: Georgi Guninski, gguninski@gmail.com, guninski@guninski.com Version: 2.0, Mon 06 Feb 2023 Project page: https://j.ludost.net/code Given a list F of numeric lists F_{i,1},F_{i,2},...F_{i,k} Finds a list of polynomials G_i, such that G_i(F_j)=0 Examples: FI=[fibonacci(2*i),fibonacci(2*i+1)] def FI(n): return fibonacci(n) F=[ [ZZ(fibonacci(2*i)),fibonacci(2*i+1)] for i in range(2,50)] ag=algdepanalytic(F,D=2,check=1);ag [x0^2 + x0*x1 - x1^2 + 1] The X coordinate of an Elliptic Curve over finite field: F=[ X(n*P),X((n+1)*P)] p=next_prime(10**3);K=GF(p) E=EllipticCurve(GF(p),[0,2]);P=E.gens()[0] def X_n(P,n): return (n*P).xy()[0] F=[ [X_n(P,2*i),X_n(P,2*i+1)] for i in range(2,47)] ag=algdepanalytic(F,D=4,check=1);ag [126*x0^2*x1^2 - 97*x0^2*x1 - 97*x0*x1^2 + 353*x0^2 + 303*x0*x1 + 353*x1^2 + x0 + x1 - 388] """ n=len(F[0]) if K is None: K=F[0][0].base_ring() Kx=PolynomialRing(K,x,n) ge=Kx.gens() mo=prod(ge)**D mo=Kx.monomial_all_divisors(mo) mo=[i for i in mo if i.degree()<=D] mo += [Kx(1)] if len(F)