Skip to content

UlysseDurand/CalculFormel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Logiciel de Calcul Formel en OCaml

Le document explicatif est ICI

Il s'agit d'un projet sans se documenter, il a été réalisé juste avec les connaissances d'option informatique, notamment concernant les automates. Le but étant de forcer la réflexion et la créativité, et de redécouvrir par soi même des concepts déjà existants.

Fonctionnalitées:

  • Comprendre une expression en Latex et en faire un arbre d'expression algébrique (il y a un parser de Latex)
  • Afficher un arbre d'expression algébrique en Latex (pour le côté modulable, un compilateur depuis un langage inventé a été mis au point)
  • Dériver un arbre expression algébrique par rapport à une variable
  • Evaluer une expression algébrique (son arbre en réalité)

Réalisation

Le projet a été réalisé en très peu de temps (moins de 4 semaines) Il constitue environ 120h de travail.

L'entièreté de ce qui est contenu dans le projet est le fruit de recherche personnelle. Les méthodes employées et leur implémentation sont personnelles.

Essayer le projet :

Pour essayer, modifiez le fichier calculformel/main.ml à votre guise. Pour compiler et lancer le programme, vous devrez vous placer dans le dossier calculformel et lancer

make all

Pour simplement lancer le programme déjà compilé, executez

make

Si votre programme écrit du latex dans le fichier sortie.txt, vous pouvez directement afficher votre résultat dans un fichier calculformel/sortie.pdf en executant

make complet

Vous pourrez modifier le fichier main.ml à votre guise. Voici les fonctions caml ajoutées :

val evalue : expression -> float array -> float = <fun>
val affiche : expression -> string = <fun>
val derive : int -> expression -> expression = <fun>
val latex_en_expression : string -> expression = <fun>
val simplifiebis : expression -> bool * expression = <fun>

simplifiebis retourne aussi un booléen, il sera à true si l'expression donnée est simplifiable et false sinon.

Exemple de résultat

après execution du programme suivant :

let exprlatexa = "x_0^{x_1}+x_1^{x_0}";;
let expra = latex_en_expression exprlatexa;; (*parse le latex*)
let exprb = (derive 0 expra);; 				 (*derive l'expression par rapport à x_0*)
let exprbsimpl = snd (simplifiebis exprb);;	 (*simplifie l'expression obtenue*)
let exprlatexb = affiche exprbsimpl;;		 (*transforme l'expression en latex*)

ecritdansfichier "sortie.txt" [exprlatexa ; "\\\\" ; exprlatexb];;

Voici le contenu de sortie.txt :

x_0^{x_1}+x_1^{x_0}
\\
(frac{{x_{1}}}{{x_{0}}})*({x_{0}}^{x_{1}})+(ln({x_{1}}))*({x_{1}}^{x_{0}})

Il s'agit d'une fonction et de sa dérivée par rapport à x_0. Voici le rendu obtenu grâce à Latex : jolieresultat

About

Petit logiciel de calcul formel en ocaml.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published