Résolution equations/Remplissage d'une matrice vide MATLAB
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Résolution equations/Remplissage d'une matrice vide MATLAB



  1. #1
    zenip

    Résolution equations/Remplissage d'une matrice vide MATLAB


    ------

    Bonjour à tous,

    Pour un projet je dois résoudre une des équations que j'ai mis sous forme de matrice du type : AX=B

    A : matrice 4x4 connue dont les paramètres sont fixes
    B : matrice connue dont 1 paramètre varie toutes les heures
    X : matrice à résoudre

    J'ai donc tout un programme pour calculer ma matrice X selon A et B pour un temps initiale to ou les paramètres sont fixes, jusque là je n'ai pas eu de difficulté.

    J'ai donc le système suivant :

    Nom : fada.PNG
Affichages : 251
Taille : 5,8 Ko

    b1, b2. b3, b4 sont des équations linéaires qui contiennent un paramètre que j'aimerai faire varier, idéalement faire varier cette valeur 1 fois toute les heures dans une journée et donc obtenir une matrice B 24 colonnes 4 lignes avec mes différentes valeurs. Je sais pas du tout comment faire..

    Deuxième problème : quand j'ai ma matrice B:4x24 avec le paramètre qui varie j'aimerai résoudre mon système : X=A^-1 * B

    Je dois donc crée une matrice X vide 4x24 et inscrire les valeurs en fonction de A et B, j'ai pensé a faire une boucle for et de prendre la matrice A divisé par la première colonne de B et inscrire cela dans la 1ere colonne de X mais je n'y arrive pas. Soit : X[:,1]=A^-1*B[:,1]

    Si c'est pas clair demandez moi plus de précision !

    Merci d'avance

    -----

  2. #2
    Antoane
    Responsable technique

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Bonsoir,

    b1, b2. b3, b4 sont des équations linéaires qui contiennent un paramètre que j'aimerai faire varier, idéalement faire varier cette valeur 1 fois toute les heures dans une journée et donc obtenir une matrice B 24 colonnes 4 lignes avec mes différentes valeurs. Je sais pas du tout comment faire..
    Peux-tu détailler ces équations bi ?


    Si j'ai bien compris, tu peux effectivement faire une boucle for dont chaque itération va calculer une colonne de X à partir de la colonne associée de B ainsi que de la matrice A.

    "X=A^-1 * B " peut s'écrire de diverse manières sous matlab :
    X = A^(-1) * B ;
    X = inv(A) * B ;
    ou, mieux :
    X = A\B ;
    https://fr.mathworks.com/help/matlab/ref/inv.html

    X[:,1]=A^-1*B[:,1]
    En matlab, on mettra des parenthèses et non des crochets.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    zenip

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Merci de ta réponse rapide !

    Voici le détail des équations de la matrice B, seul le paramètre "Geff" est à faire varier. Ce paramètre est contenu dans un fichier à l'extension .dat dans une colonne.

    Nom : sasa.PNG
Affichages : 247
Taille : 5,5 Ko

    Avant de calculer mon X je dois déjà obtenir ma matrice B composé de 4 lignes 24 colonnes. J'ai aussi besoin d'une boucle for ?

  4. #4
    Antoane
    Responsable technique

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Tu peux te baser sur un code du genre :
    Code:
    Geff = [21 54 65 12] ; % vecteur ligne, tiré du fichier *.dat
    b1 = 2*Geff +1 ;
    b2 = Geff ;
    b3 = 0*Geff ; % On ne peut pas directement écrire b3 = 0; car il faut que b3 soit un vecteur ligne de la longueur de  Geff (24 éléments).
    b4 = ...
    B = [b1 ; b2; b3; b4] ; % concatenate les 4 lignes de B
    Ou, directement :
    Code:
    B=[2*Geff+1 ;
       Geff;
       0*Geff ;
       ...]


    Pour la résolution (X=A\B), la boucle for est une solution mais il est peut-être possible de faire ça d'un seul coup, vectoriellement -- je ne vois pas comment.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  5. A voir en vidéo sur Futura
  6. #5
    zenip

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Ok, mais je ne comprends toujours pas comment obtenir une matrice B qui a pour composante :



    - 1ere colonne b1 b2 b3 b4 calculé pour une valeur de Geff
    - 2eme colonne b1' b2' b3' b4' calculé pour une autre valeur de Geff
    - ainsi de suite jusqu'à obtenir mes 24 colonnes

    En suite pour la boucle for je pense que je peux y arriver..

  7. #6
    Antoane
    Responsable technique

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    As-tu essayé de mettre dans matlab le morceau de code que j'ai posté plus haut ?
    Je pense que cela répond à ta question -- sinon je ne comprend pas ce qui te bloque.

    Ce que j'ai appelé b1 ne correspond pas à la valeur de b1 pour une valeur spécifique de Geff ; b1 est un vecteur contenant toutes les valeurs qui t'intéresses (c'est un vecteur de longueur 24 dans ton cas, de longueur 4 dans mon exemple simplifié).
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  8. #7
    zenip

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Ok je re essaye tout cela demain la tête reposé ! Je reviens vers toi si j'ai une question, merci beaucoup !

  9. #8
    zenip

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Je te donne un retour : j'ai bien réussi a faire ce que je voulais ! Pour calculer X je n'ai meme pas eu besoin de faire une boucle FOR, une simple division à suffit. Je dois encore peaufiner mon programme pour finir tout cela !

  10. #9
    Antoane
    Responsable technique

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Bonjour,

    Merci du retour !
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  11. #10
    zenip

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    J'ai une dernière question très bête, mais je cherche depuis tout à l'heure..

    J'aimerai faire un vecteur ligne 1x24 avec la même valeur partout. J'arrive à faire une vecteur colonne : a=repmat(24,24,1) puis je peux le transformer en vecteur ligne mais ce n'est pas très élégant je trouve..

  12. #11
    Antoane
    Responsable technique

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Bonjour,

    par exemple :
    a = zeros(1, 24)+59
    ou :
    b = ones(1,24) * 59
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  13. #12
    zenip

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Ok ! Mais ces lignes de commande me crée une colonne avec les mêmes valeurs (24x1), j'aimerai avoir les valeurs en ligne (1x24).

  14. #13
    zenip

    Re : Résolution equations/Remplissage d'une matrice vide MATLAB

    Ca marche merci !

Discussions similaires

  1. Résolution d'équations différentielles sur matlab
    Par invitef0337726 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 03/06/2016, 19h20
  2. résolution des équations différentielles par matlab
    Par invite266dc6e1 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 08/04/2016, 20h53
  3. Résolution d'une équations sous matlab
    Par invitebddc0831 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/01/2014, 12h09
  4. matlab : résolution système d'équations d'équations polynomiale
    Par invitee1a815bf dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 24/12/2013, 10h40
  5. résolution d'équations différentielles sous matlab
    Par invitec768813d dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 06/05/2009, 21h22