IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Problème méthode des trapèzes en C++ pour débutant


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 44
    Par défaut Problème méthode des trapèzes en C++ pour débutant
    Bonjour à toutes et à tous,

    Voilà, actuellement en Master 1 de Physique, je dois suivre des cours de programmation en C/C++.
    Ayant changé d'Université en septembre, j'arrive dans une faculté où les étudiants en Licence 3 Physique ont appris la programmation en C/C++, ce qui n'était pas mon cas dans mon ancienne fac. Autant dire que je suis un peu perdu, malgré que je bosse avec les pdf de cours.

    Nous devons programmer un script sur la méthode des trapèzes. J'ai réussi à définir la surface d'un sous intervalle de ma fonction que j'ai découpé en N sous intervalles de longueur h.
    Néanmoins, il faudrait que je puisse généraliser cela en faisant la somme des sous-intervalles.

    Mathématiquement, je sais comment faire, mais je n'arrive pas à le retranscrire en programmation.
    Je pense qu'il faille que je j'utilise des vecteurs, en sommant avec des indices i et une boucle for, mais j'aurais besoin d'un petit coup de pouce avec explications svp.

    Voici mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include <iostream> 
    #include <cmath> 
     
    using namespace std ; 
     
    #include <cstdlib> 
    #include <vector> 
    #include "matprod.h" 
    #include <fstream>
     
    #include <stdlib.h>
     
    #define PI 3.14159265 
     
    #define DEBUG_MSG cerr << "DEBUG (" << __FILE__ << ", l." << __LINE__ << ") "
     
     
    // Création de la fonction f(x)
     
    //double f(double x) {
     
    //return f(x) = sqrt(x); // f(x) = racine carrée (x)
     
    //}
     
    int main() {
     
    int i,n;
    double a,b,h,s1,x;
     
    a = 1.0; /* Borne inférieure de l'intervalle */
    b = 2.0; /* Borne supérieure de l'intervalle */	
    n = 10; /* Nombre d'itération */
     
    h = (b-a)/n; /* subdivision de la fonction en n sous intervalles de longueur h */
     
    cout<<"J'ai découpé mon intervalle en N intervalles de longueur h = "<<h<<endl;
     
    // On souhaite intégrer notre courbe dans un premier temps entre xmin = a et xmin + h
     
    s1 = (sqrt(a + h) + sqrt(a))/2;
     
    cout<<"La surface de mon premier trapèze est de "<<s1<<endl;
     
    return 0;
    }
    En vous remerciant d'avance,

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 482
    Par défaut
    C et C++ sont des langages très différents.

    Mettre les différentes valeur dans un std::vector<double> :
    http://www.cplusplus.com/reference/vector/vector/

    Les additionner avec la fonction numérique accumulate
    http://www.cplusplus.com/reference/numeric/accumulate/

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 44
    Par défaut
    Merci pour ta réponse

    Oui différents mais peut être pas très différent ?
    En tout cas merci des précisions, je vais tester et je reviendrai vers vous si je rencontre une autre difficulté

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Techniquement, quasiment tout code C écrit par un étudiant normal est compilable en C++.

    Cependant, le C++ dispose de quelques mécanismes qui change tout.

    Les classes, dont les classes standard, comme string, vector et map.
    Le RAII, qui est un moyen de protéger des ressources (un fichier ou un pointeur) qu'on trouve en usage par exemple dans string et dans fstream (a peu près)
    Les références (telles qui int& bidule) qui évitent la majorité des problèmes des pointeurs.

    Je t'invite à lire notre FAQ, qui contient beaucoup d'explication sur comment bien faire les choses.

    Par ailleurs, un bon outil est un site qui donne les références du langage. Personnellement, j'utilise cppreference, mais il en existe d'autres comme cplusplus.com.

    N'hésite pas à fouiner dedans, ça te permettra de savoir ce qui existe déjà dans le langage.

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par Andromedae Voir le message
    Merci pour ta réponse

    Oui différents mais peut être pas très différent ?
    C'est bien là que tu te trompes!!!

    A la base, C++ hérite des fonctionnalités de C, mais vouloir faire l'amalgame entre les deux revient à dire que le français est "peut être pas très différent" du latin parlé par Jules Cesar, sous prétexte que le français hérite du latin

    Si tu veux, je pourrais utiliser une autre comparaison : d'un coté, un avion de la première guerre, mi bois- mi toile, muni d'un moteur pour le moins simpliste, et de l'autre un avion à réaction hyper sofistiqué Ce sont deux avions, certes, et on peut espérer qu'ils voleront tous les deux en toute sécurité... Mais ce n'est pas parce que tu arrive à piloter en toute sécurité ton bi plan mi boi - mi toile que tu arriveras à piloter l'avion à réaction
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 44
    Par défaut
    D'accord merci de ces précieux arguments

    En revanche, je n'arrive pas à commencer mon programme du coup en utilisant les std::vector<double> x(taille) par exemple :/

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 482
    Par défaut
    std::vector est un conteneur à taille non fixe.
    Si la taille est connue à la compilation, un std::array serait peut-être plus adapté.

    pour un std::array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::array<double,n> integral_par_partie;
    ...
    integral_par_partie [i] = sqrt(i + h) + sqrt(i))
    ...
    s1 = std::accumulate (integral_par_partie, integral_par_partie+n, 0)

Discussions similaires

  1. Méthode des trapèzes
    Par thenoob123456789 dans le forum Général Python
    Réponses: 11
    Dernier message: 14/04/2015, 16h01
  2. double intégrale par la méthode des trapèzes
    Par sergy01 dans le forum MATLAB
    Réponses: 28
    Dernier message: 26/06/2012, 17h05
  3. Méthode des trapèzes
    Par solo12 dans le forum Fortran
    Réponses: 6
    Dernier message: 11/06/2011, 08h18
  4. méthode des trapèzes
    Par humanite dans le forum MATLAB
    Réponses: 12
    Dernier message: 10/01/2011, 21h09
  5. méthode des trapèzes
    Par suzanne1307 dans le forum Fortran
    Réponses: 3
    Dernier message: 15/03/2010, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo