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 :

[ode45] solution de taille variable


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur calculs et simulations
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur calculs et simulations
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Par défaut [ode45] solution de taille variable
    Bonsoir,

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for r=1:NMOD;
    mu_r=X(:,r)'*M*X(:,r);
    omega_r=w(r);
    c_r=0.5*(a(1)*omega_r+a(2)/omega_r);
    [T,Y]=ode45(@(t,x) F(t,x,BAL,NRAD,ddl,pos,BAL4,c_r,mu_r,omega_r,r,X),[0 time],[0 0]);
    eta(:,r)=Y(:,1);
    end;
    avec la fonction F

    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
     
    function xp=F(t,x,BAL,NRAD,ddl,pos,BAL4,c_r,mu_r,omega_r,r,X)
     
    f_bal=BAL*NRAD^2;
    ff_bal=f_bal*exp(1i*NRAD*t);
    p=zeros(ddl,1);
    %arrière du moteur
    p(pos-5)=BAL4(3)*real(ff_bal);
    p(pos-4)=BAL4(3)*imag(ff_bal);
    %milieu du moteur
    p(pos+1)=BAL4(2)*real(ff_bal);
    p(pos+2)=BAL4(2)*imag(ff_bal);
    %avant du moteur
    p(pos+7)=BAL4(1)*real(ff_bal);
    p(pos+8)=BAL4(1)*imag(ff_bal);
     
    g_r=(X(:,r)'*p)/mu_r;
     
    xp=zeros(2,1);
    xp(1)=x(2);
    xp(2)=-(c_r/mu_r)*x(2)-omega_r^2*x(1)+g_r;

    Mon problème, c'est que j'ai une solution Y de taille variable. Ainsi, lorque r=1, la taille de Y vaut 293*2 or que quand r=2, la taille de Y vaut 285*2.

    Quelqu'un a-t-il déjà rencontré un problème similaire? Pour voir quelle c*** j'ai fait... A priori, on dirait que ODE possède un pas de temps non constant, si c'est cela le problème comment imposer que ce pas de temps soit constant? Merci!

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur calculs et simulations
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur calculs et simulations
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Par défaut
    Petites précisions :

    c'est un code utilisé pour déterminer la réponse en régime harmonique d'un structure (analyse modale)

    X est de taille n*NMOD
    M n*n
    mu_r, omega_r et c_r sont des scalaires

    dans F

    BAL, NRAD, ddl et pos sont des scalaires

    Merci et bonne soirée

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur calculs et simulations
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur calculs et simulations
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Par défaut
    J'ai trouvé une solution. En fait, ode45, comme vous les savez, possède un pas de temps adaptatif. Dès lors, la solution de l'ode ne possède pas une taille constant. Pour avoir des réponses de la même taille, il suffit de fixer le pas de temps par utilisation de ode5 (à télécharger). Bien entendu, on perd sans doute en qualité de la solution ou en temps de calcul (selon qu'on choisit un grand ou un petit pas de temps).

    Si vous connaissez une meilleure solution, je suis preneur!

    Bonne journée

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur calculs et simulations
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur calculs et simulations
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Par défaut
    Il y a aussi moyen d'imposer un pas de temps fixe à ode45!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/09/2006, 10h53
  2. [Beamer] Table des matières de taille variable
    Par jacklafrip dans le forum Beamer
    Réponses: 1
    Dernier message: 25/08/2006, 11h44
  3. objet de taille variable en attribut static
    Par BigNic dans le forum C++
    Réponses: 8
    Dernier message: 06/07/2006, 21h41
  4. [TP] Tableau de taille variable
    Par Ripley dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 30/01/2006, 15h36
  5. Comment obtenir un tableau à taille variable ?
    Par marsupilami34 dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2005, 15h03

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