J'ai deux fonctions dont la distance (y_1-y_2
) doit être minimisée afin d'obtenir le meilleur facteur entre les deux (dfactor
), donc je peux les tracer ensemble et les ajuster au mieux. La différence avec les exemples de la documentation est que, dans ce cas, j'ai n
points où je peux calculer la différence et ainsi j'ai des fonctions n
pour minimiser. Avec scipy.optimize.minimize_scalar
J'utilise la syntaxe suivante:Minimiser n fonctions
def chi(dfactor):
for i in range(0, n):
return abs(dfactor*y_1[i] - y_2[i])
res = minimize_scalar(chi)
print res.x
Maintenant res.x
n'est pas le facteur qui correspond le mieux à deux parcelles. Je m'attendrais à obtenir un tableau de n éléments, très similaires entre eux où je peux obtenir un seul dfactor
dont j'ai besoin. Mais je ne suis pas sûr minimize_scalar
fonctionne comme ça.
Cochez desired result, où je calcule la différence entre les points rouges et le point correspondant dans le tracé bleu (représenté ici comme des lignes car il s'agit d'un spectre) pour les superposer le mieux possible.
Je devrais donc appeler la fonction dans une boucle _outside_ la fonction. Ensuite, j'aurais besoin de quelque chose comme 'chi (y1, y2, dfactor)', mais dans ce cas comment utiliser la fonction 'minimize_scalar'? – cwasdwa
Non, tant que vous voulez trouver un seul 'dfactor', mon code devrait fonctionner * tel quel * pour vous. –
Je reçois un 'TypeError: ne peut pas multiplier la séquence par un non-int de type 'float', puisque' y_1' et 'y_2' sont des listes de n éléments. – cwasdwa