Calcul Formel Www.informatique Lmd Dz.co.Cc

download Calcul Formel Www.informatique Lmd Dz.co.Cc

of 41

Transcript of Calcul Formel Www.informatique Lmd Dz.co.Cc

Cours de Calcul Formel2Depuis les annes 70 on sait utiliser lordinateur pour non seulement le calculnumerique en variable ottante et en prcision nie mais egalement pour le cal-cul algebrique cest `a dire traitant des calculs avec paramtres, des polynomes,des fractions. Par rapport au calcul numerique traditionel, on chappe au cal-culderreurtraditionel,etauprobl`emedepropagationdeserreurs,maisencontrepartie le calcul formel traite des nombres de plus en plus gros, sur les-quelslesoprationssontdeplusenpluslongues`a etreexecutes.Unexemplepourlecalcul dudeterminantdunematriceA=(ai,j)1i,j25,onpeutvouloirutiliserlaformule:det(A) =

S25()a1,(1)a2,(2) a25,(25).Oril yadanscettesomme25! 1, 551025produit, ensupposantquunordinateurs eectue 10 milliards de produits par seconde, il faudrait compter49.000.000dannees.Il devient doncindispensabledvaluer letemps quemettraunalgorithmepour fournir un resultat avant meme de le programmer. De meme on voudraitpouvoircomparerlesalgoritmesentreeux.Ontrouvetouteuneseriedelogiciels decalculs formels, les plus connuessont Derive, Mathematica et Maple, mais aussi Mupad qui a lavantage detregratuit,nouschoisissonsdetravaillersurMapleChapitre1ProgrammersurMapleSagissant dun langage de calcul formel deux utilisations sont possibles, lunede boites noires, onutilise des fonctionalites dejaenregistres dans les bi-bliot`equesduprogramme, Mapleenloccurence, enseservantdelaideenligne et des manuels. On explorera en Travaux Pratiques les dierentes fonc-tionnalites de Maple, mais dans cet expose on sattachera essentiellement auxrudimentsnecessaires`alaprogrammationdeproceduressimples.1.1 Structuresiterativesetconditionnelles1.1.1 LesbouclesLastructuregeneralepourdeniruneboucleiterativeest:for...from...by...to...while...doiciestplacelecorpsdelaboucleod;Lacommandeforintroduitlenomdelavariablequisertdecompteur ;fromxelavaleurinitialedececompteur,bylavaleurdelincrementationrealisee`achaquetourdelaboucle ;topreciselavaleurnaleducompteur ;quant`awhile, il permetdintroduireuneconditionsupplementairequi siellenestpasrealisee,arretelaboucle.34 CHAPITRE1. PROGRAMMERSURMAPLEChacundestermesfor...from...by...to...whilepeut etreomis,pourvuquecelagardeunsensetnentrainnepaslacreationduneboucleinfernale:si cest from qui est absent le compteur commencera `a 1, si cest by le comp-teurprogresserade1`achaquetourdeboucle.Exemples :Calculezlasommedescarresdesnombresimpairspluspetitque1000:>som:=0:#initialisationforiby2whilei2< 1000dosom:=som+i2od:>som;# evaluation5456>i ;331.1.2 LestestsLestestsefont`alaidedelastructure:if...then...else...;if introduit une quantite booleenne (qui aura pour valeur true ou false) ; `a lasuite de then et de else, qui peut etre omis on ecrit des sequences doperation`arealisersuivantlavaleurdubooleen.Silonveutfairepluscomplique,onaaussilastructure:if...then...elif...then...elif.........then...else... ;etceciavecautantdeelif...then quelonvoudra.Ainsi onpeutcalculerlasommedescarresdespremiersnombrespremiersdontlasommenedepassepas1000:>som1:=4:>forifrom3by2whilei2< 1000doifisprime(i)thensom1:=som1+i2; ;od ;>som1 ;33581.1. STRUCTURESITERATIVESETCONDITIONNELLES 51.1.3 ProceduresUn programme secrit sous forme de procedure. La denition dune proceduresefaitdelamani`eresuivante:nomdelaprocedure:=proc(sequencedeparam`etres)local...#sequencedeparam`etreslocalesoption... ;icilecorpsdelaprocedureend;Lesdeuxlignescommencantparoptionetlocal peuventetreomises. Lacommande local introduit les variables internes `a la denition de la procedure.Toutevariablenondeclareelocaleestconsidereecommeglobaleetconservesavaleurhorslaprocedure.Exemples :Voiciuneprocedurequiretournelasommedescarresdesnombrespremiersdontlecarrenedepassepasx:>somp:=proc(x)locali,s ;s:=4 ;i:=3 ;foriby2whilei2#exempledapplication:>somp(1000),somp(12865) ;3358,122705>s ;s1.1.4 RecursiviteUne procedure est dite recursive si lors de son execution elle fait appel `a ellememe.Sinononditquelaprocedureestiterative.Lesrepetitionssontalorsgerespardesbouclesdenies`alaidedeforoudewhile.Unexempledeprocedurerecursive, lafonctionpuissance: x xn, et le6 CHAPITRE1. PROGRAMMERSURMAPLEcalcul pour une certaine valeur. La denition se fait par recurrence en posantx0= 1etpourn 1, xn= x.xn1.Bienquetantimmediatementconstruitecetteprocedureatteinttoutaussiimmediatementseslimites.Essayonsdecalculer2500pourreponseunmessageindiquantquil yatropde niveauxde recursion. Ayant `a executer expr(2,500), Maple fait appelexpr(2,499)etstockeenmemoirelesdonneesetlesparam`etresnecessairesaucalculdeexpr(2,500),puisexecuteexpr(2,499).Apr`es uncertainnombredappel, lamemoireest satureederesultats in-termediairesenattente.Larecursiviterestetreslimiteeetdansbiendescasilestpreferabledecrireuneversioniterativeduprogramme.Ainsipourlexponentiationilestpreferabledefaireappel`acetteprocedureiterative:>expi:=proc(x,n::nonnegint)locali,r ;forifrom2tondor:=x*r:od:r ;end:1.1.5 ExponentiationdichotomiqueOnpeutsedemandersi onpeutrealiserlecalcul dexnenmoinsden 1operationsarithmetiques.Lareponseestpositive.Onpeutremarquer:xn=_xn2si nest pair,x(xn12) si nest impair.cestlexponentiationdichotomique.Lexponentiationdichotomiquesetraduitimmediatementenuneprocedurerecursive:>expdr:=proc(x,n::nonnegint)ifn=0thenRETURN(1)elif (n mod 2)=0 then expdr(x, n/2)2elsex*expdr(x,(n-1)/2)2end:1.1. STRUCTURESITERATIVESETCONDITIONNELLES 7Calculonsx27enutilisantcettemethodex27= x.(x13)2= x.(x.(x.(x6)2)2= x.(x.(x3)4)2= x.(x.(x.x2)4)2.Onvoittr`esbienque7multiplicationsaulieude26onteteutilisees. Onpeutdunemani`eregeneralebornerlenombredemultiplicationsutiliseesProposition1.1.1La procedure expdr(x,n) necessite au plus 2([log2(n)]+1)multiplications.Demonstration : On note Na(n) le nombre dappels recursifs de expdr queva eectuer la commande expdr(x,n). On va montrer : Na(n) = [log2(n)] +1 ;parrecurrence.OnaNa(1) = 1etNa(2) = 2.Supposonslaformuleexactejusquaurangn.Si n est impair alors expdr(n+1) invoque expdr(x,n+12) ; expdr(x,n+1) appelledoncexpdrunefoisauxquellessajoutentlenombresdappelsrealisesparexpdr(x,n+12)luimeme.Desortequonadanscecas:Na(n + 1) = 1 +__log2_n + 12__+ 1_= 1 + [log2(n + 1)].Sinestpair,expdr(x,n+1)vainvoquerexpdr(x,n2),onadanscecas:Na(n + 1) = 1 +__log2_n2__+ 1_= 1 + [log2(n)].Ontermineenremarquant quepour npair [log2(n)] =[log2(n + 1)]. EneetsinonposonsA=[log2(n + 1)], onalog2(n)0doifirem(k,2)=1thenr:=p*r:k:=(k-1)/2:elsek:=k/2: ;p:=p2:od:r ;end:>#exemplesdapplication:>expdi(2,5),expdi(2,10) ;32,1024Onveriesurdesexemplesquecetteproceduredonnebienlesresultatsat-tendus ;maisilnestpas evidentquilenesttoujoursainsi.Pour prouver quun algorithme realise bien le calcul pour lequel on la concu,ondoitfaire: 1)prouverquil retournebienunresultatenunnombrenidoperationset2)queleresultatretourneestbienceluiattendu.Pour cefaireonfait apparaitredes invariants delaprocedure. Sur notreexemple, pour montrer que lalgorithme ne poss`ede quun nombre ni detapes,ilsutderemarquerqu`achaquetourdeboucle,lavaleurcontenuedanskest remplacee par [k2], de sorte que la valeur prise par k est est une suite den-tiers strictement decroissante. La valeur initiale etant n > 0, en [log2(n)] +1etapes, la valeur de k sannulera et on sortira de la boucle while, de sorte quelalgorithmesetermine.10 CHAPITRE1. PROGRAMMERSURMAPLEConsiderons maintenant les variables qui apparaissent dans laprocedure.Dabordpinitialisee`ax, `achaquetourdeboucle, pestremplaceparsoncarre,desortequaui-i`emetourdeboucle,papourvaleurx2i.Quellessontlesvaleursprisesparr ?Notonscilesrestesdeladivisiondekpar2aui-i`emetourdeboucle ; il vaut0ou1. Alandupremiertourdeboucler = xc1.Ausecondtourdebouclerprendlavaleurxc22+c1.Supposons quaui-i`emetour rcontiennelaquantitexci2i1++ci. Autoursuivantsici+1vaut0,rconservelamemevaleur,autrementrdevientr.p =xci2i1++ci.x2i.Danstouslescas,restdevenuxci+12i++ci.`Alandelaprocedurercontientxnavecn ecritenbase2.Chapitre2Codageetarithmetiqueelementaire2.1 Basedenumerationet codageinforma-tiqueTheor`eme2.1.1Soit b Ndierent de0et 1. Soit n N 0, et soitkluniqueentiernaturel tel quebk1n0,etconsideronsunn [bk, bk+1[. Ladivisioneuclidiennedenparbpermetdecriren=n1b + c0avecc0 [0, b 1].Ilestclairquen1 ]0, bk[.Onpeutdonc ecrire:n1= ckbk1+ + c2b + c1,aveclesci [0, b 1]etck ,= 0.Montrons lunicite dune telle ecriture. Remarquons dabordque si n =c0 +c1b +c2b2+ +ck1bk1avecpourtouti = 0, 1, . . . , k 1, b > ci 0etck1 ,= 0.Eneet,ona:ck1bk1 n (b 1) + (b 1)b + (b 1)b2+ + (b 1)bk1,1112 CHAPITRE2. CODAGEETARITHMETIQUEELEMENTAIREdesortequebk1n (b 1)bk1b1 . Il enresultequekestunique. Sup-posonsquensecriveegalementn=c0+ c1b + c2b2++ ck1bk1. Soitj0leplusgrandindicepourlequel cj0 ,=cj0. Si j0=0, il estimmediatquec0=c0, sinonenfaisantladierencedesdeuxecrituresden, onobtient:(cj0 cj0)bj0=j01i=0(ci ci/)bi.Mais le terme de gauche est plus grand ou egal `a bj0, alors que celui de droiteeststrictementinferieur`acettevaleur. Onditalorsquelenombrenestecritenbaseb,lesnombresc0, . . . , ck1sontleschiresdecetteecriture,cichiredepoidsi.Onnoten = (ck1, . . . , c1, c0)b.En base decimale (b=10) on omet le b en indice, les parenth`eses et les virgules.Exemples : Pour n = 106, on a n = 1000000 = (11110100001001000000)2=(11333311)7= (3, 5, 24, 8, 20)26. Cette methode de codage dun entier naturelsappellelanumerationdeposition.Proposition2.1.1Lentier naturel n ,= 0 secrit en base b avec [Logb(n)]+1chires.Demonstration : Letheor`emeprecedentnousditquesi nestdanslin-tervalle[bk, bk+1[ alorsil secritaveck + 1chiresenbasebaveck ln(b) ln(n) < (k + 1) ln(b)etdonck = [lnb(n)].Soit Mla valeur maximale dunnombres pouvant etre contenudans unregistre de processeur. Onpeut prendre comme base de numerationtoutnombre entier b plus petit que M. Le codage de n se fait tout simplement enenregistrantlasuiteniedeschires. Labasebchoisieestbk1si M=2k,oulaplusgrandepuissancede10inferieureou egale`a2k1.Proposition2.1.2Supposonsquunentiernsoitecritsouslaformedunpolynomeb,o` ubestunentierplusgrandque1,n = 0 +1b + + kbki N.Soitdautrepartlecrituredenenbaseb:n = (ck , ck1, . . . , c0)b.Alorsona:c0= 0 q0bouq0=_0bci= i + qi1 qibouqi=_i+qi1bsii = 1, . . . , k.Deplusck+j= cj1pourj= 1, . . . , k ksiqk= c0 + c1b + + ckk1bkk1b,designelecrituredeqkenbaseb.2.2. ADDITIONETSOUSTRACTION 13Demonstration : La connaissance de n`a laide des iimplique quen bketdoncquenenbasebauraaumoinsk + 1chiresdesortequek k. Onpeutremarquerdautrepartquepourchaquei=0, . . . , k, parconstruction-meme, les cisont positifs et inferieurs strictement `abcar cesontlesrestesdeladivisionparbdei+ qi1. Onaensuitepourchaquei = 1, . . . , k, i + qi1= bqi + ci,do` udeprocheenproche:n = c0 +q0b +1b + 2b2+ + kbk= c0 +c1b + q1b2+ 2b2+ + kbk= c0 +c1b + (q1 + 2)b2+ + kbk= c0 +c1b + (q1 + 2)b2+ + kbk= c0 +c1b + (c2 +q3b)b2+ + kbk= = c0 +c1b + c2b2+ + (ck1 + qkb)bk1+ kbk= c0 +c1b + c2b2+ + ck1bk1+ (qk + k)bk= c0 +c1b + c2b2+ + ck1bk1+ (ck + qk+1b)bk= c0 +c1b + c2b2+ + ck1bk1+ ckbk+ qk+1bk+1= c0 +c1b + c2b2+ + ck1bk1+ ckbk+ (c0 + c1b+c2b2+ + ck1bk1+ck bk)bk+1= c0 +c1b + c2b2+ + ck1bk1+ ckbk+ c0bk+1+ c1bk+2+c2bk+3+ +ck1bk+k+ ck bk+k+1.2.2 AdditionetsoustractionSoientdeuxnombresnetnchacundekchiresenbaseb.n = (ck1, . . . , c1, c0)bn= (c0k 1, . . . , c1, c0)bn + n= (c0 + c0) + (c1 + c1)b + + (ck1 + ck1)k1bProposition2.2.1Danslapplicationduprocessusdepropagationderete-nuespourcalculerlecritureenbasebden +n,lesretenuesvalenttoujours0ou1.Onnadoncpasbesoindeectuerdedivisions.Demonstration :Ona0 c0 + c0 2(b 1) < 2b,14 CHAPITRE2. CODAGEETARITHMETIQUEELEMENTAIREsi bien que 0 c0+c0b< 2 ; ainsi q0vaut 0 si c0 +c0< b et 1 sinon. Supposonsqueqi1 0, 1i < k.Onaalors:ci + ci + qi1< 2b 1etdoncqi 0, 1.Laretenuevaut0sietseulementsici + ci + qi1< b>som:=proc(N1,N2,b)locali,som,x ;som:=NULL,r:=0 ;foritonops(N1)dox:=N1[i]+N2[i]+r ;ifx#exemplesdapplication:>som([1, 8], [2, 3], 10) ;[3, 1, 1]>som([1, 0], [2, 3], 2) ;[1, 2, 1]>som([5, 0], [2, 3], 2) ;[5, 2, 1]Proposition2.2.2LacomplexitebinaireduneadditiondedeuxnombresentiersestenO(max(log n, log b))Demonstration :Il sut de remarquer que si n et nont k chires chacun,leur somme en compte k +1 au plus. En eet n < 2k, n 2k, do` u n +nb2 1etdoncck>b2 1etdoncck _b2.Dansnotreexempleona=_101+1=5, ety=565. Onpeuttoujoursseramenerlorsquoncalculeunquotient_xy_aucaso` ulediviseuraunchiredeplusfortpoidscomprisdans[[12b], b[ ;ilsutpourceladeremplacer_xy_par_xy_.Onsupposecetravaildenormalisationdej` arealisedanscequisuit.Onaalorslapropositionsuivantequi nouspermetdeprogrammer`acoups ur,larecherchedeschiressuccessifsdunquotient.Proposition2.4.2Soientx = (xn+1, . . . , x0)bety= (yn, . . . , y0)b.Onsup-posedeplusquey x byetqueyn [[12b], b[.Soit q= min_b 1,_(xn+1xn)byn__.Alorslequotientdexpary,_xy_vaut q 2, q 1,ou q.Demonstration :On a dune part x = qy +ravec 0 r < y, do` u qy xpuis:qynbn qy x < xn+1bn+1+ xnbn+ bn,etsuccessivementqyn< xn+1b + xn + 1,qyn xn+1b + xn,q xn+1b+xnyn,q q2.4. DIVISION 19Onvamontrer( q 2)y x,cequiprouvera q 2 q.Ona( q 2)y< ( q 2)(yn + 1)bneucligen(99099,43928) ;1,547,-1234>eucligen(1891,2499) ;1,-1007,762>eucligen(1769,551) ;29,5,-16Proposition3.1.4Dans le cas dentiers positifs a et b veriant a,=bLalgorithme ci-dessus retourne uncouple (u, v) de ccients de Bezoutveriant:au +bv= d = pgcd(a, b)avec [u[ b2d, et [v[ a2dDemonstration ::Onvasupposerlinegalitesa>b, carsinonlalgorithmefournitsuccesive-ment:W0= (a, 1, 0), W1= (b, 0, 1), W2= (a, 1, 0),lepremierpassagenefaitquerenverserlordredestermes.Danslecasa 2, b=1, lalgorithmefournitd=1, u=0, v=1etlesinegalites [u[ b2det [v[ a2dsont evidemmentveriees.26 CHAPITRE3. ARITHMETIQUEMODULAIREDans le cas a > 2, b = 2, lalgorithme fournit la solution d = 2, u = 0, v= 1siaestpair:a = 2k, k 2etlesinegalitesproposeessontbienveriees.Onvadonc etudierlecas:a > b > 2Lessuitedesquotientsqietdesrestesrisontnecessairementpositives:ri= qi+1ri+1 + ri+2, 0 ri+2< ri+1etqiverieqi 1.Ona u0=1 et u1=0 et supposons qu`a lordre i onait u2i0 etu2i+1 0`alordresuivantonaurau2i+2=u2i q2i+1u2i+1 0etu2i+3=u2i+1 q2i+2u2i+20, la suite des uiest ainsi alternee et ona u2i =u2i2 q2i1u2i1q2i1u2i1=[q2i1u2i1[, comme q2i11 on au2i [u2i1[, de meme u2i+1= u2i1q2iu2i implique [u2i+1[ [q2iu2i[ [u2i[,lasuite [ui[estcroissante.Deplusledernierquotientqnverienecessairementqn 2, eneetonarn1= qnrn + rn+1= qnrn,laconditionrn1> rnentrainnedeslorsqn 2.Ona`alordrenetn + 1,aun +bvn= detaun+1 + bvn+1= rn+1= 0.Posonsad= a,bd= b,ilsagitd`eslorsdemontrer: d a2 ,etd b2.Onaboutit`aunsyst`eme:_una+ vnb= 1un+1a+ vn+1b= 0,cequientrainne:(un+1vn unvn+1)b= un+1,etquisecritencore:unvnun+1vn+1b= un+1.Maisnousavonspourtouti = 1, . . . , n,:_uiviui+1vi+1_=_0 11 qi__ui1vi1uivi_.Desorteque:unvnun+1vn+1= un1vn1unvn== (1)nu0v0u1v1= (1)n1 00 1.Do` u:b= [un+1[ = [qnun[,cequivulinegaliteqn 2impliquebien: [un[ b2.3.2. NUMEROTATIONMIXTE 273.1.4 ComplexitedelalgorithmedEuclideProposition3.1.5Lorsducalcul dupgcddedeuxnombrespositifsaetb,a > b,desrestessuccessifsr1= b,r2, . . . , rntelsquern= pgcd(a, b),ona:n 2[log2(a)] + 1.Parsuitelenombrededivisions`arealiserpourcalculerrnest majorepar2[log2(a)].Demonstration : Onmontredabordquepour tout i =1, . . . , n, onari+2#Vericationdudernierresultat:>8 + 40150 + 8215049 ;608708>irem(608708,150),irem(608708,49),irem(608708,143) ;8,30,100Resolutionsdusyst`eme_x 1000 mod 1891x 3000 mod 24993.3. ALGORITHMEDEGARNER 31Oncherchexsouslaformex = 1 + 21891avec0 1< 1891et0 22M. Il sepeut suivant le probl`eme traites certainnes valeurs de pi soient `a rejeter.2. Calculerpourchaquei = 1, . . . , n Fi f(a1, . . . , an) mod pi.3. ResoudreparlalgorithmedeGarnerlesyst`emecongruent:___F F1mod p1F F2mod p2F Fkmod pkf(a1, . . . , an)estluniquenombreveriantcettecongruencedanslin-tervalle [M, M] que lon trouve au besoin par une soustraction supplementairesilsetrouvequeFappartient`alintervalle]M, 2M].exercicecalculerledeterminantD =6 4 5 15 0 5 23 1 6 50 1 2 2sachant [D[ 4!2.5.62= 8640. On montre que les nombres premiers 11, 13, 17, 19conviennent:11 13 17 19 = 46189 > 2 8640 = 17280.32 CHAPITRE3. ARITHMETIQUEMODULAIREOnobtient:___D 7 mod 11D 12 mod 13D 2 mod 17D 0 mod 19La resolution de ce syst`eme donne D 45239 mod 46189. Le nombre chercheestalorsD = 42239 46189 = 950.Chapitre4TransformationdeFourierdiscr`ete4.1 Racines principales (primitives) de luniteSoientAunanneaunonnecessairementint`egre, parexemple Z/NZ, nunentier> 0,etuneracinen-i`emedelunitedansA,cest`adireuneracinedu polynome P= Xn1 de A[X]. Lensemble des racines de Pest un groupemultiplicatif.Lesconditionssuivantessont equivalentes:(i)Pourtoutentieri,telque0