Salut a tous,
Je posséde une TI-82 Stats et je voudrais faire un programme qui me permettent de calculer des fractions avec une valeur exacte , quelle ne me donne pas de valeur aprrochées ( ce qu'elle fait )
Le probléme étant que je ne sais pas comment commencer..
Je pensais à demander le nombre de fractions et apres rentrer les valeurs dans des 'strings' pour pouvoir afficher une valeur exacte..Mais le probléme c'est qu'il faudrait que je demander le type d'opérations entre chaque fraction..
Qui pourrait me proposer une piste?
Merci de m'aider
Kuider
un peu tôt pour un mais bon
Kuider
Bonjour,
je ne comprends pas trop ton problème...
Je sais qu'il existe des programmes qui donnent la fraction la plus proche lorsqu'on lui fournit un décimal, ou une suite d'opérations.
C'est basé sur les fractions continues, je ne sais pas si tu connais ...
Si ca t'interesse, dis le moi ...
Ah , merci d'avoir répondu Jamo
En fait je voudrais faire un programme qui permettrai de donner la valeur exact d'une opération sous la forme fractionnaire.
Exemple: 1+ Pi/3= (3+Pi)/3 ( je voudrais que ma calculette affiche ce qui est en gras )
Kuider
La méthode que je propose permet de faire :
1 + 2/3 et elle afficherait 5/3.
Mais elle ne marche pas avec PI, désolé ...
Ah pour cela j'ai trouvé la solution
Maths> Frac
Vous voyez ou est le pb, c'est que la TI-82 n'a que des valeurs aprrochées des constantes célébres et des racines..
Merci quand même
Kuider
Alors je ne connais pas l'existence de tels programmes.
Ca existe peut-etre, mais ça doit être super lourd !
Oui certainement.
Je pense que je vais y réflechir des maintenant, je posterais le code s'il n'est pas trop long
Kuider
J'ai trouvé la solution Hihi!
Je commence le programme.
Kuider
Salut !
tu te lance dans quelque chose d'assez compliqué, et je suis pas sur que les Ti-82 est suffisement de ressource pour executé ce genre de programe en un temps raisonable.
globalement la premiere chose a faire pour crée un module de calcule formelle c'est de définir une structure aproprié a manipuler des expressions, et la en géneral celle qui se manipule le mieux c'est les arbres binaires, qui se manipule par des programes récursif (les abres etant eux meme définit recursivement)... et la ou sa coince c'est que le language relativement primitif des Ti ne permet de base aucun des deux !!... bref il va vraiment falloir tous inventer.
faudrait que tu définisse précisement ce que tu attend de ton programe : que peut-on mettre en entré, qu'elles sont les opération effectué et qu'est ce que sa doit ressortir...
mais dans tous les cas, sa va etre beaucoup beaucoup de boulot pour un résultat tres en dessous de ce qu'on font les calculatrice des modéle supérieure (Ti-89, ou aussi graph 100 chez casio je crois..)
Oui je sais,
Bon je vous dis comment je compte faire :
une calculette dans une calculette ..
En fait, je vais créer un programme bourré de Test,listes matrices and Cie..
Ce qui m'a compliqué un tout petit peu le boulot, c'est de savoir comment faire pour gérer les parenthèses mais bon..j'ai résolu ce problème
Ps:J'ai fait le vide dans ma chère TI 82 Stats, au pire je crée le programme sur PC et je le ferais tourner via un émulateur. En fait j'étais très intéressé à l'idée de savoir comment faire.
Kuider
"La difficulté , c'est sa qui est bon"
Ce que me disais un prof l'an passé, je commence a le croire
Kuider
Réfléchis bien avant de te lancer là-dedans, je ne suis pas certain que tu imagines la difficulté ...
Mais bon, c'est toi qui voit
Non, la difficulté est dans l'interprétation des expressions saisies ...
Même avec un langage moderne, la réalisation d'un tel programme est trés compliqué ... avec une TI-82, cela me semble ... impossible !
Impossible is nothing..
Et si je vous affirme que j'ai un moyen trés simple! d'interpréter les expressions saisies?
Kuider
D'accord
Je vous tiens au courant
Kuider
Bonjour J-P.
en effet, parce que pour savoir où on en est sur un tel projet, il faut au préalable l'avoir bien étudié et planifié.
La conception d'un programme nécessite plus de boulot que le programme en lui-même !
Sûr, avant de se lancer dans la résolution d'un problème (ou l'écriture d'un programme), il faut faire une étude de faisabilité. Le projet a-t-il une bonne chance de pouvoir atteindre ses objectifs ?
Cela semble évident et pourtant beaucoup se lancent dans l'aventure en oubliant ce préalable indispensable et beaucoup plus difficile à faire qu'il n'y paraît.
Juste pour le fun, je me suis bien amusé en lisant le topic sur ce lien , il semble bien que même l'évidence bien argumentée ne suffit pas pour convaincre la grande majorité.
Ce qui précède dans ce message ne présume en rien de la faisabilité ou non du projet de kuid312.
Oui, j'ai moi-même pas mal programmé à une époque, et on passe plus d'heures sur du papier avec un crayon que devant le clavier.
Quand c'est bien conçu, je dirais 80% de conception et 20% de codage.
Bon, c'est la théorie. En pratique, avec les bugs, on multiplie le temps de codage par 5 pour trouver la virgule oubliée qq part !
Bonjour jamo,
Je confirme tout à fait ce que tu dis... en même temps, il ne faut pas décourager quelqu'un qui se lance dans un projet : même si le projet n'a aucune chance d'aboutir (c'est ce que je crois), il aura été très utile, pour celui qui cherche, pour découvrir lui-même pourquoi la tâche est quasi insurmontable. Les progrès ne sont-ils pas tous basés sur des premiers échecs ?
Bonjour,
c'est en cherchant qu'on apprend
Il y a pourtant des recherches stériles... ça fait un an que je me bats avec le mode d'emploi de la casio 65 de mon fils (450 pages). Lui y arrive assez bien, de manière intuitive (free style) mais on y perd un temps fou.
Vous qui êtes enseignants, dites-moi si c'est moi qui n'assure pas, ou si ces modes d'emploi sont réputés inefficaces. Comme les modes d'emploi sont interdits au bac, il faut mémoriser tous les fonctionnements. Pas évident.
Rien à voir avec la mode d'emploi de SQN, très bien fait
Je trouve les manuels des calculatrices plutots bien faits.
Et c'est en l'utilisant réguliérement qu'on sait s'en servir, on ouvre le manuel assez rarement en fait.
Les 1ères calculatrices graphiques sont apparues quand j'étais au lycée, les profs ne nous ont jamais rien dit dessus, ils regardaient ça étrangement, et on apprennait seuls, ça se passait trés bien.
Les élèves que j'ai aujourd'hui, il faut presque que j'aille leur taper sur les touches.
Ah ces jeunes !!
Non, j'utilise à peine 5% des capacités d'une calculatrice, je trouve que tout le reste est inutile !
C'est bien pour cela qu'on demande aux élèves dès la 2nde de faire l'acquisition d'une calculatrice afin qu'il sache l'utiliser progressivement.
Pour ma part, dès la 2nde, je fais quelques séances pour qu'ils les utilisent.
Mais comme je le disais, certains ne font aucun effort ... pour les calculatrices comme pour le reste
Je suis d'accord avec Borneo : les modes d'emploi des calculatrices ne sont pas très "pédagogiques". Lorsqu'un de mes élèves est bloqué, mon premier réflexe est de lui demander son mode d'emploi. 99 fois sur 100 il n'a pas son mode d'emploi, ou bien l'a perdu, ou bien ne l'a jamais eu (machine achetée d'accasion ou "empruntée" à quelqu'un sans son consentement )
Il faut alors tâtonner. C'est vrai qu'avec l'habitude on y arrive. Perso je sui plutôt Ti que Casio mais la plupart de mes élèves ont des Casio . Je crois que quand on connait bien une marque on s'y habitue tellement qu'on trouve les autres marques incompréhensibles.
Pour en revenir à la programmation sur un projet de calcul formel, il faudrait commencer par les choses les plus simples et se limiter à quelques cas particuliers (par exemple, calculer une dérivée, mais là déjà, c'est très vite compliqué !)
Salut,
En fait quand je dit 25% , ce n'est qu'une estimation car pour réaliser ce programme, j'ai défini plusieurs "objectifs" :
-L'utilisateur entre son calcul
-La gestion des opérations "simples"
-La gestion des parenthéses> opérations plus compliquées.
-L'interprétation de l'expression saisie.
-Etc..
Voila , vous connaissez mes principalesphases de travail sur ce projet. J'espére qu'il va aboutir, en lisant vos messages , j'ai été un peu découragé mais bon.. raison de plus pour continuer et de montrer à ce qui n'y croyaient pas que c'est possible!
En fait, je pense que sa va être un peu juste coté "nombre de variables : la TI-82stats (+/- TI-83)
ne posséde que 27 "variables stockables" (A,B,C,D,E,F..Z,Théta) .(Je n'aurai pas eu ce probléme en C)
Je pense donc que je vais un pu bloker dessus ..je vous tiens au courant
Kuider
Pour répondre a la question du haut, J'ai moi aussi été confronté à de l'analyse de chaine sur TI-82. J'ai appris à mes dépends que regarder la chaine comme un mot est très fastidieux, très lourd et très peu performant. Dans la plupart des cas, il est beaucoup plus simple de voir la chaine comme une fonction. Ce que je veux dire par la, c'est que au lieu de regarder chaque caractères, on fait subir des opérations à la chaine jusque a ce que l'on obtienne un nombre simple (entier ou fractionnaire)...
ex: pour simplifier (sqrt(5*3+12)+sqrt(2-6+7))
Il suffit de mettre le tout au carré, ce qui nous donne 48, on en déduis donc que le résultat est sqrt(48): on ramène la chaine a une forme générale.
c'est un exemple comme un autre mais qui nous montre bien que l'on a fait de l'analyse de chaine sans jamais regarder ce qu'il y a dedans.
J'ai fait un programme qui résout des équations et la première chose que fait le programme, c'est faire "une régression de polynôme" (on prend des points et on regarde si un polynôme étant construit que avec 5 points passe par le 6ème)
Dans ton cas, tu pourrais faire un peut pareil. Prenons le début de ton code:
:input("expression a simplifier:"),chaine1
:expr(chaine1) -> A
Ensuite, tu essai de multiplier, diviser, .... la variable a jusque a avoir un truc fractionnaire (des fois, la forme est fractionnaire mais les arrondis font qu'il n'est pas forcément facile de s'en rendre compte)
Si tu arrive a avoir une forme fractionnaire, tu isoles le numérateur et le dénominateur puis tu fait à ces deux nombres, subir les opérations inverses.
J'ai réfléchi a votre problème. Il y a un moyen assez simple de simplifier des expressions dans de nombreux cas. cela se fait en quelques étapes:
1) repérer tout ce qui n'est pas rationnel (;2^.5;e;...)
2) pour chaque élément non rationnel, le remplacer par une variable
3) attribuer un/des coefficient(s) et un/des exposant(s) a chacune de ces fonction
4) récrire une chaine de caractère en remplaçant les variables par leur constante associée
bon, je vais détailler un peu ces étapes:
2)on va s'attarder a la constante pi pour cet exemple:
si on veut remplacer tout les "" present dans chaine1 par des X, il nous est possible de considérer l'algorithme suivant:
:"("+chaine1+")" -> chaine1 #on met des parenthèses pour éviter les chaines ""
:while carChaine(chaine1,"") #tant que pi est dans la cahine
:carChaine(chaine1,"") -> A #on regarde a quel endroit est "
"
:sous-Chaine(chaine1,1,A-1)+"X"+sous-Chaine(chaine1,A+1,longueur(chaine1)-A) -> chaine1
:End
#il est inutile de retirer les parenthèses car c'est une opération qui a un rapport temps/mémoire insufisant
3) admettons que tout les soient a la puissance1 et qu'ils soient tous au numérateur. dans ce cas, la simple dérivé de la fonction nous donnerait le coefficient. un petit exemple:
"5/3 + 18
- 5" donnerait "(5X/3+18X-5)" la dérivée de cette fonction (
y/
x car il s'agit d'une droite) vaut 19.6666666 = 59/3 on sait donc que notre fonction est égale à (59
/3)+? .
Pour connaitre ?, il suffit de remplacer x par 0, ce qui donne -5. La fonction est donc (59/3)-5
cela est un exemple avec une fonction affine, il n'y a donc que dans les cas ou l'utilisateur entre des fonction telles que f() = a
+b que le résultat sera correct.
Il y a un cas plus général que la calculette arrive bien à traiter, celui des fonction de la forme P1/P2 avec P1 et P2, deux polynômes de degrés n. la fonction entrée par l'utilisateur peut alors être de la forme f() = (a
n+b
n-1+...+c
0)/(d
n+e
n-1+...+f
0). On se retrouve alors a pouvoir résoudre un système à 2n inconnues.
on a P1(X)/P2(X)=f(X) P1(X)-P2(X)f(X) = 0. On se retrouve donc avec un système "plat" qui peut alors être résolu à l'aide des matrices.
Un petit exemple avec des polynômes de degrés n=2:
a(X12)+b(X1)+c(*1)+d(-X12f(X1))+e(-X1f(X1))+f(f(X1))=0
a(X22)+b(X2)+c(*1)+d(-X22f(X2))+e(-X2f(X2))+f(f(X2))=0
a(X32)+b(X3)+c(*1)+d(-X32f(X3))+e(-X3f(X3))+f(f(X3))=0
a(X42)+b(X4)+c(*1)+d(-X42f(X4))+e(-X4f(X4))+f(f(X4))=0
a(X52)+b(X5)+c(*1)+d(-X52f(X5))+e(-X5f(X5))+f(f(X5))=0
a(*0)+b(*0)+c(*0)+e(*1)+f(*1)+g(*1)=1
On voit ici apparaitre clairement les coefficients qui figurerons dans la matrice. La dernière ligne est la de manière a fixer un coefficient k car il y a une infinité de solution ou f()=P1/P2=kP1/kP2. ATTENTION! ce système n'a pas forcément une solution unique! il est donc fort peu probable que l'on puisse le résoudre du premier coup. l'astuce est donc de tester le déterminant de la matrice. Si ce dernier vaux 0, a vous de trouver quelle(s) variable(s) fixer pour que la résolution devienne possible.
Bon, pour ceux qui n'ont rien compris, je vais vous mettre le petit algorithme qui permet de faire cette régression:
:n=degré des polinomes
:liste des x = L1 , L1 peut ressembler a {1,2,3,4,5,6,7,8,9...}
:liste des y = L2, L2 est défini par L2 =f(L1)
:effvar [A]
:{2+2n,3+2n} -> dim([A])
:for (L,1,1+2n)
:for (C,1,n+1)
:L1(L)^(n-C+1) -> [A](L,C)
:-L2(L)(L1(L)^(n-C+1)) -> [A](L,C+n+1)
:End
:End
:For(C,n+1,3+2n)
:1 -> [A](2+2n,C)
:End
"la matrice est rempli mais il faut encore la résoudre"
:Gauss-Jordan([A]) -> [A]
:for (C,1,2+2n)
:0 -> A
:for (L,2+2n,1,-1)
:if [A](L,C)
:A+1 -> A
:if A=2
:Then
:1 -> [A](2+2n,C)
:1 -> [A](2+2n,3+2n)
:1 -> C
:0 -> L
:Gauss-Jordan([A]) -> [A]
:End:End:End
"mise en forme du résultat"
:2+2n -> dim(L3)
:for (L,1,2+2n)
:[A](L,3+2n) -> L3(L)
:end
"comme on travail avec des arrondis, on essai de les gommer"
: (abs(L3)>(max(abs(L3))10-5))L3 -> L3
voila, cet algorithme ressort, dans le cas ou =2, L3(a,b,c,d,e,f)
Ensuite, si les nombres ne sont pas entier, il est possible de les mettre sous forme de fraction est de supprimer le dénominateur en multipliant toute la liste par le même coefficient k que celui vu précédemment.
4)
On regarde l"l'ordonnée à l'origine" de la fonction pour déterminer la constante restante
Cela n'est pas du calcul vraiment formel mais vu la difficulté à faire du calcul formel (en tout cas je ne m'y risquerait pas!) et la puissance des Ti-82, l'analyse de fonction peut faire office de pseudo-formel qui bien entendu, ne peut pas s'appliquer dans tous les cas, mais qui dans de nombreux calcul, peut offrir un résultat satisfaisant.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :