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 :

programme avec matlab


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut programme avec matlab
    Bonjour à tous,
    je vous demande si quelqu'un peut m'aider à résoudre mon problème ou de me donner quelques idées pour pouvoir avancer dans mon stage. Le problème est le suivant suivant:
    j'ai un système différentiel de la forme:
    dX(t)/dt = AX(t) + Bu(t) avec A et B des matrice données et u(t) est un vecteur colonne son dimension égal au nombre des lignes de la matrice B de la forme
    (sin(k1t); sin(k2t);...;sin(kit)) et X(t) est un vecteur de taille n.Mon objectif est de résoudre ce problème avec une méthode numérique en utilisant matlab sur un interval du temps donné, pour ce faire j'ai utilisé la méthode d'Euler donc j'ai trouvé:
    (X(t_n+1) - X(t_n))/dt = AX(t_n) + Bu(t_n)
    ceci est équivalent à:
    X(t_n+1)= (dtA + I)X(t_n) + dtBu(t_n) avec des condition initiale X(0) et u(0)
    donc je veux résoudre ce problème avec matlab(c-a-d) de faire un petit programme qui donne la solution à chaque instant) je vous montre ce que j'ai fait sur matlab mais j'ai vu que sa marche pas sachant que je suis un débutant comme utilisateur de ce logiciel c'est pour ça j'ai besoin de vos idées
    Merci d'avance.
    %%%%%%%%%%%%%%%%
    Programme :
    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
    t=1:10;% l'interval du temps dont le quel vari la valeur de temps (fin commentaire)
    n=100;%le nombre d'itération à faire  
    dt=1;% le pas de temps fixé par l'utilisateur  
    X0=[x_0; y_0; z_0]=[1; 1; 1];% la condition intiale et dans le cas général la condition est un vecteur de dimension N c-a-d X0= [x0; y0; z0; t0; ...] donné.(fin commentaire) 
    u(0)=0;% condition initial du terme non linéaire dans ce cas u(0) est un scalaire mais dans le cas général u(0) c'est vacteur qui dépond de la taille de système.(fin commentaire) 
    R_1=1/2;%valeur donnée par l'utilisateur pour remplir les matrices A et B (fin commentaire)
    R_2=3;% "   ---------------------    "
    c_1=5;%"  -----------------------    " 
    c_2=4;%"  -----------------------    " 
    L=10;%"  -----------------------    " 
    u(t)= sin(2*pi*t);% l'expression du terme non linéaire en dimension égal à 1 mais dans le cas général c'est u(t) c'est vecteur qui dépond que deu temps(fin commentaire) 
    A=[1/(R2c2), 0, R1/(c2R2); 0, 1/1(R1c1), -R2/(c1c1R1); -1/L, 1/L, 0];
    B=[-1/(R2c2); 0; 0];
    for i=1:n
        X_{i+1} =[x_{i+1}; y_{i+1}; z_{i+1}]=(dt*A + eye(3))*[x_i, y_i, z_i] + dt*B*u(t_i);
    end
    plot(X)

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut suite du programme
    Bonjour à tous,
    juste je veux vous monter ce que j'ai fait jusqu'à maintenant pour la résolution de système que je l'ai proposé dans le mail précèdent, mais j'ai vu que l'erreur c'est que la mtrice D dépend de temps t donc je veus que'à chaque instant t_i, la fonction u(t), prend une nouvelle valeur et je l'utilise pour trouver la soltution XYZ à l'instant t_i. Je pense que je dois mettre la matrice D dans le doucle for pour que à chaque instant t_i il calcul u(t_i) c_a_d il trouve la matrice D et il l'injecte dans l'équation pour trouver la solution puis on passe à l'instant après et ainsi de suite jusqu'à le dernier instant. Donc j'ai pas vu comme je peux le faire.
    SVP y-a t-il quelqu'un qui peut m'aider sur ça et merci d'avance
    voici le nouveau programme.

    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
    clear all
    clc
    n=100;
    t=1:1:n;  
    dt=1; 
    XYZ(:,1)=[1; 1; 1]
    R1=1/2;
    R2=3;
    c1=5;
    c2=4;
    L=10;
    u= sin(2*pi*t);% fonction dépond du tepms 
    B=[-1/(R2*c2); 0; 0]% matrice
    A=[1/(R2*c2), 0, R1/(c2*R2); 0, 1/(R1*c1), -R2/(c1*c1*R1); -1/L, 1/L, 0];
    C=dt*A + eye(3)
    D=dt*B*u
     
    %%
    for i=1:n
    X(i+1,:)=C(1,:)*XYZ(:,i)+D(1,:)% la soltion X à l'instant t_i+1
    Y(i+1,:)=C(2,:)*XYZ(:,i)+D(2,:)%la soltion X à l'instant t_i+1
    Z(i+1,:)=C(3,:)*XYZ(:,i)+D(3,:)%la soltion X à l'instant t_i+1
    XYZ(:,1)=[X(i+1,1) Y(i+1,1) Z(i+1,1)]% la soltion de notre système
    end

Discussions similaires

  1. Programmation orienté objet avec MATLAB R2007b
    Par Luigicube dans le forum MATLAB
    Réponses: 0
    Dernier message: 18/06/2010, 17h16
  2. resoudre la programmation linéaire avec matlab
    Par lachebba dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/01/2010, 18h36
  3. programmer avec GUI Matlab
    Par slayer21 dans le forum Interfaces Graphiques
    Réponses: 32
    Dernier message: 12/05/2009, 16h03

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