This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
i < qx, +i >l,i : i q i=0
49
Ce lemme est un q-analogue de la relation ! l ,(x + l) = X l ( , 1) : : : ( , i + 1) ,(x + l , ) : ,(x) ,(x , + i) i=0 i Demonstration : Elle s'etablit par recurrence sur l 2 IN. Pour l = 0, le lemme est trivialement veri e. Supposons que nous l'ayons etabli pour l 2 IN. Soient x et 2 Cl . Posons
,lq+1
l+1 " l + 1 # X ( ,i)(l+1,i) ,q ( + 1) ,q (x + l + 1 , ) : = q i ,q ( + 1 , i) ,q (x , + i) i=0
Nous allons etablir que ,lq+1 = ,q (,xq+(xl+1) ) . Comme " # " # " # l + 1 = l qi + l ; i i i,1 l+1 " l # x+l, ,q (x + l , ) X l +1 ( ,i)(l,i)q ,q ( + 1) 1 , q ,q = q ,q ( + 1 , i) 1 , q ,q (x , + i) i=0 i l+1 " l # X ( ,i)(l+1,i) ,q ( + 1) ,q (x + l + 1 , ) : + q ,q ( + 1 , i) ,q (x , + i) i=0 i , 1 " # l En utilisant le fait que l + 1 = 0 et l'hypothese de recurrence, la premiere somme est egale a " # x l , , ( x + l ) 1 , q q q 1,q ,q (x) : Comme ,l1 = 0 et en decalant l'indice de sommation, le deuxieme terme est egal a : l " l # X ( ,i,1)(l,i) ,q ( + 1) ,q (x + l + 1 , ) q ,q ( , i) ,q (x , + i + 1) i=0 i +
soit, en appliquant l'hypothese de recurrence (avec , 1), 11,,qq ,,q (qx(x+)l) ; d'ou le resultat.
Demonstration de la propriete 3.2.2 : Il sut de montrer pour tout 2 Cl , pour tous k; j 2 IN, que k < qx >j ,q,(qx(+x)) est encore une serie formelle de q-factorielles generalisees. Or
+ j + k) k < qx >j , ,(xq (+x)) = ,,q ((xx + k + ) q q # jX +k " ,q (x),q (x + j + k , ) j + k ( ,i)(j +k,i) ,q ( + 1) = q i ,q ( + 1 , i) ,q (x , + i),q (x + k + ) i=0 pour tout 2 Cl . En particulier, pour = j , : # jX +k " ,q (x) , j + k q (x) (j ,,i)(j +k,i) ,q (j , + 1) k x q < q >j , (x + ) = i ,q (j , + 1 , i) ,q (x , j + + i) : q i=0 50
De nition 3.2.4 : Avec les notations de la de nition 3.2.1, la transformee q-Mellin formelle d'une serie formelle de q-factorielles generalisees est la serie formelle X IMq (f^q )(t) =
an (tq; q)1 = (tq; q)1 X an +1; q ) ( tq n n +1+ +1 ; q)1 (tq ; q)1 n0 ,q (n + 1 + ) n0 ,q (n + 1 + ) (tq
q (y ) Remarque : La fonction q , beta, Bq (x; y ) = ,,q (qx(), x+y) , est egale a
Bq (x; y) =
Z1 0
tx,1 ((tqtqy;;qq))1 dq t 1
pour jqj < 1, Re(x log q) > 0 et y 6= ,n + 2logikq , n 2 IN et k 2 ZZ [8], d'ou ,q (x) = Z 1 tx,1 1 (tq; q)1 d t: ,q (x + ) 0 ,q () (tq; q)1 q Propriete 3.2.5 : Les operateurs polynomiaux de Cl [t; p] agissent sur les series formelles en (tqn(tq;q)1;q)1 = u+n+1 (t). +1+
Demonstration : Il sut de remarquer que pour tout 2 Cl :
pu(t) = (tq(t,;q);1q)1 = 1,1tq,t, 1
1
(tq;q)1 (tq;q)1
= q1,u(t) + (1 , q1,)u,1(t)
tu(t) = q,(tq , 1 + 1) ((tqtq;;qq))11 = q,u , q,(1 , tq) ((tqtq;;qq))11 = q,u , q,u+1
Proposition 3.2.6 : Si f^q est une serie formelle de q-factorielles generalisees alors pour tout operateur q 2 Cl [qx; ], IMq (q (f^q )) = IMq (q)IMq (f^q ): Demonstration : Par linearite, il sut de veri er que IMq ( k < qx >j ( ,q (x) )) = tk < p >j ( u (t) ) ,q (x + ) ,q () pour tout 2 Cl . On a montre precedemment que :
# +k " ,q (x) = jX ,q (x) j + k q(j,,i)(j+k,i) ,q (j , + 1) j ,q (x + ) i=0 i ,q (j , + 1 , i) ,q (x , j + + i) dont la transformee q-Mellin formelle est # jX +k " 1 j + k (j ,,i)(j +k,i) ,q (j , + 1) k;j (t) = q i ,q (j , + 1 , i) ,q (,j + + i) u,j++i (t): i=0 k
< qx >
Pour montrer que k;j (t) = tk < p >j ( ,qu() ), nous allons proceder en deux etapes.
Premiere etape : Nous allons etablir que 0;j (t) =< p >j 51
1 ,q () u (t)
par recurrence sur
j 2 IN. Pour j = 0, 0;0(t) = ,q1() u(t). j Si 0;j (t) =< p >j ,q1() u(t) : < p >j+1 ,uq((t)) = 1,1q,qp 0;j (t). Or j " # X ,q (j , + 1) j q(j,,i)(j,i) 0;j (t) = ,q (j , + 1 , i),q (,j + + i) u,j+i i=0 i et pu(t) = q1,u + (1 , q1,)u,1 pour tout donc p0;j (t) est egal a j " # X ,q (j , + 1) j q(j,,i)(j,i) q1+j,,i u,j+i i , ( j , + 1 , i ), ( , j + + i ) q q i=0 j " # X ,q (j , + 1) j q(j,,i)(j,i) + (1 , q1+j,,i)u,j+i,1 i , ( j , + 1 , i ), ( , j + + i ) q q i=0 u et < p >j+1 ,q () est egal a j " # X 1 1 , q1+2j,,i u j q(j,,i)(j,i) ,q (j , + 1) ,j +i ,q (j , + 1 , i) ,q (,j + + i) 1 , q i=0 i j " # qj X 1 , q1+j,,i u j (j ,,i)(j ,i) ,q (j , + 1) q , ,q (j , + 1 , i) ,q (,j + + i) ,(j+1)+i : i=0 i 1 , q 0 dans "En decalant # " le premier # terme l'indice de sommation (i = i + 1) et en utilisant le fait que j = 0 et j = 0, < > u est egal a p j +1 ,q () ,1 j+1 jX +1
avec
i=0
1 , + 1) 1 ci;j+1 q(j+1,,i)(j,i) , ,(jq (+j +1 , + 1 , i) , (,(j + 1) + + i) u,(j+1)+i q
q
j ,+1,i j ,+1,i 2j ,+2,i " j # 1 , q ci;j+1 = i , 1 1 , qj,+1 , i q2i,j,1+ 11,,qqj,+1 11,,qq,j++i,1 " # 2j ,+2,i " j # 1 , q j ,+1,i " j + 1 # 1 , q j = i , 1 1 , qj,+1 , i qi 1 , qj,+1 = i : Deuxieme etape : On montre que k;j (t) = tk < p >j ,qu() par recurrence sur k 2 IN. Pour k = 0, c'est evident. Si k;j (t) = tk 0;j (t) : # jX +k " ,q (j , + 1) j + k k +1 (j ,,i)(j +k,i) t 0;j (t) = tk;j = q i ,q (j , + 1 , i),q (,j + + i) tu,j++i (t): i=0
"
j
#
Or tu = q,u , q,u+1 donc tk+10;j (t) est egal a # jX +k " ,q (j , + 1) j + k q(j,,i)(j+k,i) j ,,i u q ,j ++i i ,q (j , + 1 , i),q (,j + + i) i=0 52
jX +k "
# ,q (j , + 1) j + k (j ,,i)(j +k,i) , q qj,,iu,j++i+1 : i , ( j , + 1 , i ), ( , j + + i ) q q i=0 " # j + k 0 En decalant dans le deuxieme terme l'indice (i = i + 1) et en utilisant ,1 = 0 et " # j + k = 0, tk+1 (t) est egal a 0;j j+k+1 # " # ! j +X k+1 " ,q (j , + 1) j + k , j + k qj+k,i+1 q(j,,i)(j+k+1,i) i i,1 ,q (j , + 1 , i),q (,j + + i) u,j++i (t) i=0 donc tk+10;j (t) = k+1;j (t): Remarque : Si IMq ( ,q,(qx(+x)) ) = (t) alors la commutativite se traduit par
tk
< p >j (t) =
jX +k " i=0
# j + k q(j,,i)(j+k,i) ,q (j , + 1) (t): i ,q (j , + 1 , i) ,j+i
Pour j = 0 et k = 1 : t = q, + 1,1,q,q +1: Pour j = 1 et k = 0 : p = ,(1 , q)q1,,1 + q1,: En posant = ,qu() (t), (t) doit satisfaire (t) = +1(t) et (pt) = (t). Par analogie, A. Barkatou et A. Duval etablissent que (t) est une fonction 1-periodique de la variable , independante de t.
4. Theoremes d'indices dans Cl~ q [[t]] Nous serons amenes a determiner les indices pour des op erateurs Mq 2 Cl [t; p] agissant sur P ~ ^ Cl q [[t]], espace des series formelles de la forme Fq (t) = n0 an (tq; q )n avec (tq; q )0 = 1 et (tq; q)n = (1 , tq)(1 , tq2) : : : (1 , tqn) si n = 1; 2; : : :
4.1. Indice dans Cl~ q [[t]]
Nous allons calculer a la main cet indice. Soit Mq = PKk=0 PJj=0 k;j tk < p >j 2 Cl [t; p]. Soient F^q(t) = Pn0 an (tq; q)n et ^q (t) = Pn0 bn(tq; q)n 2 Cl~ q [[t]] deux series telles que Mq F^q = ^q . Nous avons montre que pour tout 2 Cl , # jX +k " ,q () u : j + k k (j ,i,)(j +k,i) ,q (j , + 1) t < p >j u = q i ,q (j , + 1 , i) ,q ( + i , j ) ,j+i i=0 En posant
"
# i + 1) ; j + k k;j;i;n = i q,(n+1)(j+k,i) ,,q ((i,,nn)) ,q (n,+(nj +, 1) q q 53
Mq F^q est egal a +k X J jX K X X
k=0 j =0 i=0 n0
k;j an k;j;i;n,j+i u,j+n+1+i =
+k X K X J jX X
k=0 j =0 i=0 n,j +i
k;j an+j,i k;j;i;nun+1 :
,i+1) s'annule pour j , i 6= 0 Or ,,qq((i,,nn)) =< q,n >i s'annule pour i 6= 0 et n = 0 : : : i , 1 et ,q (,nq+(nj+1) et n ,1, donc +k X K X J jX X Mq F^q = k;j an+j,i k;j;i;n(tq; q)n: k=0 j =0 i=0 ni
L'egalite Mq F^q = ^q se traduit par : j +k;n) K X J min(X X
8n 0;
k=0 j =0
i=0
k;j an+j,i k;j;i;n = bn:
Posons m(Mq ) = supfj = 0 : : : J j 9k = 0 : : : K; k;j 6= 0g. Soit , = fk = 0 : : : K j k;m(Mq ) 6= 0g. Si k 2= , alors la condition k;j 6= 0 entra^ne j < m(Mq ). Par consequent, pour n assez grand U (n)an+m(Mq ) = Sn(an+m(Mq ),1; : : :; an,K ; bn) ou Sn (an+m(Mq ),1; : : :; an,K ; bn) est une expression algebrique en les an+m(Mq ),1; : : :; an,K ; bn et avec q ) + 1) : U (n) = Pk2, k;m(Mq )q,(n+1)(m(Mq )+k) ,q (n ,+ (mn(+M1) q
Soit k0 = supfkjk;m(Mq ) 6= 0g = sup ,. Le coecient U (n) s'ecrit q ) + 1) 1 + P k ;m(Mq )q,(n+1)(m(Mq)+k ) ,q (n ,+ (mn(+M1) k2,;k
0
0
q
k;m(Mq ) ,(n+1)(k,k0 ) k0 ;m(Mq ) q
:
Si jqj < 1 alors Pk2,;k1, U (n) s'ecrit (
0
(
0
)
0
)
q ) + 1) 1 + P k ;m(Mq )q,(n+1)(m(Mq)+k ) ,q (n ,+ (mn(+M1) k2,;k>k 1
1
1
q
k;m(Mq ) ,(n+1)(k,k1 ) k1 ;m(Mq ) q
(avec k1 = inf ,) donc est non nul pour n assez grand. Pour tout ^q 2 Cl~ q [[t]] tel que inf fn j bn 6= 0g N , il existe donc une unique serie F^q 2 Cl~ q [[t]] telle que Mq F^q = ^q et inf fn j an 6= 0g N + m(Mq ). En d'autres termes, avec des notations 54
evidentes, l'application Mq :Cl~ q;N +m(Mq ) ,! Cl~ q;N est un isomorphisme. Le diagramme 0
0
#
0 ,!
Cl~ q;N +m(Mq )
0 ,!
Cl~ q [[t]]
# #
#
,!
Cl~ q;N
,! 0
,!
Cl~ q [[t]]
,! 0
# #
0 ,! Cl~ q [[t]]=Cl~q;N +m(Mq ) ,! Cl~ q [[t]]=Cl~q;N ,! 0
#
#
0
0
est commutatif, donc Mq est a indice dans Cl~ q [[t]], egal a
1 = m(Mq ) = supfj = 0 : : : J j 9k = 0 : : : K; k;j 6= 0g:
4.2. Indices dans les espaces q-Gevrey De nitions 4.2.1 : Une serie F^q(t) = Pn0 an(tq; q)n est q-Gevrey d'ordre s 2 IR s'il existe C et A > 0 tels que 8n; janj < Cq0, sn n An (q0 = sup(jqj; jqj,1)): L'ensemble des series q-Gevrey d'ordre s est note Cl~ q;s[[t]]. La serie est q-Gevrey-Beurling d'ordre s si pour tout A > 0 il existe CA > 0 tel que ( +1) 2
8n; janj < CA q0, sn n An: L'ensemble correspondant est note Cl~ q;(s)[[t]]. ( +1) 2
Soit Cl [[v]] l'espace des series formelles entieres en la variable v. Considerons l'isomorphisme : Cl~ q [[t]] ! Cl [[v]] qui a (tq; q)n associe vn. Il induit des isomorphismes : Cl~ q;s[[t]] ! Cl [[v]]p;s et : Cl~ q;(s)[[t]] ! Cl [[v]]p;(s) ou Cl [[v]]p;s (resp. Cl [[v]]p;(s)) est l'espace p-Gevrey d'ordre s (resp. p-Gevrey-Beurling d'ordre s) [7]. On note p;v l'operateur aux p-dierences agissant sur les series en v (p;v (g(v)) = g(pv)).
Proposition 4.2.2 : Soit Mq 2 Cl [t; p]. L'operateur Mv = Mq ,1 est polynomial en v, v,1 et p;v . De plus, Mv : Cl [[v]]p;s ! Cl [[v]]p;s est de Fredholm, donc Mq :Cl~ q;s[[t]] !Cl~ q;s[[t]] est egalement de Fredholm, et les indices sont egaux. Demonstration : En remarquant que t = P ,P1(p(1 , v)p;v ) et d'autre part quePPp = ,1(p;v + 1 1 k;j tk pj = ,1Mv avec Mv = k;j pk (p;v , p;v ), nous etablissons que Mq = v , v 1 1 vp;v)k (p;v + v , v p;v )j 2 Cl [v; v,1][p;v].
55
Soit J le degre en v,1 de l'operateur Mv . L'operateur M = vJ Mv est un operateur aux pdierences a coecients polynomiaux. En utilisant les theoremes d'indices etablis pour des operateurs aux q-dierences a coecients polynomiaux agissant dans les espaces p-Gevrey d'ordre s 2 IR [8], on montre aisement que M : Cl [[v]]p;s ! vJCl [[v]]p;s est un operateur de Fredholm, d'indice s egal a l'indice de M : Cl [[v]]p;s ! Cl [[v]]p;s plus J . Par consequent, Mv : Cl [[v]]p;s ! Cl [[v]]p;s et par suite Mq : Cl~ q;s[[t]] ! Cl~ q;s[[t]] sont de Fredholm, d'indice egal a s. Cet indice est l'oppose de l'ordonnee de l'unique point (ou de l'origine du segment) intersection du polygone de Newton de Mv au sens p-dierences et de la droite d'appui de pente 1=s. Nous allons de nir un polygone de Newton pour Mq . Cela nous permettra de donner explicitement les indices en fonction de Mq , sans avoir a passer par le polygone de Newton au sens p-dierences de l'operateur Mv et qui n'est qu'un intermediaire. Lemme 4.2.3 : Si M = PK PJ tkj alors q
Mv =
avec
j =0 k;j
k=0
JX +K
p
J X
i=0 j =max(0;i,K )
min( XK;i)
iY ,1 i i;j v,j (1 , plv)p;v
"
l=0
j
#
i,k)(i,k,1)
k;j qk(j,1) i , k (,1)i,k q : k=max(0;i,j ) P P Demonstration : Nous savons que Mv =Q Kk=0 Jj=0 k;j pk (p;v , vp;vQ)k (p;v + v1 , 1v p;v )j . On ,1 (1 , pl v ) k (si k = 0, k,1 (1 , pl v ) est egal a 1 montre aisement que (p;v , vp;v)k = kl=0 p;v l=0 par convention). " # P j 1 1 j i . Si cette Montrons par recurrence sur j que (p;v + v , v p;v ) = i=0 ji vi,j (v,1; q)ip;v egalite est etablie pour l'entier j , alors : j " # X 1 1 j vi,j (v,1; q) i ( + 1 , 1 ) (p;v + v , v p;v )j+1 = i p;v p;v v v p;v i=0 i j " # j " # i X X q j j vi,j (v,1; q) qi i i +1 i , j , 1 i +1 = ) + v ( v ; q ) ( , i i p;v p;v v p;v i=0 i v i=0 i " # " # jX +1 j X j j vi,j,1 (v,1; q) qii i , j , 1 , 1 i = v ( v ; q ) + i i p;v p;v i=1 i , 1 i=0 i # jX +1 " j + 1 i : = vi,(j+1)(v,1; q)ip;v i i=0 Le lemme se deduit de ces deux expressions. i;j =
(
2
Le polygone de Newton (au sens p-dierences) de Mv fait intervenir les points (i; i , j ) et (i; ,j ) pour tout couple (i; j ) tel que i = 0; : : : ; J + K , j = max(0; i , K ); : : : ; J et i;j 6= 0. 56
Soit j xe tel que ,j = fk = 0; : : : ; K j k;j 6= 0g est non vide. Soient kj, = min,j et kj+ = max ,j . Alors kj,;j et kj +j;j sont non nuls : les points (kj, ; kj, , j ), (kj, ; ,j ), (kj+ + j; ,j ) et (kj+ + j; kj+ ) interviennent dans la construction du polygone. +
Soit i = 0; : : :; J + K tel qu'il existe j avec i;j 6= 0 et j max(0; i , K ). Alors pour un tel j , ,j est non vide. On determine kj, et kj+ . On montre que : kj, i kj+ + j ; les points (i; i , j ) et (i; ,j ) se situent dans l'enveloppe convexe des points (kj, ; kj, , j ), (kj, ; ,j ), (kj+ + j; ,j ) et (kj+ + j; kj+ ). On en deduit un polygone de Newton pour Mq : De nition 4.2.4 : On considere l'operateur Mq = PKk=0 PJj=0 k;j tk pj aux p-dierences considere comme2 agissant sur Cl~ q [[t]]. Le polygone de Newton de Mq est l'enveloppe convexe dans IR des points (kj, ; kj, , j ), (kj,; ,j ), (kj+ + j; ,j ) et (kj+ + j; kj+ ) tels que j = 0 : : : J , ,j = fk = 0; : : : ; K j k;j 6= 0g = 6 ;, kj, = min ,j et kj+ = max ,j . Dans le cas ou jpj > 1, la seule partie du polygone qui nous interesse est celle de droite. On peut donc donner dans ce cas une de nition ne necessitant pas la recherche de kj, et kj+ . De nition 4.2.5 : Soit Mq = PKk=0 PJj=0 k;j tk pj avec jpj > 1. Soient =2 = f(u; v) 2 IR2 j u 0; v 0g et =3 = f(u; v ) 2 IR2 j u; v 0g. Pour (a; b) 2 IR2 et r = 2; 3 on pose =r (a; b) = (a; b) + =r , M2(Mq ) l'union des quadrants =2(k + j; ,j ) et M3(Mq ) l'union des quadrants =3(k + j; k) pour (k; j ) tels que k;j 6= 0. Soient Pl(Mq ) (resp. Pu (Mq )) l'enveloppe convexe dans IR2 de M2(Mq ) (resp. M3(Mq )) et P (Mq ) = Pl (Mq ) \ Pu (Mq ). Par de nition, Pl(Mq ) est le polygone de Newton inferieur de Mq , Pu (Mq ) est le polygone de Newton superieur et P (Mq ) le polygone de Newton de Mq . Les pentes strictement positives de Pl(Mq ) sont appelees les pentes irregulieres inferieures de P (Mq ) et les pentes strictement negatives de Pu (Mq ) sont appelees les pentes regulieres superieures de P (Mq ). On de nit les points (absci(); ordo()) et un sens de parcours des ar^etes du polygone, comme dans [8]. Rappelons le principe dans le cas jqj < 1 : Si 2 IR et si l'intersection de Pl(Mq ) avec sa droite de contact de pente est reduite a un unique point, on note indieremment (absci1(); ordo1 ()) ou (absci2(); ordo2 ()) les coordonnees de ce point. Sinon, l'intersection est un segment ( est dans ce cas une pente irreguliere inferieure de P (Mq )) et est notee [(absci1(); ordo1 ()); (absci2(); ordo2 ())] avec absci1() < absci2(). Si 2 IR et si l'intersection de Pu(Mq ) avec sa droite de contact de pente est reduite a un unique point, on note indieremment (absci1(); ordo1 ()) ou (absci2(); ordo2 ()) les coordonnees de ce point. Sinon, l'intersection est un segment ( est dans ce cas une pente reguliere superieure de P (Mq )), [(absci1(); ordo1 ()); (absci2(); ordo2 ())] avec absci2() < absci1(). 57
Le c^ote horizontal inferieur de P (Mq ) est repere a droite par (absci2(0l ); ordo2 (0l)). Le c^ote horizontal superieur de P (Mq ) est repere a droite par (absci1(0u ); ordo1 (0u )). On repere par [(absci1(1); ordo1 (1)); (absci2(1); ordo2 (1))] le c^ote vertical droit de P (Mq ), avec absci1(1) = absci2(1) et ordo1 (1) ordo2 (1). En utilisant les resultats de J.-P. Ramis [8] et de J.-P. Bezivin [6], nous etablissons aisement les theoremes suivants :
Th eoreme 4.2.6 : Soit q 2 IR, jqj 6= 0; 1. Soit s 2 IR [ f1g [ f,1g. Soit 2 IR [ f0l ; 0u ; 1g de ni par 1s si s 2 IR , 0l si s = ,1 et par 0u si s = 1. Soit Mq 2 Cl [t; p]. Alors : Les operateurs Mq : Cl~ q;s[[t]] ! Cl~ q;s[[t]] sont de Fredholm, d'indice egal a ,ordo1 (); Les operateurs Mq : Cl~ q;(s)[[t]] !Cl~ q;(s)[[t]] sont de Fredholm, d'indice egal a ,ordo2 (). Theoreme 4.2.7 : Soient Mq 2 Cl [t; p] et q = Pn0 bn(tq; q)n q-Gevrey d'ordre 0. On suppose que F^q (t) 2 Cl~ q [[t]] est solution de Mq F^q = q . Alors F^q est q-Gevrey d'ordre 0 ou il existe un unique reel s > 0 tel que F^q est q-Gevrey d'ordre s et F^q 2= Cl~ q;(s)[[t]]. De plus, s = 1=k ou k est l'une des pentes irregulieres inferieures de P (Mq ). Theoreme 4.2.8 : Soient Mq 2 Cl [t; p] et q 2 Cl [t]. On suppose que F^q (t) 2 Cl~ q;(0)[[t]] est solution de Mq F^q = q . Alors F^q est un polyn^ome ou il existe un unique reel s < 0 tel que F^q 2 Cl~ q;s[[t]] et F^q 2= Cl~ q;(s)[[t]]. De plus, s = 1=k ou k est l'une des pentes regulieres superieures de P (Mq ). 5. Solutions series de q-factorielles formelles 5.1. Polygone de Newton Nous allons de nir un polygone de Newton pour les operateurs aux dierences a coecients polynomiaux en qx. Il se confond en fait avec celui que nous avons de ni precedemment pour les operateurs aux p-dierences consideres comme agissant sur Cl~ q [[t]]. De nition 5.1.1 : Soit q = PKk=0 PJj=0 k;j k (qx)j . Le polygone de Newton P (q ) est+ par de nition+ l'enveloppe convexe dans IR2 des points (kj,; kj, , j ), (kj, ; ,j ), + (kj + j; ,j ) et (kj + j; kj ) tels que j = 0 : : : J , ,j = fk = 0; : : : ; K jk;j 6= 0g 6= ;, kj, = min ,j et kj+ = max ,j . Dans le cas jqj < 1, on peut donner une autre de nition : 58
De nition 5.1.2 : Soit q = PKk=0 PJj=0 k;j k (qx)j avec jqj < 1. Soient =2 = f(u; v) 2 IR2ju 0; v 0g et =3 = f(u; v ) 2 IR2ju; v 0g. Pour (a; b) 2 IR2 et r = 2; 3 on pose =r (a; b) = (a; b) + =r , M2(q ) l'union des quadrants =2(k + j; ,j ) et M3(q ) l'union des quadrants =3(k + j; k) pour (k; j ) tels que k;j 6= 0. Soient Pl(q ) (resp. Pu (q)) l'enveloppe convexe dans IR2 de M2(q) (resp. M3(q )) et P (q ) = Pl(q ) \ Pu (q). Par de nition, Pl(q ) est le polygone de Newton inferieur de q, Pu (q) est le polygone de Newton superieur et P (q ) le polygone de Newton de q . Les pentes strictement positives de Pl(q ) sont les pentes irregulieres inferieures et les pentes strictement negatives de Pu (q) sont appelees les pentes regulieres superieures de P (q ). On de nit comme precedemment les points (absci(); ordo()).
5.2. Caracterisation q-Gevrey des series de q-factorielles solutions On rappelle que pour x 2 Cl et n 2 IN, ,q (x) = 1 , q : : : 1 , q : ,q (x + n) 1 , qx+n,1 1 , qx De nition 5.2.1 : La serie formelle de q-factorielles f^q = Pn1 an ,q,(qx(+x)n) est q-Gevrey d'ordre s 2 IR s'il existe C et A > 0 tels que 8n 0; an < C jqj, sn n An : +1
,q (n+1)
( +1) 2
On note O^f;q (s) l'ensemble de telles series. Nous rappelons la de nition suivante :
De nition 5.2.2 : La serie F^q (t) = Pn0 an(tq; q)snn nest q-Gevrey d'ordre s 2 IR s'il existe C et A > 0 tels que 8n 0; jan+1j < C jqj, An : ( +1) 2
Remarque : Si f^q = Pn1 an ,q,(qx(+x)n) est q -Gevrey d'ordre s alors sa transformee de q -Mellin formelle IMq (f^q ) = Pn1 ,qa(nn) (tq; q)n,1 est q-Gevrey d'ordre s.
Theoreme 5.2.3 : Soient q 2 Cl [qx; ] et g^q une serie de q-factorielles q-Gevrey P d'ordre 0. Soit f^q = n1 an ,q,(qx(+x)n) solution de q f^q = g^q . Alors f^q est q-Gevrey d'ordre 0 ou il existe un unique reel s > 0 tel que f^q est q-Gevrey d'ordre s optimal. Remarque : On dit qu'une serie est q -Gevrey d'ordre s optimal s'il n'existe pas de reel s0 < s tel que cette serie soit q-Gevrey d'ordre s0.
P Demonstration : Soient Mq = IMq (q ), F^q = n1 ,qa(nn) (tq; q )n,1 et ^q = IMq (^gq ). D'apres 59
la proposition 3.2.6, F^q est solution de l'equation aux p-dierences Mq F^q = ^q ou ^q est qGevrey d'ordre 0. On utilise alors le theoreme 4.2.7.
6. Theoremes d'indices (series de q-factorielles) 6.1. Indices formels Soit K^ f;q = ff^q = Pnn an ,q,(qx(+x)n) j n0 2 ZZg. Pour f^q 2 K^ f;q on de nit val(f^q) = inf fn 2 ZZ j an = 6 0g avec la convention val(0) = 1. Soit O^f;q = ff^q 2 K^ f;q j val(f^q) 1g. Lemme 6.1.1 : La suite d'espaces vectoriels 0
M^ q
0 ,! Cl [qx] ,! K^ f;q ,! Cl~ q [[t]] ,! 0
est exacte. Demonstration : Il sut de remarquer d'une part que Cl [q x] peut ^etre considere comme le sous-espace de K^ f;q tel que
n
o
P Cl [q x] = f^q = nn an ,q,(qx(+x)n) j n0 0 et an = 0 8n 1 : 0
D'autre part, soit f^q (x) = Pnn an ,q,(qx(+x)n) 2 K^ f;q : M^ q (f^q )(t) = Pnn ,qa(nn) ((tqtqn;q;q))11 : Or 0 pour n = 0; ,1; : : : donc X an+1 (tq; q) 2 Cl~ [[t]]: IMq (f^q )(t) = n q nmax(n ,1;0) ,q (n + 1) 0
0
1 ,q (n)
0
On en deduit que l'application IMq : K^ f;q ,! Cl~ q [[t]] est surjective. Soit q 2 Cl [qx; ]; q opere sur Cl [qx]. En eet, pour k,j 2 IN et n 0, # jX +k " ,q (x) j + k , ( x ) (j ,n,i)(j +k,i) ,q (j , n + 1) q k < qx >j ,q (qx+n) = i ,q (j , n + 1 , i) ,q (x , j + n + i) : i=0 Or ,q (j,n+1) = Qi,1 1,qj,n,l s'annule pour i 1 + j , n donc, pour n 0, ,q (j ,n+1,i)
l=0
1,q
k < q x >j min(jX +k;j ,n) "
i=0
,q (x) ,q (x+n)
=
# ,q (x) j + k q(j,n,i)(j+k,i) ,q (j , n + 1) 2 Cl [q x]: i ,q (j , n + 1 , i) ,q (x , j + n + i) 60
=
Il est evident que q opere sur K^ f;q . Le diagramme suivant est commutatif (avec Mq = IMq (q )): IMq Cl~ [[t]] K^ f;q ,! q q # # Mq IM K^ f;q ,!q Cl~ q [[t]] En general, q n'opere pas sur O^f;q . Cependant, nous pouvons etablir le lemme suivant :
Lemme 6.1.2 : On note O^f;q (q) = ff^q 2 O^f;q j q(f^q ) 2 O^f;q g. L'espace quotient O^f;q =O^f;q (q) est de dimension nie, et est isomorphe a Cl~ q [[t]]=IMq (O^f;q (q )):
Demonstration : Soit f^q (x) = Pn1 an ,q,(qx(+x)n) 2 O^ f;q . Si q = PKk=0 PJj=0 k;j k < qx >j (avec 9k; k;J 6= 0 et 9j; K;j 6= 0), alors q f^q est egal a
# 1) ,q (x) j + k k;j an i q(j,n,i)(j+k,i) , ,(jq (,j ,n n++1 , i) ,q (x , j + n + i) q k=0 j =0 n1 i=0 " # +k X K X J jX X n + i + 1) ,q (x) j + k = k;j an+j,i i q,n(j+k,i) ,q,(,(, q n + 1) ,q (x + n) k=0 j =0 i=0 n1,j +i donc q (f^q ) 2 O^f;q s'ecrit, en annulant dans q (f^q ) les coecients de ,q,(qx(+x)n) pour n = 1 , J; : : :; 0 : Si(a1; : : : ; ai) = 0 pour i = 1; : : : ; J . Par consequent, O^f;q =O^f;q (q) est de dimension nie. D'autre part, les applications IMq : O^f;q ,! Cl~ q [[t]] et IMq : O^f;q (q ) ,! IMq (O^f;q (q)) sont bijectives, donc M q : O^f;q =O^f;q (q ) ,! Cl~ q [[t]]=IMq (O^f;q (q)) est un isomorphisme. Proposition 6.1.3 : Soit q = PKk=0 PJj=0 k;j k < qx >j . L'operateur q : O^f;q (q) ,! O^f;q est de Fredholm, d'indice : +1(q ) = q , dq avec q = supfj = 0 : : : J j 9k = 0 : : : K; k;j 6= 0g et dq = dim(O^f;q =O^f;q (q)). +k K X J X jX X
"
Demonstration : Le diagramme suivant est commutatif : IMq 0 ,! O^f;q (q) ,! Cl~ q [[t]] ,! Cl~ q [[t]]=IMq (O^f;q (q )) ,! 0 q # # Mq # M q 0 ,! O^f;q ,! Cl~ q [[t]] ,! Cl~ q [[t]]=IMq (O^f;q ) ,! 0 IMq
61
ou Mq = IMq (q ) = PKk=0 PJj=0 k;j tk < p >j , d'indice q ; Cl~ q [[t]]=IMq (O^f;q ) = f0g donc M q est a indice, egal a dq , d'ou le resultat. Lemme 6.1.4 : Soit q = PKk=0 PJj=0 k;j k < qx >j . L'operateur q : K^ f;q =O^f;q (q ) ,! K^ f;q =O^f;q est de Fredholm, d'indice : ,q + dq . Demonstration : Soit r 2 IN. On note K^ q;,r les elements de K^ f;q de valuation superieure ou egale a ,r. Si f^q (x) = Pn,r an ,q,(qx(+x)n) 2 K^ q;,r alors q f^q (x) est egal a
X n,r
an
K X J X k=0 j =0
k;j
jX +k " i=0
# ,q (x) j + k q(j,n,i)(j+k,i) ,q (j , n + 1) i ,q (j , n + 1 , i) ,q (x , j + n + i) ;
c'est-a-dire, q (K^ q;,r ) K^ q;,r,q et q : K^ f;q =K^ q;,r ,! K^ f;q =K^ q;,r,q . Pour m r : # jX +k " K X J , q (x) X ,q (x) j + k (j +m,i)(j +k,i) ,q (j + m + 1) q ,q (x,m) = q k;j i ,q (j + m + 1 , i) ,q (x , j , m + i) i=0 k=0 j =0 =
X (k;j )jk;j 6=0
X
=(
k2,
k;j q(j+m)(j+k) , (x,,q (jx), m) + termes de valuation > ,j , m q
k;q q(q +m)(q +k) ) , (x ,,q (x), m) + termes de valuation > ,q , m: q
q
Or, avec k0 = inf ,, P X k;q q(q +m)(q +k) = k ;q q(q +m)(q +k ) 1 + k2,;k>k
k;q (q +m)(k,k0 ) k0 ;q q
ou, avec k1 = sup ,, P X k;q q(q +m)(q +k) = k ;q q(q +m)(q +k ) 1 + k2,;k
k;q (q +m)(k,k1 ) k1 ;q q
k2,
k2,
0
0
1
1
0
1
:
Par consequent, si r est assez grand, Pk2, k;q q(q+m)(q +k) est non nul pour tout m r et on en deduit que l'application q : K^ f;q =K^ q;,r ,! K^ f;q =K^ q;,r,q est un isomorphisme. Les diagrammes suivants sont commutatifs : 0 ,! K^ q;,r ,! K^ f;q ,! K^ f;q =K^ q;,r ,! 0 q # # q #o ^ ^ ^ 0 ,! Kq;,r,q ,! Kf;q ,! Kf;q =K^ q;,r,q ,! 0 0 ! K^ q;,r =O^f;q (q ) ,! K^ f;q =O^f;q (q ) ,! (K^ f;q =K^ q;,r )=O^f;q (q ) ! 0 q # # q #o ^ ^ ^ ^ ^ ^ 0 ! Kq;,r,q =Of;q ,! Kf;q =Of;q ,! (Kf;q =Kq;,r,q )=O^f;q ! 0 62
Les espaces K^ q;,r,q =O^f;q et K^ q;,r =O^f;q (q ) etant de dimension nie, respectivement egale a r + q + 1 et a dim(K^ q;,r =O^f;q ) + dim(O^f;q =O^f;q (q )), il s'ensuit que q : K^ f;q =O^f;q (q ) ,! K^ f;q =O^f;q est a indice, egal a : r + 1 + dim(O^f;q =O^f;q (q )) , r , q , 1.
Proposition 6.1.5 : Soit q 2 Cl [qx; ]. L'operateur q : K^ f;q ,! K^ f;q est de Fredholm, d'indice 0; L'operateur q :Cl [qx] ,! Cl [qx] est de Fredholm, d'indice ,q .
Demonstration : En considerant le diagramme commutatif suivant 0 ,! O^f;q(q ) ,! K^ f;q ,! K^ f;q =O^f;q (q ) ,! 0 q # q # q # ^ ^ 0 ,! Of;q ,! Kf;q ,! K^ f;q =O^f;q ,! 0
il s'ensuit que q : K^ f;q ,! K^ f;q est de Fredholm, d'indice 0. Le deuxieme resultat de la proposition resulte du diagramme commutatif IMq x ^ 0 ,! Cl [q ] ,! Kf;q ,! Cl~ q [[t]] ,! 0 ^ q # q # # Mq (q) x ~ ^ 0 ,! Cl [q ] ,! Kf;q ,! Cl q [[t]] ,! 0 IMq 6.2. Indices q-Gevrey Pour s 2 IR, on note O^f;q (s) l'ensemble des series f^q = Pn1 an ,q,(qx(+x)n) telles qu'il existe C et A > 0 tels que : 8n 0; jan+1j < C jpj sn n j,q (n + 1)jAn et on note K^ f;q (s) = O^f;q (s) Cl [qx]. ( +1) 2
Tout operateur q 2 Cl [qx; ] opere sur K^ f;q (s) : pour k et j 2 IN,
k
< qx >j f^q
= =
X
+k X jX
n1 i=0 jX +k
,q (x) 1) anq(j,n,i)(j+k,i) , ,(jq (,j ,n n++1 , i) , (x , j + n + i)
X
i=0 n1,j +i
q
q
n + 1 + i) ,q (x) an+j,i q,n(j+k,i) ,q,(,(, n + 1) , (x + n) q
q
min(j +X k;n,1+j ) , n + 1 + i) : q (x) = bn , (x + n) avec bn = an+j,i q,n(j+k,i) ,q,(,(, q q n + 1) n1,j i=0 Si f^q 2 O^f;q (s), alors pour N 2 IN assez grand, PnN bn ,q,(qx(+x)n) 2 O^f;q (s) : Pn1 bn ,q,(qx(+x)n) 2 O^f;q (s). Donc k < qx >j f^q , Pn1 bn ,q,(qx(+x)n) 2 Cl [qx].
63
Soit O^f;q (s)(q) le sous-espace de O^f;q (s) tel que q (O^f;q (s)(q)) O^f;q(s).
Theoreme 6.2.1 : Soit q 2 Cl [qx; ]. Soient s 2 IR et = 1=s pour s 6= 0, = 1 pour s = 0. L'operateur q : K^ f;q (s) ,! K^ f;q (s) est de Fredholm, d'indice egal a q;s(q ) = ,q , ordo1 (); L'operateur q : O^f;q (s)(q ) ,! O^f;q(s) est de Fredholm, d'indice egal a +q;s(q ) = ,ordo1 () , dq . Demonstration : Soit f^q = Pnn an ,q,(qx(+x)n) 2 K^ f;q (s) (n0 2 ZZ) : sa transformee de q -Mellin
formelle IMq (f^q ) = Pnmax(n ,1;0) ,qa(nn+1) (tq; q)n appartient a Cl~ q;s[[t]] et IMq (K^ f;q (s)) =Cl~ q;s[[t]]. Le diagramme IMq x ^ 0 ,! Cl [q ] ,! Kf;q (s) ,! Cl~ q;s[[t]] ,! 0 q # q # # M^ q (q) 0 ,! Cl [qx] ,! K^ f;q (s) ,! Cl~ q;s[[t]] ,! 0 IMq etant commutatif, q : K^ f;q (s) ,! K^ f;q (s) est de Fredholm, d'indice egal a la somme de l'indice de q : Cl [qx] ,! Cl [qx] plus celui de IMq (q) :Cl~ q;s[[t]] ,! Cl~ q;s[[t]], d'ou le resultat. 0
+1
0
L'indice de q : O^f;q (s)(q) ,! O^f;q (s) s'etablit comme dans le prec edent paragraphe et + ^ ^ est egal a q;s(q ) = ,ordo1 () , ds ou ds = dim Of;q (s)=Of;q (s)(q ) = dq .
7. Transformee de q-Laplace formelle 7.1. De nitions Pour Re(x) > 0 et n 2 IN,
1 = Z +1 e,tx tn dt: xn+1 ,(n + 1) 0
Plus generalement, A. Barkatou et A. Duval de nissent une transformee de Laplace formelle : X X f^(x) = anx,(+n+1) ,! ^(z) = ,( +ann + 1) z+n: n0 n0 Pour de nir uneR transformee de q-Laplace formelle, nous allons donner un q-analogue de la relation ,(x) = 01 e,ttx,1dt. Pour Re(x) > 0 et 0 < q < 1, ,q (x) = (q; q)1(1 , q)1,x 64
1 q nx X : n=0 (q ; q )n
Or
(q;q)1 (q;q)n
= (qn+1; q)1 donc pour Re(x) > 0 (1 , q),xqn(x,1)(qn+1; q)1qn ,q (x) = (1 , q) P1 n =0 q n x, n+1 n P1 qn x,1 qn n = P1 n=0 (1,q)x, (q ; q )1 q = n=0 ( 1,q ) ( 1,q q (1 , q ); q )1q (
1)
1
et
Z
,q (x) =
En particulier, ,q (n + 1) = Z qx 0
R
0
1
,q tn (tq (1
1
0
1
1 (1
,q ) n Exp
1
,q x,1 t (tq(1
, q); q)1dq t:
, q); q)1dq t: Par le changement de variable t 7! qx :
q (,qq
x)d
qt = q
,x(n+1) ,
q (n + 1)
ou Expq (x) = (,(1 , q)x; q)1 pour jqj < 1. Il est donc naturel de de nir une transformation de q-Laplace formelle par Z q,,xq LLq (F^q )(x) = F^q ()Expq (,qx+1)dq t 1
0
et alors
q,x(n+1),q (n + 1) = LL(n )(x): De nition 7.1.1 : Soit f^q (x) = Pn0 an q,x(+n+1). Sa transformee de q-Laplace formelle est la serie X an z+n : LLq (f^q )(z) = , ( + n + 1) q n0 P P Remarque : Soit f^q (x) = n0 anq ,x(n+1) 2 q ,xCl [[q ,x]] et F^q (x) = LLq f^q = n0 ,q (ann+1) z n 2 Cl [[z ]]. Comme ,q (n + 1) = (1(q,;qq))nn : Si jqj < 1 : ; q)1 : ,q (n + 1) = (q(nq+1; q;)q1) (1 ,1 q)n n!+1 (1(q, q)n 1 Si jqj > 1 : n n, 1 = (p; p)1 (,1)n q n n 1 ,q (n + 1) = (p; p)n (,q)nq (1 , q)n (pn+1 ; p)1 (1 , q)n n!+1 (1(p;,p)q1)n (,1)nq n n : Donc LLq : q,xCl [[q,x]]q;s ,! Cl [[z]]q;s si jqj < 1 et LLq : q,xCl [[q,x]]q;s+1 ,! Cl [[z]]q;s si jqj > 1. (
2
1)
( +1) 2
( +1) 2
De nition 7.1.2 : Soit q 2 Cl [qx; ]. Sa transformee de q-Laplace1,formelle est q 1 , 1 x l'operateur Lq 2 Cl [z ; p; q] image de q par la correspondance q 7! z 1,q , 7! pp. 65
Remarque : LLq (qx ) = qx = pqx.
1 1,q p z 1,q p
=
p 1 1,q z (p
, 1) = p 1z p 11,,qq = p2p 1z 11,,qq = LLq (pqx) et
Remarque : De nissons formellement la transformee de q-Laplace formelle par la q -integrale (jqj < 1)
f^q (x) =
Z
1
qx (1,q)
0
X F^q ()((1 , q)qx+1; q)1dq = ql,xF^q 1
l=0
ql,x 1,q
(ql+1; q)1:
Alors f^q(x) = P1l=0 ql,x,1F^q ( ql1,,x,q )(ql+1; q)1 = p P1l=0 ql,xp(F^q )( q1l,,qx )(ql+1; q)1 = LLq (pp(F^q )) et ql,x q l ,x l+1 LLq ( 1 11,,qq (F^q)) = P1 l=0 (F^q ( 1,q ) , F^q ( 1,q ))(q ; q )1 P P l , x ql,x l q 1 l+1 = 1 l=0 F^q ( 1,q )(q ; q )1 , l=1 F^q ( 1,q )(q ; q )1 = F^q ( 1q,,xq ) + P1l=1 F^q ( q1l,,qx )(ql+1; q)1ql = qxf^q (x): 1
+1
7.2. Solutions formelles Proposition 7.2.1 : Pour tout operateur q 2 Cl [qx; ] et pour toute serie formelle P f^q (x) = n0 anq,x(+n+1), LLq (q f^q ) = LLq (q )LLq (f^q ). Demonstration : Il sut de montrer le resultat pour q = j (q x)i et f^q (x) = q ,x(+1) pour tous i; j 2 IN et 2 Cl .
Comme q f^q = q,j(,i+1)q,x(,i+1), LLq (q f^q ) = q,,q (j,,ii+1) z,i. D'autre part, LLq (f^q ) = 1 j 1 1,q i ,q (+1) z et LLq (q ) = (pp ) ( z 1,q ) . La proposition se montre alors aisement par recurrence sur i et j . The1oreme 7.2.2P: Soient q 2 Cl [qx; ], f^q (x) = Pn0 anq,x(n+1) une serie formelle en qx et g^q (x) = n0 bnq,x(n+1) q-Gevrey d'ordre 1 si jqj > 1 (resp. q-Gevrey d'ordre 0 si jqj < 1). Alors si jqj > 1, f^q est q-Gevrey d'ordre 1 ou il existe un unique s > 0 optimal tel que f^q soit q-Gevrey d'ordre s + 1 (resp. f^q est q-Gevrey d'ordre 0 ou il existe un unique s > 0 optimal tel que f^q soit q-Gevrey d'ordre s). (
+1)
Demonstration : On vP eri e P d'une part que Lq agit sur Cl [[z]]. J D'autre part, si q = j=0 Kk=0 k;j k (qx)j alors
Lq =
J X K X j =0 k=0
k;j pk pk =
1 1,q z 1 ,q
j J X K X X j =0 k=0 i=0
J X K j X = k;j pk ((1p;,p)qj,)j1 qkj z,j pk (1 , q )j j =0 k=0
k;j pk ((1p;,p)jq,)1j qkj 66
! j (,1)iz,j i,k q i
=
,k J X K jX X j =0 k=0 i=,k
k;j pk ((1p;,p)qj,)j1 qkj =
avec
i;j =
J X
J X
i=,K j =max(0;i)
min(X K;j ,i)
k=max(0;,i)
! j (,1)i+k z,j i q i+k i;j z,j qi
k;j pk ((1p;,p)qj,)j1 qkj
! j (,1)i+k i+k
et avec la convention (p; p)j,1 = 1 si j = 0. On etablit aisement que Lq est un operateur de Fredholm dans les espaces Cl [[z]]q;s. Les indices s'expriment a l'aide d'un polygone de Newton au sens q-dierences [7]; on etend la de nition aux termes de la forme zk qi avec k et i 2 ZZ. En raisonnant comme en 4.2.4, on de nit un nouveau polygone de Newton :
De nition 7.2.3 : Soit q 2 Cl [qx; ]. Son q-Laplace polygone de Newton est par de nition l'enveloppe convexe des points (,kj++; ,j ) et (j , kj,; ,j ) tels que j = 0 : : : J , , ,j = fk = 0; : : :; K jk;j = 6 0g 6= ;, kj = min ,j et kj = max ,j . Le theoreme 7.2.2 s'etablit en considerant Lq , F^q et G^q les transformees de q-Laplace formelles respectives de q, f^q et g^q .
67
References bibliographiques [1] A. Barkatou, A. Duval, Sur les series formelles solutions d'equations aux dierences polynomiales, Annal. Inst. Fourier, 44 (1994), 495-524. [2] J.-P. Bezivin, Sur les equations fonctionnelles aux q-dierences. Preprint Paris VI (1990). [3] G. Gasper, M. Rahman, Basic Hypergeometric Series. Encyclopedia of Mathematics and its Applications, G.C. Rota ed., Vol. 35 (1990). [4] W. Hahn, Uber die Funktional-dierentialgleichung f 0(z) = f (qz) und verwandte Funktionalgleichungen. Ann. Univ.Sc. Budapest, Eotvos Sect. Math. (1973), p.3-21. [5] B. Malgrange, Sur les points singuliers des equations dierentielles. L'Enseignement Mathematique, tome 20, n1-2 (1974),p. 147-176. [6] F. Naegele, Theoremes d'indices pour les equations q-dierences-dierentielles, C.R. Acad. Sci. Paris, t. 317, Serie I, p. 579-582,1993. [7] J.-P. Ramis, Theoremes d'indices Gevrey pour les equations dierentielles ordinaires. Memoirs of the American Mathematical Society n296, volume 48 (1984). [8] J.-P. Ramis, About the growth of entire functions solutions of linear algebraic q-dierence equations. Annales de la Faculte des Sciences de Toulouse. Serie 6, Vol. I,n1, 1992.
68
Chapitre 3 Un algorithme de resommation de series formelles solutions d'equations dierentielles ordinaires lineaires 1. Introduction Les solutions fondamentales formelles au voisinage de l'origine (la singularite est supposee ^etre en x = 0) d'equations dierentielles lineaires homogenes a coecients polynomiaux sont de la forme exp(Q(1=x q ))x q f^(x q ) ou Q est un polyn^ome, q 2 IN, est un nombre algebrique et f^(x) = f^0(x) + f^1(x) log(x) + + f^m (x) logm(x) 1
1
(f^0(x); : : : ; f^m(x) sont des series formelles). Toutes les informations relatives a ces solutions (en particulier les coecients des series formelles f^0(x); : : :; f^m(x)) sont donnees par le logiciel DESIR [8,19]. Les series formelles obtenues sont en general divergentes dans le cas d'une singularite irreguliere. Nous nous proposons de calculer leur somme. La theorie de la k-sommabilite et de la multisommabilite developpee par J. Ecalle, B. Malgrange et J.-P. Ramis [10,11,112] a permis une premiere mise en oeuvre d'algorithmes de calcul de la somme de series divergentes. Des methodes speci ques pour le calcul des sommes des series k-sommables ont ete elaborees [16,17], ainsi qu'un algorithme de multisommation utilisant l'acceleratrice d'Ecalle [18]. Ce dernier procede repose actuellement sur la possibilite d'obtenir une evaluation simple de cette acceleratrice dans certains cas. W. Balser preconise un procede mathematique explicite pour obtenir la somme d'une serie formelle multisommable dans le cas general [1,2,4]. Il s'agit d'une methode d'iteration de transformees de Borel puis de transformees de Laplace. Mon travail consiste, en collaboration avec J. Thomann, a transformer ce procede en un algorithme formel-numerique de calcul effectif. Apres une premiere tentative fructueuse de faisabilite (avec le processeur AXIOM et le langage FORTRAN) [9] sur l'exemple expose ci-apres, il s'agissait d'elaborer un instrument de travail souple et general base sur des speci cations informatiques simples et ecaces. Pour ce faire, la participation au projet europeen CATHODE (Computer Algebra Tools for Handling Ordinary Dierential Equations) nous a permis de degager les primitives informatiques necessaires a la realisation de l'algorithme de Balser en les integrant aux autres primitives de nies dans ce groupe de travail. 69
Ainsi, nous utilisons d'une part les polyn^omes d'Ore implantes par M. Bronstein pour representer une serie formelle, soit par une equation aux dierences dont est solution la suite des coecients generant cette serie, soit par une equation dierentielle admettant cette serie comme solution. Nous avons d'autre part besoin des primitives graphiques elaborees par C. Dicrescenzo et F. Jung dans le logiciel Compas et par F. Jung dans sa these [14; 15], pour pouvoir visualiser a tout moment les resultats, changer de chemin d'integration, etc. L'un des exemples sur lequel nous allons illustrer notre travail est le suivant. Considerons l'equation de Ramis-Sibuya [13]
Dy = 4x + 2x2 + 10x3 , 3x4 ou D est l'operateur dierentiel
d2 + x2(4 + 5x2 , 2x3) d + 2(2 , x + x2): D = x5(2 , x) dx 2 dx La serie formelle f^(x) = Pn0 anxn ou ( a2p = (2p)! a2p+1 = ,(2p + 1)! + (,1)pp! est formellement solution de l'equation dierentielle.
2. Resultats theoriques 2.1. Notations Nous reprenons les notations utilisees par W. Balser [1]. Un secteur de la surface de Riemann du Logarithme est un ensemble de la forme S = S (d; ; ) = fx = rei j 0 < r < ; d , 2 < < d + 2 g ou d 2 IR, > 0, > 0 ou = +1. Un secteur ferme est un ensemble de la forme S = S(d; ; ) = fx = rei j 0 < r ; d , 2 d + 2 g ou d 2 IR, 0, > 0. L'algebre dierentielle Ak (S ) (k > 0) est l'ensemble des fonctions f analytiques dans le secteur S et admettant une serie formelle f^ = Pn0 anxn comme developpement asymptotique d'ordre k, c'est-a-dire : 8S1 S; 9C; K > 0; 8N 2 IN; 8x 2 S1; jrf (x; N )j CK N , 1 + Nk 70
ou rf (x; N ) = x,N (f (x) , PNn=0,1 anxn). Notation : f (x) =k f^(x) dans S .
2.2. La k-sommabilite et la multisommabilite Nous ne donnons ici que les notions qui seront utiles par la suite. Pour davantage de renseignements, se reporter par exemple a [3,10,11,12].
De nition 2.2.1 : Soient k > 0, d 2 IR et f^ 2 Cl [[x]]. La serie formelle f^ est ksommable dans la direction d s'il existe un secteur S = S (d; ; ) d'ouverture > k et une fonction f 2 Ak (S ) tels que f (x) =k f^(x) dans S . La fonction f est unique et est appelee la somme de f^. L'ensemble des series k-sommables dans la direction d est note Cl fxgk;d.
De nition 2.2.2 : Soient k1 > k2 > : : : > kr > 0 et d 2 IR une direction issue de l'origine. La serie formelle f^ est (k1; : : : ; kr )-sommable dans la direction d si elle s'ecrit sous la forme f^ = f^1 + + f^r avec f^l 2 Cl fxgkl;d pour l = 1; : : : ; r. La somme de f^, de nie sur un secteur bissecte par d et d'ouverture > k , est alors egale a f1 + + fr ou fl est la somme de f^l dans la direction d (l = 1; : : : ; r). 1
Remarque : Les series f^l(x) peuvent ^etre eventuellement rami ees (series en x m , m 2 IN ). Une serie formelle rami ee f^(x m ) 2 Cl [[x m ]] est dite (k1; : : : ; kr )-sommable dans la direction d si la serie f^(x) 2 Cl [[x]] est (mk1; : : :; mkr )-sommable dans la direction md . 1
1
1
Si une serie est (k1; : : :; kr )-sommable dans la direction d, alors elle l'est dans les directions d + 2k, k 2 ZZ. Une serie formelle est (k1; : : :; kr )-sommable si elle est (k1; : : :; kr )-sommable dans toutes les directions sauf en un nombre ni de directions (modulo 2), appelees directions singulieres.
Theoreme 2.2.3 (J.P. Ramis) : Soit f^ 2 Cl [[x]] une serie formelle solution de l'equation dierentielle lineaire ordinaire a coecients polynomiaux D(f^) = 0. On suppose que le polyg^one de Newton de l'operateur D admet r pentes strictement positives k1 > k2 > : : : > kr > 0. Alors f^ est (k1; : : : ; kr )-sommable. De plus, la somme de f^ dans une direction non singuliere d est solution de l'equation dierentielle D(f ) = 0. Remarque : Si le polygone de Newton n'a qu'une pente strictement positive k , alors f^(x) est k-sommable. Exemple de Ramis-Sibuya : On se ramene a une equation dierentielle homogene en derivant 1=(4x +2x2 +10x3 , 3x4)Dy = 1. La serie formelle f^(x) est alors solution de l'equation D0y = 0
71
ou D0 est l'operateur
d3 + (,16x3 + + 12x9 ) d2 D0 = (8x6 + 18x8 , 16x9 + 3x10) dx 3 dx2
d + (,16 + + 12x5 ): +(16x + + 6x8) dx Le polygone de Newton associe a l'operateur D0 est represente sur la gure 1.
O
2 ,1 , ,
Figure 1 : Polygone de Newton associe a D0 La serie formelle f^(x) est par consequent (2; 1)-sommable. Remarque : Il n'est pas necessaire de se ramener a une equation homogene pour conna^tre les pentes strictement positives du polygone de Newton, et donc les reels de nissant la multisommabilite. Ces pentes > 0 sont en eet les m^emes que celles du polygone de Newton associe a D car : Multiplier un operateur par un polyn^ ome de valuation l 2 IN a pour eet de translater le 2 polygone de Newton : (u; v) 2 IR ! (u; v + l); Diviser un operateur par un polyn^ome de valuation l 2 IN a pour eet de translater le polygone de Newton : (u; v) 2 IR2 ! (u; v , l);
Deriver un operateur ((a dxdii ! a0(x) dxdii + a(x) dxdii ) a pour eet de translater le polygone de Newton :(u; v) 2 IR2 ! (u + 1; v , 1). Lemme P2.2.4 : Soient k > 0 et d 2 IR une direction issue de l'origine. Soit f^(x) = n0 anxn 2 Cl fxgk;d. On suppose que a0 = 0. La serie formelle x,1f^(x) est alors k-sommable dans la direction d. Demonstration : Soient S = S (d; ; ) ( > =k) et f 2 Ak (S ) tels que f (x) =k f^(x) dans S . +1
+1
Soit g^(x) = x,1f^(x) = Pn0 an+1xn . On va montrer que g(x) = x,1f (x) admet g^(x) comme developpement asymptotique d'ordre k dans S . 72
Soit S1 S : il existe C; K > 0 tels que pour tout N 2 IN et pour tout x 2 S1, jrf (x; N )j CK N ,(1 + Nk ). Or r (x; N ) = x,N g(x) , PN ,1 a xn = r (x; N + 1) g
n=0 n+1
f
donc pour tout S1 S , il existe C; K > 0 tels que pour tout N 2 IN et pour tout x 2 S1 : + Nk+1 ) jrg (x; N )j CKK N , 1 + Nk ,(1 ,(1 + Nk ) Or ,(1 + Nk+1 ) N k ,(1 + Nk ) k ~ K~ > 0 (dependantes et pour N > 0, ( Nk ) k k, k (exp( k1 ))N . Il existe donc deux constantes C; de S1) telles que 8N 2 IN, 8x 2 S1, jrg(x; N )j C~ K~ N ,(1 + Nk ): Lemme 2.2.5 : Soient k > 0 et d 2 IR. Soit f^(x) = Pn0 anxn 2 Cl fxgk;d. On suppose que a0 = a1 = : : : = aq,1 = 0 (q 2 IN). La serie formelle x,q f^(x) est alors k-sommable dans la direction d. 1
1
1
Demonstration : Pour q = 1, il s'agitP du lemme precedent. Supposons que ce lemme soit veri e jusqu'a l'entier q. Soit f^(x) = n0 an xn 2 Cl fxgk;d telle que a0 = a1 = : : : = aq = 0. D'apres l'hypothese de recurrence, la serie formelle g^(x) = x,q f^(x) 2 Cl fxgk;d. Or le terme constant de g^(x) est nul. En utilisant le lemme 2:2:4, la serie x,1g^(x) = x,(q+1)f^(x) 2 Cl fxgk;d. . Soit f^(x) = P a xnq 2 Cl fxg . Lemme 2.2.6 : Soient k > 0 , d 2 IR et q 2 IN k;d n0 n Alors la serie g^(x) = Pn0 anxn est kq - sommable dans la direction qd. Demonstration : Soient S = S (d; ; ) ( > =k) et f 2 Ak (S ) tels que f (x) =k f^(x) dans S . Considerons le secteur S~ = fx 2 Cl jx q 2 S g = S (qd; q; q) d'ouverture q > k~ (k~ = kq ). Soit 1
g(x) = f (x q ) : g(x) est analytique dans S~. Soit S~1 S~. Soit S1 = fx 2 Cl j xq 2 S~1g. Il existe C; K > 0 tels que pour tout N 2 IN et pour tout x 2 S~1 : jrg (x; N )j = jrf (x q ; Nq)j CK Nq, 1 + Nqk = C (K q )N , 1 + Nk~ Lemme 2.2.7 : Soient 2 IN et f^(x) =PPn0 anxn une serie formelle k-sommable. Soient q 2 IN (0 q , 1) et f^q (x) = n0 an+q xn . Soit = 2 . Si d; d + ; : : :; d + ( , 1) sont des directions non singulieres pour f^(x), alors les series f^q (x) sont k -sommables dans la direction d. 1
1
73
Demonstration : Soit g^q (x) = Pl=0,1 e,iql f^(xeil ) = Pn0 (Pl=0,1 e,il(n,q))an xn .
Soit n = Pl=0,1 e,il(n,q) = Pl,=0,1n(e,,q i(n,q))l. Si e,i(n,q) =P1, c'est-a-dire n = q+m ou m 2 IN, alors n = . Sinon, n = 11,,ee, n,q = 0. Donc g^q (x) = m0 aq+mxq+m = xq f^q (x). i (
i (
)
)
La serie formelle f^(x) est k-sommable dans la direction d. Etant egalement k-sommable dans la direction d + , la serie f^(xei ) est egalement k-sommable dans la direction d. De m^eme, pour l = 0; : : : ; , 1, les series f^(xeil) sont k-sommables dans la direction d. Donc g^q (x) 2 Cl fxgk;d. D'apres le lemme 2:2:5, la serie x,q g^(x) est k-sommable dans la direction d. Le lemme 2:2:6 permet alors de conclure.
2.3. Methode des transformees de Laplace iterees (W. Balser) Nous allons donner maintenant un procede explicite qui va nous permettre de calculer la somme d'une serie multisommable. Dans le cadre particulier de la k-sommabilite, la de nition 2.2.1 est equivalente a :
De nition 2.3.1 : Soient k > 0 et d 2 IR. La serie formelle f^(x) est k-sommable dans la direction d si sa transformee de Borel formelle ^ = B^k (f^) d'ordre k (de nie par B^k (x)(t) = t,k =,( k )) est convergente et si sa somme se prolonge analytiquement en une fonction holomorphe et a croissance exponentielle d'ordre au plus k sur un secteur ouvert bissecte par d. Alors Z f (x) = (t) exp(,( xt )k )d(tk ) d
est la somme de f^ dans la direction d, au sens de la k-sommabilite. Proposee par W. Balser [1,2,4], la methode de calcul de la somme d'une serie multisommable repose sur le principe des transformees de Laplace iterees (et de Borel iterees) et decoule de la proposition suivante :
Proposition 2.3.2 : Soient k1 > : : : > kr > 0 (r 2) et d 2 IR. Soit f^(x) une serie formelle. Les conditions suivantes sont equivalentes : (i) La serie formelle f^(x) est (k1 ; : : :; kr )-sommable dans la direction d (ii) Soient k~1 ; : : :; k~r,1 > 0 de nis par 1=k~j = 1=kj+1 , 1=k1 , j = 1; : : : ; r , 1. La serie formelle ^ = B^k (f^) est (k~1; : : :; k~r,1 )-sommable dans la direction d. De plus, la somme de ^ peut ^etre prolongee analytiquement sur un petit secteur bissecte par d et de rayon in ni sur lequel elle a une croissance exponentielle d'ordre au plus k1 . 1
Par recurrence, W. Balser en deduit le theoreme :
Theoreme 2.3.3 (W. Balser) : Soit f^ une serie (k1; : : : ; kr )-sommable. Soit d une direction non singuliere. Soient 1; : : :; r > 0 de nis par 1=1 = 1=k1 et 1=j = 74
1=kj , 1=kj,1 , j = 2; : : : ; r. La somme de f^ dans la direction d est egale a L :d : : : Lr :dS B^r : : : B^ f^ 1
1
ou :d est le prolongement analytique le long de d, S est la somme de la serie formelle convergente, B^ est la transformee de Borel formelle d'ordre (B^(x)(t) = ,(t,) ) et R L est la transformee de Laplace d'ordre (L (f )(x) = d f (t) exp(,( xt ))d(t)). De nition 2.3.4 : Soient 1; : : :; r > 0. Soient k1 > : : : > kr de nis successivement par 1=k1 = 1=1 et, si r 2, par :
1 = 1 + 1 ; l = 2; : : : ; r kl l kl,1 Une serie formelle est (1; : : : ; r) , iL sommable si elle est (k1; : : :; kr )-sommable.
La notation "iL" (pour "iterated Laplace") signi e que les reels 1; : : : ; r sont les ordres des transformees de Laplace iterees.
Theoreme 2.3.5 : Soient 1; : : : ; r > 0 (r 2). Si g^(x) est (1; : : :; r ) , iL sommable dans la direction d 2 IR alors la transformee de Borel formelle B^ (^g) est (2; : : :; r ) , iL sommable dans la direction d. 1
Demonstration : La serie formelle B^ (^g) est (k~1 ; : : :; k~r,1)-sommable dans la direction d (proposition 2.3.2.), c'est-a-dire (~1; : : :; ~r,1) , iL sommable ou ~j = j+1 (j = 1; : : : ; r , 1). 1
Pour calculer la somme d'une serie formelle f^(x) (1; : : : ; r ) , iL sommable on procede donc de la facon suivante. Posons f^1 = f^, et f^j+1 = B^j (f^j ) pour j = 1; : : :; r , 1. Chaque serie formelle f^j+1 est (j+1 ; : : :; r ) , iL sommable (theoreme 2:3:5). La serie f^r etant (r ),iL sommable, c'est-a-dire r -sommable, sa transformee de Borel d'ordre r f^r+1 = B^r (f^r ) (dernier niveau) est convergente a l'origine et peut ^etre prolongee analytiquement le long d'une direction non singuliere d en une fonction holomorphe a croissance exponentielle d'ordre au plus r sur un secteur bissecte par d (de nition 2.3.1). En iterant les transformees de Laplace
Z
fj (x) = Lj (fj+1)(x) = fj+1(t) exp ,( xt )j d(tj ) d
et en remontant dans les plans de Borel (c'est-a-dire en passant du niveau j = r jusqu'au niveau j = 1), nous obtenons la somme f1(x) = f (x) de f^(x) sur un secteur convenable bissecte par d. L'algorithme formel calcule les transformees de Borel formelles d'ordre rationnel j et donne une equation dierentielle dont est solution chaque serie formelle f^j pour j = 2; : : : ; r + 1. 75
Le prolongement analytique de chaque fonction fj est realise par des methodes d'integration numeriques (methode de Runge-Kutta par exemple) a partir de conditions initiales donnees par l'integrale Z fj+1(t) exp ,( xt )j d(tj ) d et calculees par des quadratures de Gauss-Laguerre (ce sont des conditions initiales numeriques). La fonction fj+1 a ete precedemment calculee par la m^eme methode, exception faite du dernier niveau pour lequel les conditions initiales a partir desquelles est eectue le prolongement analytique se lisent directement a partir des coecients de la serie formelle convergente f^r+1 et sont donc exactes. La gure 2 decrit le procede des transformees de Laplace iterees (C.I.F., resp. C.I.E., signi e Conditions Initiales Floues, resp. Conditions Initiales Exactes).
f^ = f^1 B^
(
D
D + C:I:F: -
D
D + C:I:F: -
f1 = f 6L f2
f^j D B^j ? ( f^j+1 D
D + C:I:F: -
fj
D + C:I:F: -
fj+1
f^r D B^r ? ( f^r+1 D
D + C:I:F: -
fr
D + C:I:E: :d
fr+1
1
f^2
(?
(?
(?
1
6
6Lj 6 6Lr
Figure 2 : Transformees de Laplace iterees La precision doit ^etre contr^olee a chaque niveau. En eet, les fonctions fj sont solutions d'equations dierentielles (les m^emes que celles dont sont solutions les series formelles f^j (x)), determinees exactement a partir d'algorithmes formels. Mais les conditions initiales sont calculees par des algorithmes numeriques (sauf pour le dernier niveau). 76
2.4. Polyn^omes d'Ore Nous avons besoin d'outils de bases pour implanter la partie formelle de l'algorithme de Balser, a n de calculer des transformees de Borel de series formelles, des transformees de Mellin d'operateurs aux dierences pour obtenir les equations dierentielles dont sont solutions les transformees de Borel a chaque niveau. Plus generalement, nous avons besoin d'outils permettant d'eectuer des operations algebriques elementaires, des homographies, des rami cations et des factorisations sur les operateurs dierentiels ou aux dierences. Les operateurs dierentiels et aux dierences peuvent ^etre interpretes comme des polyn^omes d'Ore non commutatifs. L'algebre des polyn^omes d'Ore a ete implantee en Axiom et A# par M. Bronstein, en Maple par T. Mulders, pour un endomorphisme et une application : k ! k tels que (a + b) = a + b et (ab) = (a)(b) + (a)b pour tous a; b 2 k (k est un corps). Si x est une indeterminee sur k, l'anneau des polyn^omes d'Ore est l'anneau, note k[x; ; ], des polyn^omes en x a coecients dans k, muni de l'addition usuelle; la multiplication est de nie par xa = (a)x + a (a 2 k), etendue aux mon^omes par (axn)(bxm) = (axn,1)((b)xm+1 + bxm) (n > 0; a; b 2 k) et aux polyn^omes par X X XX i j ( aixi)( bj xj ) = (ax )(bj x ): i
j
i
j
Nous allons a present voir comment on peut faire agir les polyn^omes d'Ore sur un corps k ou une extension de corps de k (pour de plus amples details et pour les demonstrations, on se reportera a [6]). Soit V un espace vectoriel sur k.
De nition 2.4.1 : Un application : V ! V est dite k-pseudo lineaire relativement a et si : 8u; v 2 V; a 2 k, (
(u + v) = u + v (au) = (a)u + au Lemme 2.4.2 : Toute application k-pseudo lineaire est Const; (k)- lineaire, ou Const; (k) = fa 2 kj(a) = a; a = 0g.
Soit une application k-pseudo lineaire. On peut faire agir les polyn^omes d'Ore sur V par l'application : kP[x; ; ] V ! P V ( ni=0 aixi ; u) 7! ni=0 aii u Lemme 2.4.3 : Si K est une extension de corps de k compatible avec k, pour tout c 2 K , l'application c : K ! K de nie par ca = c(a) + a est Const;(K )-lineaire et 77
K -pseudo lineaire. Si c = 0 , = 1 et si est un operateur de derivation D, ca = Da. Si c = 1, = 0 et si est l'operateur de translation , ca = a. Tout operateur dierentiel lineaire ordinaire dont les coecients sont des fractions de polyn^omes en et a coecients dans un anneau R peut se mettre sous l'une des formes canoniques suivantes : Pqi=0 ai()( dd )i Pq b ()i ou est l'operateur d'Euler = d
i=0 i Pq ( d )i ( ) i=0 d i Pq i () i=0 i
d
Les deux premiers operateurs peuvent ^etre consideres respectivement comme des elements des anneaux d'Ore k[x; 1;0 ] (resp. k[x; 1; ]) ou 0 = dd . Les deux derniers operateurs peuvent egalement ^etre consideres comme des polyn^omes d'Ore, mais dont les coecients sont a droite. Nous pouvons egalement de nir des formes canoniques pour des operateurs aux dierences. Tout operateur lineaire aux dierences dont les coecients sont des polyn^omes en j a coecients dans un anneau R peut se mettre sous l'une des formes canoniques suivantes : Pri=0 Pql=0 ai;lj l i ou est l'operateur de translation de pas +1 Pri=0 Pql=0 bi;lj li ou est l'operateur , 1 Pri=0 Pql=0 i;l ij l Pri=0 Pql=0 i;li < j >l ou < j >l= j (j + 1) : : : (j + l , 1) l > 0 et < j >0= 1 La premiere forme est utilisee pour de nir le -polygone de Newton, la deuxieme pour de nir le -polygone de Newton [5]. La transformee de Mellin d'unPoperateur ecrit sous la troisieme P q r forme la quatrieme forme) est l'operateur dierentiel i=0 l=0 i;li l (resp. Pr P(resp. q (,1)l i+l ( d )l ). i;l i=0 l=0 d
3. Outils formels A chaque niveau de l'algorithme nous aurons besoin de scinder des series formelles, de conna^tre leur transformee de Borel formelle et de chercher des equations dierentielles. Toutes ces operations vont ^etre eectuees par des algorithmes formels.
78
3.1. De nition du concept de serie formelle
Une serie formelle f^(x) = Pj0 aj xj est de nie des que les coecients (aj )j0 le sont. Nous nous placons dans le cadre des equations aux dierences nies; la suite des coecients (aj )j0 est solution d'une equation aux dierences nies a coecients polynomiaux de la forme : ( Pr (j )aj+r = 0 ; j () Pa 0;(:j:):;aja+ +donn es 0 m,1 ou P0(j ); : : : ; Pr (j ) sont des polyn^omes en j a coecients algebriques; r 2 IN est le degre de l'equation aux dierences, 2 IN, m = +r et a0; : : :; am,1 sont les premiers termes algebriques de la suite (egalement appeles conditions initiales). Nous supposons de plus que P0(j ) et Pr (j ) ne sont pas identiquement nuls. Si Pr (j ) n'admet pas de zero entier superieur ou egal a , chaque coecient aj peut ^etre calcule exactement et l'equation () represente la serie formelle f^(x). Premiere remarque : Cette de nition nous permet de donner plus de conditions initiales que les r necessaires. S'il existe j0 2 IN tel que Pr (j0) = 0, le coecient aj +r ne peut pas ^etre calcule a partir de l'equation aux dierences. Il est donc interessant de pouvoir donner davantage de premiers termes (les j0 + 1 + r premiers) a n de n'utiliser l'equation aux dierences qu'a partir de j j0 + 1. 0
Seconde remarque : Une serie formelle du type precedent ( = m , r > 0) peut aussi s'ecrire
(
0:a0 + : : : + 0:aj+,1 + P0 (j + )aj+ + + Pr (j + )aj++r = 0; j 0 a0; : : : ; am,1 donnes
Nous aurions donc egalement pu de nir les series formelles par des equations aux dierences de la forme ( 0(j )aj + + Qr (j )aj +r = 0 ; j 0 () Q a ; : : : ; a donnes 0
r ,1
Le coecient Q0(j ) peut dans ce cas ^etre identiquement nul.
3.2. Passage d'une equation aux dierences a une equation dierentielle puis a un systeme dierentiel Pour calculer le prolongement analytique par une methode de quadrature de type Runge-Kutta d'une fonction f (x) le long d'une direction d nous avons besoin de conna^tre une equation dierentielle dont est solution f (x). Si f (x) est la somme d'une serie formelle multisummable f^(x) dont nous savons qu'elle est solution formelle d'une equation dierentielle, alors f (x) est egalement solution de cette equation. Il nous reste donc a determiner une equation dierentielle satisfaite par une serie formelle de nie par une equation aux dierences. 79
Considerons une serie formelle f^(x) representee par l'equation aux dierences ( Pr (j )aj+r = 0 ; j () Pa 0;(:j:):;aja+ +donn es 0 m,1 ou Pi (j ) = Ppl=0 i;lj l; i = 0; : : : ; r; 2 IN et m = + r. Soit Dt la transformee de Mellin formelle de l'operateur aux dierences : p r X l X Dt = i;l ,t dtd ti; t = x1 i=0 l=0 et Dx = Pri=0 Ppl=0 i;l(x dxd )lx,i: On etablit aisement que Dx(f^) = Pl=,,1r pl xl, les coecients pl dependants des conditions initiales a0; : : :; am,1. En utilisant l'identite (x dxd )lx,i = x,i(,i + x dxd )l nous obtenons l'equation dierentielle a coecients polynomiaux suivante : p r X ,1 l mX X r,i;lxi i , r + x dxd f^ = pl,r xl i=0 l=0
l=0
La methode de Runge-Kutta que nous utilisons pour eectuer le prolongement analytique integre un systeme dierentiel d'ordre 1 d'une variable reelle. Considerons l'equation dierentielle p X Pl(x)y(l)(x) = Q(x) l=0
ou P0(x); : : :; Pp (x); Q(x) sont des polyn^omes. Supposons que l'on veuille calculer f (x), solution de cette equation dierentielle, le long de la courbe (t). Posons y1(x) = y(x); y2(x) = y0(x); : : :; yp(x) = y(p,1)(x) (les derivees etant prises par rapport a x) et z1(t) = y1( (t)); : : :; zp(t) = yp( (t)). Pour l = 1; : : :; p , 1,
d (z (t)) = 0(t)z (t) l+1 dt l et ,1 P ( (t))z (t) d (z (t)) = 0(t) Q( (t)) , Ppl=0 l l+1 : dt p Pp ( (t)) Le long de la courbe (t), la fonction f (x) veri e le systeme dierentiel d'ordre 1 en la variable t suivant : 20 10 1 0 0 13 0 z (t) 1 0 1 0 0 : : : : : : z ( t ) 66BB 0 CC B z1(t) C BB 0 CC77 BB z12(t) CC 0 1 0 0 : : : 6B CB 2 C B C7 BB : : : CCC 0 66BB : : : : : : : : : : : : : : : : : : CC BBB : : : CCC BB : : : CC77 dB CB C7 = (t): 66B C+B dt B BB : : : CCC 66BBB :0: : :0: : : 0: : :0: : :0: : : 1: : CCC BB : : : CC BBB :0: : CCC777 @ zp,1(t) A 4@ P ( (t)) A @ zp,1(t) A @ Q( (t)) A5 P (
( t )) p , zp(t) zp(t) , Pp( (t)) : : : : : : : : : : : : , Pp ( (t)) Pp ( (t)) 1
0
80
3.3. Scindage d'une serie formelle
La transformee de Borel formelle de niveau d'une serie formelle f^(x) = Pj0 aj xj , representee par l'equation aux dierences ( Pr (j )aj+r = 0 ; j () Pa 0;(:j:):;aja+ +donn es 0 m,1 j xj , . La pr est de nie par ^() = P ,(aj= esence de la fonction , nous emp^eche de pouvoir ) de nir la suite (aj =,(j=)) par une equation aux dierences polynomiale. Nous sommes ainsi amenes a scinder prealablement la serie formelle f^(x). Soit 2 IN, 6= 0. Soient q 2 IN, 0 q , 1 et f^q (x) = Pj1 aj+q xj (q-ieme sousserie associee a f^(x)) : f^(x) = (a0 + f^0(x)) + + x,1(a,1 + f^,1(x)) Comme nous allons le voir, chaque sous-serie f^q (x) peut ^etre de nie par une equation aux dierences nies a coecients polynomiaux (q) d'ordre rq r. Si f^(x) etait representee par une equation aux dierences de la forme Q0(j )aj + Q1(j )aj+ + + Qr(j )aj+r = 0 alors chaque equation aux dierences Q0(j + q)aj+q + Q1(j + q)a(j+1)+q + + Qr(j + q)a(j+r)+q = 0 de nirait la q-ieme sous-serie (les conditions initiales etant calculees a partir des premiers termes de f^(x) et de son equation aux dierences associee). Il nous reste donc a donner un algorithme permettant de passer formellement d'une equation aux dierences de la forme P0(j )aj + + Pr (j )aj+r = 0 a une equation donnant tous les termes. Considerons le systeme (Sinit) de r( , 1) + 1 equations : ((P0(j + i)aj+i + P1(j + i)aj+i+1 + + Pr (j + i)aj+i+r = 0)i=0;:::;r(,1)) Les inconnues de ce systeme sont les termes aj+k tels que ne divise pas k, c'est-a-dire les termes aj+1; : : : ; aj+,1, aj++1; : : : ; aj+2,1, : : :, aj+(r,1)+1,: : :, aj+r,1. Il y en a r( , 1). Soit (S ) = (Sinit). Notons card(S ) le nombre d'equations de S et Si la i-ieme equation de (S ) (i = 1; : : : ; card(S )).
Algorithme : (S ) := (Sinit); Tant qu'on n'a pas ni faire : 81
Considerer la premiere equation S1 du systeme (S ); Chercher dans cette equation le plus petit indice k non multiple de tel que le coecient de aj+k ne soit pas identiquement nul;
Si un tel k n'existe pas, on a ni (il n'y a plus d'inconnues). Sinon :
{ Construire un nouveau systeme (Saux) a card(S ) , 1 equations en posant (Saux)l,1 := C (1; k)Sl , C (l; k)S1 ou C (1; k) est le facteur de aj+k dans S1 et C (l; k) celui dans
Sl (l = 2; : : : ; card(S )). On a elimine l'inconnue aj+k ; { (S ) := (Saux) L'equation S1 ne comporte plus d'inconnues et est de la forme Q0(j )aj + Q1(j )aj+ + + Qr(j )aj+r = 0. Premiere remarque : A chaque etape, le nombre d'equations considerees, ainsi que le nombre d'inconnues, diminue d'une unite. L'algorithme se termine en au plus r( , 1) etapes. Seconde remarque : On de nit le degre d'une equation par l'indice k le plus grand tel que le coef cient de aj+k soit non nul. Initialement, les equations de (S ) sont de degre respectivement egal a r; r + 1; : : : ; r. On montre facilement par recurrence qu'a l'etape i (i = 0; : : : ; r( , 1) , 1), les equations sont de degre r + i; r + i + 1; : : : ; r. L'equation S1 n'est donc pas egale a 0 = 0.
Les sous-series obtenues sont egalement multisommables :
Theoreme 3.3.1 : Supposons que f^(x) est (1; : : :; r ) , iL sommable. Soient 2 IN et f^0(x); : : :; f^,1(x) les sous-series. Alors chaque sous-serie f^q (x) est (1=; : : : ; r =) , iL sommable. De plus, si d 2 IR est tel que d; d + ; : : : ; d + ( , 1) sont des directions non singulieres pour f^(x) ( = 2=), alors d est une direction non singuliere pour les sous-series. Dans un secteur bissecte par d, la somme f (x) de f^(x) est egale a f (x) = (a0 + f0(x)) + x(a1 + f1(x)) + + x,1(a,1 + f,1(x)) Demonstration : On decompose la serie f^(x) en une somme de series f^l (x) kl -sommables (k1 = 1 et 1=kl = 1=l + 1=kl,1 , l = 2; : : :; r). La q-ieme sous-serie associee a f^(x) est egale a la somme sur l des q-iemes sous-series associees a chaque f^l(x). On conclut en utilisant le lemme 2:2:7 pour chaque serie f^l(x) (le lemme 2:2:7 est egalement veri e si les series f^l(x) sont rami ees).
Supposons que les directions singulieres de f^(x) sont donnees par di + 2m, di 2 [0; 2[, i = 1; : : : ; N et m 2 ZZ. Les directions singulieres pour les sous-series sont alors donnees par di + 2m (i = 1; : : :; N et m 2 ZZ). 82
Nous n'appliquons donc pas l'algorithme de Balser sur la serie formelle f^(x) elle-m^eme, mais sur chacune des sous-series. Si 1 est egal a (1 et 1 etant premiers entre eux), nous scindons f^(x) en 1 sous-series. Chaque sous-serie est alors (1=1 = 1= 1; : : : ; r =1) , iL sommable. 1
1
Le schema ci-dessous decrit le processus de scindage formel S^ applique a une serie formelle f^(x) (1; : : :; r ) , iL sommable (1=1 2 IN). 1
f^(x) (1; : : : ; r ) S^
?
?
f^0(x) ( ; : : :; r )
?
:::
1
1
1
?
f^ ,1 ( ; : : : ; r )
:::
1
1
1
1
1
3.4. Transformee de Borel formelle Ainsi que nous l'avons vu precedemment, nous n'avons besoin de conna^tre les transformees de Borel formelles que d'ordre 1 ou est un entier strictement positif. Soit g^(x) = Pj1 bj xj une serie formelle representee par une equation aux dierences polynomiale (). La transformee de Borel formelle d'ordre 1 de g^(x) est la serie formelle
X j j,1= 1,1= X bj+1 xj B^1= (^g)(x) = ,(bj x = x ) (j + , 1)! j 1
j 0
Il est aise de voir que la serie formelle ^(x) = Pj0 (j b+j ,1)! xj (notee B~1= (^g)) peut ^etre de nie par une equation aux dierences nies a coecients polynomiaux (B~1= ()). +1
Theoreme 3.4.1 : Soient 1; : : : ; r > 0 avec 1 = 1= 1, 1 2 IN. Si g^(x) est (1; : : : ; r ) , iL sommable dans la direction d alors la transformee de Borel formelle B^1= (^g ) et B~1= (^g) sont (2; : : : ; r ) , iL sommables dans la direction d. 1
1
Demonstration : La serie B^ 1= (^g) est (2; : : : ; r ) , iL sommable dans la direction d (theoreme 2:3:5). Par suite, B~1= (^g) l'est aussi. 1
1
Le schema suivant decrit la transformation de Borel formelle appliquee a une serie formelle (1; : : :; r ) , iL sommable ( 11 = 1). 83
g^(x) (1; : : :; r )
B~1=
-
1
^(x) (2; : : : ; r )
Remarque : De facon generale, le degre des coecients de l'equation aux dierences de nissant (B~1= ()) augmente. En d'autres termes, l'equation dierentielle associee (cf 3.2.) est d'ordre plus eleve.
3.5. Transformees de Borel iterees Soit f^(x) une serie formelle solution d'une equation dierentielle a coecients polynomiaux dont le polygone de Newton a deux pentes k1 > k2 > 0. Soient 1 = k1 et 2 = kk ,kk . La serie formelle f^(x) est (1; 2) , iL sommable. Supposons que les directions singulieres de f^(x) soient donnees par di + 2l, di 2 [0; 2[, i = 1; : : : ; N et l 2 ZZ. 1 2 1 2
Considerons les entiers strictement positifs 1; 1; 2; 2 (1 et 1 sont premiers entre eux, 2 et 2 sont premiers entre eux) de nis par 1 = et = . Soient 1 = 2 et 2 = 2 . 1
2
2
1
1
2
1
2
Soit d 2 IR une direction issue de l'origine, telle que
8i = 1 : : : N; 8l 2 ZZ; d 6= di + 2 l: 1 2
La serie formelle f^(x) est (1; 2) , iL sommable dans cette direction d. La premiere etape de l'algorithme consiste a scinder la serie formelle initiale en 1 sous-series f^0(x); : : :; f^ ,1 (x) et a calculer les transformees de Borel formelles B~ (f^q ) = ^q (x); q = 0; : : : ; 1 , 1. Comme d 6= di + 1l (8l 2 ZZ), chaque serie formelle ^q (x) est ( ) , iL sommable dans la direction 1d. 1 1
1
2
1
La seconde etape consiste a scinder chaque serie formelle ^q (x) en 2 sous-series puis a en prendre les transformees B~ . Comme 1d 6= 1di + 2l; 8l 2 ZZ , les sous-series formelles sont ( 1 ) , iL sommables, et les transformees de Borel d'ordre 1 sont convergentes et peuvent ^etre prolongees analytiquement le long de la direction 12d. 1 2
2
2
Ces deux etapes sont schematisees sur la gure 3. Premiere remarque : A chaque niveau (ou etape) nous sommes amenes a calculer l'equation dierentielle associee a chaque transformee de Borel formelle.
84
- ( ^0=(x) ) S^ ! B~ 2
f^(x) (1; 2) 1 =
1
2
-
S^ ! B~
1
1 2
2
2
1
- ^0;0(x) - ^0; ,1(x) 2
1 1
-
1
- ^ (x) ,1;0 1
- (^ ,=1(x)) S^ ! B~ 1
2
1 2
2
2
1
2
- ^ ,1; ,1 (x) 1
2
| {z } | {z } | {z } (1; 2) , iL ( = ) , iL convergentes sommable dans direction 12d sommable dans la direction d la direction 1d L'operateur S^ ! B~ applique a une serie formelle consiste a la scinder en sous-series puis a calculer la transformee de Borel formelle de chaque sous-serie : 2
2
1
2
1
- ( 1 ;g^:0:(:x;)r )
g^(x) (1; : : :; r ) 1 =
B~
- ^0(x)r
B~
- ^,1(x)r
1
( ; : : :; ) 2
S^
- ( 1g^;:,:1:(;x)r )
1
Figure 3 : Transformees de Borel iterees 85
( ; : : :; ) 2
Seconde remarque : Il est possible de voir a chaque niveau si les equations dierentielles peuvent ^etre factorisees ou s'il existe des solutions connues (sous forme exacte). Troisieme remarque : L'algorithme se generalise aisement a un nombre quelconque de niveaux. Mais la complexite de l'algorithme augmente tres vite en pratique : le nombre de series formelles a considerer augmente et en general, plus il y a de niveaux, plus le degre des equations dierentielles augmente.
3.6. L'exemple de Ramis-Sibuya La serie formelle f^(x) = x + 0:x2 + 2x3 , 7x4 + 24x5 , 118x6 + 720x7 + peut ^etre representee par l'equation aux dierences ( 2 (j + j )aj + (2j 2 + 7j + 5)aj+1 + 2aj+2 + (4j + 10)aj+3 + 4aj+4 = 0 () , a0 = 0; a1 = 1; a2 = 0; a3 = 2; a4 = ,7 La serie f^(x) est (2; 1)-sommable, soit (2; 2) , iL sommable. La partie formelle de l'algorithme consiste tout d'abord a scinder f^(x) en deux sous-series f^0(x) et f^1(x), lesquelles sont (1; 1) , iL sommables, puis a calculer les transformees de Borel ^0 = B~1(f^0) et ^1 = B~1(f^1) qui sont (1),iL sommables. On calcule nalement les transformees de Borel ^0 = B~1(^0) et ^1 = B~1(^1). Les sous-series de f^(x) sont f^0(x) = Pj0(,(2j +1)!+(,1)j j !)xj+1 et f^1(x) = Pj0(2j )!xj . Les transformees de Borel ^0(x) = Pj0(,(2j + 1)! + (,1)j j !)=j !xj et ^1(x) = Pj0 (2j + 2)!=j !xj sont respectivement de nies par : ( (4j + 7)aj+2 , (16j 2 + 64j + 59)aj+1 , (16j 2 + 68j + 66)aj = 0; j 0 ( a0 = 0; a1 = ,7 (j + 1)aj+1 , 2(j + 2)(2j + 3)aj = 0; j 0 a0 = 2 Les equations dierentielles associees sont respectivement egales a (,16x4 , 16x3 )y(2) + (,84x3 , 48x2 + 4x)y0 + (,66x2 , 11x , 1)y = ,21x et , 4x2y(2) + (,18x + 1)y0 , 12y = 0 La premiere equation admet comme singularites 0 et ,1. Les transformees de Borel ^0(x) et ^1(x) sont respectivement de nies par : 8 3 > < (4j + 23j 2 + 41j + 22)aj+2 , (16j 2 +2 96j + 139)(j + 1)aj+1 ,(16j + 100j + 150)aj = 0; j 0 > : a0 = ,7; a1 = ,59 ( (j + 1)(j + 2)aj+1 , 2(j + 3)(2j + 5)aj = 0; j 0 a0 = 24 86
et sont solutions respectivement des equations dierentielles (,16x2 + 4x)y(3) + (,16x2 , 112x + 11)y(2) + (,116x , 139)y0 , 150y = 0 et (,4x2 + x)y(2) + (,26x + 2)y0 , 30y = 0 Dans les deux cas, x = 1=4 est une singularite. Les directions 2 l, l 2 ZZ, constituent donc les directions singulieres (eventuelles) pour f^(x).
4. Prolongement analytique 4.1. Transformees de Laplace iterees
Soit f^(x) = Pn0 anxn une serie formelle (1; : : : ; r ) , iL sommable. Supposons que les directions singulieres de f^(x) sont donnees par di + 2l, di 2 [0; 2[, i = 1; : : : ; N et l 2 ZZ. j = j , j = 2; : : :; r. Soient 1; : : : ; r 2 IN et 1; : : : ; r 2 IN de nis par 1 = et ::: j j, 1
1
1
1
Soit d 2 IR une direction issue de l'origine, telle que
8i = 1 : : : N; 8l 2 ZZ; d 6= di + 2: : : l: r
1 2
Soient f^0(x); : : :; f^ ,1 (x) les 1 sous-series formelles de f^(x). Pour q = 0; : : : ; 1 , 1, soit ^q (x) = B~ (f^q ) (cf 3). Soit q (x) le prolongement analytique le long de la direction 1d de la somme de la serie ^q (x). Sur un secteur convenable bissecte par d la somme f (x) est egale a f (x) = a0 + L ; d(0)(x ) + : : : + x ,1 a ,1 + L ; d( ,1)(x ) 1
1 1
1 1
ou
Z
1
1
1
1 1
1
1
1
1
Z t1, (t) exp ,( xt ) d(t ) = 1 (t) exp ,( xt ) dt d 1 d Pour calculer la somme de la serie ^q qui est ( ; : : :; r ) , iL sommable, nous procedons de la m^eme facon que precedemment, jusqu'a avoir des series formelles convergentes. L
1 1
; d ()(x) = 1
1 1
1 1
1 1
1
1 1
1
2
1
1
Nous devons donc calculer a chaque niveau j (j = 1; : : :; r) des transformees de Laplace de la forme j (x) = L j ; :::j d(j+1)(x): 1
1
Si nous avons calcule j+1 (t) avec une precision donnee pour chaque valeur de t dans la direction 1 : : : j d, nous pouvons esperer avoir une bonne approximation de j (x) avec les methodes classiques de Gauss-Legendre ou Gauss-Laguerre utilisees sur des sous-segments bien choisis de 87
la droite Dj de direction 1 : : :j d (si l'on s'apercoit que pour t proche de l'origine la fonction j+1(t) varie beaucoup, on a inter^et a diviser la droite pres de l'origine). Malheureusement, si la droite Dj passe au voisinage d'une singularite de j+1(t), l'evaluation numerique de j+1(t) sera mauvaise. On a alors inter^et a deformer la droite Dj pour obtenir un chemin j constitue de segments et d'arcs, passant le plus loin possible des singularites de j+1(t) ( gure 4).
O
-
Figure 4 : Chemins d'integrations j
4.2. Localisation des singularites Les racines de l'equation caracteristique de l'equation dierentielle dont est solution j+1(t) fournissent les singularites (eventuelles) de j+1 (t). L'equation dierentielle est obtenue a partir de la serie formelle initiale par des transformees de Borel et de Mellin et est calculee dans la partie formelle. Ces outils formels donnent donc les directions singulieres eventuelles et nous permettent d'optimiser les chemins d'integration j des transformees de Laplace.
4.3. Prolongement analytique Le prolongement analytique le long d'un chemin j constitue le probleme numerique essentiel de l'algorithme de Balser. A l'exception du dernier niveau ou les series sont convergentes, l'origine est en general un point singulier irregulier de l'equation dierentielle dont est solution j+1(t). Il est donc impossible de calculer j+1 (t) au voisinage de l'origine autrement que par la methode des transformees de Laplace iterees elle-m^eme. Mais pour calculer j+1 (t) aux abscisses de nies par les formules de quadrature, nous devons utiliser une methode numerique ecace pour eectuer le prolongement analytique. Le prolongement analytique va ainsi se faire en deux etapes. Soit Pj un point regulier du chemin j , ni trop loin ni trop pres de l'origine, excepte pour le dernier niveau ou Pr est l'origine O. On calcule d'une part j+1(t) aux abscisses de quadrature situees entre l'origine O et le point Pj en appelant recursivement l'algorithme de Balser. D'autre part, le calcul de j+1(t) aux abscisses de quadrature situees au-dela de Pj se fait par une methode de prolongement analytique telle que la methode de Runge-Kutta, en utilisant l'equation dierentielle et les conditions initiales au point Pj obtenues prealablement par l'algorithme de Balser lui-m^eme ( gure 5). 88
Algorithme de Balser }| {z z
O
C.I. Pj
Runge-Kutta }|
{
-
Figure 5 : Prolongement analytique A chaque niveau, le prolongement analytique se fait donc de la m^eme maniere : de l'origine au point Pj , on fait appel recursivement a la methode des transformees de Laplace iterees; au-dela de Pj , on utilise une autre methode. On peut egalement utiliser ce procede pour calculer la somme f (x) dans tout le plan complexe. Dierentes methodes de prolongement analytique sont etudiees. Celle que nous utilisons est la methode de Runge-Kutta a partir de conditions initiales (exactes a l'origine O pour le dernier niveau, numeriques en Pj pour les autres). Elle est precise tant que le chemin d'integration j passe susamment loin des singularites et tant que l'ordre des equations dierentielles est relativement faible. Si l'ordre de l'equation dierentielle dont est solution ^j+1(t) est eleve, de l'ordre de 7 ou 8 pour ^r+1(t) par exemple, et si le rayon de convergence de la serie est faible (par exemple 0:25), la longueur du pas d'integration utilise dans la methode de Runge-Kutta doit ^etre choisie tres petit. Ceci s'explique par le fait que dans ce cas, les derivees vont ^etre tres grandes en valeur absolue, par exemple de l'ordre de k!4k (pour la derivee k-ieme et pour un rayon de convergence de 0:25. D'autres methodes sont en cours d'etude a n d'obtenir des accelerations de convergence en vue d'ameliorer le prologement analytique. Certaines ont ete exposees dans un precedent article [16]. D'autres (les approximants de Pade notamment) sont etudiees par C. Chay [7]. J. Thomann et moi-m^eme sommes egalement en train de tester la methode d'acceleration de convergence decrite par J.-P. Ramis et J. Martinet qui consiste a appliquer la transformee de Borel-Laplace f (x) = Lk :dS B^k f^(x) a une serie convergente f^(x) (k depend de la localisation des singularites de f (x)), pour obtenir la somme f (x) dans le k-disque de Borel maximal.
4.4. Logiciel Compas Le logiciel Compas permet de choisir des methodes de calcul sur des chemins du plan complexe et de calculer et representer graphiquement les solutions d'equations dierentielles ordinaires a coecients polynomiaux sur ces chemins. La multisommation (methode de Balser) est integree a Compas et utilisee en tant que methode de prolongement analytique. Pour calculer les transformees de Laplace iterees et donc la somme d'une serie, nous devons 89
choisir un chemin d'integration pour chaque sous-serie associee a un plan de Borel. Ce chemin doit eviter le voisinage des singularites. Une methode de calcul est associee a chaque element de chemin (segment, arc de cercle ou toute autre courbe). Par exemple, si la methode est de type Serie, le prolongement analytique se fait en appelant l'algorithme de Balser. Nous utilisons ainsi le logiciel Compas comme outil interactif de prolongement analytique, ce logiciel permettant de lier a des chemins du plan complexe des methodes de prolongement. Prevue dans Compas, la visualisation des transformees de Borel sur les chemins dans les dierents plans permet d'optimiser les chemins et donc d'ameliorer la precision du resultat.
5. Implantation Nous decrivons a present les primitives informatiques que nous avons ete amenes a de nir en vue de l'implantation algorithmique du theoreme 2.3.3 de W. Balser. Ces primitives sont implantees pour l'instant en A]. Elles pourront ulterieurement ^etre ecrites dans d'autres systemes de calcul formel (Maple, Axiom, Reduce). L'un des inter^ets de la realisation en A] est de tester la librairie prototype Sumit, developpee par M. Bronstein, implantant notamment les polyn^omes d'Ore.
5.1. Primitives 5.1.1. BalserRing BalserRing : Category
Description
BalserRing est la categorie des anneaux complexes. Dans ce qui suit, S designe un tel anneau. Il existe ainsi une application coerce : S ! Complex DoubleFloat (utilisee dans la partie graphique et numerique); on peut de nir le quotient de deux elements de S ; l'anneau des polyn^omes a coecients dans S est un anneau commutatif.
5.1.2. AutoDer import from AutoDer(S)
Description
AutoDer(S) de nit les derivations et l'automorphisme utilises.
Fonctions exportees SUP ==> SparseUnivariatePolynomial sigma : () ! Automorphism(SUP(S,"j")) sigma() est l'automorphisme associe a la fonction P 2 SUP (S; "j ")) ! P (j + 1). 90
D : () ! Derivation(SUP(S,"x"))
D() est la derivation associee a la fonction P 2 SUP (S; "x")) ! dxd P .
Theta : () ! Derivation(SUP(S,"x"))
Theta() est la derivation associee a la fonction P 2 SUP (S; "x")) ! (x dxd )P .
5.1.3. EulerLinearOrdinaryPolynomialDierentialOperator import from EulerLinearOrdinaryPolynomialDierentialOperator(S)
Description
EulerLinearOrdinaryPolynomialDierentialOperator(S) implemente les operateurs lineaires differentiels dont les coecients sont des polyn^omes en la variable x a coecients dans S . L'operateur de derivation utilise est l'operateur d'Euler.
5.1.4. LinearOrdinaryPolynomialDierenceOperator import from LinearOrdinaryPolynomialDierenceOperator(S)
Description
LinearOrdinaryPolynomialDierenceOperator(S) implemente les operateurs lineaires aux dierences dont les coecients sont des polyn^omes en la variable j a coecients dans S . L'operateur de translation utilise est l'automorphisme associe a la fonction P 2 SUP (S; "j ") ! P (j + 1).
5.1.5. LinearOrdinaryPolynomialDierentialOperator import from LinearOrdinaryPolynomialDierentialOperator(S)
Description
LinearOrdinaryPolynomialDierentialOperator(S) implemente les operateurs lineaires dierentiels dont les coecients sont des polyn^omes en la variable x a coecients dans S . L'operateur de derivation utilise est celui associe a la fonction P 2 SUP (S; "x") ! dxd P (x).
5.1.6. PowerSeries import from PowerSeries(S)
Description
PowerSeries(S) est l'anneau des series formelles entieres Pn0 anxn de nies par un operateur aux dierences et par les premiers termes a0; : : :; am,1 2 S .
Fonctions exportees 91
SI Z SUP POLDELTO
==> ==> ==> ==>
SingleInteger Integer SparseUnivariatePolynomial LinearOrdinaryPolynomialDierenceOperator
createPowerSeries : (List Ratio(S), POLDELTO(S)) ! %
createPowerSeries(cond; ) cree une serie formelle a partir de la liste cond contenant les premiers termes et de l'operateur aux dierences , a condition que le nombre de conditions initiales soit superieur au degre de l'operateur .
dispose! : % ! ()
dispose!(f^) indique que la serie formelle ne sera plus utilisee.
coerce : % ! Record(ic : List Ratio(S), delt : POLDELTO(S))
coerce(f^) donne la representation interne de la serie f^. Le champ ic permet d'acceder a la liste des conditions initiales, delt a l'operateur aux dierences.
initcond : % ! List Ratio(S)
initcond(f^) retourne la liste des premiers termes de nissant la serie.
delto : % ! POLDELTO(S)
delto(f^) retourne l'operateur aux dierences.
coherent? : % ! Boolean
coherent?(f^) teste si les premiers termes sont solutions de l'equation aux dierences.
coecients : (%,SI) ! Partial List(Ratio(S))
coecients(f;^ n) calcule, si c'est possible, les nb premiers coecients de la serie et retourne la liste [a0; : : :; anb,1 ].
coecients : (%,Z) ! Partial List(Ratio(S))
coecients(f;^ n) calcule, si c'est possible, les nb premiers coecients de la serie et retourne la liste [a0; : : :; anb,1 ].
coecient : (%,SI) ! Partial Ratio(S)
coecient(f;^ n) retourne le coecient anb de la serie.
coecient : (%,Z) ! Partial Ratio(S)
coecient(f;^ n) retourne le coecient anb de la serie.
nextCoe : (List Ratio(S),POLDELTO(S)) ! Partial Ratio(S)
nextCoe(l; ) calcule a partir de l'operateur aux dierences et des termes de la liste l le coecient suivant.
<< : (TextWriter,%) ! TextWriter 92
5.1.7. Borel import from Borel(S)
Description
Borel(S) comprend les fonctions utilisees pour le calcul des transformees de Borel.
Fonctions exportees SI ==> SingleInteger Z ==> Integer POLDELTO ==> LinearOrdinaryPolynomialDierenceOperator
kappasummability : List Ratio SI ! List Ratio SI
Si sum= [k1; : : :; kr ], kappasummability(sum) retourne la liste [1; : : :; r ] ou 1 = k1 et 1=l = 1=kl , 1=kl,1 pour l = 2; : : : ; r.
split : (POLDELTO(S), SI) ! POLDELTO(S) Si = P0(j ) + P1(j ) + + Pr (j )r, split(; ) retourne un operateur aux dierences de la forme Q0(j ) + Q1(j ) + + Qr(j )r multiple de ; si P0(j )aj + P1(j )aj+1 + + Pr (j )aj+r = 0, alors Q0(j )aj + Q1(j )aj+ + + Qr(j )aj+r = 0 pour j assez grand. split : (PowerSeries(S), SI) ! List PowerSeries(S)
split(f;^ ) retourne la liste des sous-series de f^. Ces sous-series n'ont pas necessairement un coecient constant nul. La serie f^(x) est egale a X ,1 q=0
xq f^q (x):
borel : (PowerSeries(S), SI) ! PowerSeries(S)
borel(f;^ ) retourne la transformee de Borel formelle d'ordre 1= de f^(x). IlPne s'agit pas exactement de la transformee de Borel, mais de l'application qui a f^(x) = j0 aj xj associe la serie formelle X aj+1 j: borel (f;^ ) = x j 0 ,((j + 1) )
5.1.8. Dierential import from Dierential(S)
Description
Dierential(S) comprend les fonctions qui permettent de passer d'une serie formelle de nie par un operateur aux dierences a une equation dierentielle dont est solution cette serie.
Fonctions exportees 93
SUP ==> SparseUnivariatePolynomial POLODO ==> LinearOrdinaryPolynomialDierentialOperator LOEDO ==> EulerLinearOrdinaryPolynomialDierentialOperator
diequation : PowerSeries(S) ! Record(eqdi : POLODO(S),sec : SUP(S,"x"))
diequation(f^) determine une equation dierentielle dont est solution la serie formelle f^; diequation(f^):eqdi est l'operateur dierentiel, le second membre etant donne par diequation(f^):sec.
eulerequation : Powerseries(S) ! Record(eqdi : LOEDO(S),sec : SUP(S,"x"))
eulerequation(f^) determine une equation dierentielle dont est solution la serie formelle f^; eulerequation(f^):eqdi est l'operateur dierentiel (la derivation est l'operateur d'Euler), eulerequation(f^):sec est le second membre.
5.1.9. LagLeg import from LagLeg
Description LagLeg fournit les abscisses et les poids de Gauss-Laguerre et de Gauss-Legendre.
Fonctions exportees F ==> DoubleFloat
laguerre : GeoLink ! Record(absci : List F, weight : List F)
laguerre(gl) retourne les abscisses (positives) et les poids de Laguerre utilises pour la methode de Gauss-Laguerre a nlag points (nlag est le nombre de points associes au chemin elementaire gl). Nous nous limitons pour l'instant a 32 points.
legendre : GeoLink ! Record(absci : List F, weight : List F)
legendre(gl) retourne les abscisses (comprises entre 0 et 1) et les poids de Legendre utilises pour la methode de Gauss-Legendre a nleg points (nleg est le nombre de points associes au chemin elementaire gl). Nous nous limitons pour l'instant a 32 points.
5.1.10. Laplace import from Laplace(S)
Description
Laplace(S) comprend les fonctions utiles au calcul des transformees de Laplace. 94
Fonctions exportees SI ==> SingleInteger Z ==> Integer CF ==> Complex DoubleFloat
readpath : () ! Path(S)
readpath() est le chemin d'integration de l'integrale de Laplace. Il est constitue de maillons. Un maillon est un chemin elementaire (segment, arc de cercle, ...) auquel est associee une methode de calcul. Si la methode de calcul associee a un maillon est de type Serie, la fonction a integrer sera calculee iterativement par l'algorithme de Balser. Si elle est de type Runge-Kutta, le prolongement sera fait par la methode de Runge-Kutta. Nous nous limitons pour l'instant a ces deux seules methodes de calcul. Si nous ne sommes pas au dernier niveau, la methode de calcul associee au premier maillon doit ^etre de type Serie (l'origine etant generalement une singularite irreguliere). Le prolongement sur le dernier maillon du chemin sera eectue en les points de Gauss-Laguerre. Sur tous les autres maillons, on utilise les points de Gauss-Legendre.
derivee : (List Record(listBorel :Record(vi : List CF, phiqvi : List CF, wi : List CF), initerms :List Ratio(S)), SI,SI,CF,Z) ! List CF derivee(borellist; ; ; zr; n) calcule f (zr) et les derivees jusqu'a l'ordre n de la serie; borellist contient les prolongements des transformees de Borel d'ordre 1= des sous-series.
5.1.11. Runge Kutta import from Runge Kutta(S)
Description
Runge Kutta(S) comprend les fonctions utilisees pour eectuer le prolongement analytique par la methode de Runge-Kutta.
Fonctions exportees SI F CF SUP POLODO LOEDO
==> ==> ==> ==> ==> ==>
SingleInteger DoubleFloat Complex DoubleFloat SparseUnivariatePolynomial LinearOrdinaryPolynomialDierentialOperator EulerLinearOrdinaryPolynomialDierentialOperator
generateDerivs : (POLODO(S),SUP(S,"x"), F ! CF, F ! CF, CF) ! (List CF, F) ! List CF generateDerivs(eq; sec; ; 0; t0) transforme l'equation dierentielle en un systeme dierentiel d'ordre 1 le long de la courbe x = (t) et retourne la valeur de ce vecteur derive en t0. 95
eulerDerivs : (LOEDO(S),SUP(S,"x"), F ! CF, F ! CF, CF) ! (List CF, F) ! List
CF eulerDerivs(eq; sec; ; 0; t0 ) transforme l'equation dierentielle en un systeme dierentiel d'ordre 1 le long de la courbe x = (t) et retourne la valeur de ce vecteur derive en t0. rk4f : (List CF, F, F, SI, (List CF, F) ! List CF) ! List CF rk4f(cond; t0; t1;nstep;derivs) retourne la valeur du vecteur en t1 connaissant sa valeur cond en t0 par une methode de Runge- Kutta a nstep etapes (nous nous limitons pour l'instant a nstep= 10.) La fonction derivs est la fonction derivee de ce vecteur.
5.1.12. Balser
import from Balser(S)
Description
Balser(S) comprend les fonctions utilisees pour le calcul des sommes de series formelles en utilisant l'algorithme de Balser.
Fonctions exportees SI ==> SingleInteger Z ==> Integer CF ==> Complex DoubleFloat POLODO ==> LinearOrdinaryPolynomialDierentialOperator balser : (PowerSeries(S), List Ratio SI, CF) ! CF balser(f;^ [k1 ; : : :; kr ]; zr) calcule la somme de la serie f^(x) en zr, la serie etant (k1 ; : : :; kr )sommable. balser : (PowerSeries(S), List Ratio SI, CF, Z) ! List CF balser(f;^ [k1; : : :; kr ]; zr; n) calcule la somme f de la serie f^(x) en zr, ainsi que toutes les derivees jusqu'a l'ordre n (la serie est supposee (k1; : : : ; kr )-sommable), et retourne la liste [f (zr); f 0(zr); : : :; f (n)(zr)]. iLbalser : (PowerSeries(S), List Ratio SI, CF) ! CF iLbalser(f;^ [1; : : :; r ]; zr) calcule la somme de la serie f^ en zr; la serie est (1; : : : ; r ) , iL sommable. iLbalser : (PowerSeries(S), List Ratio SI, CF, Z) ! List CF iLbalser(f;^ [1; : : :; r ]; zr; n) calcule la somme f en zr, ainsi que toutes les derivees jusqu'a l'ordre n et retourne la liste [f (zr); f 0(zr); : : : ; f (n)(zr)]. La serie f^ est (1; : : :; r ) , iL sommable . balserpath : (PowerSeries(S), List Ratio SI, Path(S)) ! Record(abscisse : List CF, sum : List CF) Si f^(x) est une serie (k1; : : :; kr )-sommable, balserpath(f;^ [k1; : : :; kr ]; ) calcule la somme de f^ le long du chemin , aux points (equidistants sur chaque chemin elementaire) donnes 96
par le champ abscisse. Le i-ieme terme de balserpath(f;^ [k1; : : :; kr ]; ):sum est la valeur de la somme au i-ieme point de la liste balserpath(f;^ [k1; : : :; kr ]; ):abscisse.
analytic : (PowerSeries(S), Path(S)) ! Record(abscisse : List CF, sum : List CF)
analytic(f;^ ) calcule le prolongement analytique de la serie a partir de l'origine, le long du chemin . La serie est supposee convergente a l'origine.
5.2. Contenu algorithmique Les programmes, ecrits en A], sont donnes en annexe. Nous ne precisons ici que les points qui nous semblent importants.
5.2.1. CreatePowerSeries import from PowerSeries(S)
DescriptionP Soit f^(x) =
j 0 aj x
j
(
de nie par
= P0(j )aj + + Pr (j )aj+r = 0; j = m , r cond = [a0; : : :; am,1 ]
Si < 0, il n'y a pas assez de conditions initiales et on sort un message d'erreur. Si P0(j ) = : : : = Pr ,1(j ) = 0 pour r0 r, et Pr (j ) 6= 0, on transforme en l'operateur Pr (j , r0)0 + + Pr (j , r0)r,r que l'on simpli e ensuite par le plus grand commun diviseur des coecients. 0
0
0
0
On suppose que le polyn^ome Pr (j ) ne s'annule pas pour j . Une serie est donc nulle si et seulement si les premiers coecients sont nuls. La serie 0 est de nie par createPowerSeries(1; []) (ici, r = m = 0). La serie 1 est de nie par createPowerSeries(1; [1]) (m = 1, r = 0).
5.2.2. Coherent? import from PowerSeries(S)
Description
Cette fonction teste si les premiers termes sont solutions de l'equation aux dierences, c'est-adire si P0 (j )aj + + Pr (j )aj+r = 0 pour j 0.
5.2.3. Coecients import from PowerSeries(S) 97
Description
coecients(f;^ n) ou f^ 2 PowerSeries(S ) calcule les n premiers coecients de la serie. Soit m le nombre des conditions initiales. Si n > m, nous devons calculer les termes en utilisant l'equation aux dierences. Si le coecient de t^ete Pr (j ) s'annule pour j0 2 [; + 1; : : : ; + n , 1 , m] ( = m , r), on ne peut pas calculer le coecient aj +r et on sort un message d'erreur. 0
5.2.4. Split import from Borel(S)
Description
split(; ) calcule un operateur multiple de , ne comportant que des termes de la forme Pk (j )k. On suppose 1. Si = 1, on retourne .
La fonction apply(delt; l) retourne l'operateur l delt. Soit (S ) la liste des operateurs apply(; l) pour l = 0; : : : ; r( , 1) (r est le degre de ). Tant qu'on n'a pas ni,
Soit delt le premier operateur de (S ). Chercher dans delt le plus petit indice k 2 IN tel que le coecient de delt de degre k soit non nul et tel que k ne divise pas .
Si un tel indice existe, on s'arr^ete; sinon { Soit Pk (j ) le coecient de delt de degre k. { Parcourir les autres operateurs deltl (l = 2; : : : ; #(S )) de (S ). On remplace (S ) par les #(S ) , 1 operateurs obtenus en eliminant le cas echeant le coecient de degre k (si le coecient Pkl (j ) de degre k de deltl est non nul, on remplace deltl par Pk (j ) deltl - Pkl (j )delt).
5.2.5. Split import from Borel(S)
Description
split(f;^ ) Pretourne sous forme de liste les sous-series de la serie formelle. On suppose que f^ = j0 aj xj est de nie par = P0(j ) + + Pr (j )r et par ses premiers termes [a0; : : :; am,1]. Soit l'operateur split(; ). Il est de la forme Q0(j )+ Q1(j ) + + Qr(j )r et Q0(j )aj + Q1(j )aj+ + + Qr(j )aj+r = 0 pour j = m , r.
Pour q = 0; : : : ; , 1, l'opeP rateur Q0(j + q) + Q1(j + q) + + Qr(j + q)r de nit la q-ieme sous-serie f^q (x) = j0 aj+q xj . La recurrence est valable pour les indices j 2 IN 98
tels que j + q , c'est-a-dire j q = max(0; ( , q)=). Les mq = q + r conditions initiales aq ; aq+; : : : ; aq+(mq ,1) sont calculees a partir de l'equation aux dierences de nissant f^. On veri e aisement que pour q = 0; : : :; , 1, q + (mq , 1) < r + . Les premiers coecients de nissant chaque sous-serie sont donc facilement calcules a partir de la liste [a0; a1; : : :; ar+,1] = coecients(f;^ r + ).
5.2.6. Borel import from Borel(S)
DescriptionP
Soit f^(xP) = j0 aj xj une serie formelle et 2 IN. La fonction borel(f;^ ) retourne la serie ^(x) = j0 bj xj avec bj = (j a+j ,1)! . +1
Si P0(j )aj + + Pr (j )aj+r = 0, alors P0(j +1)aj+1 + + Pr (j +1)aj+1+r = 0 et P0(j +1)(j + , 1)! bj + + Pr (j + 1)((j + r) + , 1)! bj+r = 0. Or pour l = 1; : : : ; r,
, 1)! = Ql(j ) = ((j(+j l)+ +, 1)!
l Y
(j + , 1 + m) 2 SUP(S; "j "):
m=1
Donc P0(j +1)bj + P1(j +1)Q1(j )bj+1 + + Pr (j +1)Qr (j )bj+r = 0 : la serie ^(x) est representee par un operateur lineaire aux dierences dont les coecients sont des polyn^omes en la variable j a coecients dans S .
5.2.7. Legendre import from LagLeg
Description
Nous devons calculer des integrales de la forme Zt 1 I (x) = (t) exp ,( xt ) dt t ou t decrit une courbe integrale de la forme t = (u), u 2 [0 : : : 1] (t0 = (0) et t1 = (1)). L'integrale I (x) est egale a 1 Z 1 ( (u)) exp (u) 0(u)du ,( x ) 0 et est calculee numeriquement par une quadrature de Gauss-Legendre a N points : N 0 1X A i ( (ui)) exp ,( (xui ) ) (ui ): i=1 1
1
0
1
1
99
La fonction legendre(gl) retourne la liste des poids (Ai)i=1;:::;N et des abscisses (ui)i=1;:::;N , gl etant un chemin elementaire de ni par le nombre de points N et par les courbes et 0.
5.2.8. Laguerre import from LagLeg
Description
Nous devons calculer des integrales de la forme Z1 I (x) = 1 (t) exp ,( xt ) dt t 1
0
ou t decrit une courbe integrale de la forme t = (u), u 2 IR+ (t0 = (0)). L'integrale I (x) est egale a 1 Z +1 ( (u)) exp (u) 0(u)du ,( x ) 1
0
et est calculee numeriquement par une quadrature de Gauss-Laguerre a N points : N 0 1X A i ( (ui )) exp ,( (xui ) ) (ui ): i=1 1
La fonction laguerre(gl) retourne la liste des poids (Ai)i=1;:::;N et des abscisses (ui)i=1;:::;N , gl etant un chemin elementaire de ni par le nombre de points N et par les courbes et 0.
5.2.9. Derivee import from Laplace(S)
DescriptionP
Soit f^(x) = j0 aj xj une serie (1; : : : ; r ) , iL sommable, avec 1 = 1= 1. Soient f^q (x) = P a xj (q = 0; : : : ; , 1) les sous-series et ^ (x) = P bq xj avec bq = a j q 1 1 q j 0 j +q j 0 j j (j + ,1)! les transformees de Borel d'ordre 1= 1. La somme f en x est egale a f (x) = P ,1 xq (a + f (x )). ( +1) 1 +
1
1
1
q=0
Chaque somme
q
q
1
1
Z 1 fq q (t) exp ,( xt ) dt 1 q est egale a la somme des integrales le long de chaque chemin elementaire, que l'on calcule par les methodes decrites en 5:2:7 et 5:2:8. On obtient alors une expression de la forme Nq X q fq (x ) = q ( (uqi )) exp ,( x(ui ) ) wiq (x1 ) =
1
1
1
i=1
100
1 1
1 1
(wiq = Aqi 0(uqi )). La derivee n-ieme de f (x) est egale a X ,1 X n f (n) (x) = Cnl (xq)(l)(aq + fq (x ))(n,l) : 1
1
q=0 l=0
Les derivees successives de la fonction fq (x ) se calculent a partir de la formule integrale : d (f (x )) = 1 x, ,1 Z (t)t exp t dt: ,( x ) q dx q 1 1 q R Plus generalement, la derivee de axb q q(t)tc exp(,( xt ) )dt est egale a Z Z abxb,1 q (t)tc exp ,( xt ) dt + a1xb, ,1 q (t)tc+ dt: q q 1
1
1 1
1
1
1
1 1
1
1 1
1 1
1
1 1
Les derivees de fq (x ) se calculent donc par recurrence. Si nous connaissons la liste des coef cients [a; b; c] de nissant la derivee l-ieme, la derivee (l + 1)-ieme sera de nie par la liste des coecients [ab; b , 1; c] et [a1; b , 1 , 1; c + 1 ]. Connaissant les valeurs des transformees de Borel en les abscisses de quadrature et les poids associes, nous pouvons ainsi calculer les derivees a n'importe quel ordre de la somme. 1
1
La fonction derivee a pour premier argument borellist l'enregistrement des prolongements des 1 sous-series, c'est-a-dire les abscisses (uqi ), les sommes q ( (uqi )) et les poids wiq (i = 1; : : : ; Nq ); derivee(borellist; 1 ; 1; x; N ) retourne la liste [f (x); f 0 (x); : : :; f (n) (x)].
5.2.10. iLbalser import from balser(S)
Description
Le calcul de la somme et des derivees d'une serie (1; : : :; r ) , iL sommable suit le schema suivant : Scindage de la serie en 1 sous-series (1 = ); Calcul des transformees de Borel d'ordre 1 ; Prolongement de ces transformees ( ; : : :; r ) , iL sommables; Calcul de la somme et des derivees par quadrature. Le prolongement d'une serie formelle convergente se fait par la methode de Runge-Kutta, a partir des conditions initiales calculees exactement a l'origine. La valeur calculee au bout d'un chemin elementaire donne les conditions initiales pour le chemin elementaire suivant. 1
1
1
2
1
1
Le prolongement d'une serie (1; : : :; r ) , iL sommable le long d'un chemin se fait de la facon suivante : 101
On parcourt le chemin; Si la methode de calcul associee au chemin elementaire est de type Serie, le calcul de
la somme se fait recursivement (calcul des transformees de Borel des sous-series...). Les derivees calculees au bout du chemin elementaire par quadrature donnent les conditions initiales au debut du chemin elementaire suivant; Si la methode de calcul associee au chemin elementaire est de type Runge-Kutta, on utilise la methode de Runge-Kutta a partir des conditions initiales que l'on a calculees auparavant. Les derivees calculees au bout du chemin elementaire par la methode de Runge-Kutta donnent les conditions initiales au debut du chemin elementaire suivant.
6. Resultats
6.1. Equation d'Euler
La serie formelle E^ (x) = Pn0 (,1)nn!xn+1 est solution de l'equation d'Euler
x2y0 + y = x: Sa transformee de Borel formelle (d'ordre 1) est la serie Pn0 (,1)nxn , laquelle admet comme prolongement analytique la fonction 1+1 x . La serie E^ (x) est donc 1-sommable dans toutes les directions, exceptees les directions + 2l (l 2 ZZ). Nous choisissons comme direction de resommation la droite IR+ et calculons la somme en 0:01, 0:1 et 1. Pour cela, nous avons ecrit un chier "un.as" ou l'on de nit la serie d'Euler, et ou l'on calcule la somme en les trois points. Voici l'historique de la session : $ asharp -g loop -w gc This is a pre-release of AXIOM-XL. `axiomxl -h info' for more details. %1 >> #include "sumit.as" Comp :
2460 msec., Interp :
30 msec.
%2 >> #library un "un.ao" %3 >> import from un Comp : %4 >> session() Serie d'Euler : Initial Conditions :list((0/1), (1/1)) Difference equation :tau+j Liste des pentes :
102
40 msec., Interp :
0 msec.
list((1/1)) Point en lequel on veut calculer la somme : zr = (0.01 + 0 %i) Somme : (0.0099019422867330075 + 0 %i) Point en lequel on veut calculer la somme : zr = (0.10000000000000001 + 0 %i) Somme : (0.091563333939787855 + 0 %i) Point en lequel on veut calculer la somme : zr = (1 + 0 %i) Somme : (0.5963473622644494 + 0 %i) Comp :
10 msec., Interp :
346490 msec.
Nous obtenons ainsi les valeurs :
E (0:01) = 0:0099019422867 E (0:1) = 0:0915633339398 E (1) = 0:5963473623 RemarqueR : Ces valeurs peuvent d'autre part ^etre calculees a l'aide de tables connues. Soit E1(z) = z1 e,t t dt. Comme Z +1 e,at ab b + t = e E1(ab) 0 pour tout a et b > 0, Z +1 t 1 E (x) = e, x 1 + t dt = e x E1( x1 ); x > 0: 0 En utilisant la table de E1, nous obtenons : E (0:01) = e100E1(100) = 0:01 0:9901942287 = 0:009901942287 E (0:1) = e10E1(10) = 0:1 0:9156333394 = 0:09156333394 E (1) = e1E1(1) = e 0:219383934 = 0:5963473612 La precision relative pour E (0:01), E (0:1) et E (1) est donc respectivement egale a 3:10,11, 2:10,12 et 2:10,9 . 1
103
6.2. Exemple de 2-sommabilite Il s'agit d'un exemple etudie par J. Thomann [16]. Une solution formelle fondamentale de l'equation dierentielle 4x5y00 + 2x2y0 + y = 0 est donnee par e x x, f^(x) ou f^(x) est solution de 4x3y00 , 2(2x2 + 2x , 1)y0 + 3(x + 2)y = 0: La serie formelle f^(x) est 2-sommable, dans toutes les directions exceptees 2 + l (l 2 ZZ). 1 2
1 2
Nous calculons la somme en x = 13 (voir l'historique), x = 31 ei et x = 31 ei . 8
4
$ asharp -g loop -w gc This is a pre-release of AXIOM-XL. `axiomxl -h info' for more details. %1 >> #include "sumit.as" Comp :
2460 msec., Interp :
30 msec.
%2 >> #library deux "deux.ao" %3 >> import from deux Comp :
40 msec., Interp :
0 msec.
%4 >> session() Serie etudiee : Initial Conditions :list((0/1), (1/1)) Difference equation :tau+j Liste des pentes : list((2/1)) Point en lequel on veut calculer la somme : zr = (0.33333333333333331 + 0 %i) Somme : (0.069524243326470447 + 1.8007867203910085e-08 %i) Comp :
10 msec., Interp :
963780 msec.
La direction de resommation est respectivement IR+ , ei IR+ et ei IR+ . Nous rappelons egalement les resultats obtenus par J. Thomann par la methode des approximants de Pade et celle des series de factorielles generalisees SFG [16] : argx Balser Pade SFG 0 0:06952424 0:0695243 0:0695117 =8 0:130661 , 0:3370434i 0:130661 , 0:337043i 0:130627 , 0:337015i =4 0:304842 , 0:632041i 0:304843 , 0:632041i 0:306122 , 0:630481i 8
104
4
6.3. Exemple de Ramis-Sibuya Les directions singulieres de resommation de la serie formelle solution de l'equation de RamisSibuya sont les directions 2 + 2 l (l 2 ZZ). La serie formelle etant egale a f^(x) = E^ (x)+E^ (x2), la somme est egale a f (x) = E (x)+E (x2) = e x E1( x1 ) + e x E1( x1 ) (voir 6:1). Nous obtenons a l'aide de la table de E1 : 1
1 2
2
f (0:25) = e4E1(4) + e16E1(16) = 0:265353775 f (0:5) = e2E1(2) + e4E1(4) = 0:567674269 f (1) = 2eE1(1) = 1:192694722
Pour calculer la somme en ces points par l'algorithme de Balser, nous choisissons comme di + i ^ ^ rection de resommation pour l(x) et l(x) (l = 0; 1) la droite e IR (il ne faut pas passer trop pres du point x = 1=4 qui est une singularite pour les series convergentes ^l(x) (l = 0; 1)). Nous obtenons ainsi : 8
f (0:25) = 0:26535392 + 4:7525175:10,7 i f (0:5) = 0:56545058 + 0:0025003453i f (1) = 1:1387162 + 0:080168043i Nous remarquons que plus nous nous eloignons de l'origine, moins la precision est bonne. Nous pourrions choisir d'autres chemins (pas forcement les m^emes pour les series ^l(x) et ^l(x)) et un nombre de pas d'integration plus eleve pour ameliorer la precision du calcul. Une autre facon de calculer la somme en 1 consiste par exemple a calculer la somme et sa derivee en 0:25 (ou l'on a une assez bonne precision) et a eectuer le prolongement analytique de la somme le long du chemin [0:25; 1] par une methode de Runge-Kutta, a partir de l'equation dierentielle dont est solution la somme et des conditions initiales en 0:25. Nous avons choisi une methode de Runge-Kutta a pas xe egal a 0:015 et obtenons
f (1) = 1:16035002 , 0:00016311899i La precision obtenue est meilleure. Nous souhaitons a present calculer la somme au point x = ,0:25. On considere d'une part la direction de resommation d, = , ( > 0 petit). La direction de resommation au premier niveau est 1d, = 2( , ); celle du deuxieme (et dernier) niveau est 21d, = 2( , ). La droite de direction 21d, est proche de la singularite 41 des fonctions 0(x) et 1(x). Nous avons teste l'algorithme avec dierents chemins, et il se trouve que 0(x) et 1(x) se prolongent analytiquement dans la direction IR+ (de plus, elles tendent vers 0). Nous allons considerer comme chemin d'integration 2 : 105
&%
O
-
Le chemin sur lequel nous allons integrer les fonctions 0(x) et 1(x) est la droite de direction IR+ . Le point P1 a partir duquel est utilisee la methode de Runge-Kutta est le point (0:5; 0:). Nous obtenons alors comme resultat :
f , (,0:25) = ,0:3009568828 + 0:05767302121i: D'autre part, nous pouvons egalement calculer la somme en ,0:25 en considerant comme direction de resommation la direction 2( + ). En prenant les symetriques par rapport a l'axe des reels des chemins precedents, nous obtenons
f + (,0:25) = ,0:3009568828 , 0:05767302121i: La dierence des deux valeurs est
f , (,0:25) , f + (,0:25) = 0:1153460424i: La dierence n'est pas nulle : nous avons traverse la direction singuliere IR,. Il s'agit du phenomene de Stokes. Nous allons comparer ce resultat avec la valeur exacte. La serie formelle f^(x) est egale a f^(x) = E^ (x) + E^ (x2). La serie E^ (x) est 1-sommable, etant la direction singuliere (modulo 2). La serie E^ (x2) est 2-sommable, de directions singulieres 2 + ZZ. La dierence f , (,) , f + (,) ( > 0) est egale a E ,(,) , E +(,), ce que nous calculons aisement par la methode des residus. Nous obtenons : E , (,) , E + (,) = 2i exp , 1 : Pour = 0:25, la dierence est egale a 0:1150806i. Le resultat obtenu est donc de l'ordre de 2:10,4 .
7. Conclusion Les exemples que nous avons testes sont des cas d'ecole. Nous avons pu comparer nos resultats avec ceux obtenus par d'autres methodes et ceux fournis par les tables. Ceci constitue un premier test de validite de l'ensemble des algorithmes. Il reste un point important a etudier, a savoir le test de validite des resultats numeriques 106
obtenus. Les resultats que nous avons obtenus pour la serie d'Euler et la serie formelle 2sommable sont bons. Il semble cependant plus dicile d'obtenir une bonne precision pour la serie de Ramis-Sibuya qui est (2; 1)-sommable. Nous avons constate une sensibilite des calculs par rapport aux chemins. Il y a trois niveaux d'approximation qui ne sont pas encore ma^trises actuellement : le calcul des conditions initiales oues au point P a un niveau intermediaire (mis a part le dernier niveau), le prolongement analytique (pour l'instant, il s'agit de la methode de Runge-Kutta) et le calcul des transformees de Laplace. Dans l'etat actuel d'avancement des travaux, nous n'avons pas a notre disposition des calculs de bornes d'erreurs numeriques. L'apport de Compas permet pour l'instant de palier a l'abscence de bornes d'erreurs. En pratique, nous calculons un resultat en dierents chemins (et par dierentes methodes). Par ses methodes de visualisation, Compas permet de tester la regularite des resultats obtenus sur les chemins dans les dierents plans de Borel et de constater quand il y a un decrochement des methodes numeriques (ce qui arrive si le chemin est trop proche d'une singularite). Mon travail n'a pas porte sur la qualite des methodes numeriques de prolongement (par exemple, la methode de Runge-Kutta que nous avons implantee est une methode d'ordre 4 a pas xe). Ce travail reste encore a faire. Quoi qu'il en soit, l'algorithme de Balser que nous avons implante est pr^et a ^etre utilise. Nous avons ainsi a notre disposition un outil souple, susceptible d'^etre interactif (cet aspect est en voie de realisation) et pratique a l'emploi, comprenant les bonnes primitives, permettant de tester la validite des resultats par des recoupements. Il fallait donner a l'utilisateur la possibilite de faire un choix entre dierentes methodes de prolongement analytique sur les chemins choisis dans les plans de Borel. Pour l'instant, peu de methodes sont disponibles, plusieurs sont a l'etude. Le logiciel dans son etat actuel permettra l'insertion et le test de ces methodes dans le contexte general de la multisommation.
107
References bibliographiques [1] W. Balser, From divergent power series to analytic functions theory and application on multisummable power series, Lecture notes in mathematics, Springer (1994). [2] W. Balser, Summation of formal power series through iterated Laplace integrals, Math. Scand. 70 (1992) 161-171 [3] W. Balser, B.L.J. Braaksma, J.-P. Ramis, Y. Sibuya, Multisummability of formal power series solutions of ordinary dierential equations, Asympt. Analysis 5, Number 1, Nov.(1991). [4] W. Balser, A. Tovbis, Multisummability of iterated integrals, Asympt. Anal. 7 (1993) 121-127. [5] A. Barkatou, A. Duval, Sur les series formelles solutions d'equations aux dierences polynomiales, Annal. Inst. Fourier, 44 (1994), 495-524. [6] M. Bronstein, M. Petkovsek, On Ore rings, linear operators and factorisation, Preprint ETH, November 1993-200. [7] C. Chay-Camus, Multivariate Pade approximation applied to analytic continuation, a para^tre dans les proceedings : Non linear numerical methods and rational approximation, Anvers 1993. [8] J. Della-Dora, C. Dicrescenzo, E. Tournier, An algorithm to obtain formal solutions of a linear homogenous dierential equation at an irregular singular point, Lecture Notes in Computer Science. In : Calmet,J.(ed.), Lecture Notes in Computer Science, (Springer, 1982). [9] F. Jung, F. Naegele, J. Thomann, An algorithm of multisummation of formal power series, solutions of linear ODE equations, a para^tre dans Proceedings IMACS Lille (1993). [10] B. Malgrange, J.-P. Ramis, Fonctions multisommables, Ann. Inst. Fourier, Grenoble, 42, 1-2 (1992). [11] J.-P. Ramis, Les series k-sommables et leurs applications, Lecture Notes in Physics 126, Springer (1980). [12] J.-P. Ramis, Equations dierentielles : Phenomene de Stokes et resommation, C.R. Acad. Sc. Paris, t.301, Serie 1, No.4 (1985). [13] J.-P. Ramis, Y. Sibuya, Hukuhara domains and fundamental existence and uniqueness theorems for asymptotic solutions of Gevrey type, Asymptotic Analysis, 2, 39-94 (1989). 108
[14] F. Richard-Jung, Representations graphiques de solutions d'equations dierentielles dans le champ complexe, These de l'Universite de Strasbourg (1988). [15] F. Richard-Jung, Le phenomene de Stokes en image, RT 65 LMC Grenoble (1991). [16] J. Thomann, Resommation des series formelles solutions d'equations dierentielles lineaires ordinaires du second ordre dans le champ complexe au voisinage de singularites irregulieres, Numer.Math. 58, 503-535 (1990). [17] J. Thomann, Problemes algorithmiques poses par la multisommation, Journees de printemps de la PRC Math-Info (1990). [18] J. Thomann, Procedes formels et numeriques de sommation de series solutions d'equations dierentielles, Expo. Math. 13 (1995), 223-246. [19] E. Tournier, Solutions formelles d'equations dierentielles, These d'Etat de l'Universite de Grenoble (1988).
109
110
Bibliographie [1] W. Balser, From divergent power series to analytic functions theory and application on multisummable power series, Lecture notes in mathematics, Springer (1994). [2] W. Balser, Summation of formal power series through iterated Laplace integrals, Math. Scand. 70 (1992) 161-171 [3] W. Balser, B.L.J. Braaksma, J.-P. Ramis, Y. Sibuya, Multisummability of formal power series solutions of ordinary dierential equations, Asympt. Analysis 5, Number 1, Nov.(1991). [4] W. Balser, A. Tovbis, Multisummability of iterated integrals, Asympt. Anal. 7 (1993) 121-127. [5] A. Barkatou, A. Duval, Sur les series formelles solutions d'equations aux dierences polynomiales, Annal. Inst. Fourier, 44 (1994), 495-524. [6] J.-P. Bezivin, Sur les equations fonctionnelles aux q-dierences. Preprint Paris VI (1990). [7] M. Bronstein, M. Petkovsek, On Ore rings, linear operators and factorisation, Preprint ETH, November 1993-200. [8] C. Chay-Camus, Multivariate Pade approximation applied to analytic continuation, a para^tre dans les proceedings : Non linear numerical methods and rational approximation, Anvers 1993. [9] J. Della-Dora, C. Dicrescenzo, E. Tournier, An algorithm to obtain formal solutions of a linear homogenous dierential equation at an irregular singular point, Lecture Notes in Computer Science. In : Calmet,J.(ed.), Lecture Notes in Computer Science, (Springer, 1982). [10] R. Douady, Produits tensoriels topologiques et espaces nucleaires. Seminaire de geometrie analytique. Asterisque 16 (1974). [11] G. Gasper, M. Rahman, Basic Hypergeometric Series. Encyclopedia of Mathematics and its Applications, G.C. Rota ed., Vol. 35 (1990). [12] A.-O. Gelfond, Calcul des dierences nies, Dunod, Paris, 1963. [13] P. Grisvard, Operateurs a indice, Lemme de Compacite. Seminaire Cartan-Schwartz, 16eme annee, 1963-64, n12. [14] W. Hahn, Uber die Funktional-dierentialgleichung f 0(z) = f (qz) und verwandte Funk111
tionalgleichungen. Ann. Univ.Sc. Budapest, Eotvos Sect. Math. (1973), p.3-21.
[15] F. Jung, F. Naegele, J. Thomann, An algorithm of multisummation of formal power series, solutions of linear ODE equations, a para^tre dans Proceedings IMACS Lille (1993). [16] T. Kato, J.-B. McLeod, The functional dierential dierence equation y0(x) = ay(x) , by(x). Bull. Amer. Math. Soc., 77 (1971),p. 891-937. [17] H. Komatsu, On the index of dierential operators. J. Fac. Sci. Tokyo IA (1971), p.379-398. [18] K. Mahler, On a special functionalequation. J. London Math. Soc. 15 (1940), 115-123. MR 2, 133. [19] B. Malgrange, Sur les points singuliers des equations dierentielles. L'Enseignement Mathematique, tome 20, n1-2 (1974), p. 147-176. [20] B. Malgrange, J.-P. Ramis, Fonctions multisommables, Ann. Inst. Fourier, Grenoble, 42, 1-2 (1992). [21] J. Martinet, J.-P. Ramis, Theorie de Galois dierentielle et resommation, E. Tournier (ed.), Computer Algebra and Dierential Equations, 117-214, (Academic Press, 1988). [22] J. Martinet, J.-P. Ramis, Elementary acceleration and multisummability, Ann. Inst. Henri Poincare, Physique Theorique 54, N.1 (1991). [23] F. Naegele, Theoremes d'indices pour les equations q-dierences-dierentielles, C.R. Acad. Sci. Paris, t. 317, Serie I, p. 579-582,1993. [24] F. Naegele, Theoremes d'indices pour les equations q-dierences-dierentielles, Preprint Institut Recherche Mathematique Avancee (1995). [25] F. Naegele, J. Thomann, Algorithmic approach of the multisummation of formal power series solutions of linear ODE, applied to the Stokes phenomena, a para^tre dans Proceedings workshop Groningen : "Stokes phenomena and their applications" (World scienti c pub. comp.). [26] N.-E. Norlund, Lecons sur les series d'interpolation, Gauthiers Villars et Cie, Paris 1926. [27] J.-P. Ramis, Devissage Gevrey. Societe Mathematique de France. Asterisque n 59-60 (1978), p.173-204. [28] J.-P. Ramis, Les series k-sommables et leurs applications, Lecture Notes in Physics 126, Springer (1980). 112
[29] J.-P. Ramis, Theoremes d'indices Gevrey pour les equations dierentielles ordinaires. Memoirs of the American Mathematical Society n296, volume 48 (1984). [30] J.-P. Ramis, Equations dierentielles : Phenomene de Stokes et resommation, C.R. Acad. Sc. Paris, t.301, Serie 1, No.4 (1985). [31] J.-P. Ramis, Y. Sibuya, Hukuhara domains and fundamental existence and uniqueness theorems for asymptotic solutions of Gevrey type, Asymptotic Analysis, 2, 39-94 (1989). [32] J.-P. Ramis, About the growth of entire functions solutions of linear algebraic q-dierence equations. Annales de la Faculte des Sciences de Toulouse. Serie 6, Vol. I, n 1, 1992. [33] F. Richard-Jung, Representations graphiques de solutions d'equations dierentielles dans le champ complexe, These de l'Universite de Strasbourg (1988). [34] F. Richard-Jung, Le phenomene de Stokes en image, RT 65 LMC Grenoble (1991). [35] J. Thomann, Resommation des series formelles solutions d'equations dierentielles lineaires ordinaires du second ordre dans le champ complexe au voisinage de singularites irregulieres, Numer.Math. 58, 503-535 (1990). [36] J. Thomann, Problemes algorithmiques poses par la multisommation, Journees de printemps de la PRC Math-Info (1990). [37] J. Thomann, Procedes formels et numeriques de sommation de series solutions d'equations dierentielles, Expo. Math. 13 (1995), 223-246. [38] E. Tournier, Solutions formelles d'equations dierentielles, These d'Etat de l'Universite de Grenoble (1988). [39] K. Yosida, Functional Analysis. Berlin, Springer-Verlag (1971). [40] C. Zhang, Quelques etudes en theorie des equations fonctionnelles et en analyse combinatoire, These de l'Universite Louis Pasteur (Strasbourg I), 1994.
113
114
ANNEXES
115
116
Annexe 1
Convergence des series de factorielles q-analogues Nous allons etudier la convergence de series de factorielles q-analogues de la forme +X 1 6 0; 1: f^q (x) = an , (x,+q (xn)+ 1) ; jqj = q n=0 2i k; 8l 2 IN; 8k 2 ZZ. Nous Ces series n'ont un sens que si x est dierent des valeurs ,l + log q exclurons toujours dans ce qui suit ces points exceptionnels. Les series de q-factorielles sont des q-analogues des series de facultes f^(x) = Pn0 x(x+1)a:::n (x+n) = P a ,(x) .
n0 n ,(x+n+1)
Theoreme 1 : Si une serie de q-factorielles Pn0 an ,q (,xq+(xn)+1) converge en un point x0 alors : (i) Si 0 < jqj < 1, elle converge dans tout le plan; (ii) Si jqj > 1, elle converge dans le demi-plan <(x log q) > <(x0 log q). x0
P
Demonstration : On pose bn (x) = an ,q (,xq+(nx)+1) et cn (x; x0) = bbnn((xx)) = ((qqx ;;qq))nn . Alors n0 bn (x) = P b (x )c (x; x ) et la dierence c (x; x ) , c (x; x ) est egale a c (x; x ) qx ,qx qn. 0 n 0 n+1 0 n 0 1,qx n n0 n 0 n 0
+1
+1
0 +1
+1
+ +1
On suppose que la serie Pn0 bn(x0) converge. Si 0 < jqj < 1 alors cn(x; x0) tend vers ((qqxx ;;qq)) 11 quand n tend vers +1. Il existe donc une constante que 8n 2 IN; jcn(x; x0) , cn+1 (x; x0)j C (x; x0)jqjn et la serie P jc (x;Cx(x;) ,x0c) > (0x;telle En utilisant le test de Bois-Reymond (voir par exemple 0 n+1 x0)j converge. n 0 n P le theoreme I p.126 [1]), la serie n0 bn(x) converge. 0
+
+
x0
Si jqj > 1, cn(x; x0) = q(n+1)(x ,x) ((ppx;;pp))nn (p = q,1) et dans ce cas, il existe une constante C (x; xP0) telle que 8n 2 IN; jcn (x; x0) , cn+1 (x; x0)j C (x; x0)jqx ,x jn. Si jqx ,x j < 1, la serie n0 bn(x) converge. La serie converge donc dans le demi-plan limite a gauche par la droite passant par x0, de pente logqjqj (q = jqjeiq, 0 q < 2; la droite est parallele a l'axe des imaginaires purs si q = 0). 0
+1
+1
0
0
Nous pouvons de nir l'abscisse de convergence d'une serie de q-factorielles f^q (x) par = inf f0 2 IR=f^q (x) converge dans le demi-plan <(x log q) > 0 log jqjg. 117
Si 0 < jqj < 1, est egale soit a ,1 (la serie converge dans tout le plan), soit a +1 (elle diverge partout). N.-E. Norlund montre que l'abscisse de convergence de la serie de facultes Pn0 an ,(x,(+nx)+1) (,1)nan ,(x) (paragraphe 84 p.177 est la m^eme que celle de la serie de Newton associee Pn0 (,( n+1)) ,(x,n) [2]). 2
Considerons les series de Newton q-analogues de la forme X g^q (x) = , (nan+ 1) , ,(xq (,x)n) : q n0 q Elles ont ete etudiees par C. Zhang [3]. Pour q reel, 0 < q < 1, il a montre que le domaine de convergence de ces series est un demi-plan. Theoreme 2 : Soit f^q (x) = Pn0 an ,q (,xq+(nx)+1) une serie de q-factorielles (jqj 6= 0; 1). Considerons la serie de Newton p-analogue associee
g^p(x) =
X (,1)n pn ,p(x) ; (p = q,1): a n 2 ,p (x , n) n0 (,p (n + 1)) 2
Ces deux series sont simultanement convergentes ou divergentes. Demonstration : Nous allons une fois de plus utiliser le test de Bois-Reymond. Posons pn ,p (x) ,q (x+n+1) . Posons (x) = (,1)npn a ,p (x) et bn(x) = an ,q (,xq+(xn)+1) et cn(x) = (,(,p(1)nn+1)) n ,p (x,n) ,q (x) (,p (n+1)) n ,p (x,n) 1 n(x) = cn (x) . Alors bn(x)cn(x) = n(x) et n(x)n(x) = bn(x). 2
2
2
2
D'autre part, cn (x),cn+1(x) = cn (x) ,(12+,qqxn+q),x qn+1 et n(x),n+1(x) = cqnn(x) (1,q,x2,n qx ,)(1q,,xqx +1
+1 2
,x+1
x
+ +1
n ).
+ +1
Si 0 < jqj < 1, cn (x) = (q ((q;q;)qn)n) ((1q ,;qq))n tend vers une constante et il existe C (x) > 0 telle 8n 2 IN, jcn(x)P, cn+1 (x)j C (x)jqjn et jn(x) , n+1(x)j C (x)jqjn. Les series P que jc (x) , c (x)j et j (x) , (x)j convergent. 2
n0 n
n+1
n0 n
+1
n+1
Si jqj > 1, cn (x) = , ((p;p)nq)x (1,q) (p,x+1 ; p)n (px ; p)n+1 et il existe une constante C (x) > 0 telle 8n 2 IN, jcn(x) ,Pcn+1 (x)j C (x)jqj,n et jn(x) , n+1(x)j C (x)jqj,n. Les series P que jc (x) , c (x)j et j (x) , (x)j convergent. 2
n0 n
n+1
n0 n
n+1
P P Alors, si Pn0 bP n (x) = f^q (x) converge, n0 bn (x)cn (x) = g^p (x) converge et si n0 n (x) = g^p(x) converge, n0 n(x)n(x) = f^q (x) converge. Theoreme 3 : Si P a ,q (x) est une serie de Newton q-analogue avec jqj > 1, n0 n ,q (x,n)
soit elle converge dans tout le plan, soit elle diverge partout. 118
Pour q reel, 0 < q < 1, C. Zhang a calcule l'abscisse de convergence d'une serie de Newton P q-analogue g^q (x). Plus precisement, si g^q (x) = n0 ,q (ann+1) ,q,(qx(,x)n) , alors kk log Pnk=0 (,1)k ak q , (i) Si 0, = lim , n log q ; kk P + 1 k , log k=n (,1) ak q (ii) Si < 0, = lim . n log q, ( +1) 2
1
( +1) 2
1
Ce resultat se generalise a q complexe, 0 < jqj < 1, en de nissant l'abscisse de convergence d'une serie de Newton q-analogue par inf f0 2 IR= la serie converge pour <(x log q) > 0 log jqjg. Theoreme 4 : Soit f^q (x) = Pn0 an,q (n + 1) ,q (,xq+(nx)+1) une serie de q-factorielles avec jqj > 1. Soit sont abscisse de convergence. P log nk=0 ak (i) Si 0 alors = lim n log jqj ; P 1 a log + (ii) Si < 0 alors = lim n logk=jnqj k . Demonstration : D'apres le theoreme 2, l'abscisse de convergence de f^q (x) est egale a l'abscisse nn n pn de convergence de la serie g^p(x) = Pn0 (,(,p(1)n+1)) an,q (n+1) ,p,(px(,x)n) = Pn0 (,1),pn(pn+1) an ,p,(px(,x)n) . On utilise alors le resultat de C. Zhang. ( +1) 2
2
2
References bibliographiques [1] A.-O. Gelfond, Calcul des dierences nies, Dunod, Paris, 1963. [2] N.-E. Norlund, Lecons sur les series d'interpolation, Gauthiers Villars et Cie, Paris 1926. [3] C. Zhang, Quelques etudes en theorie des equations fonctionnelles et en analyse combinatoire, These de l'Universite Louis Pasteur (Strasbourg I), 1994.
119
120
Annexe 2
Fichiers "source" de l'algorithme de Balser ------------------------------ autoder.as -----------------------------------#include "sumit.as" #library ci "ci.ao" import from ci; SUP ==> SparseUnivariatePolynomial; AutoDer(S: BalserRing) :
with
f
sigma: () -> Automorphism(SUP(S,"j")); ++ Automorphisme associ e a l'op erateur usuel de translation. D: () -> Derivation SUP(S,"x"); ++ D erivation associ ee a la d eriv ee usuelle. Theta: () -> Derivation SUP(S,"x"); ++ D erivation associ ee a la d eriv ee d'Euler.
g
== add
f
import from Integer; import from Derivation SUP(S,"x"); import from Automorphism SUP(S,"j");
f
fsigma(pol: SUP(S,"j"), n: Integer) : SUP(S,"j") == res: SUP(S,"j") := 0; for l in 0..degree(pol) repeat aux : SUP(S,"j") := 1; for i in 1..l repeat aux:=aux*(monomial(coerce(n)$S,0)+monomial(1$S,1))
f
f
g
res := res+monomial(coefficient(pol,l),0) * aux res
g
g +++
d efinit l'automorphisme:
P (j ) ! P (j + 1). 121
sigma():Automorphism SUP(S,"j") == morphism(fsigma);
f
fTheta(pol: SUP(S,"x")): SUP(S,"x") == import from S; res: SUP(S,"x") := 0; for l in 1..degree(pol) repeat res := res + monomial(coerce(l)$S*coefficient(pol,l), l)
f
res
g
g
P (x) ! xP (x)
0 . +++ d efinit l'operateur d'Euler: Theta():Derivation SUP(S,"x") == derivation fTheta;
f
fD(pol: SUP(S,"x")): SUP(S,"x") == import from S; res: SUP(S,"x") := 0; for l in 1..degree(pol) repeat res := res + monomial(coerce(l)$S*coefficient(pol,l), l-1)
f
res
g
g
P (x) ! P 0(x).
D
+++ d efinit la derivation usuelle: D():Derivation SUP(S,"x") == derivation fD;
g
122
---------------------------------- balser.as --------------------------------#include "sumit.as" #library #library #library #library #library #library import import import import import
path "path.ao"; lagleg "lagleg.ao" differential "differential.ao" borel "borel.ao" laplace "laplace.ao" runge "runge.ao"
from from from from from
complexring, path, link, geolink, method; autoder,ci; poldelto,Powerseries,borel; polodo,differential,runge; lagleg,laplace;
SUP ==> SparseUnivariatePolynomial; POLDELTO ==> LinearOrdinaryPolynomialDifferenceOperator; POLODO ==> LinearOrdinaryPolynomialDifferentialOperator; LOEDO ==> EulerLinearOrdinaryPolynomialDifferentialOperator; SI ==> SingleInteger; Z ==> Integer; F ==> DoubleFloat; CF ==> Complex F; Balser(S: BalserRing):
with
f
balser: (Powerseries(S), List Ratio SI, CF) -> CF; ++ Si est une s erie formelle 1 r -sommable, ++ balser calcule la somme en . 1 r
f^
(f;^ [k ; : : : ; k ]; zr)
(k ; : : :; k )
zr
balser: (Powerseries(S), List Ratio SI, CF, Z) -> List CF; ++ Si est une s erie formelle 1 r -sommable, ++ balser calcule la somme en , 1 r ++ ainsi que toutes ses d eriv ees jusqu' a l'ordre et retourne 0 ( n ) ++ la liste .
f^
(f;^ [k ; : : : ; k ]; zr; n)
(k ; : : :; k )
zr
[f (zr); f (zr); : : : ; f (zr)]
n
balserpath: (Powerseries(S), List Ratio SI, Path(S)) -> Record(points : List CF , value : List CF); ++ Si est une s erie formelle 1 r -sommable, ++ balserpath calcule la somme le long du chemin 1 r iLbalser: (Powerseries(S), List Ratio SI, CF) -> CF; ++ Si est une s erie formelle sommable, 1 r ++ balser calcule la somme en . 1 r
f^
f^
(f;^ [k ; : : :; k ]; ch)
(f;^ [ ; : : : ; ]; zr)
(k ; : : :; k )
( ; : : :; ) , iL zr 123
ch.
iLbalser: (Powerseries(S), List Ratio SI, CF, Z) -> List CF; ++ Si est une s erie formelle sommable, 1 r ++ balser calcule la somme en , ainsi que 1 r ++ toutes ses d eriv ees jusqu' a l'ordre et retourne la liste 0 ( n ) ++ . iLbalserpath: (Powerseries(S), List Ratio SI, Path(S)) -> Record(points : List CF , value : List CF); ++ Si est une s erie formelle sommable, 1 r ++ iLbalserpath calcule la somme 1 r ++ le long du chemin . analyticpath: (Powerseries(S),Path(S)) -> Record(points : List CF , value : List CF); ++ Si est une s erie formelle convergente, ++ analyticpath calcule le prolongement analytique de la ++ somme le long du chemin par la m ethode de Runge-Kutta.
f^
( ; : : :; ) , iL
(f;^ [ ; : : : ; ]; zr; n)
n
[f (zr); f (zr); : : : ; f (zr)]
f^
f^
(f;^ [ ; : : :; ]; ch) ch (f;^ ch)
( ; : : :; ) , iL
ch
g
== add
zr
f zr
(k ; : : : ; k )
+++ Calcule la somme en d'une s erie formelle 1 r -sommable. balser(ps : Powerseries(S) , sum : List Ratio SI , zr : CF ) : CF == import from Z; import from List CF; bal := balser(ps, sum, zr, 0); first(bal)
f
g
zr (k ; : : :; k )
+++ Calcule la somme en ainsi que les d eriv ees jusqu' a l'ordre +++ d'une s erie 1 r -sommable. balser(ps:Powerseries(S), sum:List Ratio SI , zr:CF , n:Z): List CF == import from Borel(S); kappasum := kappasummability(sum); iLbalser(ps, kappasum, zr, n)
n
g
zr ( ; : : :; ) , iL
+++ Calcule la somme en ainsi que les d eriv ees jusqu' a l'ordre +++ d'une s erie sommable. 1 r iLbalser(ps:Powerseries(S), kappasum:List Ratio SI, zr:CF):CF == import from Z; import from List CF; bal := iLbalser(ps, kappasum, zr, 0); first(bal)
n
g
124
f
f
zr ainsi (1; : : :; r ) , iL
+++ Calcule la somme en
que les d eriv ees jusqu' a l'ordre
+++
sommable.
n
d'une s erie
f
iLbalser(ps:Powerseries(S), kappasum:List Ratio SI, zr:CF, n:Z):List(CF)== import from Laplace(S); (#kappasum=0) => error("You should not use Balser's algorithm in the convergent case"); borellist := boreltransform(ps, kappasum); a : SI := numer(kappasum.1); b : SI := denom(kappasum.1); derivee(borellist,a,b,zr,n)
g
f^ = Pn0 anxn est une serie (1; : : :; r ) , iL sommable avec 1 = 1= 1, boreltransform(f;^ [1; : : : ; r]) scinde f^ en 1 sous-series, puis calcule leur transform ee de Borel d'ordre 1= 1 le long d'un
+++ Si +++ +++
+++ chemin demand e a l'utilisateur; initerms repr esente la liste +++
[a0; : : : ; a ,1] 1
et listBorel les
1
transform ees de Borel.
boreltransform(ps: Powerseries(S), kappasum: List Ratio SI): Record( listBorel:List Record(vi:List(CF),phiqvi:List(CF),wi:List(CF)), initerms: List Quotient(S) ) ==
f
import import import import import import
from from from from from from
Borel(S); Partial Quotient(S); POLDELTO(S); Laplace(S); SUP(S,"j"); S,Z;
a : SI := numer(kappasum.1); b : SI := denom(kappasum.1); listBorel: List Record(vi:List CF, phiqvi:List CF, wi:List CF):= nil; initerms: List Quotient(S) := nil; subseries : List Powerseries(S) := split(ps,a); kappa:=[numer(kappasum.l)/(denom(kappasum.l)*a) for l in 2..#kappasum];
f
for q in 1..a repeat print << "On traite la sous-s erie " << q; print << newline; print << kappa << newline; fq := subseries.q; print << fq << newline; phiq := borel(fq,b); print << "Transformee de borel:"; print << phiq;
125
print << newline; print << newline; ch := readpath(); if (#kappasum=1) then res := analytic(phiq,ch) else res := balser1(phiq,kappa,ch); listBorel := concat!( listBorel, list res); initerms := concat!( initerms, list coerce(coefficient(fq,0@Z)))
g
[listBorel, initerms]
g +++
analytic(f;^ ch)
+++ chemin
ch,
calcule le prolongement de la somme de
f^ le
en les abscisses de quadrature de Gauss-Laguerre pour le
+++ dernier maillon du chemin, de Gauss-Legendre ailleurs. +++ est suppos ee convergente. analytic( phiq : Powerseries(S), ch: Path(S)): Record(vi:List CF, phiqvi:List CF, wi:List CF) == import import import import import
from from from from from
long du
La s erie
f
Differential(S),Laplace(S); Record(eqdiff: POLODO(S),sec:SUP(S,"x")); Integer, SingleInteger,S; Path(S),List Link(S),GeoLink; Record(vi:List CF,phiqvi:List CF,wi:List CF,ycond:List CF);
diffeq := diffequation(phiq); differentialeq : POLODO(S) := diffeq.eqdiff; r: Integer := degree(differentialeq); sec: SUP(S,"x") := diffeq.sec; if (r = 0) then r := 1; deriv(differentialeq, sec)
f
g
listcoef : Partial List Quotient(S) := coefficients(phiq, r+1); failed? listcoeff ==> error("You should give more initial conditions"); coeff : List Quotient(S) := coerce(listcoef); ycond : List CF := nil; for i in 0..r-1 repeat coef := first coeff; ycond:=concat!(ycond, list(coerce(factorial(i)*numerator(coef))$S /coerce(denominator(coef)))); coeff := rest coeff
f
g
coef := first coeff;
126
znieme :
CF :=
coerce(factorial r * numerator(coef))$S /coerce(denominator(coef));
rch: List Link(S) := coerce(ch); nbpath := #(rch); weightlist : List CF := nil; vilist : List CF := nil; phiqvilist : List CF := nil; for l in 1..nbpath repeat gl : GeoLink:=coerce(rch.l); aux := analyticlocal(gl,nbpath-l,ycond, znieme,differentialeq,sec); vilist := concat!(vilist,aux.vi); phiqvilist := concat!(phiqvilist,aux.phiqvi); weightlist := concat!(weightlist,aux.wi); if (l < nbpath) then ycond := aux.ycond
f
g
[vilist,phiqvilist,weightlist] ;
g
+++ Prolongement sur un chemin el ementaire. analyticlocal( gl:GeoLink, l:SingleInteger, ycond:List CF, znieme:CF, differentialeq:POLODO(S), sec:SUP(S,"x")): Record(vi:List CF, phiqvi:List CF, wi:List CF, ycond:List CF) ==
f
import import import import import import
from from from from from from
Record(np: SI, gamma: F -> CF, gammaderiv: S; LagLeg; Record(absci: List F, weight: List F); Runge Kutta(S); F;
F -> CF);
rgl := coerce(gl); gamma := rgl.gamma; gammaderiv := rgl.gammaderiv; derivs := generateDerivs(differentialeq, sec,gamma,gammaderiv,znieme); if (l=0) then lag := laguerre(gl); abscisse := lag.absci; weight := lag.weight
f
g else f
leg := legendre(gl); abscisse := leg.absci; weight := leg.weight
127
g
tbegin: F := 0; nbpoint := #(abscisse); weightlocal : List CF := nil; vilocal : List CF := nil; phiqlocal : List CF := nil; ycondlocal: List CF := nil;
f
for i in 1..nbpoint repeat ti := abscisse.i; vi := gamma(ti); wi := weight.i; ycond := rk4f(ycond, tbegin, ti, 10@SI, derivs); yi := first ycond; vilocal := concat!(vilocal,list vi); weightlocal := concat!(weightlocal, list(wi * gammaderiv(ti))); phiqlocal := concat!(phiqlocal, list yi); print << "x= "<<$CF vi << newline; print << "y= "<<$CF yi << newline; tbegin := ti
g
if (l = 0) then ycondlocal := rk4f(ycond,tbegin, 1., 10@SI, derivs); [vilocal,phiqlocal,weightlocal,ycondlocal]
g
^
( ; : : : ; ) , iL ^
(^; [ ; : : :; ]; ch)
+++ Si est une s erie sommable, balser1 1 r 1 r +++ calcule la somme de le long du chemin , en les abscisses de +++ Gauss-Laguerre sur le dernier maillon, de Gauss-Legendre ailleurs. balser1(phiq:Powerseries(S) , kappasum : List Ratio SI, ch : Path(S)): Record(vi:List CF, phiqvi:List CF, wi:List CF) ==
ch
f
import import import import import import import
from Differential(S); from Record(eqdiff: POLODO(S), sec: SUP(S,"x")); from Laplace(S); from List Link(S); from LagLeg; from Record(absci: List F, weight: List F); from Record( listBorel:List Record(vi:List(CF),phiqvi:List(CF),wi:List(CF)), initerms:List Quotient(S)); import from Runge Kutta(S);
diffeq := diffequation(phiq); differentialeq := diffeq.eqdiff;
128
r: Integer := degree(differentialeq); sec := diffeq.sec; if (r = 0) then r := 1; deriv(differentialeq, sec)
f
g
rch : List Link(S) := coerce(ch); weightlist : List CF := nil; vilist : List CF := nil; phiqvilist : List CF := nil;
f
for l in 1..#rch repeat gl : GeoLink := coerce(rch.l); rgl: Record(np:SI, gamma:F->CF, gammaderiv:F->CF):=coerce(gl); gamma: F -> CF := rgl.gamma; gammaderiv: F -> CF := rgl.gamma; if (l=#rch) then lag := laguerre(gl); abscisse := lag.absci; weight := lag.weight
f
g else f
leg := legendre(gl); abscisse := leg.absci; weight := leg.weight
g
mch: Method(S) := coerce(rch.l); if typeSerie?(mch) then a : SI := numer(kappasum.1); b : SI := denom(kappasum.1); borellist := boreltransform(phiq, kappasum); for i in 1..#abscisse repeat ti: F := abscisse.i; vi: CF := gamma(ti); yi := first derivee(borellist,a,b,vi,0); wi: CF := weight.i * gammaderiv(ti); vilist := concat!(vilist, list vi); weightlist := concat!(weightlist, list wi); phiqvilist := concat!(phiqvilist, list yi); print << "x= "<<$CF vi << newline; print << "y= "<<$CF yi << newline
f
f
g
ycond := derivee(borellist,a,b,gamma(1),r-1)
129
g else f
tbegin: F := 0.; derivs:=generateDerivs(differentialeq,sec,gamma,gammaderiv,0); v0 := beginGeoLink(gl);
f
for i in 1..#abscisse repeat ti: F := abscisse.i; vi: CF := gamma(ti); wi: CF := weight.i * gammaderiv(ti); ycond := rk4f(ycond, tbegin, ti,10@SI, derivs); yi := first ycond; vilist := concat!(vilist, list vi); weightlist := concat!(weightlist, list wi); phiqvilist := concat!(phiqvilist,list yi); tbegin := ti; print << "x= "<<$CF vi << newline; print << "y= "<<$CF yi << newline
g
if l < #rch then ycond := rk4f(ycond,tbegin,1.,10@SI,derivs)
g
g
[vilist,phiqvilist,weightlist]
g
deriv(differentialeq: POLODO(S), sec: import from AutoDer(S); import from Derivation SUP(S,"x"); import from Z;
SUP(S,"x")):() ==
f
a0: SUP(S,"x") := coefficient(differentialeq, 0); a0deriv: SUP(S,"x") := function(D()) a0; differentialeq := monomial(a0deriv, 0) + monomial(a0,1); sec:= function(D()) sec; ()
g
ch,
+++ Calcul de la somme d'une s erie multisommable le long du chemin +++ les points en lesquels est calcul ee la somme e tant equidistants +++ sur chaque chemin el ementaire. balserpath(ps:Powerseries(S), sum:List Ratio SI, ch:Path(S)): Record(points:List CF, value:List CF) == import from Borel(S);
f
130
kappasum := kappasummability(sum); iLbalserpath(ps, kappasum, ch)
g
+++ Calcul de la somme d'une s erie +++
ch,
iL-multisommable
le long du chemin
les points en lesquels est calcul ee la somme e tant
+++ equidistants sur chaque chemin e l ementaire. iLbalserpath(ps:Powerseries(S), kappasum:List Ratio SI, ch:Path(S)): Record(points:List CF, value:List CF) ==
f
import import import import import import
from Differential(S); from Record(eqdiff: POLODO(S), sec: SUP(S,"x")); from Laplace(S),LagLeg; from List Link(S); from Runge Kutta(S); from Record( listBorel:List Record(vi:List(CF),phiqvi:List(CF),wi:List(CF)), initerms:List Quotient(S));
diffeq := diffequation(ps); differentialeq := diffeq.eqdiff; r: Integer := degree(differentialeq); sec := diffeq.sec; if (r = 0) then r := 1; deriv(differentialeq, sec)
f
g
rch : List Link(S) := coerce(ch); abs: List CF := nil; val : List CF := nil;
f
for l in 1..#rch repeat gl : GeoLink := coerce(rch.l); rgl: Record(np:SI, gamma:F->CF, gammaderiv:F->CF) := coerce(gl); gamma: F -> CF := rgl.gamma; gammaderiv: F -> CF := rgl.gamma; n := rgl.np; nF: F := coerce(n); abscisse : List F := [coerce(i)/nF for i in 1..n]; mch: Method(S) := coerce(rch.l); if typeSerie?(mch) then a : SI := numer(kappasum.1); b : SI := denom(kappasum.1);
f
131
borellist := boreltransform(ps, kappasum); for i in 1..#abscisse repeat ti: F := abscisse.i; vi: CF := gamma(ti); abs := concat!(abs, list vi); val := concat!(val, derivee(borellist,a,b,vi,0))
f
g
ycond := derivee(borellist,a,b,gamma(1),r-1)
g else f
tbegin: F := 0.; derivs := generateDerivs(differentialeq, sec, gamma, gammaderiv,0); v0 := beginGeoLink(gl); for i in 1..#abscisse repeat ti: F := abscisse.i; vi: CF := gamma(ti); abs := concat!(abs, list vi); ycond := rk4f(ycond, tbegin, ti,10@SI, derivs); val := concat!(val,list ycond(1)); tbegin := ti
f
g
g
g
[abs,val]
g
ch
+++ Calcul de la somme d'une s erie convergente le long du chemin . +++ Les points en lesquels est calcul ee la somme sont e quidistants +++ sur chaque chemin el ementaire. analyticpath(ps: Powerseries(S), ch: Path(S)): Record(points:List CF, value:List CF) ==
f
import import import import import
from from from from from
Differential(S),Laplace(S); Record(eqdiff: POLODO(S),sec:SUP(S,"x")); Integer, SingleInteger,S; Path(S),List Link(S),GeoLink; Record(vi : List CF , phiqvi : List CF ,ycond:List CF);
diffeq := diffequation(ps); differentialeq : POLODO(S) := diffeq.eqdiff; r: Integer := degree(differentialeq); sec: SUP(S,"x") := diffeq.sec; if (r = 0) then r := 1;
f
132
deriv(differentialeq, sec)
g
ycond : List CF := nil; for i in 0..r-1 repeat coeff : Partial Quotient(S) := coefficient(ps,i); failed? coeff ==> error("You should give more initial conditions"); coefff : Quotient(S) := coerce(coeff); ycond:=concat!(ycond, list(coerce(factorial(i)*numerator(coefff))$S )) /coerce(denominator(coefff))
f
g
coeff : Partial Quotient(S) := coefficient(ps,r); failed? coeff ==> error("You should give more initial conditions"); coefff : Quotient(S) := coerce(coeff); znieme : CF := coerce(factorial r * numerator(coefff))$S ; /coerce(denominator(coefff)) rch: List Link(S) := coerce(ch); nbpath := #(rch); abs : List CF := nil; val : List CF := nil;
f
for l in 1..nbpath repeat gl : GeoLink:=coerce(rch.l); aux := analyticloc(gl,nbpath-l,ycond, znieme,differentialeq,sec); abs := concat!(abs,aux.vi); val := concat!(val,aux.phiqvi); if (l < nbpath) then ycond := aux.ycond
g
[abs,val] ;
g
analyticloc( gl:GeoLink, l:SingleInteger, ycond:List CF, znieme:CF, ): differentialeq:POLODO(S), sec:SUP(S,"x") Record(vi:List CF, phiqvi:List CF,ycond:List CF) ==
f
import import import import import
from from from from from
Record(np: SI, gamma: S; LagLeg; Runge Kutta(S); F;
rgl := coerce(gl); gamma := rgl.gamma;
133
F -> CF, gammaderiv:
F -> CF);
gammaderiv := rgl.gammaderiv; n := rgl.np; nF: F := coerce(n); abscisse : List F := [coerce(i)/nF for i in 1..n]; derivs := generateDerivs(differentialeq, sec,gamma,gammaderiv,znieme); tbegin: F := 0; vilocal : List CF := nil; phiqlocal : List CF := nil; ycondlocal: List CF := nil; for i in 1..n repeat ti := abscisse.i; ycond := rk4f(ycond, tbegin, ti, 10@SI, derivs); vilocal := concat!(vilocal,list gamma(ti)); phiqlocal := concat!(phiqlocal, list ycond.1); tbegin := ti
f
g
ycondlocal := ycond; [vilocal,phiqlocal,ycondlocal]
g
g
134
---------------------------------- borel.as ---------------------------------#include "sumit.as" #library powerseries "powerseries.ao" import from powerseries; import from poldelto; import from autoder, ci; SUP ==> SparseUnivariatePolynomial; POLDELTO ==> LinearOrdinaryPolynomialDifferenceOperator; SI ==> SingleInteger; Z ==> Integer; Borel(S: BalserRing):
with
f
borel: (PowerSeries(S), SI) -> PowerSeries(S); ++ Calcule la transform ee de Borel d'une s erie formelle. kappasummability : List Ratio SI -> List Ratio SI; ++ D efinit les ordres des transform ees de Borel-Laplace. split: (PowerSeries(S), SI) -> List PowerSeries(S); ++ Scinde une s erie formelle. split: (POLDELTO(S), SI) -> POLDELTO(S); ++ Scinde un op erateur aux diff erences.
g
== add
f [ ; ::; ]
+++ Retourne la liste 1 p. kappasummability(sum : List Ratio SI ) : List Ratio SI == ASSERT (#sum >=1); kappasum : List Ratio SI := list (sum.1); #sum = 1 => kappasum; for i in 2..#sum repeat kappasum := concat!(kappasum, list(1/(1/sum.i-1/sum.(i-1))))
f
f
g
kappasum
g
f
gamma(l: SI): S == res: SI := 1; for i in 2..l repeat res := res*(i-1); coerce(res)
135
g facteur(l:Integer,b:Integer): import from SUP(S,"j"); import from S;
SUP(S,"j") ==
f
(l = 0) => 1; res: SUP(S,"j") := 1; for i in 1..l*b repeat fact : SUP(S,"j") := monomial(coerce(b)$S,1); fact := fact+coerce(coerce(b+i-1)$S)$SUP(S,"j"); res := res*fact
f
res
g
g
+++ Calcule la
pseudo
transform ee de Borel formelle d'ordre
+++ formelle. borel(ps: import import import import
PowerSeries(S), b: from from from from
SI): PowerSeries(S) ==
1=b
d'une s erie
f
Partial List Quotient(S),S,SI,Z; List Quotient(S); SUP(S,"j"); Automorphism SUP(S,"j");
ASSERT (b > 0); cond := initcond(ps); m : SI := #cond; delta : POLDELTO(S) := delto(ps); r := degree(delta); condd:Partial List Quotient(S):=coefficients(ps,m+1)$PowerSeries(S); failed? condd => error( "Impossible to calculate the next coefficient in order to define the Borel transform";) condaux : List Quotient(S) := rest(coerce(condd)); condbo: List Quotient(S) := nil; for l in 1..m repeat condbo:=concat!(condbo, list(numerator(first condaux) /(denominator(first condaux)*gamma(b*l)))); condaux := rest condaux
f
g
deltabo: POLDELTO(S) := 0; for k in 0..r repeat mon: SUP(S,"j") := apply(sigma()$AutoDer(S),coefficient(delta,k)); mon := mon * facteur(k,coerce b);
f
136
deltabo := deltabo + monomial(mon,k) bor: bor
g
PowerSeries(S) := createPowerSeries(condbo,deltabo);
g
f
apply(delt: POLDELTO(S), l: Integer): POLDELTO(S) == import from Automorphism(SUP(S,"j")); import from AutoDer(S); res : POLDELTO(S) := 0; for i in 0..degree(delt) repeat res := res + monomial(apply(sigma()^ l, coefficient(delt,i)), i+l)
f
res
g
g
inconnues( delt: POLDELTO(S), a: SingleInteger): import from Integer; inc : Boolean := false; l : Integer := 1; while inc and (l <= degree delt) repeat coef : SUP(S,"j") := coefficient(delt,l); if coef = 0 then l := l+1 else l rem coerce a = 0 => inc := true; l := l + 1
Partial Integer ==
f
f
g
g
inc => failed; coerce(l)
g
+++ Calcule un multiple d'un op erateur aux diff erences tel que les k +++ coefficients des termes avec non congru a soient nuls. split(delt: POLDELTO(S), a:SingleInteger) : POLDELTO(S) == import from SUP(S,"j"); import from Integer;
k
(a = 1) => delt; r := degree(delt); (r = 0) => delt; ai : Integer := coerce a; equations : List POLDELTO(S) := list delt; for i in 1..r*(ai-1) repeat
f
137
a
f
f
equations := concat!(equations,list apply(delt,i))
g
fini : Boolean := false; while fini repeat pol := first equations; ind : Partial Integer := inconnues(pol, a); if failed? ind then fini := true else l : Integer := coerce(ind); Pl := coefficient(pol,l); eqaux := rest equations; equations := nil; for i in 1..#eqaux repeat delti := eqaux.i; if coefficient(delti,l) = 0 then equations := concat!(equations, list delti) else equations:=concat!(equations, list(Pl*delti-coefficient(delti,l)*pol))
f
f
f
pol
g
g
g
g
f
transform(q:SingleInteger, a:SingleInteger, l:Integer):SUP(S,"j") == import from S; res : SUP(S,"j") := 1; for i in 1..l repeat res := res * (monomial(coerce(q)$S,0) + monomial(coerce(a)$S,1))
f
res
g
g
apply(pol:SUP(S,"j"), q:SingleInteger, a:SingleInteger):SUP(S,"j") == import from Integer; res : SUP(S,"j") := 0; for l in 0..degree(pol) repeat res := res + monomial(coefficient(pol,l),0)*transform(q,a,l)
f
res
g
g
+++ Scinde une s erie formelle en
a
sous-s eries.
138
f
split(ps:PowerSeries(S), a:SingleInteger) : import from POLDELTO(S); import from Integer; import from List Quotient(S);
List PowerSeries(S) ==
f
ASSERT( a >= 1); a = 1 => list ps; delt := delto(ps); cond := initcond(ps); deltsplit := split(delt,a); ai : Integer := coerce a; k : Integer := degree(deltsplit) quo ai; resdelt : List PowerSeries(S) := nil; m: Integer := coerce(#cond); r: Integer := degree(delt); mu := m - r; conddd : Partial List Quotient(S) := coefficients(ps,mu+ai*k); failed? conddd => error( "Not enough initial conditions in order to split the PowerSeries"); condd : List Quotient(S) := coerce(conddd); card := #condd; for q in 0..a-1 repeat muq : Integer := 0; while (muq*ai < mu- coerce(q)) repeat muq := muq+1; mq := k + muq; deltq : POLDELTO(S) := 0; for l in 0..k repeat deltq:=deltq+monomial(apply(coefficient(deltsplit,l*ai),q,a),l)
f
f
g
initcondq : List Quotient(S) := nil; i:SingleInteger := 0; while (coerce(i) <= mq-1) repeat initcondq := concat!(initcondq, list condd.(q+1+i*a)); i := i + 1
f
g
resdelt := concat!(resdelt,list createPowerSeries(initcondq,deltq));
g
resdelt
g
g
139
--------------------------------- ci.as -------------------------------------#include "sumit" #library complexring "complexring.ao" import from complexring; F ==> DoubleFloat; CF ==> Complex DoubleFloat; BalserRing :
Category == Join(IntegralDomain,ComplexRing);
BalInt : BalserRing == Integer add Rep ==> Integer; import from Rep; import from F; import from CF;
f
f
coerce(i:%):CF == ii : Integer := rep(i); iii: F:=coerce(ii)$F; complex(iii,0.)
g
extree(x:%):ExpressionTree == extree rep x; coerce(i:Integer):% == per(i);
g
140
----------------------------- differential.as -------------------------------#include "sumit.as" #library powerseries "powerseries.ao" #library polodo "polodo.ao" #library eulerlodo "eulerlodo.ao" import from ci,autoder; import from poldelto,powerseries; import from polodo,eulerlodo; Z ==> Integer; SUP ==> SparseUnivariatePolynomial; POLDELTO ==> LinearOrdinaryPolynomialDifferenceOperator; POLODO ==> LinearOrdinaryPolynomialDifferentialOperator; AUTOMOR ==> Automorphism; LOEDO ==> EulerLinearOrdinaryPolynomialDifferentialOperator; Differential(S: BalserRing ):
with
f
diffequation: PowerSeries(S) -> Record(eqdiff:POLODO(S),sec:SUP(S,"x")); ++ Retourne une e quation diff erentielle dont est solution la s erie ++ formelle. eulerequation: PowerSeries(S) -> Record(eqdiff:LOEDO(S),sec:SUP(S,"x")); ++ Retourne une e quation diff erentielle (avec l'op erateur d'Euler) ++ dont est solution la s erie formelle.
g
== add
f f
diffequation(ps:PowerSeries(S)):Record(eqdiff:POLODO(S),sec:SUP(S,"x"))== import import import import import import
from from from from from from
Integer,S,Quotient S,Partial Quotient S, UnivariateSkewPolynomialCategoryOps(SUP(S,"x"),POLODO(S)); POLDELTO(S); Derivation SUP(S,"x"); AUTOMOR SUP(S,"x"); AutoDer(S);
delta := delto(ps); r := degree(delta); lodop: POLODO(S) := 0;
141
m : Integer := coerce(#initcond(ps)); for i in 0..r repeat Q: SUP(S,"j") := coefficient(delta,r-i); q := degree(Q); for j in 0..q repeat lodoij: POLODO(S) := 1; li:POLODO(S):=monomial(monomial(coerce(i-r)$S,0)$SUP(S,"x"),0); li := li + monomial(monomial(1$S,1)$SUP(S,"x"),1); for l in 1..j repeat lodoij := times( lodoij,li,1$AUTOMOR(SUP(S,"x")), function D()$Derivation(SUP(S,"x")))
f
f
f
g
lodop := lodop + monomial(monomial(coefficient(Q,j),i)$SUP(S,"x"),0)*lodoij
g
g
pol: List Quotient(S) := nil; for l in 0..r-1 repeat pl: Quotient(S) := 0; for i in r-l..r repeat alpha: Quotient(S) := coerce(coefficient(ps,i-r+l)); beta:S:=apply(coefficient(delta,i),coerce(l-r)$S)$SUP(S,"j"); pl := pl + (numerator(alpha)*beta)/ denominator(alpha)
f
f
g
pol := concat!(pol,list(pl))
g
f
for l in r..m-1 repeat pl: Quotient(S) := 0; for i in 0..r repeat alpha: Quotient(S) := coerce(coefficient(ps,i-r+l)); beta:S:=apply(coefficient(delta,i),coerce(l-r)$S)$SUP(S,"j"); pl := pl + (numerator(alpha)*beta)/ denominator(alpha)
f
g
pol := concat!(pol,list(pl))
g
div: S := 1; for a in pol repeat div := div * denominator(a); divv: Quotient(S) := coerce(div); poly: SUP(S,"x") := 0; for l in 0..m-1 repeat poly:=poly+monomial(numerator(divv*first(pol)),l); pol := rest pol
f
g
dispose!(pol);
142
lodop:=monomial(monomial(div,0)$SUP(S,"x"),0)*lodop; [lodop,poly]
g
f
eulerequation(ps:PowerSeries(S)):Record(eqdiff:LOEDO(S),sec:SUP(S,"x"))== import import import import import import
from from from from from from
Integer,S,Quotient S,Partial Quotient S; UnivariateSkewPolynomialCategoryOps(SUP(S,"x"),LOEDO(S)); POLDELTO(S); Derivation SUP(S,"x"); AUTOMOR SUP(S,"x"); AutoDer(S);
delta := delto(ps); r := degree(delta); lodo: LOEDO(S) := 0; m : Integer := coerce(#initcond(ps)); for i in 0..r repeat Q: SUP(S,"j") := coefficient(delta,r-i); q := degree(Q); for j in 0..q repeat lodoij: LOEDO(S) := 1; li:LOEDO(S):=monomial(monomial(coerce(i-r)$S,0)$SUP(S,"x"),0); li:=li+monomial(monomial(1$S,0)$SUP(S,"x"),1); for l in 1..j repeat lodoij:=times( lodoij,li,1$AUTOMOR(SUP(S,"x")), function Theta()$Derivation(SUP(S,"x")))
f
f
f
g
lodo := lodo + monomial(monomial(coefficient(Q,j),i)$SUP(S,"x"),0)*lodoij
g
g
pol: List Quotient(S) := nil; for l in 0..r-1 repeat pl: Quotient(S) := 0; for i in r-l..r repeat alpha: Quotient(S) := coerce(coefficient(ps,i-r+l)); beta:S:=apply(coefficient(delta,i),coerce(l-r)$S)$SUP(S,"j"); pl := pl + (numerator(alpha)*beta)/ denominator(alpha)
f
f
g
pol := concat!(pol,list(pl))
g
f
for l in r..m-1 repeat pl: Quotient(S) := 0;
143
f
for i in 0..r repeat alpha: Quotient(S) := coerce(coefficient(ps,i-r+l)); beta:S:=apply(coefficient(delta,i),coerce(l-r)$S)$SUP(S,"j"); pl := pl + (numerator(alpha)*beta)/ denominator(alpha) pol := concat!(pol,list(pl)) div: S := 1; for a in pol repeat div := div * denominator(a); divv: Quotient(S) := coerce(div); poly: SUP(S,"x") := 0; for l in 0..m-1 repeat poly := poly + monomial(numerator(divv * first(pol)),l); pol := rest pol
g
g
f
g
dispose!(pol); lodo := monomial(monomial(div,0)$SUP(S,"x"),0) * lodo; [lodo,poly]
g
g
144
---------------------------------- eulerlodo.as -----------------------------#include "sumit.as" #library autoder "autoder.ao" import from autoder,ci; LODO ==> LinearOrdinaryDifferentialOperator; SUP ==> SparseUnivariatePolynomial; EulerLinearOrdinaryPolynomialDifferentialOperator(S: BalserRing): UnivariateSkewPolynomialCategory SUP(S,"x") == LODO(SUP(S,"x"),Theta()$AutoDer(S),"Theta");
145
------------------------------- lagleg.as -----------------------------------#include "sumit.as" #library geolink "geolink.ao"; import from geolink; F ==> DoubleFloat; SI ==> SingleInteger; CF ==> Complex F; LagLeg:
with
f
laguerre:
GeoLink -> Record(absci:
List F, weight:
List F);
legendre:
GeoLink -> Record(absci:
List F, weight:
List F)
g
== add
f (t )
+++ D efinit les abscisses i et les poids de la formule de quadrature +++ de Laguerre. Les poids sont ceux des tables de quadrature. +++ Par la suite, les poids seront le produit de ces poids par +++ 0 i . On se limite pour l'instant a 32 abscisses. laguerre(gl: GeoLink): Record(absci: List F, weight: List F) == rgl:Record(np:SI,gamma:F->CF,gammaderiv:F->CF):=coerce(gl); nlag := rgl.np;
(t ) exp(:::)
abscisses: List F := [ 0.044489365833267025, 0.576884629301886420, 1.72240877644464520, 3.49221327302199450, 5.90395850417424360, 8.98294092421259580, 12.7636979867427250, 17.2924543367153130, 22.6308890131967750, 28.8621018163234710, 36.1004948057519710, 44.5092079957549340, 54.3337213333969110, 65.9753772879350480, 80.1874469779135280, 98.8295428682839720,
f
0.234526109519618520, 1.07244875381781750, 2.52833670642579450, 4.61645676974976730, 7.35812673318624040, 10.7830186325399720, 14.9311397555225550, 19.8558609403360540, 25.6286360224592470, 32.3466291539647350, 40.1457197715394420, 49.2243949873086430, 59.8925091621340210, 72.6876280906627170, 88.7353404178923960, 111.751398097937680 ] ;
146
weights: List F := [ 0.114187105768104840, 0.418793137324853030, 0.727648788380971380, 1.04361887589207680, 1.37022133852178110, 1.71161935268645730, 2.07295934024653360, 2.46088907248823600, 2.88439209292204150, 3.35621769259580220, 3.89551304494854950, 4.53311497853436170, 5.32350097202366590, 6.37661467415965270, 7.96769350929590010, 11.1630130907678720,
0.266065216897615110, 0.572532846499804740, 0.884536719340249710, 1.20534927415235260, 1.53877725646864450, 1.88942406344948410, 2.26310663399696350, 2.66750812639711680, 3.11326132703958600, 3.61586985648426860, 4.19939410471158470, 4.90427028761124460, 5.80633321423362120, 7.07352658070724300, 9.20504033127818850, 15.3901804152606420 ] ;
[abscisses,weights]
g
+++ D efinit les abscisses
+++ de Legendre.
(ti)
et les poids de la formule de quadrature
Les poids sont ceux des tables de quadrature.
+++ Par la suite, les poids seront le produit de ces poids par
+++
0(ti) exp(:::.
On se limite pour l'instant a 32 abscisses.
f
legendre(gl:GeoLink):Record(absci:List F,weight:List F)== abscisses:
List F :=
147
[
0.001368069075259215, 0.0176188722062468040, 0.0518394221169739520, 0.102758102016028790, 0.168477866534892390, 0.246550045533885320, 0.334065698858936190, 0.427764019208601710, 0.524153832843869130, 0.619643681126068580, 0.710675638065317630, 0.793857878620381170, 0.866091059370144850, 0.924683806866285000, 0.967453037968869830, 0.992805755772634250,
weights: List F := [ 0.00350930500473504810, 0.0126960326546310290, 0.0214179490111133410, 0.0293420467392677730, 0.0361728970544242570, 0.0416559621134733720, 0.0455869393478819490, 0.0478193600396374300, 0.0482700442573639040, 0.0469221995404022890, 0.0438260465022019060, 0.0390969478935351570, 0.0329111113881809210, 0.0254990296311880870, 0.0171369314565107150, 0.00813719736545283530,
0.00719424422736580920, 0.0325469620311301620, 0.0753161931337150130, 0.133908940629855150, 0.206142121379618830, 0.289324361934682360, 0.380356318873931410, 0.475846167156130860, 0.572235980791398280, 0.665934301141063800, 0.753449954466114650, 0.831522133465107630, 0.897241897983971090, 0.948160577883026070, 0.982381127793753120, 0.998631930924740830 ] ; 0.00813719736545283530, 0.0171369314565107150, 0.0254990296311880870, 0.0329111113881809210, 0.0390969478935351570, 0.0438260465022019060, 0.0469221995404022890, 0.0482700442573639040, 0.0478193600396374300, 0.0455869393478819490, 0.0416559621134733720, 0.0361728970544242570, 0.0293420467392677730, 0.0214179490111133410, 0.0126960326546310290, 0.00350930500473504810 ] ;
[abscisses,weights]
g
g
148
-------------------------------- laplace.as ---------------------------------#include "sumit.as" #library path "path.ao" #library point "point.ao" #library ci "ci.ao" import from complexring, path, method , localisation, minisup, point,ci; SI ==> SingleInteger; Z ==> Integer; F ==> DoubleFloat; CF ==> Complex F; Laplace(S : BalserRing):
with
f
readpath:() -> Path(S); ++ Lecture du chemin d'integration. Devrait se faire interactivement. derivee:( Record( listBorel:List Record(vi:List CF,phiqvi:List CF,wi:List CF), initerms:List Quotient(S)), SI, SI, CF, Z) -> List CF; ++ Calcule les derivees successives de la somme connaissant le ++ prolongement de chacune de ses sous-s eries. ;
g
== add
f
derivee( borellist: Record( listBorel:List Record(vi:List(CF),phiqvi:List(CF),wi:List(CF)), initerms: List Quotient(S)), a: SI, b: SI, zr: CF, n: Z) : List CF ==
f
import from Ratio Z; listres := borellist.listBorel; initerms := borellist.initerms; quadr: List(List(CF)) := nil; for q in 1..a repeat quadr:=concat!(quadr,list quadrv(listres.q,a,b,zr,n))
f
g
derivn : List CF := nil; for i in 0..n repeat derivaux : CF := 0;
f
149
f
for q in 1..a repeat alpha0 := initerms.q; quadrq := quadr.q; der: CF := first(quadrq); der:=der+ coerce(numerator(alpha0))$S /coerce(denominator(alpha0))$S; der := der * deriv(q-1, i, zr); for k in 0..i-1 repeat bin := binome(i,k); binF:=coerce(numer(bin))$F/coerce(denom(bin))$F; deraux := element(quadrq,i-k+1) ; deraux := deraux * deriv(q-1, k, zr) * binF; der := der + deraux ; derivaux := derivaux + der ; derivn := concat!(derivn, list derivaux) ; derivn ;
f
g
g
g
g
f
binome(n: Z, k: Z) : Ratio Z == factorial(n) / (factorial(k) * factorial(n-k)) ;
g
f
deriv(q: SI, k: Integer, xr: CF) : CF == qi : Z := coerce(q); if (k=0) then coef : Z := 1 else coef : Z := qi; for i in 1..k-1 repeat coef := coef*(qi-i) ; coeff : CF := coerce(coef); res : CF := coeff*xr^ (qi-k); res ;
f
g
g
f
quadrv( res:Record(vi:List CF, phiqvi:List CF, wi:List CF), ):List CF== a:SI, b:SI, zr:CF, n:Z import from DoubleFloatElementaryFunctions; viabs : List CF := res.vi; phiqvi : List CF := res.phiqvi; weightvi : List CF := res.wi;
150
quadr : List CF := nil; aF : F := coerce(a); bF : F := coerce(b); derivn: List Record(coef: F, expx: F, expt: F) := [[1/bF,0.,0.]]; for l in 0..n repeat resquadr: CF := 0; derivnn: List Record(coef: F, expx: F, expt: F) := nil; for j in 1..#derivn repeat aux := derivn.j; if (aux.expx = 0) then coeff := aux.coef * aux.expx; expxx := aux.expx - 1.; exptt := aux.expt; derivnn := cons([coeff,expxx,exptt], derivnn) ; coeff := aux.coef * aF/bF; expxx := aux.expx - aF/bF - 1.; exptt := aux.expt + 1./bF; derivnn := cons([coeff,expxx,exptt], derivnn); resaux: CF := 0; for i in 1..#viabs repeat vi := viabs.i; resaux:=resaux+ phiqvi.i*weightvi.i*exp(aux.expt*log(vi)) exp(-exp(log(vi)/bF)/exp(log(zr)*aF/bF)) ; resaux:=resaux*aux.coef*exp(aux.expx*log(zr)); resquadr := resquadr + resaux ; quadr := concat!(quadr, list resquadr); derivn := [derivnn.i for i in 1..#derivnn] ; quadr ;
f
f
f
g
f
g
g
g
g
element(quadruu:
List CF, n:
Z): CF ==
f
quadr := quadruu; for i in 2..n repeat quadr := rest(quadr); first(quadr) ;
g
+++ Lecture d'un chemin de sommation. readpath():Path(S) ==
f
151
import from SI,F,CF,List F,S; import from Method(S),Localisation(S),MiniSUP(S),Point(S); ch:Path(S):=createSeg( complex(0.,0.),complex(1,0),32, createSerie(createLoc(point(0@S)),0,[1$F],0)); ch:=ch+createSeg( complex(1,0),complex(2.,0),32, createRK(createLoc(point(1@S)))); ch:=ch+createSeg( complex(2.,0),complex(5.,0),32, createRK(createLoc(point(1@S)))); ch
g
g
152
---------------------------------- poldelto.as ------------------------------#include "sumit.as" #library autoder "autoder.ao" import from autoder,ci; LDELTO ==> LinearOrdinaryDifferenceOperator; SUP ==> SparseUnivariatePolynomial; LinearOrdinaryPolynomialDifferenceOperator(S: BalserRing): UnivariateSkewPolynomialCategory SUP(S,"j") == LDELTO(SUP(S,"j"),sigma()$AutoDer(S),"tau");
153
---------------------------------- polodo.as --------------------------------#include "sumit.as" #library autoder "autoder.ao" import from autoder,ci; LODO ==> LinearOrdinaryDifferentialOperator; SUP ==> SparseUnivariatePolynomial; LinearOrdinaryPolynomialDifferentialOperator(S: BalserRing): UnivariateSkewPolynomialCategory SUP(S,"x") == LODO(SUP(S,"x"),D()$AutoDer(S),"D");
154
---------------------------------- powerseries.as ---------------------------#include "sumit.as" #library poldelto "poldelto.ao" import from poldelto; import from autoder,ci; SUP ==> SparseUnivariatePolynomial; POLDELTO ==> LinearOrdinaryPolynomialDifferenceOperator; PowerSeries(S: BalserRing):
Ring with
f
createPowerSeries:(List Quotient(S), POLDELTO(S)) -> %; ++ Cr ee une s erie formelle. dispose!: % -> (); ++ D etruit une s erie formelle. coerce: % -> Record(ic: List Quotient(S), delt: ++ Donne la repr esentation interne. initcond: % -> List Quotient(S); ++ Retourne la liste des conditions initiales.
POLDELTO(S));
delto: % -> POLDELTO(S); ++ Retourne l'op erateur aux diff erences. coherent?: % -> Boolean; ++ Teste si les premiers termes sont solutions de l' equation ++ aux diff erences. coefficients : (% , SingleInteger) -> Partial List(Quotient(S)); ++ Retourne 0 nb,1 . coefficient : (%, SingleInteger) -> Partial Quotient(S); ++ Retourne nb . coefficients : (% , Integer) -> Partial List(Quotient(S)); ++ Retourne 0 nb,1 . coefficient : (%, Integer) -> Partial Quotient(S); ++ Retourne nb . nextCoeff: (List Quotient(S), POLDELTO(S)) -> Partial Quotient(S);
[a ; :::a
]
a
[a ; :::a
]
a
<<:
g
== add
(TextWriter, %) -> TextWriter
f
Rep == Record(ic: import from Rep;
List Quotient(S), delt:
155
POLDELTO(S));
import from Integer,SUP(S,"j"),Quotient(S); 0 :
% == per([[] , monomial(1,0)]);
1 :
% == per([[1] , monomial(1,0)]);
(ps1:%)+(ps2:%):%==error("The addition is not yet implemented"); (ps1:%)*(ps2:%):%==error("The multiplication is not yet implemented"); coerce(z:Integer) :
% == error("not yet implemented");
coerce(i:SingleInteger): (ps :
% )^ (z:Integer) :
% == error("not yet implemented"); % == error("not yet implemented");
f
<<(p:TextWriter, ps:%): TextWriter == delta := delto(ps); cond := initcond(ps); p := p << "Initial Conditions:" << cond << newline; p := p << "Difference equation:" << delta << newline
g
f
-(ps:%) : % == import from SingleInteger; cond := initcond(ps); condaux : List Quotient(S) := nil; delta := delto(ps); for l in 1.. #cond repeat condaux:=concat!(condaux,list(-cond.l))
f
g
per([condaux,delta])
g
f
(s1:Quotient(S)) * (ps:%) : % == import from SingleInteger; cond := initcond(ps); condaux : List Quotient(S) := nil; delta := delto(ps); for l in 1..#cond repeat condaux := concat!(condaux,list(s1*cond.l))
f
g
per([condaux,delta])
g
156
(ps:%) * (s1:Quotient(S)) : % == s1*ps;
f
(ps1:%) = (ps2:%):Boolean == import from SingleInteger; import from Quotient(S); cond := initcond(ps1-ps2); equalseries := true; l : SingleInteger := 1; while equalseries and (l <= #cond) repeat if (cond.l=0) then l:=l+1 else equalseries:=false equalseries
g
coerce(ps:%):Record(ic:
List Quotient(S), delt:
POLDELTO(S)) == rep(ps);
initcond(ps:%):List Quotient(S) == rep(ps).ic; delto(ps:%):
POLDELTO(S) == rep(ps).delt;
f
valuation(delt: POLDELTO(S)): Integer == val: Boolean := false; l: Integer := 0; r := degree(delt); while val and (l <= r) repeat if (coefficient(delt,l) = 0) then l:=l+1 else val := true l
g
f
simplify(delt: POLDELTO(S)): POLDELTO(S) == import from AutoDer(S); import from Automorphism SUP(S,"j"); r0 := valuation(delt); r := degree(delt); res : POLDELTO(S) := 0; for l in r0..r repeat res := res + monomial(apply((inv sigma())^ r0,coefficient(delt,l)),l-r0) res
g
createPowerSeries(cond:List Quotient(S), delta:POLDELTO(S)):% == m : Integer := coerce(#cond);
157
f
r : Integer := degree(delta); (m < r) => error("Not enough initial conditions"); ps := per([cond,simplify delta]); ps
g
f
dispose!(ps:%):() == dispose!(initcond(ps)); dispose!(rep(ps))
g
f
coherent?(ps:%):Boolean == import from Partial(Quotient(S)); import from S; cond := initcond(ps); delta := delto(ps); m : Integer := coerce(#cond); r := degree(delta); mu := m-r-1; coh : Boolean := true; j: Integer := 0; while (j <= mu) and coh repeat aux : Quotient(S) := 0; for i in 0..r repeat aux:=aux+(apply(coefficient(delta,i),coerce(j))* numerator(coerce(element(cond,i+j+1))))/ denominator(coerce(element(cond,i+j+1)))
f
f
g
if (aux = 0) then coh := false else j := j+1 coh
g
g
element(cond: List Quotient(S), i:Integer): import from List(Quotient(S));
Partial Quotient(S) ==
if (i<1) or (i > coerce(#cond)) then failed else if (1 <= i) and (i <= coerce(#cond)) then condaux := cond; for j in 2..i repeat condaux := rest(condaux); el : Quotient(S) := first(condaux)$List(Quotient(S))
f
158
f
g
if (1<=i) and (i<=coerce(#cond)) then coerce(el) else failed
g
nextCoeff(l: List Quotient(S), delta:POLDELTO(S)): Partial Quotient(S) ==
f
import from S; import from Partial Quotient(S); import from SUP(S,"j"); m: Integer := coerce(#l); r: Integer := degree(delta); mu := m-r; mus : S := coerce(mu); val : S := apply(leadingCoefficient(delta),mus); if (mu >= 0) and (val = 0) then res : Quotient(S) := 0; for j in 0..r-1 repeat el : Quotient(S) := coerce(element(l,mu+j+1)); ell : S := apply(coefficient(delta,j),mus); res:=res-(ell*numerator(el))/denominator(el)
f
f
g
coerce(numerator(res)/(denominator(res)*val))
g
else failed
g
coefficients(ps:%, nb: Integer): Partial List Quotient(S) == import from Partial(Quotient(S));
f
cond := initcond(ps); delta := delto(ps); m : Integer := coerce(#cond); res: List Quotient(S) := nil; welldefined: Boolean := true; if (nb<=m) then res:=[coerce(element(cond,i)) for i in 1..nb] else res := cond; i : Integer := 1; while (i <= nb-m) and welldefined repeat nextco := nextCoeff(res,delta); if failed? nextco then welldefined := false else res := concat(res, list(coerce(nextco)));
f
f
159
i := i + 1
g
g
if welldefined then coerce(res) else failed
g
coefficients(ps:%, nb:SingleInteger):Partial List Quotient(S) == coefficients(ps,coerce(nb)$Integer); coefficient(ps: %, nb: Integer): Partial Quotient(S) == lcoef:Partial List Quotient(S):=coefficients(ps,nb+1); if failed? lcoef then failed else coerce(last(coerce(lcoef)))
g
coefficient(ps:%, nb:SingleInteger):Partial Quotient(S) == coefficient(ps,coerce(nb)$Integer)
g
160
f
----------------------------------- runge.as --------------------------------#include #library #library #library #library
"sumit.as" powerseries "powerseries.ao" polodo "polodo.ao" eulerlodo "eulerlodo.ao" complexring "complexring.ao"
import from ci,autoder,poldelto,powerseries; import from polodo,eulerlodo; import from complexring; SUP ==> SparseUnivariatePolynomial; POLODO ==> LinearOrdinaryPolynomialDifferentialOperator; LOEDO ==> EulerLinearOrdinaryPolynomialDifferentialOperator; F ==> DoubleFloat; CF ==> Complex F; SI ==> SingleInteger; Runge Kutta(S: BalserRing):
with
f
generateDerivs:(POLODO(S),SUP(S,"x"),F->CF,F->CF,CF)-> (List CF, F) -> List CF; eulerDerivs:(LOEDO(S),SUP(S,"x"),F->CF,F->CF,CF -> (List CF, F) -> List CF; rk4f:(List CF,F,F,SI,(List CF,F)->List CF)->List CF
g
== add
f
generateDerivs(eqdiff: POLODO(S), sec:SUP(S,"x"),gamma:F->CF, gammaderiv:F->CF,znieme:CF):(List CF,F)->List CF==
f
g
(y: List CF, t: F):List CF +-> functionDerivs(eqdiff,sec,gamma,gammaderiv,y,t,znieme)
functionDerivs(eqdiff:POLODO(S),sec:SUP(S,"x"),gamma:F->CF, gammaderiv:F->CF,y:List CF,t:F,znieme:CF):List CF==
f
r: Integer := degree(eqdiff); i: SI := 1; res: CF := 0;
161
dydx: List CF := nil; coefr := eval(coefficient(eqdiff,r),gamma(t)); while coerce(i) <= r-1 repeat dydx:=concat!(dydx,list(y(i+1)*gammaderiv(t))); res:=res+eval(coefficient(eqdiff,coerce(i)-1),gamma(t))*y(i); i := i + 1
f
g
if (gamma(t)=0) then dydx:=concat!(dydx,list(znieme*gammaderiv(t))) else res:=res+eval(coefficient(eqdiff,r-1),gamma(t))*y(i); res := eval(sec,gamma(t))-res; res := gammaderiv(t) * res / coefr; dydx:=concat!(dydx, list res)
f
dydx
g
g
eval(pol: SUP(S,"x"), xt: CF): CF == import from Integer,S; at: CF := 0; for i in 0..degree(pol) repeat coeff := coefficient(pol,i); coefff : CF := coerce(coeff); at := at + coefff * xt^$CF i
f
f
at
g
g
eulerDerivs(eqdiff:LOEDO(S),sec:SUP(S,"x"),gamma:F->CF, gammaderiv: F -> CF, a1: CF): (List CF, F)->List CF== (y:
g
f
List CF, t: F):List CF +-> eulerfunctionDerivs(eqdiff,sec,gamma,gammaderiv,y,t,a1)
eulerfunctionDerivs(eqdiff:LOEDO(S),sec:SUP(S,"x"),gamma:F->CF, gammaderiv:F->CF,y:List CF,t:F,a1:CF):List CF==
f
r: Integer := degree(eqdiff); dydx: List CF := nil; if (t = 0) then i: SI := 1; while coerce(i) <= r repeat dydx:=concat!(dydx,list(a1*gammaderiv(0)));
f
f
162
i := i+1;
g else f
g
xt := gamma(t); i: SI := 1; alphat := gammaderiv(t) / xt; res: CF := 0; while coerce(i) <= r-1 repeat dydx := concat!(dydx,list(y(i+1) * alphat)); i := i+1
f
g
coefr := eval(coefficient(eqdiff,r),xt); i:=1; while coerce(i) <= r repeat tt: CF := 1; coef: CF := 0; coefi := coefficient(eqdiff,coerce(i)-1); di := degree(coefi); for j in 0..di repeat coef:=coef+coerce(coefficient(coefi,j))$S *tt; tt := tt*xt
f
f
g
res := res + coef * y(i); i := i+1;
g
res := eval(sec, xt) - res; res := res / coefr; res := res * alphat; dydx:=concat!(dydx, list res) dydx
g
g
rk4f(cond:List CF,xbegin:F,xend:F,nstep:SI,derivs:(List CF,F)->List CF): List CF ==
f
h : F := (xend-xbegin) / coerce(nstep); y0 := cond; x0 := xbegin; for i in 1..nstep repeat x1 := x0 + h; y0 := rk4step(y0,x0,x1,derivs); x0 := x1
f
163
y0
g
g
rk4step(y0:List CF,x0:F,x1:F,derivs:(List CF,F)->List CF): List CF ==
f
h := x1-x0; k1 := h * derivs(y0 k2 := h * derivs(y0 k3 := h * derivs(y0 k4 := h * derivs(y0 y1 := y0 + 1./6. * dispose!(k1); dispose!(k2); dispose!(k3); dispose!(k4); y1
, x0); + 0.5*k1 , x0 + 0.5*h); + 0.25*(k1 + k2) , x0 + 0.5*h); - k2 + 2. *k3, x0 + h); (k1 + 4. * k3 + k4);
g
(h: F) * (x: List CF) : List CF == import from SingleInteger; [h*xx for xx in x]
f
g
(x: List CF) + (y: List CF) : List CF == import from SingleInteger; cardx := #(x); [x(i) + y(i) for i in 1..cardx]
f
g
(x: List CF) - (y: List CF) : List CF == import from SingleInteger; cardx := #(x); [x(i) - y(i) for i in 1..cardx]
g
g
164
f
------------------------------------- un.as ---------------------------------#include "sumit.as" #library balser "balser.ao" #library poldelto "poldelto.ao" import from balser; import from ci,poldelto,powerseries; SUP ==> SparseUnivariatePolynomial; POLDELTO ==> LinearOrdinaryPolynomialDifferenceOperator; CF==>Complex DoubleFloat; S ==> BalInt; import import import import
from from from from
POLDELTO(S); Balser(S); Integer; S;
f
session():() == coef1:SUP(S,"j"):=monomial(1,0); coef0:SUP(S,"j"):=monomial(1,1); print << "Polynome aux differences: " << newline; pol:POLDELTO(S):=monomial(coef0,0)+monomial(coef1,1); print << "Liste des premiers coefficients g en erant la serie "; print << newline; inip:List(Quotient(S)):=list((0,1)); print << inip << newline; print << "S erie d'Euler:" << newline; ps:PowerSeries(S):=createPowerSeries(inip,pol); print << ps << newline; print << "Liste des pentes:" << newline; sum:List Ratio SingleInteger:=list((1)); print << sum << newline; print << newline; print << "Point en lequel on veut calculer la somme:" << newline; zr: CF := complex(0.01,0.); print << "zr = " << zr << newline; print << "Somme:" << newline; s := balser(ps,sum,zr); print << s << newline; print << newline;
165
g
print << "Point en lequel on veut calculer la somme:" << newline; zr: CF := complex(0.1,0.); print << "zr = " << zr << newline; print << "Somme:" << newline; s := balser(ps,sum,zr); print << s << newline; print << newline; print << "Point en lequel on veut calculer la somme:" << newline; zr: CF := complex(1,0.); print << "zr = " << zr << newline; print << "Somme:" << newline; s := balser(ps,sum,zr); print << s << newline
166