Bonjour,
Je cherche à résoudre une EDP qui prend en compte 5 paramètres. J'ai posé des conditions de flux nul aux deux bornes (espace linéaire). Jusque là pas de problème j'arrive à résoudre en utilisant pdepe de matlab. Maintenant, je cherche à fixer les valeurs de ma variable aux bornes en laissant un paramètre libre pour pouvoir décrire la variation de ce paramètre en fonction de la valeur de la variable sur une des deux bornes. (peut être pas très clair désolé...). J'ai pensé à la fonction bvp4c qui permet de laisser un paramètre libre mais j'ai bien l'impression que je n'arriverai jamais à fixer mes deux bornes. Dans le cas de cette fonction j'ai découpé mon EDP en deux parties pour pouvoir former deux EDO (dérivées première et seconde). voici le code :
Ce code fonctionne mais je ne peux pas influer sur la valeur de la borne à gauche. Je ne peux pas ajouter une condition aux bornes vu le degré de liberté. Donc voilà ma question : Est-il possible d'utiliser cette fonction bvp4c pour mon cas? Ou alors connaissez-vous une fonction qui pourrait m'aider?
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
22
23
24
25
26
27 solinit=bvpinit(ps,@mat4init,[0.1]); sol_bv=bvp4c(@ode,@bc,solinit,options); function dy=ode(x,y,lambda) %%% lambda est le paramètre libre global par grad ps; zz=abs(ps-x); [minz,i0]=min(zz); sel=par(3)*(1+grad(i0)*par(4)*lambda(1)); p=y(1);q=1-y(1); den=(1+sel)*p*p+2*p*q*(1+par(2)*sel)+q*q; ff=sel*p*q*((1-par(2))*p+par(2)*q)/den; dy(1)=y(2); %%% dérivée première dy(2)=-ff/par(1); %%% dérivée seconde function res=bc(ya,yb,lambda) res(1)=ya(2); %%% flux nul à gauche res(2)=yb(2); %%% flux nul à droite res(3)=yb(1)-0.047; %%% fixation de la borne de droite function yinit = mat4init(x) n=1/(1+exp(0.5*x)); %%% sigmoide initiale yinit=[n 0 2*n-1];
Merci d'avance!
Partager