En utilisant mathematica, je peux calculer la représentation mathématique d'une fonction que je veux ensuite coder en C++.Optimisation du calcul algébrique
dire que je reçois quelque chose comme:
f=Log[2*x+3*y]+Sin[4*x+6*y]
Il est évidemment logique dans ce cas, faire le calcul:
temp=2*x+3*y
f=Log[temp]+Sin[2*temp]
Y at-il un moyen d'obtenir l'expression qui réduirait le temps d'exécution/nombre d'opérations/taille de l'expression ou toute bonne métrique donnée une expression mathématique plus complexe?
Pour des optimisations comme celui que vous avez posté , au moins, je sais que l'optimisation des compilateurs devrait le faire pour vous. Beaucoup plus compliqué est probablement impossible. – vroomfondel
@rogaos Je sais que tout bon optimiseur va supprimer les sous-expressions courantes qui apparaissent littéralement, mais la plupart d'entre elles font vraiment l'analyse algébrique pour détecter le facteur commun dans le code ci-dessus? – Barmar
@Barmar ah, j'ai mal lu la question un peu. Non, je ne sais pas si ça le sera. Si vous l'avez initialement écrit comme 2 * (2 * x + 3 * y), il sera optimisé, sinon ce ne sera pas le cas. Vous pourriez écrire une méthode à prendre en compte au préalable ... mais ce serait probablement un programme plus lent de toute façon – vroomfondel