60

pour les matrices, tu peux dire que l'opération + est capable d'opérer sur des types complexes, et parser les matrices. Bof.

poiur le calcul formel c'est mieux.
Imagine l'arbre à partir des parenthèses

f(x) = integrale(expression,variable,min,max)
=integrale(moins(exp(expression)),x,-1,0)
=integrale(
     moins(
          exp(
               somme(
                    produit(-2,x),
                    2)
          )
     ),
     x,
     -1,
     0)


et après tu parcours l'arbre.

je dois calculer une intégrale(fonction,variable,min,max)

dans l'arbre, tu vas remplacer cette expression par le sous arbre:
soustraction(evaluation(primitive(fonction,vaiable),max), evaluation(primitive(fonction,variable),min)

puis tu recommences à parcourir l'arbre

il faut maintenant calculer une soustraction de deux expressions

on commence par la premiere

il faut calculer une evaluation, donc remplacer une variable par une valeur et faire les simplifications

l'expression est une primitive. Il faut calculer l'expression correspondante.
tu ressors tes livres de maths pour calculer

primitive( exp(-2x+2) , x)
la primitive d'une exponentielle c'est quoi?

exp(u(x)) -> ?
je sais plus

61

apparemment y'a pas de formule générale

http://tanopah.jo.free.fr/ADS/bloc5/integB.html

tu peux alors tester des choses.

Si l'expression que tu as donnée dans l'exponentielle est affine, alors une primitive de exp(mx+p) est (1/m)exp(mx+p)
il y aura des cas dans ton algo d'exponentiation
si l'expression est un nombre x alors tu renvoies e^x
si l'expression est affine alors tu renvoies un nouvel arbre pour décrire la nouvelle expression
sinon... ce qui est nécessaire

pour l'evaluation, tu parcours l'arbre de l'expression en remplaçant la variable par sa valeur, puis de proche en proche, tu pourras faire les calculs.

hmmm c'est très intéressant tout ça je crois que je vais coder un truc.

62

la primitive d'une exponentielle c'est quoi?
Exponentielle elle même.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

63

Pas si c'est exp(u(x))...
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

64

eh oui hehe

si tu veux un programme de calcul formel il faut être capable de gérer des expressions !

65

Magical42 (./58) :
+-      -+                       +-                 -+
|  2   3 |   +-             -+   | 11    4   -1   13 | 
|  0   7 | * | 1   2   1   5 | = | 21    0   -7    7 |
| -5   1 |   | 3   0  -1   1 |   | -2  -10   -6  -24 | 
+-      -+   +-             -+   +-                 -+
Ou 8475.png
Pour les calculs avec des tableaux et autres non scalaires, soit chaque feuille peut directement être un scalaire réel, un complexe, une matrice, un vecteur ou autre ; soit tu dois définir des opérateurs ligne suivante, colonne suivante et autre pour construire l'arbre.

8476.png
Ici, tu ne prends pas une image en entrée (enfin, ça serait possible, mais bon). Tu dois donner une chaine à ton parseur, par exemple : « f(x)=int(-exp(-2x+2),x,-1,0) » (C'est la syntaxe de PrettyPrint). Et tu construis l'arbre :
                           +-<2>
       +-<->---<exp>---<+>-+           +-<x>
       |                   +-<->---<*>-+
       +-<x>                           +-<2>
-<int>-+
       +-<-1>
       |
       +-<0>

Le calcul formel (ou pas) consiste simplement en l'application de fonctions sur l'arbre pour le rendre minimal ou pour en changer la forme (factorisation...).

avatar

66

c'est ce que je viens d'expliquer non?

67

Oui, j'avais même fait une référence à ton post, mais elle est partie à l'édition.
Je voulais lui donner une explication plus claire (ou qui au moins me le semble) pour cette histoire de matrice.
Ensuite, mon arbre et quand même beaucoup plus joli que le tien tongue
avatar

68

69

Encore merci. Pour ces éclaircissements.
J'ai de quoi raconter sur les mécanismes. Ravi que cette discussion a eu de nombreuses réponses et de nombreux échanges entre vous.

Thepro, comment fais-tu pour la representation des arbres ? Un site web le fait ? (car PrettyPrint ne fait que des illustrations d'image) ou est-ce une police spécifique qui respecte la taille des caractères ?

Bonne soirée
David

70

Bah, pour faire l'arbre, j'ai fait comme toi avec tes matrices wink Sauf que j'ai vérifié le résultat et que j'ai corrigé les décalages (la police utilisée pour écrire les posts n'est pas à chasse fixe).
avatar

71

oui enfin le problème n'est pas forcement la tokenisation de l'expression mais plutôt son évaluation. On trouve d'ailleurs assez vite des petits problèmes

Exemple simple : 3*(1/3).
Etapes pour arriver à 1 et non 1.0? le problème deviens alors un peu plus complexe qu'une simple grammaire tongue

72

non, la grammaire sert à construire l'arbre.

OK la manière dont on le parcourt peut être compliquée mais elle n'est pas liée à la grammaire.

pour arriver à ton résultat, il faut gérer les divisions comme des fractions rationelles et non comme des réels, ce qui se controle par une option lors du parcours de l'arbre.

73

[nosmile]
JackosKing (./71) :
Exemple simple : 3*(1/3).

Mauvais exemple. Il suffit d'utiliser les nombres rationnels pour ça. Des exemples où il faut vraiment du calcul formel:
(√2)² (résultat intermédiaire irrationnel algébrique)
exp(ln(6)) (résultat intermédiaire transcendent)
sin(π) (exemple qui n'est pas de la forme f-1(f(x)))
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

74

75

La solution que tu donnes est mauvaise de toute façon, ça gère son exemple (mauvais), mais pas les miens.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

76

Oui bon Ok l'exemple était un peu simpliste, mais déjà pour gérer les fractions cela ne se fait pas comme cela smile
d'ailleurs je pourrais dire aussi que ton exemple de la racine carré est mauvais, il suffit de gérer la racine comme une puissance...

77

C'est bien pour ça que j'ai mis les exemples transcendents aussi.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité