Page 1 sur 2
Suite de l'exo / 2
Posté : sam. 16 janv. 2021 01:54
par Invité
Rebonsoir ou rebonjour,
Ceci est la deuxième suite du sujet :
https://sosmath.ac-poitiers.fr/viewtopi ... =9&t=19830
Je remets le sujet en dessous et il faut s'aider des programmes qui sont sur l'autre sujet.
C'est la dernière application :
https://www.cjoint.com/data/KAqaLqF2vH4_erreur.png
Voilà ce que j'ai fait pour la première question :
https://www.cjoint.com/data/KAqa112w324_capture.png
Mais savez-vous pourquoi j'obitnes un message,d'erreur ? Ca m'énerve....
Merci par avance de vos explications qui éclairciront ma journée de samedi j'espère !
Re: Suite de l'exo / 2
Posté : sam. 16 janv. 2021 10:40
par sos-math(21)
Bonjour,
peux-tu m'envoyer ton script afin que je l'exécute dans mon environnement Python ?
Cela me permettra éventuellement de voir où se situe le bug.
Bonne continuation
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 18:38
par Invité
désolée pour l'attente de la réponse. . . .
OK voici le script :
https://trinket.io/python3/8930115025
voyez vous à quoi est dû le bug ?
Merci bien.
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 20:11
par sos-math(21)
Bonjour,
il y a un problème de dimension : tu as un tableau numpy x qui contient 100 éléments et tu as y qui est un nombre seul.
Puis tu essaie de tracer y en fonction de x : cela ne peut pas aller.
Pour matplotlib, il faut avoir des listes/tableaux de même dimension donc il faut revoir ton tableau y.
Bonne continuation
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 20:38
par Invité
ok je comprends le problème merci
en fait le problème c'est que là on doit tracer une fonction avec les y en ordonnée et les x en abscisse.
D'habitude, si la fonction est x²+3x+4, je fais comme ça :
Mais là comment faire ? Car j'ai essayé de faire comme ça mais ça fonctionne pas....
Il faudrait faire une boucle for dans le y = ? Et calculer plusieurs fois les valeurs de erf avec Simpson ? Mais on aurait que pour quelques points...
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 20:57
par sos-math(21)
Bonjour,
effectivement, lorsque l'on effectue ce type de calcul, cela forme bien deux tableaux de même dimension : ton x et y sont bien des tableaux.
Pour ton problème, on te dit de calculer l'intégrale de cette fonction sur l'intervalle \([0\,;\,u]\) pour \(u\) variant entre 0 et 2.
Donc cela te donne les valeurs à calculer :
par exemple :
Code : Tout sélectionner
X = np.linspace(0,2,50)
Y = np.array([simpson(f,0,u,3) for u in X])
plot(X,Y)
Bonne continuation
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 21:50
par Invité
oh merci beaucoup, comme ça ça fonctionne !
Voici ce que j'obtiens :
https://www.cjoint.com/data/KAtuWegp641 ... gendre.png
Est-ce que c'est correct ?
Et maintenant, comment tracer la fonction erf avec le module maths ?
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 22:00
par sos-math(21)
Cela marche un peu pareil :
Code : Tout sélectionner
Z = np.linspace(0,2,50)
T = np.array([math.erf(u) for u in Z])
plt.plot(Z,T)
plt.show()
qui donne :
Bonne continuation
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 22:05
par Invité
ok d'accord.
Alors pour la question "comparez les deux premiers résultats avec erf" : je dirais qu'il n'y a aucune différence entre les trois graphes. En tout cas je n'en vois aucune. Donc les deux premières fonctions, simpson et gauss-legendre, sont aussi pertinentes que la fonction erf.
Est-ce correct ?
Re: Suite de l'exo / 2
Posté : mar. 19 janv. 2021 22:12
par sos-math(21)
Si tu superposes tes tracés,
Code : Tout sélectionner
f=lambda x:math.exp(-x**2)
X = np.linspace(0,2,50)
Y = np.array([Simpson(f,0,u,3) for u in X])
L = np.array([calc_int_gauss_legendre(f,0,u,3) for u in X])
#Z = np.linspace(0,2,50)
T = np.array([math.erf(u) for u in X])
plt.plot(X,T, color = 'red')
plt.plot(X,L, color = 'green')
plt.plot(X,Y, color = 'blue')
plt.show()
les deux méthodes numériques sont identiques (en bleu et vert) mais le calcul de erf avec le module math est différent (en rouge).
À toi de trouver une explication.
Re: Suite de l'exo / 2
Posté : mer. 20 janv. 2021 13:40
par Invité
j'ai fait des recherches et j'ai trouvé ce lien :
http://userpages.irap.omp.eu/~rbelmont/ ... ration.pdf
mais ça nous donne pas d'infos sur les raisons des différences entre erf et les deux fonctions...
la fonction erf c'est la fonction d'erreur de Gauss. Mais donc ça voudrait dire que Python a une autre formule ?
J'ai l'impression de pédaler dans la semoule, je ne comprends pas...
Re: Suite de l'exo / 2
Posté : mer. 20 janv. 2021 15:01
par sos-math(21)
Bonjour,
Python utilise sûrement une autre méthode de calcul pour cette intégrale. Il faut chercher dans les définitions des fonctions dans le module math de Python pour trouver comment elle est construite.
Bonne continuation
Re: Suite de l'exo / 2
Posté : sam. 23 janv. 2021 18:57
par Invité
ça y est, avec l'exo sur fd et Reynolds, celui de cette page est le dernier à rendre avant ce soir....
J'espère vraiment pouvoir le finir.
Ici je n'ai pas trouvé de justification pour la différence entre ce que l'on trouve avec les programmes "maison" et ce qu'on a avec la fonction erreur de Python.
Avez-vous de votre côté une idée ? J'espère que oui, j'aimerais vraiment finir l'exercice....
MERCI.
Re: Suite de l'exo / 2
Posté : sam. 23 janv. 2021 19:16
par sos-math(21)
Non, je n'ai pas d'idée a priori, je t'avais conseillé de fouiller dans les docs de Python pour voir comment la fonction d'erreur est construire dans le module maths.
Tu peux toujours faire des hypothèses : c'est l'implémentation de erf dans Python qui a été optimisée...
Bonne continuation
Re: Suite de l'exo / 2
Posté : sam. 23 janv. 2021 19:28
par Invité
ok merci, et où trouver les docs de Python ?