Python

Retrouver tous les sujets résolus.
Invité

Python

Message par Invité » sam. 19 déc. 2020 15:09

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 !!
SoS-Math(25)
Messages : 1859
Enregistré le : mer. 2 nov. 2011 09:39

Re: Python

Message par SoS-Math(25) » sam. 19 déc. 2020 17:55

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

Re: Python

Message par Invité » sam. 19 déc. 2020 19:20

Je suis sur mobile et je n'arrive pas à voir le code sur trinket : comment faire ? Merci
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Python

Message par sos-math(21) » sam. 19 déc. 2020 19:24

Bonjour
Sinon, tu peux essayer avec replit : https://repl.it/.
Bonne continuation
Invité

Re: Python

Message par Invité » sam. 19 déc. 2020 19:29

D'accord merci et pour voir le code envoyé par SOS 25 comment puis-je faire ?
SoS-Math(25)
Messages : 1859
Enregistré le : mer. 2 nov. 2011 09:39

Re: Python

Message par SoS-Math(25) » sam. 19 déc. 2020 20:07

As-tu essayé de tourner ton écran sur trinket ? (mode paysage)

A bientôt
Invité

Re: Python

Message par Invité » jeu. 31 déc. 2020 03:07

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

Re: Python

Message par sos-math(21) » jeu. 31 déc. 2020 10:30

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

Re: Python

Message par Invité » jeu. 31 déc. 2020 14:04

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.

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

Re: Python

Message par sos-math(21) » jeu. 31 déc. 2020 15:47

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

Re: Python

Message par Invité » jeu. 31 déc. 2020 16:00

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

Re: Python

Message par Invité » dim. 3 janv. 2021 13:47

Bonjour avez-vous reçu mon message posté jeudi 31 décembre 2020 en fin d'après-midi ?

Il apparaît pas.....
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Python

Message par sos-math(21) » dim. 3 janv. 2021 13:56

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

Re: Python

Message par Invité » lun. 4 janv. 2021 13:38

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

Re: Python

Message par sos-math(21) » lun. 4 janv. 2021 19:55

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 :

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
et un appel pour vérifier :

Code : Tout sélectionner

>>> import math
>>> calc_int_gauss_legendre(lambda x:(x**2)*math.exp(3*x+5),-3,0,10)
10.925053283216421
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
Répondre