algo equations de reaction/diffusion
Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

algo equations de reaction/diffusion



  1. #1
    Damienrobert

    algo equations de reaction/diffusion


    ------

    Bonjour à tous. Dans le cadre de mon TIPE je cherche à coder un algorithme python pour modéliser la création des motifs sur les pelages des animaux. J’ai essayé de coder par moi-même, soit avec des fonctions python, soit avec un schéma numérique… mais cela ne donne pas grand-chose (mon « pelage » reste uni sans motif). J’ai donc trouvé cet algorithme en MAPLE (je n’y connais rien du tout) qui normalement fonctionne mais je n’ai pas réussi à le traduire correctement. Quelqu’un saurait-il me le transcrire en python ? merci beaucoup

    > with(linalg) ;
    Les fonctions de reaction :
    > f :=(u,v,a) -> a-u+u^2*v ;
    > g :=(u,v,b)->b-u^2*v ;
    La solution homogene stationnaire (u_eq,v_eq) :
    > s :=solve({f(u,v,a)=0,g(u,v,b)=0 },{u,v}) ;
    > u_eq :=(a,b)->a+b ;
    > v_eq :=(a,b)->b/((a+b)^2) ;
    La matrice jacobienne au point d’équilibre : (on la définit d’abord comme une liste de listes)
    > AA :=(a,b,gamma,d,lambda)->[[gamma*D[1](f)(u_eq(a,b),v_eq(a,b),a,b) –lambda, gamma*D[2](f)(u_eq(a,b),v_eq(a,b),a,b)], [gamma*D[1](g)(u_eq(a,b),v_eq(a,b)),gamma *D[2](g)(u_eq(a,b),v_eq(a,b)-lambda*d]] ;
    Pour obtenir une matrice on utilise convert
    > A :=(a,b,gamma,d,lambda)->convert(AA(a,b,gamma,d,lambda ),matrix) ;
    La valeur critique d_c est solution de l’equation quadratique
    > q :=(a,b,d)->d^2*(D[1](f)(u_eq(a,b),a,b))^2+2*(2*D[2](f)(u_eq(a,b),v_eq(a,b),a,b)*D[1](g)(u_eq(a,b),v_eq(a,b))-D[1](f)(u_eq(a,b),v_eq(a,b),a,b)*D[2](g)(u_eq(a,b),v_eq(a,b)))*d+(D[2](g)(u_eq(a,b),v_eq(a,b)))^2 ;
    > solve(q(0.25,0.75,d) ;
    > eigenvects(A(0.25,0.75,8,20,(1 *Pi^2)/1)) ;
    On choisit des valeurs des parameters a, b, gamma et d, puis on fait le graphe du determinant en function de lambda
    > plot(det(A(0.25,0.75,8,20,lamb da)),lambda=0.4..2.5) ;
    On trouve les valeurs pour les different modes sur un domaine rectangulaire
    > tableau :=proc(m_min,m_max,n_min,n_max ,p,q)
    local h,i,j,k ;
    h :=i->[seq(evalf(Pi^2*(k^2/(p^2)+i^2/(q^2)),3),k=m_min..m_max)] ;
    array([seq(h(j),j=n_min..n_max)]) ;
    end :
    > tableau(0,10,0,10,5,2) ;

    Pour mieux comprendre, voici en PJ les equations en jeu.
    Merci encore

    -----
    Images attachées Images attachées  

Discussions similaires

  1. Equations de réaction
    Par Dianolo dans le forum Chimie
    Réponses: 2
    Dernier message: 15/01/2014, 02h32
  2. Problème du plus court chemin ( Algo de dijkstra, algo A*)
    Par invite5a18c7d1 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 12/06/2010, 11h25
  3. Matlab equations de diffusion
    Par invite103bc724 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 17/11/2008, 11h04
  4. Réponses: 5
    Dernier message: 29/02/2008, 09h37
  5. Equations de réaction avec l'eau
    Par invite55f7541b dans le forum Chimie
    Réponses: 2
    Dernier message: 24/11/2007, 17h05