Python
Python
Bonjour
j'ai un TP de python à faire il est ici : https://www.cjoint.com/data/JLtohHnNoql_python.pdf
on doit programmer les différentes lméthodes exposées, et j'ai mis dans un lien dans le doc ce que j'ai fait.
Est-ce correct ? Je n'arrive pas à compléter les endroits où c'est écrit TODO.
Merci de l'aide bonnes vacances !!
j'ai un TP de python à faire il est ici : https://www.cjoint.com/data/JLtohHnNoql_python.pdf
on doit programmer les différentes lméthodes exposées, et j'ai mis dans un lien dans le doc ce que j'ai fait.
Est-ce correct ? Je n'arrive pas à compléter les endroits où c'est écrit TODO.
Merci de l'aide bonnes vacances !!
-
- Messages : 1859
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Python
Bonjour,
Commence par la méthode de Simpson. Il suffit de renvoyer le calcul en fonction de a, b et f donnée par la formule de ton document.
Un point de départ que tu peux modifier puis tester (avec la fonction f(x)=x^2):
https://trinket.io/python/884ef7e167
Bon courage
Commence par la méthode de Simpson. Il suffit de renvoyer le calcul en fonction de a, b et f donnée par la formule de ton document.
Un point de départ que tu peux modifier puis tester (avec la fonction f(x)=x^2):
https://trinket.io/python/884ef7e167
Bon courage
Re: Python
Je suis sur mobile et je n'arrive pas à voir le code sur trinket : comment faire ? Merci
-
- Messages : 10362
- Enregistré le : lun. 30 août 2010 11:15
Re: Python
D'accord merci et pour voir le code envoyé par SOS 25 comment puis-je faire ?
-
- Messages : 1859
- Enregistré le : mer. 2 nov. 2011 09:39
Re: Python
As-tu essayé de tourner ton écran sur trinket ? (mode paysage)
A bientôt
A bientôt
Re: Python
Alors je reprends ce que j'ai fait.
Voici ici : https://py3.codeskulptor.org/index.html ... aaqcd_0.py
Mon prof a validé la structure des fonctions simpsonComposite et gaussLegendre, mais il me manque les lignes 33 et 49.
Pourriez-vous m'aider à les compléter svp ?
Merci bien
Voici ici : https://py3.codeskulptor.org/index.html ... aaqcd_0.py
Mon prof a validé la structure des fonctions simpsonComposite et gaussLegendre, mais il me manque les lignes 33 et 49.
Pourriez-vous m'aider à les compléter svp ?
Merci bien
-
- Messages : 10362
- Enregistré le : lun. 30 août 2010 11:15
Re: Python
Bonjour,
il te reste à traduire la formule de Simpson sur chaque intervalle de ta subdivision :
\(S=\dfrac{b-a}{6}\left(f(a)+4f\left(\dfrac{a+b}{2}\right)+f(b)\right)\).
Il te reste à voir lors du parcours de ta boucle, ce que valent \(a\) et \(b\) : cela correspond à ta subdivision \(xi\) dont on prend les valeurs deux par deux : (xi[0],xi[1],xi[2]), puis (xi[2],xi[3],xi[4]) et ainsi de suite jusqu'à la fin...
Bonne traduction
il te reste à traduire la formule de Simpson sur chaque intervalle de ta subdivision :
\(S=\dfrac{b-a}{6}\left(f(a)+4f\left(\dfrac{a+b}{2}\right)+f(b)\right)\).
Il te reste à voir lors du parcours de ta boucle, ce que valent \(a\) et \(b\) : cela correspond à ta subdivision \(xi\) dont on prend les valeurs deux par deux : (xi[0],xi[1],xi[2]), puis (xi[2],xi[3],xi[4]) et ainsi de suite jusqu'à la fin...
Bonne traduction
Re: Python
bonjou et merci !
j'ai reçu ce matin une aide de mon prof, il m'a dit que ce programme était une implémentation de la méthode trouvée dans un livre de Python.
Mais il y a quelque chose que je ne comprends pas : ce programme correspond à la fonction "Simpson" ou à la fonction "simpsonComposite" qui est dans ce lien https://py3.codeskulptor.org/index.html ... aaqcd_0.py ?
Comprenez-vous à quoi la fonction envoyée par le prof fait référence ? Simspon ou simpsonComposite ? Quelle est la différence entre les 2 méthodes ?
j'ai reçu ce matin une aide de mon prof, il m'a dit que ce programme était une implémentation de la méthode trouvée dans un livre de Python.
Code : Tout sélectionner
def Simpson (f,a,b,n):
n2=2*n # nombre pair de points
s ,h =0 ,(b-a)/n2 # initialisation
x1 = a # abscisses d'ordre pair
for i in range (0,n):
s += 2* f (x1)+4*f(x1+h)
x1=x1 +2*h
s+= f(b)-f(a)
return s*h/3
Comprenez-vous à quoi la fonction envoyée par le prof fait référence ? Simspon ou simpsonComposite ? Quelle est la différence entre les 2 méthodes ?
-
- Messages : 10362
- Enregistré le : lun. 30 août 2010 11:15
Re: Python
Bonjour,
ce programme correspond à la méthode de Simpson globale, c'est-à-dire le principe de Simpson appliqué à une série de subdivisions de l'intervalle.
Dans ton exercice, cela correspond à Simpson composite.
Bonne continuation
ce programme correspond à la méthode de Simpson globale, c'est-à-dire le principe de Simpson appliqué à une série de subdivisions de l'intervalle.
Dans ton exercice, cela correspond à Simpson composite.
Bonne continuation
Re: Python
D'accord, merci beaucoup !
J'ai compris.
Et dans mon premier message j'ai mis un document PDF où est explicitée la méthode Gauss Legendre.
Comment programmer cette méthode en Python ?
Puis-je m'inspirer de newtoncomposite ? J'ai essayé mais sans succès (pour l'isntant)....
J'ai compris.
Et dans mon premier message j'ai mis un document PDF où est explicitée la méthode Gauss Legendre.
Comment programmer cette méthode en Python ?
Puis-je m'inspirer de newtoncomposite ? J'ai essayé mais sans succès (pour l'isntant)....
Re: Python
Bonjour avez-vous reçu mon message posté jeudi 31 décembre 2020 en fin d'après-midi ?
Il apparaît pas.....
Il apparaît pas.....
-
- Messages : 10362
- Enregistré le : lun. 30 août 2010 11:15
Re: Python
Bonjour,
lorsqu'un message n'apparaît pas dans le forum, c'est qu'il n'a pas encore été traité par un modérateur.
Pour la méthode de Gauss-Legendre, il faut d'abord obtenir les racines des polynômes d'interpolation de Legendre.
As-tu un cours là-dessus ? C'est loin d'être élémentaire...
Si tu n'as aucune référence, tu peux consulter ce document : http://userpages.irap.omp.eu/~rbelmont/ ... ration.pdf
Bonne continuation
lorsqu'un message n'apparaît pas dans le forum, c'est qu'il n'a pas encore été traité par un modérateur.
Pour la méthode de Gauss-Legendre, il faut d'abord obtenir les racines des polynômes d'interpolation de Legendre.
As-tu un cours là-dessus ? C'est loin d'être élémentaire...
Si tu n'as aucune référence, tu peux consulter ce document : http://userpages.irap.omp.eu/~rbelmont/ ... ration.pdf
Bonne continuation
Re: Python
on a eu quelques infos là dessus, mais c'était très bref
Donc il faut créer un programme Python pour obtenir les racines des polynômes d'interpolation de Legendre ?
Comment peut-on faire ça en Python ?
Je n'en ai aucune idée.....
Merci de l'aide
Donc il faut créer un programme Python pour obtenir les racines des polynômes d'interpolation de Legendre ?
Comment peut-on faire ça en Python ?
Je n'en ai aucune idée.....
Merci de l'aide
-
- Messages : 10362
- Enregistré le : lun. 30 août 2010 11:15
Re: Python
Bonjour,
les poids \(w_i\) et les racines \(x_i\) associées aux polynômes de Legendre peuvent être calculés avec la bibliothèque numpy : https://numpy.org/doc/stable/reference/ ... gauss.html
Je te laisse consulter les dernières pages de ce diaporama pour trouver la formule reliant ces nombres à l'intégrale d'une fonction f :
https://team.inria.fr/airsea/files/2013 ... ration.pdf
Un exemple de construction :
et un appel pour vérifier :
Alors que la valeur par calcul exact est \( \dfrac{2}{27} \text{e}^{5} - \dfrac{101}{27\text{e}^{4}}\approx 10,93\).
En revanche, s'il faut construire "à la main" les \(w_i\) et les racines \(x_i\), c'est bien plus compliqué...
Bonne compréhension
les poids \(w_i\) et les racines \(x_i\) associées aux polynômes de Legendre peuvent être calculés avec la bibliothèque numpy : https://numpy.org/doc/stable/reference/ ... gauss.html
Je te laisse consulter les dernières pages de ce diaporama pour trouver la formule reliant ces nombres à l'intégrale d'une fonction f :
https://team.inria.fr/airsea/files/2013 ... ration.pdf
Un exemple de construction :
Code : Tout sélectionner
import numpy
def calc_int_gauss_legendre(f,a,b,n):
X = list(numpy.polynomial.legendre.leggauss(n)[0])
W = list(numpy.polynomial.legendre.leggauss(n)[1])
subd = [((b-a)/2)*X[i]+(a+b)/2 for i in range(len(X))]
somme = 0
for i in range(len(X)):
somme = somme + W[i]*f(subd[i])
return ((b-a)/2) * somme
Code : Tout sélectionner
>>> import math
>>> calc_int_gauss_legendre(lambda x:(x**2)*math.exp(3*x+5),-3,0,10)
10.925053283216421
En revanche, s'il faut construire "à la main" les \(w_i\) et les racines \(x_i\), c'est bien plus compliqué...
Bonne compréhension