Le Forum de TI-BANK.fr
Le forum de la banque de programmes pour calculatrices graphiques Texas Instruments (aide débutants, résolution problèmes...).
AccueilPortailCalendrierFAQRechercherS’enregistrerConnexion
Poster un nouveau sujet   Répondre au sujet
 Vieille TIVoir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Bisam
Elite
Elite


Sexe:MasculinBalanceSerpent
Age : 30
Inscrit le : 12 Mar 2008
Messages : 219
Localisation : Lyon
Calculatrice : Voyage 200 + TI 92 (vieille de 12 ans !)
Classe : Prof de Maths Sup


Impureté:
26/450  (26/450)
Dernière note en maths: 14.8/20 à la 2ème épreuve de l'agreg 2000

MessageSujet: Vieille TI   Lun 17 Mar - 10:58

Bonjour,
Comme vous pouvez le voir sur mon profil, j'ai une TI qui date un peu (si, si au-delà de 10 ans, on a le droit de dire qu'elle date).

J'ai donc 2 questions à vous poser :

- Tout d'abord, auriez-vous une idée pour programmer une sorte de fonction 'part' en TI-Basic puisque celle-ci n'existe pas sur ma calculatrice et que j'en aurais besoin pour écrire un programme de calcul de développements limités en calcul formel par identification des différentes fonctions présentes dans l'expression. J'ai déjà fait toutes les fonctions de calcul, il ne me reste plus qu'à faire cette partie d'analyse et de traitement de l'expression. On peut bien sûr faire sans... mais ce serait plus propre !
Je précise que j'ai déjà tenté de le faire (avec un succès mitigé) en utilisant des chaînes de caractères et des reparenthésages... mais c'est bien trop lent.

- Deuxièmement, mon OS est la version 1.3 du 20 octobre 1995. A votre avis, pourrai-je le mettre à jour sur cette vieille TI ou bien ne supportera-t-elle pas le traitement si j'essaie de lui mettre un OS de TI92+ ? Peut-être y aura-t-il un problème de mémoire par exemple... Bref, je ne sais pas si c'est possible.

Merci d'avance pour vos réponses.
Revenir en haut Aller en bas
Mic
Administrateur
Administrateur


Sexe:MasculinGémeauxRat
Age : 24
Inscrit le : 07 Sep 2004
Messages : 9724
Localisation : Talence
Calculatrice : Voyage 200 & TI-Nspire CAS
Classe : Prépa Oral CAPES Maths


Impureté:
56/450  (56/450)
Dernière note en maths: -/20

MessageSujet: Re: Vieille TI   Lun 17 Mar - 14:31

Pour la TI-92 simple, tu as possibilité d'ajouter un module qui transforme ta TI92 en TI92 Plus.

C'est le petit boîtier noir que tu vois sur cette photo qui se place au dos de la TI92.
Mais il est très difficile à trouver.

http://kijiji.ebayimg.com/i12/03/k/000/77/ef/9f02_20.JPG?set_id=1C4000
_________________
Responsable de TI-BANK (http://www.ti-bank.fr)

Projet 1 : How well do you know your World ? [68k] (19%)
Projet 2 : Da Vinci Flight [68k] (0.5%)
Projet 3 : Mastermind Nspire [Nspire] (80%)
Projet 4 : Ephy Nspire [Nspire] (0%)
Revenir en haut Aller en bas
Bisam
Elite
Elite


Sexe:MasculinBalanceSerpent
Age : 30
Inscrit le : 12 Mar 2008
Messages : 219
Localisation : Lyon
Calculatrice : Voyage 200 + TI 92 (vieille de 12 ans !)
Classe : Prof de Maths Sup


Impureté:
26/450  (26/450)
Dernière note en maths: 14.8/20 à la 2ème épreuve de l'agreg 2000

MessageSujet: Re: Vieille TI   Mer 19 Mar - 0:05

En fait, je crois que j'ai trouvé tout seul la réponse à ma 2ème question : la RAM de la TI-92 de base n'est pas "flashable" ! Il est donc impossible de changer d'OS... ce qui me désespère un peu mais bon... peut-être que j'achèterai une TI'Nspire.

Je reste en revanche sur ma faim pour ce qui est de ma 1ère question.
Je donne plus de détails sur ce que je voudrais faire et ce que j'ai réussi à faire :

Cahier des charges :

Toutes les fonctions sont à écrire en TI-Basic et en utilisant uniquement les fonctions de TI-92 (et non 92+). En particulier la fonction 'part' n'existe pas.

1) Définir un nouveau type de variable : le type polynôme, dans le cas où l'expression n'est constituée que sommes, de produits et d'exposants entiers.
2) Ecrire une fonction qui permette d'analyser une expression formelle afin d'en extraire les différents opérandes, et ce soit par récursivité, soit directement sur toute une expression.
3) Ecrire une fonction inverse de la précédente qui à partir de l'analyse de l'expression redonne l'expression de départ.
4) Adapter la fonction précédente pour remplacer les occurences des fonctions mathématiques (sin, cos, tan, exp, ln, etc...) par les opérations sur les DL correspondantes et les expressions polynomiales par les DL correspondants.

Ce que j'ai déjà réussi à faire tant bien que mal :
1) OK, c'est fait mais c'est assez lent car beaucoup de recherche sur les chaînes de caractères... sans doute possible d'améliorer.
2) Je n'arrive pas à obtenir une récursivité qui fonctionne... et donc j'oublie plein de termes dans mes expressions.
3) Je ne sais pas encore sous quel format écrire le résultat de la procédure précédente... et donc je n'ai pas pu commencer cette partie.
4) Même problème que ci-dessus.

Merci d'avance pour vos suggestions.

Je peux donner plus d'info sur ce que j'ai fait si vous voulez... mais pas fournir mes programmes car je n'ai toujours pas de câble
Revenir en haut Aller en bas
Mic
Administrateur
Administrateur


Sexe:MasculinGémeauxRat
Age : 24
Inscrit le : 07 Sep 2004
Messages : 9724
Localisation : Talence
Calculatrice : Voyage 200 & TI-Nspire CAS
Classe : Prépa Oral CAPES Maths


Impureté:
56/450  (56/450)
Dernière note en maths: -/20

MessageSujet: Re: Vieille TI   Mer 19 Mar - 0:12

Tu peux poster peut-être les codes de ce que tu as déjà fait, ça peut sans doute mieux aider tout le monde.
_________________
Responsable de TI-BANK (http://www.ti-bank.fr)

Projet 1 : How well do you know your World ? [68k] (19%)
Projet 2 : Da Vinci Flight [68k] (0.5%)
Projet 3 : Mastermind Nspire [Nspire] (80%)
Projet 4 : Ephy Nspire [Nspire] (0%)
Revenir en haut Aller en bas
Bisam
Elite
Elite


Sexe:MasculinBalanceSerpent
Age : 30
Inscrit le : 12 Mar 2008
Messages : 219
Localisation : Lyon
Calculatrice : Voyage 200 + TI 92 (vieille de 12 ans !)
Classe : Prof de Maths Sup


Impureté:
26/450  (26/450)
Dernière note en maths: 14.8/20 à la 2ème épreuve de l'agreg 2000

MessageSujet: Re: Vieille TI   Mer 19 Mar - 1:52

Je peux, il faudra juste que je retape tout à la main... et certains programmes sont assez longs.
Bon allez, je me lance.
Par quoi je commence ?

Une fonction qui convertit toute expression en chaîne de caractères :
Code:
makestr(ex)=when(getType(ex)<>"STR",string(ex),ex)

Une fonction qui renverse une chaîne de caractères :
Code:
reverse(ex)=
Func
Local i,n,rep
makestr(ex)->ex
dim(ex)->n
""->rep
For i,1,n
 mid(ex,i,1)&rep->rep
endFor
endFunc

Une chaîne constante qui stocke les différentes fonctions à repérer dans une expression :
Code:
fnc={"e^(","ln(","sin(","cos(","tan(","sin-1(","cos-1(",
"tan-1(","sinh(","cosh(","tanh(","sinh-1(","cosh-1(","tanh-1(","sqrt("}

PS : je vous laisse corriger les exposants -1 qui ne sont pas faisables dans le code et le 'sqrt' en la racine carrée.

Une fonction qui teste si une expression 'vr' est une partie d'une autre 'ex' :
Code:
ispart(ex,vr)=when(inString(makestr(ex),makestr(vr))=0,false,true,false)

Une fonction qui calcule le nombre d'apparitions d'une expression 'vr' dans une autre 'ex' :
Code:
nbpart(ex,vr)=
Func
Local i,nb
makestr(ex)->ex
makestr(vr)->vr
if vr=""
 return 0
inString(ex,vr)->i
0->nb
While i>0
 mid(ex,i+dim(vr))->ex
 inString(ex,vr)->i
 nb+1->nb
EndWhile
EndFunc

Voilà, le décor est posé...
Maintenant, on attaque le lourd :
Une fonction qui extrait ce qui suit la 'nb'-ème apparition de l'expression 'sig' (et s'arrête à la prochaine rupture '+', '-', '*', '/', ',' ')' ou '(' ) dans l'expression 'ex', dans le sens 'dir' (1 de gauche à droite et -1 de droite à gauche) :
[Edit : ] J'ai corrigé quelques bugs dus à une modification de dernière minute [/Edit]
Code:
extract(ex,sig,nb,dir)=
Func
Local i,k,ch,beg,end
If dir=-1 Then
 reverse(ex)->ex
 reverse(sig)->sig
 ")"->beg
 "("->end
Else
 makestr(ex)->ex
 makestr(sig)->sig
 "("->beg
 ")"->end
EndIf
While nb>0
 mid(ex,inString(ex,sig)+dim(sig))->ex
 nb-1->nb
 If nb>0 and not ispart(ex,sig)
  Return ""
EndWhile
beg&ex&end->ex
dim(ex)->nb
0->k
For i,1,nb
 mid(ex,i,1)->ch
 If k=0 and ispart("+-*/,"&end,ch)
  Exit
 If ch="("
  k+1->k
 If ch=")"
  k-1->k
EndFor
left(ex,i-1)->ex
If dir=-1
 reverse(ex)
EndFunc

La fameuse fonction qui définit le type "POLY" et qui bien entendu conserve tous les autres types sauf "NUM", "VAR" et "NONE" qui deviennent "POLY".
Code:
type(ex)=
Func
Local t,j,p,test
getType(ex)->t
If t="VAR" or t="NUM" or t="NONE" Then
 "POLY"->t
ElseIf t="EXPR" Then
 dim(fnc)->p
 1->j
 ispart(ex,"/")->test
 While not test and j<=p
  ispart(ex,fnc[j])->test
  j+1->j
 EndWhile
 nbpart(ex,"^")->p
  1->j
 While not test and j<=p
  when(mod(expr(extract(ex,"^",j,1)),1)=0,false,true,true)->test
  j+1->j
 EndWhile
 If not test
  "POLY"->t
Endif
t
EndFunc


Merci à ceux qui ont eu le courage de tout lire... et encore plus à ceux qui ont fait l'effort de tenter de comprendre ce code non commenté.
Je sais que les possibilités de la fonction 'extract' sont très nombreuses et peuvent grandement aider à créer les autres fonctions que je cherche à écrire.. mais je n'ai pas encore réussi à le faire proprement.

J'ai également écrit une fonction qui détermine l'ensemble de définition d'une fonction grâce à elle... et ça marche plutôt bien même avec des fonctions compliquées. Le seul souci est que la calculatrice a du mal à simplifier les différentes contraintes qui apparaissent. Ce sera peut-être pour une prochaine fois.
Revenir en haut Aller en bas
Vieille TIVoir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Forum de TI-BANK.fr :: Forum TI68k :: Programmation TI Basic / ETP Basic / GFA Basic-
Poster un nouveau sujet   Répondre au sujet