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 :

Valeur d'une intégrale


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Par défaut Valeur d'une intégrale
    Bonjour,

    I(n)=integrale (de 0 a1 ,x^n *exp(-x))
    calculer I(50) et comparer avec la valeur exacte explique.
    C'est un exercice d'analyse numérique. J'ai fait un programme en utilisant l'intégration par parties mais il donne des valeurs bizarres.

    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
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    #include<stdlib.h>
    int n;
    int integr( int n)
    {
        if (n==0)
        return 1-exp(-1);
        else
        return (-exp(-1)+n*integr(n-1));
    }
    main() 
    {
     
        printf("donner n");
        scanf("%d",&n);
        printf(" l'integrale  est egale %d ", integr(n));
        getch ();
    }

  2. #2
    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
    Essaie double plutot que int.
    en entier, "1-e^-1" vaut 1.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Par défaut
    oui j'ai essayé avec double ca donne la meme chose.

  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
    Si un résultat est faux, il y a une erreur soit dans les données, soit dans le calcul, soit dans l'oeil qui juge le résultat.

    Dans ton cas, théoriquement, que vaut I pour N=0, N=1, N=2? Et d'après ton programme?

  5. #5
    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
    D'après un peu de calcul, tu peux trouver que l'intégrale à chercher est définie ainsi:
    I(n) = n*I(n-1) - 1/e
    I(0) = 1
    En développant, on trouve que:
    I(n) = a(n) - b(n)*1/e

    a(n) s'avère être la suite a(n) = n * a(n-1), c'est à dire factorielle(n), noté aussi n!.
    b(n) est plus complexe a écrire, mais est la somme sur i de 0 à n de (n! / i!).

    I(n) = n! - (1/e)*(n!/0! + n!/1! + n!/2! + ... + n!/n!).
    un coup de tableur te donnera assez rapidement ces valeurs.

    Sache que sur des enties non signés 64bits, tu ne peux pas calculer plus loin que 19!
    Tu es donc obligé (par cette méthode) de passer par des doubles pour calculer I(50).

    Mais ton résultat est mauvais à quel point? avec excell, je tombe sur des incohérences dès I(18)

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 12
    Par défaut
    mais I(0)=1-1/e
    c'est pas 1 c'est la fonction expentielle .

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/11/2014, 14h49
  2. tableau des differentes valeurs d'une intégrale
    Par medphy dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 12/11/2009, 20h57
  3. test la valeur d'une date dans une requete
    Par TuxP dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 14h53
  4. Retourner une valeur avec une fonction
    Par stephtbest dans le forum ASP
    Réponses: 4
    Dernier message: 31/10/2003, 16h37
  5. Récupération valeur d'une propriété type TStrings
    Par Stéphane Vaillant dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2003, 11h47

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