J'ai ce code dans sympy:autant de paramètres que possible (sympy)
from sympy import *
par_amplitude, par_const_force = symbols('Delta_U f')
equation = par_amplitude * par_const_force
print(equation.evalf(subs={'f':3, 'Delta_U':2}))
La sortie est évidemment 6
.
Mon problème se produit lorsque j'ai accès à un seul paramètre, comme ceci:
print(equation.evalf(subs={'Delta_U':2}))
Au lieu d'attendre 2 * f
je reçois Delta_U * f
.
Qu'est-ce que je fais mal? Existe-t-il un moyen d'évaluer une expression, où tous les paramètres ne sont pas disponibles?
EDIT:
Oui, je suis après une sortie mixte numérique/symbolique. Imaginez une situation où il y a beaucoup de paramètres (générés automatiquement, donc vous n'êtes même pas sûr du nombre), et il y a une fonction fournissant toutes les valeurs subs
. Si vous ne manquez qu'une seule valeur de substitution, vous n'avez pratiquement rien sur evalf
.
Je dirais que le cas décrit dans votre lien diffère de celui ici. Dans le lien, le problème est des cas comme l'évaluation numérique de «1/0», alors que de tels problèmes numériques ne se posent pas ici. Je suppose que le problème est que l'OP veut 'evalf' pour retourner quelque chose mélangé avec' 2' numérique et symbolique 'f'. – Hannebambel
référencé sur la page I site est une liste de questions connexes, par ex. https://github.com/sympy/sympy/issues/6974 est similaire au cas donné ici. – smichr