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

MATLAB Discussion :

Passer de l'intégration de x^2 à celle de n'importe quelle fonction


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Passer de l'intégration de x^2 à celle de n'importe quelle fonction
    Bonjour à tous,

    Voilà dans le cadre d'un travail, je dois approximer l’aire sous une fonction par la somme des aires de N rectangles consécutifs, de base (b-a) = N (ou a et b sont les bornes de l'intégration) et de hauteur égale à la valeur de f au milieu du sous-intervalle.

    J'ai établi le code pour la fonction carrée, le voici, il fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function I = intMedian(a,b,N)
     
    h = (b-a)./N;
     
    x = a+h.*((1:N)-0.5);
     
    I = h.*sum(x.^2);
    end
    Maintenant je voudrais le code pour n'importe quelle fonction f. J'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function I = intMedian(f,a,b,N)
     
    h = (b-a)./N;
     
    x = a+h.*((1:N)-0.5);
     
    I = h.*sum(f(x));
    end
    Et ça ça ne fonctionne pas, quelle que soit l'entrée que je mets à la place de f.
    MATLAB me répond ceci :
    ??? Undefined function or variable 'x'.
    Je sais bien que c'est parce qu'il ne "reconnait" pas la fonction de x que je lui assigne mais je ne comprends pas comment faire pour que cela fonctionne. Ce que je voudrai, si je veux par exemple connaitre l'aire sous x^2 entre 0 et 1 en le coupant en 10 intervalles, c'est pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function I = intMedian(x.^2,0,1,10)
    Merci !

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    avec ta définition de intMedian, f doit être un handle de fonction, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    I = intMedian(@(x) x.^2,0,1,10)
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f = inline('x.^2')
    I = intMedian(f,0,1,10)
    Voir la FAQ : Que représente le symbole @ ?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Ok super j'ai compris ! En fait j'avais bien écrit le bon code mais je ne connaissais pas la "fonction handle" ! Alala ces débutants...
    Merci Magellan

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/05/2010, 20h48
  2. [XL-2007] Passer à la cellule suivante et ajouter 1 à celle-ci
    Par rch05 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 30/04/2010, 19h40
  3. Réponses: 1
    Dernier message: 02/05/2007, 15h08
  4. Réponses: 17
    Dernier message: 24/11/2006, 18h25
  5. Réponses: 9
    Dernier message: 19/10/2006, 10h02

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