Calcul formel [Résolu]

Signaler
Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019
-
Messages postés
16360
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 juin 2021
-
Bonjour,

J ai deposé le sudoku 16x16 moins d une seconde en C sur ce site. Je cherche des sources pour implementer un systeme de calcul formel. J ai un parser. Mais je cherche un moteur ou tout autre info pouvant m aider a resoudre ce probleme. Par exemple un code qui va trouver la derivé de 2(x)^2 soit 4(x) sans calcul avec un valeur (ce que fait la ti nspire cas ...) en fait . Voila si vous avez contactez moi. Je peux en echange vous fournir des modules de traitement du signal de l image. Merci . A plus

2 réponses

Messages postés
5
Date d'inscription
mardi 8 septembre 2015
Statut
Membre
Dernière intervention
2 mai 2016

Salut, Je m'excuse pourrais tu être un peu explicite
Messages postés
16360
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Bonjour,

Pour les cas simples (polynôme, trigonométrie...) c'est assez facile, il y a des formulaires que l'on apprends à l'école qui sont suffisants.

Ce qui est compliqué c'est la combinaison de plusieurs éléments simples, là encore les formules existent, mais l'analyse de l'expression à "découper" et sa restitution est bien plus complexe, en particulier si tu introduits des littéraux (constantes a, b, c... par exemple) qui doit être calculés entre eux.

Exemple de combinaison (pas si complexe que ça) : sin(e^x)/(ax²+bx+c)

Il faudrait déjà que tu établisses une grammaire des formules mathématiques (notamment sur la priorité des opérateurs) afin de découper l'équation de départ en instruction simple.

Exemple (la formule ci-dessus) :
division(
    sinus(
        puissance(
            constante("e"),
            variable("x")
        )
    ),
    somme(
        produit(
            constante("a"),
            puissance(
                variable("x"),
                numerique("2")
            )
        ),
        produit(
            constante("b"),
            variable("x"),
        ),
        constante("c")
    )
)

Ensuite chaque opération simple doit être dérivée en respectant les formules existantes, par récursivité chaque nouveau morceau à dériver est également substitué et on doit en voir la fin.

Exemple : (f/g)' = (gf'-f'g)/g²

dérivée(division(f,g)) =
    division(
        soustraction(
            produit(g, dérivée(f)),
            produit(f, dérivée(e))
        ),
        produit(g, g)
    )

L'étape finale étant bien sûr de repasser de cette grammaire mathématique à une expression littérale comme l'était l'équation de départ.

Je ne te cacherais pas que tout cela demande pas mal de boulot. Mais ça reste faisable (contrairement à l'opération inverse : l'intégrale, qui n'est pas toujours possible).