CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Calcul formel

Chaos_Clad
Chaos_Clad
Niveau 10
17 septembre 2006 à 23:19:52

Salut à tous !
Voilà j´ai appris le C, j´ai fait quelques trucs, du graphisme, des petits jeux, des programmes complètement inutiles donc indispensables etc. Puis je me suis rendu compte que ce qui m´intéressait vraiment ce serait de gérer des calculs mathématiques comme les limites, les dérivées etc. dans un environnement graphique (à ce propos qu´est-il mieux d´utiliser comme librairie ? GTK, WxWidgets... ?) .
Mais une question se pose alors à moi, j´ai réfléchi un peu à la question mais je ne vois pas comment gérer le calcul formel, comment "dire" que lorsque l´utilisateur entre 5x+2, reconnaître les différents opérateurs des chiffres etc.

Donc auriez-vous un site qui explique tout ça ? Ou alors est-ce vraiment tout simple et suis-je stupide ?

:merci:

dnob700
dnob700
Niveau 10
17 septembre 2006 à 23:34:22

non, ce n´est pas simple du tout.

Il y a deux partie dans ton programme, d´une part la partie analyseur syntaxique/lexiqual, qui va lire une chaine et comprendre que "5x+3" c´est l´addition de la constante 3 et de l´expression qui est une multiplication de la constante 5 et de la variable x.

Même si ça peut-être chiant, c´est le plus facile.

Ensuite (et avant), il faut décider comment tu vas stocker tes expressions, tu peut le faire sous forme d´arbre (c´est une notation fonctionnelle du genre "+(2,*(5,x))" (ou + et * sont des fonctions qui prenne deux paramètre), simple si tu connait les arbres (sinon, avant de te lancer dans ton projet, étudie ça)) ou alors sous forme de liste par exemple avec la notation postfixe ("2 5 x * +" par exemple).

L´une et l´autre ont leur avantage.

Mais pour faire du calcul formel (ta dernière étape) l´utilisation à base d´arbre est peut-être plus simple (mais pas forcément plus efficaces, beaucoup de "vrais" logiciels de calcul formel utilise des listes), et là commence la partie difficile.

Je ne connait pas de papier qui explique ça particulièrement. Mais pour débuter, tu peut commencer par coder une dérivation formelle, c´ets-à-dire, une fonction qui si tu lui donne une expression sous forme d´arbre, va renvoyer sa dérivé en fonction d´une variable.
Mais le plus dur c´est les opération du type simplification ou factorisation.

ça fait beaucoup d´un coup, il faudra que tu précise ce que tu sais faire et ce sur quoi tu as besoin d´aide.

Chaos_Clad
Chaos_Clad
Niveau 10
18 septembre 2006 à 06:24:39

Eh bien justement tout ce qui a un aspect mathématique en C m´est plus ou moins inconnu. La seule fonction que je connaisse de math.h c´est pow ^^ Je n´ai suivi les cours (de C) que sur le SdZ où j´y ai appris le C, la SDL et un peu l´OpenGL. Les rares maths que j´ai pu faire se limitent donc à des calculs matriciels assez simples.
En tout cas merci de tes informations, je vais me renseigner dès que possible, y´a pas mal de trucs à apprendre ça m´ouvrira sans doute d´autres voies :)

Fvirtman
Fvirtman
Niveau 10
18 septembre 2006 à 09:28:23

Un projet en effet compliqué a réaliser.

Si ton but est uniquement le résultat final, le logiciel Maple est une TI92 en beaucoup mieux.

Mais si ton but est de le programmer, c´est en effet complexe a faire.
Comme dit Dnob, passe par des arbres.

A la fac, j´ai fait un TP la dessus (dont j´ai encore les sources), un TP de manipulation d´arbres, et avec comme but final un évaluateur d´expression simple.

C´est a dire que tu rentres "2+((4*5)-3)"
Il te donne 19.

J´ai déja pensé a ça, une classe surchargée pourrait etre pas mal ! Quoiqu´il en soit, si tu te lances la dedans, je veux bien t´aider (si j´ai le temps), ou en discuter !

godrik
godrik
Niveau 30
18 septembre 2006 à 10:19:23

j´avais écrit il y a fort longtemps un dérivateur.
Tu lui donne une expression, la parse, et la dérive.
C´est marrant comme tout a faire, jusqu´au moment ou tu as des problemes d´ensemble de définition de la fonction...

Pseudo supprimé
Pseudo supprimé 18 septembre 2006 à 13:41:30

Oh, du parsing ^^
En effet, ce n´est pas le sujet le plus simple. Il va falloir parser ton expression et la ranger dans un arbrer pour pouvoir jouer avec. C´est d´ailleurs en faisant ça qu´on comprend pourquoi certaines calculatrices préfèrent le RPN à la notation naturelle :p
L´écriture d´une grammaire sera donc également utile (Définir variables, nombres, règles de priorité, ...).
Mais c´est un sujet passionnant :)
Je me souviens, à la fac, on nous avait fait écrire notre propre compilateur (En C) et avec lex/yacc, on avait créé notre propre langage :p
Et bien entendu, la réccursivité sera ton amie !
Mais je rejoins dnob700 sur un point capital : maîtrise des arbres obligatoire.

Fvirtman
Fvirtman
Niveau 10
18 septembre 2006 à 14:10:01

"on nous avait fait écrire notre propre compilateur (En C) et avec lex/yacc, on avait créé notre propre langage "

--> Fac de Lyon, la Doua ?

Pseudo supprimé
Pseudo supprimé 18 septembre 2006 à 17:07:13

Non, Lens, Faculté Jean Perrin :p

godrik
godrik
Niveau 30
18 septembre 2006 à 17:11:46

De l´autre coté, beaucoup d´étudiant font des compilos C! :)

chez nous c´est mini caml, mais bon... :)

Pseudo supprimé
Pseudo supprimé 18 septembre 2006 à 17:58:13

Je pense aussi que l´écriture de compilo fait partie des classiques du cursus fac et autres formations scientifiques assimilées :p

Chaos_Clad
Chaos_Clad
Niveau 10
18 septembre 2006 à 17:59:31

Ah oui je m´attendais pas à quelque chose d´aussi ardu. Bon j´y passerai le temps qu´il faudra mais je finirai bien par y arriver. Je vais prendre sur le peu de temps libre qu´il me reste, ça prendra le temps que ça prendra ^^
Merci de vos conseils :)

Fvirtman
Fvirtman
Niveau 10
18 septembre 2006 à 18:37:13

hitman_alias_47 > et wé, car Lex et Yacc, j´en ai bien bouffé aussi a Lyon :)

Chaos_Clad > du boulot pour ça hein ? :)
Je veux suivre ta progression !

Je ne saurais te conseiller une classe "Expression" qui contiendrait une expression formelle, avec des opérateurs surchargés :

Expression operator+(Expression1,Expression2)

etc...

Et une classe "Equation" qui contiendrait 2 expressions (celle a gauche, celle a droite), ou alors simplement une seule expression, en se disant qu´a droite ça vaut 0...
A réfléchir !!

Chaos_Clad
Chaos_Clad
Niveau 10
18 septembre 2006 à 20:07:59

Le problème c´est que je n´ai appris que le C, donc tout ce qui est classes, surcharges etc. reste un peu flou, il faut donc que je me reconcentre avant tout sur l´avantage des nouvelles notions liées au C++ visiblement. Je vous ferai part de mes progrès (qui seront lents, l´informatique n´étant qu´une passion secondaire après la mathématique ^^) au fur et à mesure de mon apprentissage :-))) Et encore merci.

Pseudo supprimé
Pseudo supprimé 18 septembre 2006 à 20:15:34

Si tu connais ben le C, je te conseille de te renseigner sur Lex et Yacc (Le duo magique), grâce à eux, tu pourras te concentrer sur le fond de ton problème et écrirer de belles grammaires comme l´aiment les mathématiciens :D

Chaos_Clad
Chaos_Clad
Niveau 10
18 septembre 2006 à 20:18:44

Je sais pas, "bien" me semble un grand mot ^^ Sinon, que sont Lex et Yacc ? Que je sache dans quoi je me lance...

Pseudo supprimé
Pseudo supprimé 18 septembre 2006 à 20:50:11

http://dinosaur.compilertools.net/

Chaos_Clad
Chaos_Clad
Niveau 10
19 septembre 2006 à 18:41:43

Merci :ok: Vu que je suis vachement fort en anglais, ça va me prendre un certain temps mais en tout cas j´ai lu les quelques premiers paragraphes et ç´a l´air vraiment pas mal ! :)

Pseudo supprimé
Pseudo supprimé 19 septembre 2006 à 20:19:20

Si je retrouve mes sources de licence (énormes doutes), je les posterai sinon, je verrai si je peux te coder un truc vite fait pour te montrer un peu comment faire.

Tueur2Legumes
Tueur2Legumes
Niveau 4
20 septembre 2006 à 16:35:43

Ocamllex et Ocamlyacc c´est bien mieux :)

godrik
godrik
Niveau 30
20 septembre 2006 à 17:19:42

j´avoue que pour faire des parser, du calcul formel tout ca, j´aurais plus recommandé caml. Mais c´est un bon exercice de faire ca en C...

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment