Ode et paramètre variable

layali4 -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je dois résoudre un système d'équation différentielle avec ode jusque là il n'y a pas de soucis mais dés que je prends en plus un paramètre de l'un des équations variable exemple a=1:0.5:10 je ne sais pas comment faire?
merci d'avance pour votre réponse

5 réponses

  1. layali4
     
    j'ai oublié de préciser que le programme sur matlab
    0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Dans ton cas, a est probablement une matrice, ce ne serait un "paramètre variable" que s'il était utilisé dans un for...

    Après, tout dépend de ce que tu veux faire, du moment que tu as bien une valeur fixe à l'appel de ode, a(i) par exemple, ça devrait fonctionner.
    La confiance n'exclut pas le contrôle
    0
  3. layali4
     
    NB: le programme utilisé est matlab
    0
  4. layali4
     
    merci de ta réponse, je souhaite résoudre le système pour chaque valeur de a et obtenir un vecteur par concaténation qui regroupe la solution pour chaque valeur de a
    a
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. KX Messages postés 19031 Statut Modérateur 3 020
     
    Voici un exemple qui fonctionne avec Scilab (je n'ai pas Matlab pour tester)
    À toi de l'adapter à ton problème.

    pas = 100;
     
    //****************************************************
    // Définition d'un système différentiel "variable"
    
    function u_abcd = exemple2x2(a,b,c,d,t0,u0,t1) // t1>t0
    
      function up = f(t,u)   // u'(t)=f(t,u(t))
        up(1)=a*u(1)+b*u(2); // x'(t)=a*x(t)+b*y(t)
        up(2)=c*u(1)+d*u(2); // y'(t)=c*x(t)+d*y(t)
      endfunction
      
      t=linspace(t0,t1,pas);  
      u_abcd=ode(u0,t0,t,f);
      
    endfunction
    
    //****************************************************
    // Considérons par exemple le système différentiel :
    //
    // x'(t)=a*x(t)+2*y(t)    x(0)=1    t=0..1
    // y'(t)=3*x(t)+4*y(t)    y(0)=1    a=1..10
    //
    
    t0=0;
    u0=[1,1];
    t1=1;
    
    n=19; // on choisi n=length(1:0.5:10)=19
    
    a=linspace(1,10,n);
    b=linspace(2,2,n);  // b, c, et d sont constants
    c=linspace(3,3,n);
    d=linspace(4,4,n);
    
    u=zeros(n,2*pas);
    
    //****************************************************
    // Calculs
    
    for i=1:n do
      u(i,:)=exemple2x2(a(i),b(i),c(i),d(i),t0,u0,t1);
    end                                   
    
    u // matrice résultat
    0