On peut (doit ?) pousser le concept plus loin, comme par exemple écrire une bibliothèque de calcul matriciel qui vérifie à la compilation la dimensionnalité des calculs.
Je profite de ta remarque pour mentionner Abach un projet de calcul scientifique en OCaml. Ma motivation est de développer un outil qui permet le calcul formel (polynômes à plusieurs variables, quotients, algèbre linéaire...) sur des objets proches de la formulation mathématique des problèmes – là où la plupart des systèmes de calcul formel demandent de tout transformer en objets basiques du système, ce qui est une opération parfois difficile. Mon but est de pouvoir calculer bientôt des tables de multiplication pour les algèbres de Lie de petit rang puis des choses plus complexes comme les décompositions de Bialinicky-Birula de petites représentations ainsi que de pouvoir travailler sur les corps finis.
Screenshot
Un point sympa du programme est que les structures sont capables de transformer leurs éléments en formules TeX, comme illustré par la capture d'écran ci-dessus (en utilisant MathJax).
Côté code, voici un extrait du programme example générant la sortie ci-dessus:
module P =
(* The ring of an integral thick point. *)
struct
module Internal =
struct
module Zepsilon =
Abach_PolynomialRing.OverRing.Make
(Z)(struct let indeterminate = Abach_Formula.(greek varepsilon) end)
module I =
struct
type t = Zepsilon.t
let epsilon2 = Zepsilon.of_array [| 0; 0; 1 |]
let projection x =
Zepsilon.rem x epsilon2
let structure_formula =
Abach_Formula.parenthesis (Zepsilon.to_formula epsilon2)
end
end
include Abach_Ring.Quotient(Internal.Zepsilon)(Internal.I)
let structure_formula =
Internal.Zepsilon.structure_formula
let epsilon =
projection Internal.Zepsilon.indeterminate
end
module PX =
Abach_PolynomialRing.OverRing.Make
(P)(struct let indeterminate = Abach_Formula.(letter 'X') end)
...
"Computing with polynomials over the ring of a thick point.",
begin
let a = PX.of_array [| P.one; P.epsilon |] in
let b = PX.zpower 2 a in
equal
(parenthesis ~superscript:(integer 2) (PX.to_formula a))
(PX.to_formula b)
end;
...
# Caclul symbolique en OCaml
Posté par Michaël (site web personnel) . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 3. Dernière modification le 18 janvier 2017 à 10:41.
Je profite de ta remarque pour mentionner Abach un projet de calcul scientifique en OCaml. Ma motivation est de développer un outil qui permet le calcul formel (polynômes à plusieurs variables, quotients, algèbre linéaire...) sur des objets proches de la formulation mathématique des problèmes – là où la plupart des systèmes de calcul formel demandent de tout transformer en objets basiques du système, ce qui est une opération parfois difficile. Mon but est de pouvoir calculer bientôt des tables de multiplication pour les algèbres de Lie de petit rang puis des choses plus complexes comme les décompositions de Bialinicky-Birula de petites représentations ainsi que de pouvoir travailler sur les corps finis.
Screenshot
Un point sympa du programme est que les structures sont capables de transformer leurs éléments en formules TeX, comme illustré par la capture d'écran ci-dessus (en utilisant MathJax).
Côté code, voici un extrait du programme example générant la sortie ci-dessus: