Inscription / Connexion Nouveau Sujet
Niveau IUT/DUT
Partager :

Algorithme intégration méthodes des trapezes+rectangles.

Posté par
claire8622
29-12-13 à 10:26

Bonjour à tous,

Pour la rentrée il faut que je fasse un algorithme sur VB6, avec d'une part l'intégration d'une fonction quelconque avec la méthode des trapezes, et de l'autre avec la méthode des rectangles.

Je suis totalement perdu en ce qui concerne les algorithmes, et je ne vois pas du tout comment faire.

Merci

Claire

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 29-12-13 à 12:59

Bonjour,

Voici un exemple d'algorithme...
a et b sont les bornes d'intégration
Amin = Aire minimale (méthode des rectangles)
Amax = Aire maximale (méthode des rectangles)
Amoy = Aire moyenne  (méthode des trapèzes)
Amin et Amax encadrent la vraie valeur de A.
Amoy donne une valeur approchée de A (au milieu de Amin et Amax).


Lire a, b, N
Amin = Amoy = Amax = 0
Pour i = 0 à N-1
   x1 = a + (b-a)*(i/N)
   x2 = x1 + i/N
   y1 = f(x1)
   y2 = f(x2)
   Amin = Amin +  min(y1,y2)*(x2-x1)
   Amoy = Amoy +  (y1+y2)/2 *(x2-x1)
   Amax = Amax +  max(y1,y2)*(x2-x1)
Fin_Pour
Afficher Amin, Amoy, Amax

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 29-12-13 à 15:22

Je vous remercie pour votre aide, je vais essayer avec ceci.

Est-ce que vous savez comment on entre une fonction (par exemple f(x)=1/x) dans VB6?

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 29-12-13 à 18:46

Citation :
Est-ce que vous savez comment on entre une fonction (par exemple f(x)=1/x) dans VB6 ?

Non je n'en n'ai aucune idée...
Mais tu as sûrement une notice d'utilisation qui explique comment on fait.

Et par ailleurs, tu n'es pas obligée de définir une fonction f(x).
Tu peux très bien calculer directement y1 et y2 dans le corps du programme :

y1 = 1/x1
y2 = 1/x2

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 29-12-13 à 19:39

d'accord, mais avec ce que vous m'avez donné, je n'est pas directement la valeur de l'intégrale avec chaque méthode?

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 29-12-13 à 19:51

Citation :
... d'accord, mais avec ce que vous m'avez donné, je n'ai pas directement la valeur de l'intégrale avec chaque méthode ?
Si.
Amin est l'aire délimitée par les rectangles inférieurs.
Amax est l'aire délimitée par les rectangles supérieurs.
Amoy est l'aire délimitée par les trapèzes. C'est aussi la moyenne de Amin et de Amax.

Tu devrais faire un dessin avant de te lancer ...

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 29-12-13 à 20:04

Algorithme intégration méthodes des trapezes+rectangles.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 29-12-13 à 20:12

Rectificatif sur x2 :

Lire a, b, N
Amin = Amoy = Amax = 0
Pour i = 0 à N-1
   x1 = a + (b-a)*(i/N)
   x2 = x1 + (b-a)/N
   y1 = f(x1)
   y2 = f(x2)
   Amin = Amin +  min(y1,y2)*(x2-x1)
   Amoy = Amoy +  (y1+y2)/2 *(x2-x1)
   Amax = Amax +  max(y1,y2)*(x2-x1)
Fin_Pour
Afficher Amin, Amoy, Amax

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 13:44

Merci beaucoup pour le dessin, je comprends mieux maintenant!

En revanche, il faut que je fasse l'algorithme avec la méthode des rectangles à gauche, donc il faut juste que je prenne l'aire minimale

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 13:49

J'ai oublié quelque chose de très important: Bonne année LeDino!!

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 16:00

Oui, c'est très important en effet !
Bonne année !

Pour ton exercice, je te conseille de calculer les trois méthodes (surtout que c'est très simple).
Amin et Amax te donnent un encadrement (si la fonction est régulière et que N est assez grand pour que l'approximation linéaire fonctionne correctement), et Amoy une bonne estimation moyenne.

Tu peux facilement tester l'algorithme sur des cas particuliers calculables directement grâce à la primitive, afin de comparer les résultats approchés avec le résultat réel.

Tu constateras que la méthode des trapèzes donne une estimation bien plus proche de la réalité.

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 17:29

oui, je suis d'accord.

Par contre quand vous écrivez: Amin = Amin +  min(y1,y2)*(x2-x1), min(y1,y2) se calculer comment? Car c'est des coordonnées.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 18:18

min(a;b) = le plus petit des deux

si  a < b  alors  min = a,  sinon  min = b

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 18:49

d'accord, merci! il faut que je trouve comment mettre ça sur VB6

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 18:57

Ca doit pas être bien méchant.

Au passage : quand tu as trouvé le min... l'autre c'est le max .

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 20:13

je vais essayer de mettre ça dans mon algo merci!

dans votre profil, j'ai vu que vous êtes ingénieur, vous travaillez dans quel domaine précisement, si c'est pas indiscret?

(je vais surement faire une école d'ingénieur l'année prochaine)

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 21:01

Un ingénieur peut travailler dans tous les domaines.
C'est ça qui est chouette .

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 21:05

oui totalement!

regardez ce que j'ai écrit:

If n <> 0 Then
  
    
  For i = 0 To n - 1
  
        
         x1 = (b - a) * (i / n)
         x2 = x1 + ((b - a) / n)
         y1 = 1 / x1
         y2 = 1 / x2
         Amoy = Amoy + (y1 + y2 / 2) * (x2 - x1)
        
        
        Next
        
        txt_tra = Amoy
        lbl_message = " la valeur de l'intégration par la méthode des trapèzes est:"
        
        
      Else
      
      lbl_message = " n doit être différent de 0"
      
      End If

    
    End Sub


Sauf que quand je lance le programme ça met met: error:"division by zero, et cela me surligne: y1=1/x1.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 01-01-14 à 22:46

Citation :
Sauf que quand je lance le programme ça met met: error:"division by zero, et cela me surligne: y1=1/x1.

Normal...
C'est :   x1 = a + (b-a) * (i/n)
Avec ta formule, x1 vaut 0 à la première itération...

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 10:06

en fait...
à la valeur de l'inté
j'ai donc corriger ma faute de frappe sauf que lorsque je lance le programme, j'obtiens toujours 0 à la valeur de l'intégration, même en changer les valeurs de a,b,n.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 12:03

Tu as écrit :

Amoy = Amoy + (y1 + y2/2) * (x2 - x1) 


Au lieu de :

Amoy = Amoy + (y1 + y2)/2 * (x2 - x1) 

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 12:25

je viens de corriger, et cela me mets toujours 0.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 12:37

C'est quoi text_tra ? Une variable "spéciale" ?
Tu ne t'en sers pas pour l'affichage...
Même question pour lbl_message...

Il n'y a pas une simple instruction du type "display Amoy" ?

Arrives-tu à faire un programme qui affecte la valeur 1 à x et qui affiche "x=1" ?

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 12:38

Si tu veux programmer, il faut quand même que tu maîtrises un minimum le langage employé...

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 12:47

je sais bien que ça serait mieux de maitriser le langage de programmation, sauf que nous faisons de la programmation très rapidement, nous avons eu que trois heures de cours, et lundi c'est l'évaluation, le prof nous a donné aucune base sur la programmation.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 15:36

Il faut regarder dans la notice d'utilisation, probablement dans une rubrique : "affichage d'un résultat".

Là j'ai l'impression que tu ne sais pas ce que tu affiches.
Peut-être que Amoy a été calculée correctement... mais tu ne peux pas le savoir tant que tu ne l'affiches pas.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 15:37

Tu peux aussi laisser tomber le test sur la nullité de n.
C'est une fioriture sans grand intérêt et ça complique inutilement le code.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 15:38

Tu as aussi oublié d'initialiser Amoy à la valeur 0.
C'est imprudent.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 15:44

.. et puis tu n'as pas non plus défini les valeurs de a, de b et de n...

Voici à quoi devrait ressembler ton programme (en italique, les syntaxes que je ne connais pas) :


  Input a
  Input b
  Input n
  Amoy = 0     
  For i = 0 To (n-1) 
      x1 = a + (b-a)*(i/n)
      x2 = x1 + (b-a)/n 
      y1 = 1/x1 
      y2 = 1/x2 
      Amoy = Amoy + (y1+y2)/2 * (x2-x1) 
  Next
  Display "Amoy = " + Amoy

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 15:59

Je vais essayer en initialisant Amoy à 0.
Les valeurs de a b et n se définissent dans une boite de dialogue que j'ai crée, cela fonctionne.

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 19:57

j'ai corrigé, tout ce qu'il fallait, et regarder pour l'affichage, c'est bien comme ça que cela s'écrit, et cela me met toujours 0, là je voit vraiment pas d'où vient l'erreur.
Je vous remercie de m'avoir consacrer du temps.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 02-01-14 à 23:51

Citation :
c'est bien comme ça que cela s'écrit...

C'est à dire ?
Tu peux expliciter ce que tu as compris ?
Et indiquer ce que tu as codé...

Et as-tu essayé un programme beaucoup plus simple qui affiche par exemple les valeurs a, b et n que tu saisies par ta boite de dialogue ?
Histoire de vérifier que tu maîtrises l'affichage et pour t'éviter de chercher un bug inexistant sur le calcul de Amoy ...

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 03-01-14 à 09:36

Pour afficher la réponse de la valeur de Amoy, il faut que je donne le nom de la "textbox" qui correspond à l'affichage de la valeur de l'intégration: d'ou le code suivant:
txt_tra = Amoy
ensuite: lbl_message = " la valeur de l'intégration par la méthode des trapèzes est:" ceci correspond juste à une phrase qui dit ce que je viens d'effectuer.
En fait, si vous voulez, la boite de dialogue c'est un peu comme les boutons d'un calculatrice: j'ai crée mes boutons: a,b,n où je rentre mes valeurs, et ensuite, j'ai aussi crée l'affichage des réponse ainsi que les boutons pour calculer les intégrales.
J'ai vérifier tous les boutons, les codes que j'utilise dans mon programme correspondent bien à ceux définient précedemment.

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 03-01-14 à 10:04

je viens de trouver d'où vient l'erreur: c'est lorsque j'ai fait la déclaration des variables, j'avais mis: Integer au lieu de single!

Du coup j'ai réessayé, et pour a=1 b=2 et n=10: Amoy= 0,6937715!

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 03-01-14 à 10:07

j'ai pas précisé: pour le calcul précédent la fonction est: 1/x1

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 03-01-14 à 14:50

J'ai aussi réussi à faire le programme pour la méthode des rectangles, et cela fonctionne correctement!
Par contre, il faut aussi que je calcul l'érreur pour chaque méthode.
Faut-il calculer la valeur de l'intégrale sans aucune methode, et ensuite faire:

|valeur exacte-valeur méthode rectangle|/|valeur exacte|

?

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 03-01-14 à 16:36

Tu calcules effectivement la valeur exacte de l'intégrale en utilisant la primitive.
Ici, tu as probablement a=1 et b=2, et donc I = ln(2) - ln(1) = ln(2) ~ 0,693147

Dans ton programme, tu introduis une variable I, que tu initialises à ln(2).

Puis tu calcules les erreurs pour chaque méthode :
Emin = Amin - I
Emoy = Amoy - I
Emax = Amax - I

Et si tu veux tu peux calculer les erreurs relatives :
Emin_rel = Emin/I
Emoy_rel = Emoy/I
Emax_rel = Emax/I

... que tu peux aussi exprimer en pourcentages si tu préfères...

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 03-01-14 à 16:41

d'accord, mais en fait, je ne peux pas initialiser à ln(2), car je suis sensé pouvoir faire ce calcul pour n'importe quelle fonction, donc si je vais ça, cela ne fonctionnera pas pour une autre fonction telle que x*x par exemple.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 04-01-14 à 08:11

Et dans ce cas elle vient d'où la "valeur exacte" de l'intégrale ?
A moins que ce ne soit une fonctionnalité de ta calculette...

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 04-01-14 à 09:32

je comprends pas trop... :/

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 04-01-14 à 19:42

Comment veux-tu calculer une "erreur" par rapport à quelque chose que tu ne connais pas ?

L'erreur ici, c'est la valeur calculée moins la valeur réelle.
Si tu ne connais pas la valeur réelle, tu n'as aucun moyen de calculer l'erreur...

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 04-01-14 à 19:45

Citation :
Faut-il calculer la valeur de l'intégrale sans aucune methode...

Quand tu dis ça, tu penses à quoi au juste ?
Que signifie pour toi "calculer la valeur de l'intégrale sans aucune méthode " ?

A mon avis, tu penses à la valeur exacte de l'intégrale.
Et cette valeur exacte, elle se calcule en intégrant la fonction, donc avec la primitive...

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 04-01-14 à 19:50

oui, c'est ça je pense qu'il faut calculer la valeur exacte de l'intégrale.
Il faut donc que je crée un programme qui calcule la primitive de 1/x1, par exemple entre 1 et 2?

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 05-01-14 à 01:06

Citation :
oui, c'est ça je pense qu'il faut calculer la valeur exacte de l'intégrale.
Il faut donc que je crée un programme qui calcule la primitive de 1/x1, par exemple entre 1 et 2 ?
Ce programme tu viens de le faire. Tu as utilisé la méthode des rectangles et celle des trapèzes.
A quel autre programme penses-tu ?
Pour moi le seul programme qui calcule l'intégrale exacte de 1/x entre 1 et 2, c'est simplement I = ln(2)

Je pense qu'on te demande de calculer l'erreur dans ce cas parce que l'intégrale exacte est facile à déterminer.
Tu pourras ainsi voir sur un exemple à quel point les méthodes utilisées fonctionnent bien ou non.

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 05-01-14 à 01:08

Si tu veux tester le programme pour n'importe quelles valeurs a et b strictement positives, l'intégrale sera :

I = ln(b) - ln(a)

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 05-01-14 à 09:15

D'accord, mais ceci est vrai que pour 1/x, ou je peux l'utiliser pour une autre fonction?

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 05-01-14 à 21:23

Ce n'est évidemment vrai que pour 1/x.

Personne ne te demande de trouver la formule exacte d'une intégrale sana connaître la primitive de la fonction intégrée...

Ici tu calcules l'erreur sur une intégrale dont la primitive est connue pour vérifier que ton programme fonctionne bien.

Tu peux essayer avec d'autres fonctions simples, comme y=x² par exemple.
Dans ce cas la primitive est x^3/3 et tu as donc l'intégrale exacte : I = (b^3 - a^3)/3

Compris ?

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 05-01-14 à 21:26

Autres exemples :

y = exp(x)  ==>  I = exp(b) - exp(a)
... parce que la primitive d'exp(x) c'est exp(x)...


y = cos(x)  ==>  I = sin(b) - sin(a)
... parce que la primitive de cos(x) c'est sin(x)...

etc...

Posté par
claire8622
re : Algorithme intégration méthodes des trapezes+rectangles. 06-01-14 à 18:05

Je te remercie LeDino, grâce à toi, j'ai eu une très bonne note! Merci encore!

Posté par
LeDino
re : Algorithme intégration méthodes des trapezes+rectangles. 06-01-14 à 22:35

Citation :
Je te remercie LeDino, grâce à toi, j'ai eu une très bonne note ! Merci encore !

Cool .
J'espère surtout que tu as bien compris.

Apparemment je pense que oui sur le "principe", puisque tu as réussi à tout programmer.
Pour ce qui est du calcul de l'erreur, j'espère que le malentendu a été dissipé avec ton professeur, et que tu as compris l'esprit de la question.

A une prochaine ...



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 !