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 :

un script sur plusieurs fichiers "functions.m"


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Par défaut un script sur plusieurs fichiers "functions.m"
    bonjour

    donc j'ai programmé mon premier script en Matlab 7.1

    mais je veut le diviser sur plusier fichiers ( fonctions) *.m

    bon voila mon script

    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
     
    % script calculant l"intégrale d'une fonction en utilisant la méthode de
    % Gauss Legendre
     
    disp('ceci est un programme calculant l"intégrale de la fonction')
     
    f = inline('exp(-t)','t')
    p(1,1)=1;
    p(2,1:2)=[1 0]; 
    disp('pour continuer la calcule de l"intégrale de cette fonction  ')
    n=input('vous devez specifiez le nombre "n" qui est le degrée du poly de Legendre ');
     
    for k=2:n
       p(k+1,1:k+1)=((2*k-1)*[p(k,1:k) 0]-(k-1)*[0 0 p(k-1,1:k-1)])/k;
    end
    sprintf('le polynome de legendre d ordre  %d est ',n);
    pp=p(n+1,:);
    x=roots(pp);
    pp1=polyder(pp);
     for i=1:numel(x)
        w(i)=2/( (1-x(i)^2)*polyval(pp1,x(i))^2 );
     end
    if sum(w)<=2 
     
    for i=1:numel(x)
        ss(i)=w(i)*feval(f,x(i))
    end
    disp('l"intégrale vaut ') 
    sum(ss)
     
    else
        disp('il ya une erreur d"arrondissage et d"approximation pour les wi')
        return;
     end
    je veut que
    le polynome de legndre ( appele pp ( la dernière ligne de la matrice p)) qui'il soit dans un fichier PLG.m

    le calcul des x(i) ( les racines de ces polynomes) et les w(i) (les poids associé à ces racines)) dans un autre fichier XWX.m

    puis un petit script qui peut lire une fonction 'inline' pour évaluer son intégrale entre -1 et 1 en utilisant les deux fonctions PLG et XWX

    Merci d'avance
    j'ai attaché le script en format txt.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Et quelle est la question au juste ?
    En gros il suffit de copier-coller la partie qui t'intéresses en réfléchissant aux entrées/sorties.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function pp=PLG(n,p)
    for k=2:n
       p(k+1,1:k+1)=((2*k-1)*[p(k,1:k) 0]-(k-1)*[0 0 p(k-1,1:k-1)])/k;
    end
    sprintf('le polynome de legendre d ordre  %d est ',n);
    pp=p(n+1,:);
    Et dans ton code tu remplaces la partie copiée/collée par l'appel à la fonction :

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Par défaut
    Citation Envoyé par caro95470 Voir le message
    Et quelle est la question au juste ?
    En gros il suffit de copier-coller la partie qui t'intéresses en réfléchissant aux entrées/sorties.
    eh oui les E/S que je ne comprend pas en matlab+ la fonction feval (apparement je vais l'utiliser )

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par prologO Voir le message
    eh oui les E/S que je ne comprend pas en matlab+ la fonction feval (apparement je vais l'utiliser )
    Montre-nous ce que tu as fait jusqu'à présent.
    Je ne vois pas bien où est la difficulté des E/S.
    Et pourquoi veux-tu utiliser la fonction feval ? Dans ton cas je n'en vois pas l'intérêt.
    Commence déjà par faire une fonction et on te dira ce qui ne va pas.
    courage....

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function [pp1,x]=plg(n)
    p(1,1)=1;
    p(2,1:2)=[1 0]; 
     
     
    for k=2:n
       p(k+1,1:k+1)=((2*k-1)*[p(k,1:k) 0]-(k-1)*[0 0 p(k-1,1:k-1)])/k;
    end
    sprintf('le polynome de legendre d ordre  %d est ',n);
    pp=p(n+1,:);
    x=roots(pp);
    pp1=polyder(pp);

    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
    function xwx(n)
    [pp1,x]=plg(n)
    for i=1:numel(x)
        w(i)=2/( (1-x(i)^2)*polyval(pp1,x(i))^2 );
     end
    if sum(w)<=2 
     
    for i=1:numel(x)
        ss(i)=w(i)*feval(f,x(i))
    end
    disp('l"intégrale vaut ') 
    sum(ss)
     
    else
        disp('il ya une erreur d"arrondissage et d"approximation pour les wi')
        return;
     end
    dans cet fonction
    il ya une erreur a la ligne 9

    ??? Undefined function or variable 'f'.
    Error in ==> xwx at 9
    ss(i)=w(i)*feval(f,x(i))



    le script principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    disp('pour continuer la calcule de l"intégrale de cette fonction  ')
    n=input('vous devez specifiez le nombre "n" qui est le degrée du poly de Legendre ');
    f=inline('exp(-t)')
    plg(n)
    xwx(n)

  6. #6
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par prologO Voir le message
    dans cet fonction
    il ya une erreur a la ligne 9
    ??? Undefined function or variable 'f'.
    Error in ==> xwx at 9
    ss(i)=w(i)*feval(f,x(i))
    Ben oui, c'est qui f ???
    Plus sérieusement, il faut effectivement que tu mettes la variable f en entrée de ta fonction tout simplement.

  7. #7
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    euuh c'est quoi que tu n'arrives pas à faire?, il te suffit d'utiliser le mot function

  8. #8
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Par défaut
    Citation Envoyé par tug83 Voir le message
    euuh c'est quoi que tu n'arrives pas à faire?, il te suffit d'utiliser le mot function
    j'ai essayé mais il y a tjr des erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter un script sur plusieurs fichiers
    Par aniss1800 dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 02/02/2015, 19h09
  2. Réponses: 2
    Dernier message: 18/12/2010, 19h42
  3. lancer script sur plusieurs fichiers
    Par ricololo dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/03/2009, 23h02
  4. Réponses: 1
    Dernier message: 27/11/2008, 11h41

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