vous vous souvenez peut être du programme de dérivation de fonctions que j'avais fait l'année dernière, eh bien le voilà définitivement bouclé, avec une belle présentation inutile, et plus aucun bug.
il peut dériver presque toutes les fonctions de base, avec un facteur, ainsi que certaines fonctions composées avec les ln, les exponentielles et les fractions.
Tout est expliqué dans le joli mode d'emploi que je me suis em***** à programmer et qui fait que le seul désavantage du prog est sa taille: 3.7 Ko.
si vous souhaitez le télécharger, c'est possible: c'est un *.8xp, mais si vous le renommez en *.83p, vous pourrez l'envoyer sur les 82 stats (fr). Pas les 82 basiques.
Rappel : les minuscules sont dans le menu var>stat excepté "e" qui est l'exponentielle de la touche "diviser" et "i" qui est l'immaginaire de la touche ".". les y et x minuscules ont une barre dessus, c'est pas plus moche.
#rac sert à ce que vous voyez bien que c'est la fonction racine et pas du texte.
Code
:FnOff
:AxesOff
:0->Xmin:94->Xmax
:0->Ymin:62->Ymax
:Lbl 0
:ClrDraw
:Horizontal 60
:Horizontal 59
:For(A,1,12
:For(B,0,1
:Text(4,10+5A+B,sub("easy F'(x) !",A,1
:End:End
:Horizontal 51
:Horizontal 50
:30->A
:{28,47,73->L1
:Line(15,30,88,30
:Line(15,30,15,33
:Text(25,17,"deriver une FOnctiOn
:Text(35,17,"MOde d'eMp1Oi
:Text(45,17,"credits
:Repeat K=105 or K=45
:getKey->K
:If K=25 or K=34:Then
:Line(15,A,15+L1(A.1),A,0
:Line(15,A,15,A+3,0
:A+10(K=25)-10(K=34->A
:If not(A:30->A
:If A=40:10->A
:Line(15,A,15+L1(A.1),A
:Line(15,A,15,A+3
:End
:End
:If K=45:Goto Q
:If A=10:Then
:ClrDraw
:Horizontal 60
:Horizontal 59
:Horizontal 51
:Horizontal 50
:"credits
:For(A,1,7
:For(B,0,1
:Text(4,21+5A+B,sub(Ans,A,1
:End:End
:Text(25,23,"(C) cOpyriGHt
:Text(32,28,"persa1teas
:Text(39,38,"2010.
:Text(13,47,"easy F'(x) v 2.0
:Text(46,5,"rea1ise pOur Espace-TI
:Text(54,6,"cOncOurs de nOv. 2010.
:Repeat getKey
:End:End
:If A=20:Then
:ClrDraw
:Horizontal 60
:Horizontal 59
:Horizontal 50
:Horizontal 51
:"CONSIGNES
:For(A,1,9
:For(B,0,1
:Text(4,5A+B+15,sub(Ans,A,1
:End:End
:Text(13,0,"-REFERMEZ LES PARENTHESES
:Text(19,0,"-PAS DE FORMES FACTORISEES
:Text(25,0,"-PAS PARENTHESES INUTILES
:Text(31,0,"-PAS DE FONCTION COMPLEXE
:Text(37,0,"-5 TERMES PAR FONCTION MAX.
:Text(43,0,"-CHAQUE TERME PEUT ETRE UN
:Text(49,0,"PRODUIT SIMPLE:
:Text(55,0,"2X²,-cos(X),(3+2)#rac((X),5/X...
:Pause
:For(A,49,0,-1
:Line(0,A,94,A,0
:End
:Text(13,0,"LES PUISSANCES SONT
:Text(20,0,"COMPRISES EN DENOMINATEUR
:Text(27,0,"DE FRACTION ET DANS LES
:Text(34,0,"LOGARITHMES NEPERIENS.
:Text(45,0,"-1/(X^6),ln(X³),-ln(X^8)
:Text(52,0,"2X^7,X³,-X²...
:Pause
:For(A,49,0,-1
:Line(0,A,94,A,0
:End
:Text(13,0,"EXPONENTIELLES: FONCTIONS
:Text(20,0,"COMPOSEES AUTORISEES MAIS:
:Text(27,0,"REMPLACEZ LES + ET - PAR
:Text(34,0,"DES VIRGULES:
:Text(40,0,"3X²-2X+2e^(6X+2) DEVIENT:
:Text(50,10,"3X²-2X+2e^(6X,2)
:Pause
:For(A,49,0,-1
:Line(0,A,94,A,0
:End
:Text(13,0,"LES CHOSES INCOMPRISES:
:Text(25,0,"- LES RACINES CUBIQUES ET +
:Text(32,0,"- LES TANGENTES
:Text(39,0,"- LES LOGARITHMES DECIMAUX
:Text(46,0,"- LES FACTORIELLES ET
:Text(52,0,"AUTRES FONCTIONS COMPLEXES.
:Pause
:ClrDraw
:End
:If A<30:Goto 0
:ClrDraw:ZStandard:AxesOn
:ClrHome
:Input "F(X)=",Str0
:Output(8,1,"derivatiOn...
:If not(inString(Str0,"X":Then
:ClrHome
:Disp "F'(X)="," 0
:Output(8,1,"
:Goto Q
:End
:0->N:0->K:0->M
:"0->Str1
:"0->Str2
:"0->Str3
:"0->Str4
:"0->Str5
:Repeat K=9
:sub(Str0,1,1->Str9
:If not(Str9="1" or Str9="2" or Str9="3" or Str9="4" or Str9="5" or Str9="6" or Str9="7" or Str9="8" or Str9="0":Then
:If Str9=/="-":"1"+Str0->Str0
:If Str9="-":Then
:sub(Str0,2,1->Str9
:If not(Str9="1" or Str9="2" or Str9="3" or Str9="4" or Str9="5" or Str9="6" or Str9="7" or Str9="8" or Str9="9"
:"-1"+sub(Str0,2,length(Str0)-1->Str0
:End
:End
:If M:"-"+Str0->Str0
:inString(Str0,"+"->A
:inString(Str0,"-"->B
:If (B<A and B and A) or (B and not(A:Then
:B->A:1->M
:Else
:0->M
:End
:If A:Then
:N+1->N
:sub(Str0,1,A-1->Str9
:If N=1:Str9->Str1
:If N=2:Str9->Str2
:If N=3:Str9->Str3
:If N=4:Str9->Str4
:sub(Str0,A+1,length(Str0)-A->Str0
:sub(Str0,1,1->Str9
:Else
:9->K
:Str0->Str5
:End
:End
:0->L1(1
:0->L2(1
:0->L3(1
:0->L4(1
:0->L5(1
:0->L6(1
:0->M:0->R
:For(K,1,5
:If K=1:Str1->Str9
:If K=2:Str2->Str9
:If K=3:Str3->Str9
:If K=4:Str4->Str9
:If K=5:Str5->Str9
:
:
:16->M:0->A
:inString(Str9,"e^("->A
:If not(A:Then
:M-1->M
:max(inString(Str9,"ln(X²"),inString(Str9,"ln(X^2"->A
:End
:If not(A:Then
:M-1->M
:max(inString(Str9,"ln(X³"),inString(Str9,"ln(X^3"->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"ln(X^->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"ln(X->A
:End
:If not(A:Then
:M-1->M
:max(inString(Str9,"/(X^"),inString(Str9,"/X^->A
:End
:If not(A:Then
:M-1->M
:max(inString(Str9,"/(X³"),inString(Str9,"/X³->A
:End
:If not(A:Then
:M-1->M
:max(inString(Str9,"/(X²"),inString(Str9,"/X²->A
:End
:If not(A:Then
:M-1->M
:max(inString(Str9,"X-1"),inString(Str9,"/X->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"#rac((X)->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"cos(X)->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"sin(X)->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"X²->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"X³->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"X^->A
:End
:If not(A:Then
:M-1->M
:inString(Str9,"X->A
:End
:If not(A:M-1->M
:If M:expr(sub(Str9,1,A-1->L1(1
:If M=12:"/X->Str9
:If M=15:2L1(1->L1(1
:If M=16:Then
:inString(Str9,"X
:If Ans:Then
:expr(sub(Str9,A+1,Ans-A-1->N
:NL1(1->L1(1
:sub(Str9,A,length(Str9)-A+1->Str9
:Else
:0->L1(1:" "->Str9:End:End
:If M=14:3L1(1->L1(1
:If M=13:Then
:sub(Str9,4,length(Str9)-4->N
:NL1(1->L1(1
:End
:If M<16 and M>12:"ln(X)->Str9
:If M=11:Then
:expr(sub(Str9,A+3+(inString(Str9,"/(X")>0),1->N
:-NL1(1->L1(1
:N+1->L1(2
:End
:If M=10 or M=11:"/(X^->Str9
:If M=10:Then
:-3L1(1->L1(1
:4->L1(2
:End
:If M=9:Then
:-2L1(1->L1(1
:"/(X³)->Str9
:End
:If M=8:"/(X²)->Str9
:If M=8 or M=6:-L1(1->L1(1
:If M=7:"/(2#rac((X))->Str9
:If M=6:"sin(X)->Str9
:If M=5:"cos(X)->Str9
:If M=4:Then
:2L1(1->L1(1
:"X->Str9
:End
:If M=3:Then
:3L1(1->L1(1
:"X²->Str9
:End
:If M=2:Then
:expr(sub(Str9,A+2,1->N
:NL1(1->L1(1
:N-1->L1(2
:"X^->Str9
:If N=4:"X³->Str9
:If N=3:"X²->Str9
:If N=2:"X->Str9
:End
:If M=1:" ->Str9
:If M:Then
:R+1->R
:If R=1:Then
:L1->L2
:Str9->Str1:End
:If R=2:Then
:L1->L3
:Str9->Str2:End
:If R=3:Then
:Str9->Str3:L1->L4
:End
:If R=4:Then
:L1->L5
:Str9->Str4:End
:If R=5:Then
:L1->L6
:Str9->Str5:End
:End
:End
:ClrHome
:R->C
:Disp "F'(X)=
:If not(C:Disp "AUCUNE IDEE
:For(R,1,C
:If R=1:Then
:L2->L1:Str1->Str9
:End
:If R=2:Then
:L3->L1:Str2->Str9
:End
:If R=3:Then
:L4->L1:Str3->Str9
:End
:If R=4:Then
:L5->L1:Str4->Str9
:End
:If R=5:Then
:L6->L1:Str5->Str9
:End
:If R>1 and 0<=L1(1:Output(R+1,1,"+
:If 0>L1(1:Output(R+1,1,"-
:If Str9=" " or inString(Str9,"/") or 1=/=abs(L1(1
:Output(R+1,2,abs(L1(1
:Output(R+1,4,Str9
:If inString(Str9,"X^":Output(R+1,6+2(Str9="/(X^"),L1(2
:End
:Output(8,1,"
:Lbl Q
:DelVar Str1DelVar Str2DelVar Str3DelVar Str4DelVar Str5DelVar Str0DelVar Str9
:ClrAllLists