Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 15798
Réponses : 58
Type : discussion
Etat : réponses autorisées

Easy F'(x) , la version finale de DERIVE - Page 1 / 3

Persalteas le 15/06/2011 à 15:41
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 copier le code car vous n'avez pas le cable:

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.

http://www.mediafire.com/?3jd7f8szd8m1og4

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
linkakro le 15/06/2011 à 16:58
C'est génial ! bigmouth.gif


Pour le mode d'emploi, c'eût été plus simple de joindre un txt au programme dans un zip.
Voir même en deux programmes, dont un facultatif.

Attention aux caractères qui ne passent pas depuis Ti-éditor. (en particulier ceux qui se transforment en balises).
Sangohan38 le 15/06/2011 à 20:13
Aller hop, tu me reposte ce sujet mais en faisant attention à ne pas modifier la fenêtre.
Tu as 3 jours avant que je ne le supprime!

Sangohan38
sandro le 15/06/2011 à 21:09
Un petit problème, comment veut tu utiliser le même signe pour + et pour - dans les expendantiels.

Sandro

PS1 : pourrais-tu mettre une version avec les carractères lisibles pour que l'on puisse trouver de potentielles optimisations

PS2 : Noublie pas le message de Sango (n'ai pas peur, il m'a fait la même chose il y a 2-3 jours)
Persalteas le 16/06/2011 à 09:16
modifier la fenêtre ? quelle fenêtre? tu veux dire en version lisible ?

Bon, je pensais que ça passerait, le copier coller dans Ti editor...

Bon, si tu veux.

Alors, je t'explique pour le + et -:

en fait, il ne faut pas écrire ces signes sinon le programme interprète ça comme un nouveau terme.

étant donné que le signe ne change pas dans la dérivée d'une exponentielle, si tu avais écrit un +, la virgule que le prog affiche à la fin est un +, si tu avais écrit un -, c'est un -.

BON, QUE CEUX QUI ONT LE COURAGE DE RECOPIER LE FASSENT EN MOINS DE 3 JOURS, APR7S JE SUPPRIMERAI LE CODE.
(et je laisserai le lien de téléchargement. Il faudra télécharger sur son disque, re-uploader sur Ti editor, et recopier.)
sandro le 16/06/2011 à 10:28
Lâche maxiangry.gif maxiangry.gif
T'a qu'à créeer un nouveau topic du même nom que celui-ci, tu fait un copier-coller de ton texte (attention, il faut refaire le lien), tu remmet une balise code et tu y copie le texte depuis ton éditeur, tu fais entrer quand les lignes sont trop longues, tu met les autres messages de la page en sitation en bas du tien pour pas qu'ils sse perdent (même si Sango risque de supprimer le sien comme chez moi), tu prévisualise, si ça passe c'est bon, sinon tu fait entrer là où c'est trop long.

Sandro maxiangry.gif maxiangry.gif
linkakro le 16/06/2011 à 15:51
Ne te pose pas de problème insurmontable, il faut juste utiliser Ctrl+H frénétiquement.
Voici une version épurée des balises et cie. J'ai même isolé les deux parties qui ne servent qu'à la notice et aux crédits.
Après, tu n'as plus qu'à éditer ton message avec ce code puis j'effacerai le mien.
(Edit : j'avais oublié que tu étais modérateur ^^")

Je ne vois pas où est le problème de la fenêtre : le sujet est propre chez moi.

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 "."
#rac sert à ce que vous voyez bien que c'est la fonction racine et pas du texte.


Code


ici linkakro a recopié toouuuuut le code, avec seulemnt une seule faute !
félicitations et merci!

j'ai recopié ce code en haut.
Persalteas le 16/06/2011 à 20:44
linkakro tu es un amour. Merci beaucoup. goutte.gif
linkakro le 16/06/2011 à 21:56
Il reste encore deux caractères spéciaux.
Près du Repeat K=9 :
If Str9&#8800;"-" // inférieur ou égal <=
Vers la fin :
0&#8804;L1(1 // différent =/=
Persalteas le 18/06/2011 à 09:27
ah oui je n'avais vu que le différent... merci.

par contre je crois plutôt que c'est un égal, le deuxième, ça voudrait dire quoi Str9<="-" ?
linkakro le 18/06/2011 à 15:10
J'ai tout mélangé :
&#8800; est le symbole "différent".
&#8804; est le symbole "inférieur ou égal".
Tandis que le symbole "égal" ne cause pas d'erreur.

On avait donc
Str9=/="-"
0<=L1(1

Voilà, falait comparer avec le programme sous émulateur ou fouiner dans ti-editor.
Cocodidou le 18/06/2011 à 20:27
Excellent!!
Celui-là, je le mets dans un coffre fort en attendant le bac l'année prochaine! Malheureusement, la machine n'est pas autorisée au bac de français....
sandro le 18/06/2011 à 20:41
Non, mais pour l'oral, il faut vraiment s'y connaitre pour trouver que c'est interdit, il à falut plus d'une demie heure au CPE du lycée pour trouver dans le décret (environt 2 pages) que c'est interdit (et encore, il c'est fait aider par un autre prof). Au final c'était car c'est l'examinnateur qui crée le sujet de l'oral donc c'est lui qui décide (après tu peu toujours lui demander mais bon, sans billet je ne croie pas qu'il accèpte LOL).
Sandro
Persalteas le 20/06/2011 à 13:55
Bien enregistré, linkakro. Merci.

pour le bac de français, c'est pas le meilleur moyen de te faire aimer du prof.
Tigre-obscure le 26/06/2011 à 00:38
Bon désolé de remonté ce TOPIC, mais c'est pour comprendre une touche car je ne la trouve pas, cette touche est "#rac((" je n'arrrive vraiment pas à la trouvé.
Merci de m'aide happy.gif, J'espère vous me direr pas qu'il n'existe pas cry.gif

Tigre =)

PS : j'ai une Texte Instrument 82 stats.fr donc aidez moi sur cette calculatrice
linkakro le 26/06/2011 à 01:38
Il y a pire comme remontage de topic.
Néanmoins tu as manqué 2 exemplaires de l'information. notgood.gif
#rac est une notation que j'ai immaginée pour exprimer le symbole racine carrée sans que vous le confondiez avec l'agencement des trois lettres R,A,C.
( Maintenant cela fait 3 exemplaires. cupsmiley.gif )
Tigre-obscure le 26/06/2011 à 02:03
Merci mais j'ai un autre problème ^^ c'est à la ligne
Code
Texte(4,10+5A+B,sub("esay F'(X) !",A,1


Il n'y aurais pas un problème? car moi il met erreur Dim invalide sur cette ligne.

Tigre =)
Persalteas le 26/06/2011 à 20:14
Ah tiens ?

On me l'a jamis fait ce bug là... Dans l'affichage du titre...

Ben écoute, je crois pas, si ce n'est que ça, supprime l'affichage du titre.
Tigre-obscure le 26/06/2011 à 21:00
Code
:If M:expr(sub(Str9,1,A-1->L1(1

Sur le "sto->" erreur domaine notgood.gif
Je n'arrive pas à le réglé

Tigre =)
Tigre-obscure le 26/06/2011 à 22:39
Je n'ai pas mal recopié car j'ai vérifié plusieurs fois (5fois), donc me dites pas ça s'il vous plaît cry.gif. Je comprend pas pourquoi
Aidez moi


et ici erreur syntaxe :
Code
:If Str9=/="-":"1"+Str0->Str0

Ici le curseur est là "/"
:If Str9=/="-":"1"+Str0->Str0

Tigre =)