Suite de l'exo / 2

Retrouver tous les sujets résolus.
Invité

Suite de l'exo / 2

Message par Invité » sam. 16 janv. 2021 01:54

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 !
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Suite de l'exo / 2

Message par sos-math(21) » sam. 16 janv. 2021 10:40

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
Invité

Re: Suite de l'exo / 2

Message par Invité » mar. 19 janv. 2021 18:38

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.
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Suite de l'exo / 2

Message par sos-math(21) » mar. 19 janv. 2021 20:11

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
Invité

Re: Suite de l'exo / 2

Message par Invité » mar. 19 janv. 2021 20:38

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 :

Code : Tout sélectionner

x=np.linspace(-10,10,100)
y = (x∗∗2+3∗x+4)
plt.plot(x,y)
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...
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Suite de l'exo / 2

Message par sos-math(21) » mar. 19 janv. 2021 20:57

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
Invité

Re: Suite de l'exo / 2

Message par Invité » mar. 19 janv. 2021 21:50

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 ?
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Suite de l'exo / 2

Message par sos-math(21) » mar. 19 janv. 2021 22:00

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 :
erf.png
Bonne continuation
Invité

Re: Suite de l'exo / 2

Message par Invité » mar. 19 janv. 2021 22:05

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 ?
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Suite de l'exo / 2

Message par sos-math(21) » mar. 19 janv. 2021 22:12

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).
erf_comparatif.png
À toi de trouver une explication.
Invité

Re: Suite de l'exo / 2

Message par Invité » mer. 20 janv. 2021 13:40

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...
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Suite de l'exo / 2

Message par sos-math(21) » mer. 20 janv. 2021 15:01

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
Invité

Re: Suite de l'exo / 2

Message par Invité » sam. 23 janv. 2021 18:57

ç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.
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Suite de l'exo / 2

Message par sos-math(21) » sam. 23 janv. 2021 19:16

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
Invité

Re: Suite de l'exo / 2

Message par Invité » sam. 23 janv. 2021 19:28

ok merci, et où trouver les docs de Python ?
Répondre