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 : 1867
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 : 10401
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 : 1867
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 : 10401
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=ba6(f(a)+4f(a+b2)+f(b)).
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 : 10401
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 : 10401
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 : 10401
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 wi et les racines xi 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 227e510127e410,93.
En revanche, s'il faut construire "à la main" les wi et les racines xi, c'est bien plus compliqué...
Bonne compréhension
Répondre