> A:=n->[8*n+1,7*n+1,10*n+1,9*n+1]; > B:=n->[1,n+1,2*n+1,15*n+2]; > Astar:=n->[7*n+1,8*n+1,9*n+1,10*n+1]; A := n -> [8 n + 1, 7 n + 1, 10 n + 1, 9 n + 1] B := n -> [1, n + 1, 2 n + 1, 15 n + 2] Astar := n -> [7 n + 1, 8 n + 1, 9 n + 1, 10 n + 1] # Specialisation des parametres. > d:=n->A(n)[1]+A(n)[2]+A(n)[3]+A(n)[4]-B(n)[1]-B(n)[2]-B(n)[3]-B(n)[4]; d := n -> A(n)[1] + A(n)[2] + A(n)[3] + A(n)[4] - B(n)[1] - B(n)[2] - B(n)[3] - B(n)[4] # Donne le degre totale de la fraction rationnelle R. > d(n); 16 n - 1 > R:=(n,t)->product(t+j,j=B(n)[1]..A(n)[1]-1)*product(t+j,j=B(n)[2]..A(n > )[2]-1)*product(t+j,j=B(n)[3]..A(n)[3]-1)*(B(n)[4]-A(n)[4]-1)!/((A(n)[ > 1]-B(n)[1])!*(A(n)[2]-B(n)[2])!*(A(n)[3]-B(n)[3])!*product(t+j,j=A(n)[ > 4]..B(n)[4]-1)); //A(n)[1] - 1 \ /A(n)[2] - 1 \ /A(n)[3] - 1 \ ||,--------' | |,--------' | |,--------' | || | | | | | | | | | | | R := (n, t) -> || | | | | | | | | | | | || | | (t + j)| | | | (t + j)| | | | (t + j)| || | | | | | | | | | | | \\j = B(n)[1] / \j = B(n)[2] / \j = B(n)[3] / \// | | | | | | factorial(B(n)[4] - A(n)[4] - 1)| |factorial(A(n)[1] - B(n)[1]) factorial(A(n | | / \ /B(n)[4] - 1 \\ |,--------' || | | | || | | | || )[2] - B(n)[2]) factorial(A(n)[3] - B(n)[3]) | | | (t + j)|| | | | || \j = A(n)[4] // > R(n,t); (GAMMA(t + 8 n + 1) GAMMA(t + 7 n + 1) GAMMA(t + 10 n + 1) GAMMA(t + 9 n + 1))/ / 2 \GAMMA(t + 1) GAMMA(t + n + 1) GAMMA(t + 2 n + 1) factorial(8 n) GAMMA(t \ + 15 n + 2)/ # La fraction rationnelle R dont est tiree la forme lineaire. > c:=(n,k)->(-1)^(d(n)+B(n)[4]+k)*binomial(k-B(n)[1],k-A(n)[1])*binomial > (k-B(n)[2],k-A(n)[2])*binomial(k-B(n)[3],k-A(n)[3])*binomial(B(n)[4]-A > (n)[4]-1,k-A(n)[4]); (d(n) + B(n)[4] + k) c := (n, k) -> (-1) binomial(k - B(n)[1], k - A(n)[1]) binomial(k - B(n)[2], k - A(n)[2]) binomial(k - B(n)[3], k - A(n)[3]) binomial(B(n)[4] - A(n)[4] - 1, k - A(n)[4]) > c(n,k); (31 n + 1 + k) (-1) binomial(k - 1, k - 8 n - 1) binomial(k - n - 1, k - 7 n - 1 ) binomial(k - 2 n - 1, k - 10 n - 1) binomial(6 n, k - 9 n - 1) # Ce sont les coefficients de la formule (7) qui permettent d'écrire la # décomposition en éléments simples de R. > Rr:=(n,t)->R(n,t)-sum(c(n,k)/(t+k),k=Astar(n)[4]..B(n)[4]-1); / B(n)[4] - 1 \ | ----- | | \ | | ) c(n, k)| Rr := (n, t) -> R(n, t) - | / -------| | ----- t + k | \k = Astar(n)[4] / # C'est le polynome de degre d dans la decomposition de R en elements # simples. > with(CurveFitting); # Warning, the name LeastSquares has been rebound [BSpline, BSplineCurve, Interactive, LeastSquares, PolynomialInterpolation, RationalInterpolation, Spline, ThieleInterpolation] > f:=(i,j)->if i>=j then binomial(i-1,j-1) else 0 fi; f := (i, j) -> if j <= i then binomial(i - 1, j - 1) else 0 end if; > with(LinearAlgebra); # Warning, the name LeastSquares has been rebound [&x, Add, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix, BidiagonalForm, BilinearForm, CharacteristicMatrix, CharacteristicPolynomial, Column, ColumnDimension, ColumnOperation, ColumnSpace, CompanionMatrix, ConditionNumber, ConstantMatrix, ConstantVector, Copy, CreatePermutation, CrossProduct, DeleteColumn, DeleteRow, Determinant, Diagonal, DiagonalMatrix, Dimension, Dimensions, DotProduct, EigenConditionNumbers, Eigenvalues, Eigenvectors, Equal, ForwardSubstitute, FrobeniusForm, GaussianElimination, GenerateEquations, GenerateMatrix, GetResultDataType, GetResultShape, GivensRotationMatrix, GramSchmidt, HankelMatrix, HermiteForm, HermitianTranspose, HessenbergForm, HilbertMatrix, HouseholderMatrix, IdentityMatrix, IntersectionBasis, IsDefinite, IsOrthogonal, IsSimilar, IsUnitary, JordanBlockMatrix, JordanForm, LA_Main, LUDecomposition, LeastSquares, LinearSolve, Map, Map2, MatrixAdd, MatrixExponential, MatrixFunction, MatrixInverse, MatrixMatrixMultiply, MatrixNorm, MatrixPower, MatrixScalarMultiply, MatrixVectorMultiply, MinimalPolynomial, Minor, Modular, Multiply, NoUserValue, Norm, Normalize, NullSpace, OuterProductMatrix, Permanent, Pivot, PopovForm, QRDecomposition, RandomMatrix, RandomVector, Rank, RationalCanonicalForm, ReducedRowEchelonForm, Row, RowDimension, RowOperation, RowSpace, ScalarMatrix, ScalarMultiply, ScalarVector, SchurForm, SingularValues, SmithForm, SubMatrix, SubVector, SumBasis, SylvesterMatrix, ToeplitzMatrix, Trace, Transpose, TridiagonalForm, UnitVector, VandermondeMatrix, VectorAdd, VectorAngle, VectorMatrixMultiply, VectorNorm, VectorScalarMultiply, ZeroMatrix, ZeroVector, Zip] > M:=n->Matrix(d(n)+1,d(n)+1,f); M := n -> Matrix(d(n) + 1, d(n) + 1, f) # C'est la matrice liant les valeurs de Rr et les coeffcients de # l'ecriture de Rr dans la base des polynomes Pl. > a:=n->MatrixVectorMultiply(MatrixInverse(M(n)), [2]+1..d(n)-Astar(n)[2]+1)>); a := n -> (LinearAlgebra:-MatrixVectorMultiply)( (LinearAlgebra:-MatrixInverse)(M(n)), ) # C'est le calcul permettant de resoudre le systeme et trouver les # coefficients de Rr dans la base Pl. > check:=proc(n) > Q:=expand(Rr(n,t),t); > S:=seq(expand(a(n)[m+1]*product(t+Astar(n)[2]-q,q=1..m)/m!,t),m=1..d(n > )); > QQ:=expand(a(n)[1]+sum(S[m],m=1..d(n)),t); > is(Q=QQ); > end proc; # Warning, `Q` is implicitly declared local to procedure `check` # Warning, `S` is implicitly declared local to procedure `check` # Warning, `QQ` is implicitly declared local to procedure `check` check := proc(n) local Q, S, QQ; Q := expand(Rr(n, t), t); S := seq(expand( (a(n)[m + 1]*(product(t + Astar(n)[2] - q, q = 1 .. m)))/(factorial(m)), t), m = 1 .. d(n)); QQ := expand(a(n)[1] + (sum(S[m], m = 1 .. d(n))), t); is(Q = QQ); end proc; # Cette procedure permet de verifier le calcul. Elle renvoie 'true' si # le calcul des a(n) est correct et donc donne bien la decomposition de # Rr dans la base de Pl. > check(1); true > check(2); true > st:=time(): check(3); time()-st; true 319.588 > p:=proc(n) > S:=seq((-1)^(d(n)+s)*a(n)[s+1]/(s+1),s=0..d(n)); > T:=(-1)^d(n)*sum(c(n,k)*sum(1/j^2,j=1..k-Astar(n)[2]),k=Astar(n)[4]..B > (n)[4]-1); > -T+sum(S[v],v=1..d(n)+1); > end proc; # Warning, `S` is implicitly declared local to procedure `p` # Warning, `T` is implicitly declared local to procedure `p` p := proc(n) local S, T; S := seq(((-1)^(d(n) + s)*a(n)[s + 1])/(s + 1), s = 0 .. d(n)); T := (-1)^d(n)*(sum(c(n, k)*(sum((1)/(j^2), j = 1 .. k - Astar(n)[2])), k = Astar(n)[4] .. B(n)[4] - 1)); -T + (sum(S[v], v = 1 .. d(n) + 1)); end proc; # Cette procedure permet de calculer le coefficient constant a partir # de la derniere formule donnant la forme lineaire en fonction de # zeta(2). > p(1); 199536684432021 --------------- 9856 > p(2); 6500408024275547867356589727409007 ---------------------------------- 696970391040 > p1:=199536684432021/9856; 199536684432021 p1 := --------------- 9856 > p2:=6500408024275547867356589727409007/696970391040; 6500408024275547867356589727409007 p2 := ---------------------------------- 696970391040 > p(3); 2559684130875721888042442204551180003887796079201165 ---------------------------------------------------- 394269690512735488 > p3:=2559684130875721888042442204551180003887796079201165/3942696905127 > 35488; 2559684130875721888042442204551180003887796079201165 p3 := ---------------------------------------------------- 394269690512735488 > c1:=n->max(A(n)[1]-B(n)[1],A(n)[2]-B(n)[2],A(n)[3]-B(n)[3],B(n)[4]-Ast > ar(n)[2]-1); c1 := n -> max(A(n)[1] - B(n)[1], A(n)[2] - B(n)[2], A(n)[3] - B(n)[3], B(n)[4] - Astar(n)[2] - 1) > c2:=n->max(d(n)+1,B(n)[4]-Astar(n)[2]-1); c2 := n -> max(d(n) + 1, B(n)[4] - Astar(n)[2] - 1) > DD:=proc(n) > if n=1 then 1 else lcm(DD(n-1),n) fi > end proc; DD := proc(n) if n = 1 then 1 else lcm(DD(n - 1), n) end if; end proc; # Cette procedure et les deux lignes qui precedent permettent de # calculer les denominateurs theoriques des coefficients. > type(DD(c1(1))*DD(c2(1))*p1,integer); true > type(DD(c1(2))*DD(c2(2))*p2,integer); true > type(DD(c1(3))*DD(c2(3))*p3,integer); true > type(DD(c1(4))*DD(c2(4))*p4,integer); # On verifie qu'on obtient bien les proprietes arithmetiques annonces.