Résolution système équations différentielles

Bonjour à tous,

dans le cadre d'un problème de mécanique avec une masse variable soumise à 3 forces et relié à une tige non pesante connectée à un point fixe, j'obtiens un système de deux équations différentielles en r et theta. Jusqu'à présent r était constant et je pouvais m'en sortir en utilisant une résolution par ODE dans Scilab.

Ayant rajouté un ressort à la base de mon système(raideur k et allongement x), r devient variable et les équations différentielles obtenues en utilisant la seconde loi de Newton sont bien plus complexes.

J'ai tout résumé sur le schéma joint avec ce post en espérant qu'il soit assez explicite. Je viens solliciter votre aide pour avoir des indications sur la méthode numérique à employer pour résoudre un tel système ?

Un grand merci par avance à tous.99090

Réponses

  • Bonjour,

    La masse dépend de $\theta$ ?? Quèsaco $a,b$ ?

    As-tu cherché à résoudre explicitement avant de lancer les calculs ?
  • Bonjour,
    la masse dépend bien de theta (il s'agit d'un ballon gonflé à l'hélium qui plus il s'élève plus il emporte de masse). F1 = force ascensionnelle totale du ballon, F2 = force du vent.

    Désolé pour a et b, il s'agit simplement de constantes qui représentent des masses.

    Je n'ai pas essayé de résoudre analytiquement car je ne pense pas que ce soit faisable (en tout cas pas par moi).

    Je pense qu'une solution ça pourrait être de se ramener à un système d'équations différentielles du premier ordre en utilisant la fonction odeToVectorField de Matlab mais je n'en suis qu'au début de mes investigations sur cette piste.
  • Bonjour,

    Je ne sais pas t’aider sur une méthode ou un logiciel de résolution.

    Je reste circonspect sur la modélisation, mais c’est hors sujet.
  • En ce qui concerne la modélisation, je pense que tu n'as pas assez d'éléments pour savoir ce que je modélise précisément ;-)

    Merci d'avoir jeté un œil à mon post.
  • Voici une solution.
    Avant tout je poste le système d'équations mis sous une forme plus adaptée et avec corrections de 2 petites coquilles.
    Et le code Scilab pour solutionner le problème en se ramenant à un système d'ordre 1 par changement de variables.
    t0 =  0; // initial time (s)
    tmax = 30; // solving max time (s)
    tinc = 0.005; // time increment (s)
    
    t = t0:tinc:tmax;
    
    // Differential equations system
    
    function du = equadiff(t,u)
    
      // d for derivative with respect to time t
      // u(1) = theta
      // u(2) = d(theta)/dt
      // u(3) = r
      // u(4) = d(r)/dt
      // du(1) = d(theta)/dt
      // du(2) = d²(theta)dt²
      // du(3) = d(r)/dt
      // du(4) = d²(r)/dt²
    
      F1=1300;
      F2=1000;
      l=13;
      k=68000;
      menv = 112.14;
      m0 = 56.07;
      g=9.81;
    
      m = (menv - m0) * (1-abs(cos(u(1)))) + m0;
      du(1) = u(2);
      du(2) = (F2*sin(u(1)) + (F1-m*g).*cos(u(1)) - 2*m.*u(4).*u(2)) ./ (m.*u(3));
      du(3) = u(4);
      du(4) = ((F1-m*g).*sin(u(1)) - F2*cos(u(1)) - k*(u(3)-l) + m.*u(3).*u(2).*u(2)) ./ m;
    
    endfunction
    
    // Integration
    
    u0 = [0,0,13,0]';
    // !!!! Attention la ligne ci-dessous commence par "[" puis "u" puis "]", l'éditeur du forum fait sauter ce texte !!!
    [u] = ode(u0,t0,t,equadiff);
    
    
    99292
    ode.jpg 20.5K
  • Bonjour, aidez-moi dans cette programmation svp
    J'ai un système de deux équations différentielles j'ai resolu ce système par scilab. Le systeme est :
    ds=(12[(5-2C)racine(10-2C)+5-3C])/(s[(37-2C)racine(10-2C)-9C+58])
    dC=(12[(80+4C^2-71)racine(10-2C)+50+21C^2-70C])/(s[(37-2C)racine(10-2C)-9C+58])
    puis je trouve les valeurs de s(t) et c(t) par scilab
    maintenant je veux inclure ces valeurs dans la définition d'une fonction u qui est définie en fonction de t et x
    u(x,t)=(C(t)+racine(10-2C(t)-4)*(x/s(t))^3+(5-2C(t)-racine(10-2C(t))*(x/s(t))^2+C(t)*(x/s(t))-1
    t=0:0.001:0.10
    x=0.25:0.1:0.75
    Donc la question c'est comment inclure ces valeurs qui resultent de ce système dans la définition de la fonction u (le problème c'est un problème de diffusion d'oxygène)
    Ci-joint c'est la programmation de système. Aidez-moi svp
    ttk.pdf 100.4K
  • La première partie:
    deff('ds=fct(t,s)', 'ds(1)=((60-(24*s(2)))*(sqrt(10-(2*s(2))))+60-(36*s(2)))/(s(1)*((37-(2*s(2)))*(sqrt(10-(2*s(2))))-(9*s(2))+58));ds(2)=((960+(48*s(2)^2)-(852*s(2)))*(sqrt(10-(2*s(2))))+600+(144*s(2)^2)-(840*s(2)))/((s(1)^2)*((37-(2*s(2)))*(sqrt(10-(2*s(2))))-(9*s(2))+58))')
    t0=0;s0=[0.25;1];t=0:0.001:0.10;
    z=ode(s0,t0,t,fct)
    disp(z)
    plot2d(t,z(1,:)',4);
    plot2d(t,z(2,:)',6);
    //plot(t,z(1,:)',z(2,:)',6)
    //xset('window',1);//Modifiez le fichier pour représenter dans le plan l’évolution du point (z, t) :
    //plot2d(z(1,:)',z(2,:)',3)
    
    après je dois inclure l fonction u.
  • Salut,

    je ne comprends pas ton problème. Tu obtiens C et s qui sont stockées dans ton vecteur z. Tu n'as plus qu'à les utiliser comme tu le fais avec plot2d.
Connectez-vous ou Inscrivez-vous pour répondre.