2017-10-06 2 views
-1

Les fonctions d'origine, tracée avecScipy UnivariateSpline produisant des résultats très imprécis

plt.plot(x_list, np.absolute(eig_function)**2); 

produire des fonctions sinusoïdales analytiquement attendus: 1st regular 2nd regular

spl = UnivariateSpline(x_list, np.absolute(eig_function)**2); 
plt.plot(x_list, spl(xs)) 

produit

1st spl 2nd spl

Ce n'est pas ce qui était attendu, d'après ce que je comprends, la spline devrait générer plus de points de données de même valeur. Pourquoi UnivariateSpline ne fonctionne pas?

+0

Veuillez également fournir l'ensemble de données afin que le problème puisse être reproduit. En outre, il semble que vous appelez 'plt.plot()' une fois, mais vous montrez deux parcelles – Stelios

+0

@Desire quel code supplémentaire pourrait être requis? Le vecteur 'eig_functions' est le même pour la spline que pour le tracé régulier. –

Répondre

1

Il faut utiliser UnivariateSpline(x, y, s=0) pour des résultats précis. En d'autres termes, le facteur de lissage conduit au "lissage" des données dans ce cas.

spl = UnivariateSpline(x_list, np.absolute(eig_function)**2, s=0); 
plt.plot(x_list, spl(xs))