Inscription / Connexion Nouveau Sujet
Niveau Maths sup
Partager :

Python méthode des rectangles

Posté par
Ramanujan
17-11-19 à 12:18

Bonjour,

Je viens de démontrer le résultat suivant, assez facile j'ai réussi sans regarder la correction, mais je ne comprends pas le programme Python qui lui correspond.

Soit f : [a,b] \longrightarrow \K une fonction de classe C^a<b. Alors pour tout n \in \N^*, on a :

|\int_a^b f(x)dx-S_n(f)| \leq \dfrac{M_1 (b-a)^2}{2n}

Avec S_n(f)= \dfrac{b-a}{n} \sum_{k=0}^{n-1} f(a+k \dfrac{b-a}{n}) et M_1=\max_{x \in [a,b]} |f'(x)|

def rectangle(f,a,b,n) :
                          s=0
                          pas=(b-a)/n
                          for k in range(n):
                                           s=s+f(a)
                                           a=a+pas
                          return (s*pas)


C'est quoi le but de ce programme ?

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 12:21

J'ai aussi une autre question, il est écrit dans mon livre :

Cette méthode n'est pas très efficace. Pour avoir une valeur approchée à 10^{-p} près, il faut faire 10^p calculs.

Je n'ai pas compris comment on trouve les 10^p calculs.

Posté par
carpediem
re : Python méthode des rectangles 17-11-19 à 12:46

salut

franchement si tu ne comprends pas qu'il calcule la somme ... des aires des rectangles S_n (f) ...

quant au nombres d'opérations il suffit de compter combien de fois la boucle est exécutée (et combien d'opérations ont lieu dans cette boucle) ...

Posté par
Ulmiere
re : Python méthode des rectangles 17-11-19 à 12:51

Bonjour

je pense que tu voulais dire de classe C^1, il y a une petite coquille

Le nombre de calculs à effectuer est n (ou n+1 si tu comptes la multiplication finale, ou 2n+1 si tu comptes le calcul du pas aussi. En tout cas, c'est un O(n))

Si tu veux une erreur \frac{M_1 (b-a)}{2n} \leq 10^{-p}

Alors \frac{2n}{M_1(b-a)} \geq 10^p, puis 10^p = O(n). Ou si tu préfères, n = \Omega(10^p)

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 12:55

Je ne connais pas Python.  C'est quand qu'on fait le return ?

Où est stockée la valeur s*pas ? Comment passer de la boucle k=0 à la boucle k=1 ?

La boucle est exécuté n fois. Mais le M_1 et le (b-a)^2 ne comptent pas dans la précision ?

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 13:01

Ok merci Ulmière mais je n'ai as vu la notion de O pour les précisions. Je ne comprends pas le principe.

Au final on a n \geq \dfrac{M_1 (b-a)^2}{2} 10^p

Alors pourquoi on dit simplement il faut faire 10^p opération alors qu'il faut en faire E(\dfrac{M_1 (b-a)^2}{2} 10^p)+1 ?

Posté par
Ulmiere
re : Python méthode des rectangles 17-11-19 à 13:02

On parle de complexité asymptotique. De la même manière que les premiers termes d'une série ne nous intéressent pas quand on étudie la nature d'une série, les constantes ne nous intéressent pas en théorie de la complexité. C'est d'avoir un ordre de grandeur qui nous intéresse

Posté par
Ulmiere
re : Python méthode des rectangles 17-11-19 à 13:09

On s'intéresse à ce qui se passe quand n grandit (n "proche de l'infini", si tu veux). L'inégalité que tu donnes nous dit que plus n est grand et meilleure est la précision.
Comme nous avons dix doigts, on a envie de savoir à peu près combien de calculs il faut faire, pour avoir un résultat proche à 10^{-p} près de l'intégrale. p est aussi assez grand ici. Or,

\left\lfloor\frac{M_1(b-a)^2}{2}10^p\right\rfloor + 1  \sim \frac{M_1(b-a)^2 10^p = O(10^p) au voisinage de l'infini.

Bien sûr, ni n ni p ne sont réellement infinis, mais, en pratique, x\mapsto 10^x croit tellement vite, qu'on n'arrive vite plus à différencier la partie entière de son ordre de grandeur

Posté par
Ulmiere
re : Python méthode des rectangles 17-11-19 à 13:10

Erratum :

\left\lfloor\frac{M_1(b-a)^2}{2}10^p\right\rfloor + 1  \sim \frac{M_1(b-a)^2}{2}10^p = O(10^p)

Posté par
Ulmiere
re : Python méthode des rectangles 17-11-19 à 13:13

En fait, on a même \left\lfloor\frac{M_1(b-a)^2}{2}10^p\right\rfloor + 1  \sim \frac{M_1(b-a)^2}{2}10^p = \Theta(10^p)

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 13:29

D'accord merci, c'est plus clair

Posté par
carpediem
re : Python méthode des rectangles 17-11-19 à 13:33

franchement on sait très bien que le nombre d'opérations est un entier ... et donc on se fout de la partie entière ...

+1 ou -1 ne changeront pas l'ordre de grandeur ... de même que + 10 ou - 10 ou +k ou - k ... pourvu que k soit une constante indépendante de n ...

pour ce qui est de python ici ta fonction ne stocke pas la valeur elle l'a renvoie ...

on peut décider de la stocker ensuite (par exemple si on en a besoin plusieurs fois ...)

en mathématiques c'est pareil, une fonction ne stocke pas une valeur elle renvoie une valeur: l'image du réel ?? par ladite fonction

enfin il semble raisonnable de penser que pour avoir une valeur à moins de 10^(-p) il faut au moins que le pas soit inférieur à 10^(-p) donc que n soit supérieur à 10^p ... à une constante multiplicative près ... tenant compte de la longueur de l'intervalle et des variations de f (ici mesurées par la majoration de la dérivée)

ainsi avec une fonction dont les oscillations sont très fortes (et même si la dérivée est bornée) il faudra surement prendre n encore plus grand ...

Posté par
alb12
re : Python méthode des rectangles 17-11-19 à 13:44

salut,
"Je ne connais pas Python"
Ton livre balance un programme python sans en avoir parle avant ?

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 16:11

Y a des minis programme Python mais non pas de cours Python c'est un livre de maths.

Je vais m'acheter un livre de Python pour apprendre un peu.

Ce que je ne comprends pas dans vos raisonnements avec la constante multiplicative, c'est si par exemple elle vaut  10^3 comment faire ?

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 16:47

Qui nous dit que \dfrac{M_1 (b-a)^2}{2} ne va pas changer l'ordre de grandeur ?

Posté par
alb12
re : Python méthode des rectangles 17-11-19 à 16:48

un exemple parmi d'autres, certainement pas le plus mauvais voir Informatique (et specialement p109)

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 17:03

Bof, l'auteur sort des O(1/n) sans expliquer le sens. Très mal expliqué ce cours. Je préfère encore mon livre.

Ça ne répond pas à ma question.

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 17:04

Je rappelle qu'on a pour une précision de 10^{-p} :

n \geq \dfrac{M_1 (b-a)^2}{2} 10^p

Et ensuite je n'ai pas compris pourquoi il suffit de faire 10^p calculs.

Posté par
alb12
re : Python méthode des rectangles 17-11-19 à 17:10

15 minutes pour decider qu'un cours est nul !
Apprendre lineairement est une absurdite.
Il ne faut pas longtemps pour trouver la partie du cours qui explique les O et o.
On revient ensuite sur la methode des rectangles.
Et pour debuter en python, on va au debut du cours d'informatique.
En 2 heures on a tout compris. Et on cesse de se plaindre !

Moralite: 2 "livres" valent mieux qu'un !

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 17:26

J'ai une question de compréhension précise, vous me répondez d'aller lire un cours qui ne parle pas de ce détail.

Ma question n'est pas sur Python.

SI mon livre n'aborde pas les o et les O, c'est qu'on peut faire sans pour comprendre la remarque.

Si vous ne voulez pas répondre, j'irai demander à quelqu'un d'autre.

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 17:31

En plus c'est un cours de Louis Legrand je n'ai pas le niveau.
Rien que le premier devoir surveillé c'est du chinois. Niveau trop élevé c'est pour les futurs normaliens.

Posté par
alb12
re : Python méthode des rectangles 17-11-19 à 17:36

Que dit la majoration ?
si on multiplie n (le nombre de boucles du programme python) par 10 alors la precision est divsee par ??

Fable.
il y a 2 façons de sustenter une personne affamee:
soit on lui vend du poisson
soit on lui apprend à pecher
Choisis ton camp, camarade

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 17:42

Divisée par 10 mais je ne vois pas où ça mène.

Posté par
alb12
re : Python méthode des rectangles 17-11-19 à 17:48

grosso modo si tu divises par 10 le pas de la subdivision alors tu gagnes une decimale sur la precision (essaie avec C=10^2)

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 18:03

Bah oui c'est logique !
Je rappelle qu'on a pour une précision de 10^{-p} :

n \geq \dfrac{M_1 (b-a)^2}{2} 10^p

Donc pour précision de 10^{-p-1} on a n \geq \dfrac{M_1 (b-a)^2}{2} 10^p \times 10

Mais je bloque toujours au 10^p calculs

Posté par
lafol Moderateur
re : Python méthode des rectangles 17-11-19 à 18:10

Bonjour
j'ai l'impression que tu bloques plutôt sur le sens de l'expression "ordre de grandeur"
(quand on commence régulièrement ses phrases par "cékankon", ce n'est peut-être pas hyper étonnant)

Posté par
lionel52
re : Python méthode des rectangles 17-11-19 à 18:14

Il faut comprendre l'esprit de "il faut 10^p calculs"
Ca s'appelle un ordre de grandeur ca veut pas dire qu'il faut exactement 10^p calculs mais que chaque fois que tu veux améliorer la précision d'un facteur 10 il faut faire en gros 10 fois plus de calculs

Posté par
alb12
re : Python méthode des rectangles 17-11-19 à 18:16

pour C=1 et n=10^p, le majorant (la precision) est 10^-p
quand ils disent 10^p calculs c'est calculer f(x) pour 10^p (nombre de termes de la somme) valeurs de x

Posté par
Ramanujan
re : Python méthode des rectangles 17-11-19 à 19:39

Ok merci.

J'ai mieux compris avec la remarque de Lionel.

Mais en effet, plus on veut être précis, plus n est grand, plus il faut calculer de termes de la somme de Riemman.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1719 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !