Inscription / Connexion Nouveau Sujet
Niveau maths spé
Partager :

algo equations reaction/diffusion

Posté par
Damienrobert
27-08-16 à 17:05

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,lambda)),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) ;

encore merci

Posté par
verdurin
re : algo equations reaction/diffusion 27-08-16 à 20:03

Bonsoir,
je ne connais pas vraiment maple, mais un certain nombre de choses me semblent bizarres.
  --  s n'est jamais utilisé, et le résultat est codé en dur juste après. De fait il ne semble pas vraiment indispensable d'utiliser un logiciel pour résoudre le système a-u+u^2*v=0 et b-u^2*v=0 pour obtenir u et v en fonction de a et b.
   --  D n'est jamais défini. Il semble que ce soit une liste vu les références à D[1] et D[2] qui désignent en maple le premier et le deuxième élément d'une liste D ( sauf erreur de ma part ).
    -- (1*Pi^2)/1 me semble curieux.

Désolé ne ne pas pouvoir t'aider d'avantage.

Posté par
Damienrobert
re : algo equations reaction/diffusion 27-08-16 à 23:15

Merci déjà pour ces remarques



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1741 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !