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 :

Remplacer une longue expression par un raccourci


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Points : 467
    Points
    467
    Par défaut Remplacer une longue expression par un raccourci
    Bonjour a tous,

    Moi et les membres de mon groupe avons un projet MATLAB a réaliser, et pour ce faire nous avons un système d'équation differentiel a résoudre, mais la n'est pas le problème, en effet nous avons de très très longue équation qui prennent plusieurs lignes a écrire, ce qui rend notre code illisible, alors la question est, pouvons nous écrire une variable de type R = 3*r (bien sur ce sera plus compliqué) permettant de mettre notre R dans notre équation plutôt que la longue expression qu'elles remplace, et de pouvoir par après quand même résoudre notre système en indiquent par exemple r = 3.

    Y-a-t-il un moyen?

    J'espère que je me suis suffisamment bien expliqué sur notre problème...

    Merci a vous.

  2. #2
    Membre habitué
    Profil pro
    Doctorant
    Inscrit en
    Mars 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 147
    Points : 196
    Points
    196
    Par défaut
    C'est possible mais il faut avoir la Symbolic Toolbox pour faire ce genre de choses.
    Sinon, je te conseille plutôt de t'orienter vers des logiciels de calcul formel comme Mathematica ou Maple.

    Matersss

  3. #3
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Je pense que les handle de fonction pourraient peut-être répondre au problème: Documentation: Handle de fonction anonyme

    Pour ton exemple (R = 3*r) celà donnerait:
    Et pour calculer le résultat, il faut utiliser R comme une fonction:
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Points : 467
    Points
    467
    Par défaut
    Citation Envoyé par Matersss Voir le message
    C'est possible mais il faut avoir la Symbolic Toolbox pour faire ce genre de choses.
    Sinon, je te conseille plutôt de t'orienter vers des logiciels de calcul formel comme Mathematica ou Maple.

    Matersss
    Je ne sais pas si on a la Symbolic Toolbox, nous avons la student version, mais en ce qui concerne Mathematica et Maple nous ne pouvons pas les utiliser vu que le but du projet et de résoudre un problème a l'aide de matlab et nous devons également rendre le code de notre programme.

    Citation Envoyé par duf42 Voir le message
    Bonjour,

    Je pense que les handle de fonction pourraient peut-être répondre au problème: Documentation: Handle de fonction anonyme

    Pour ton exemple (R = 3*r) celà donnerait:
    Et pour calculer le résultat, il faut utiliser R comme une fonction:
    Duf
    Merci, Je vais essayer et je dirai si cela répondu a ma question ou pas.

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    tout dépends de si on est en numérique ou en symbolique.

    En numérique, on peut toujours faire dépendre une fonction d'une autre fonction intérmédiaire (par exemple anonyme comme proposé par duf42, ou meme une vraie fonction)

    En symbolique, on peut toujours définir des symboles intérmediaires

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Points : 467
    Points
    467
    Par défaut
    Idéalement ce que nous voudrions obtenir est quelque chose qui permettrais de faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DEN = 1 + KCO*PCO + KH2*PH2 + KCH4*PCH4 + KH2O*PH2O / PH2;
    %
    R1 = (k1/PH2^2.5)*(PCH4*PH2O-PH2^3*PCO/K1)/DEN^2;
    R2 = (k2/PH2^3.5)*(PCH4*PH2O^2-PH2^4*PCO2/K2)/DEN^2;
    R3 = (k3/PH2)*(PCO*PH2O-PH2*PCO2/K3)/DEN^2;
    %
    rCH4 = -R1-R2;
    rH2O = -R1-2*R2-R3;
    rH2 = 3*R1+4*R2+R3;
    rCO = R1-R3;
    rCO2 = R2 + R3;
    sachant que les k1.., etc nous dont fournie en annexe, ce qui veux en fait dire que nous voudrions définir les R1, R2, R3 de tel manière que lorsque l'ont change en valeur dans DEN = ... (par exemple en changeant PH2) que cela se répercute jusqu'aux R, qui eux même servent a calculer les dernières valeurs.

  7. #7
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Dans ce cas, pourquoi ne pas utiliser une "simple" fonction comme le dit VV3D?
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

Discussions similaires

  1. [RegEx] Remplacer une sous-chaine par une expression incrémentée
    Par krunch dans le forum Langage
    Réponses: 5
    Dernier message: 18/02/2013, 10h23
  2. Réponses: 5
    Dernier message: 13/12/2006, 16h08
  3. Remplacer une sous chaîne par une autre
    Par Erakis dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 10/11/2006, 09h16
  4. [INSERT / UPDATE] Remplacer une valeur vide par NULL
    Par jissay dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 28/09/2006, 14h15
  5. Remplacer une BD maître par une ancienne version
    Par HYQST dans le forum Access
    Réponses: 3
    Dernier message: 19/05/2006, 14h25

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