Bonjour à tous,

J'aimerais résoudre une equa diff non linéaire d'ordre 2:
soit y= y(t)

-C4 y'' -C1 cos(atan(-y'/C3))+C5*abs(y)-C2=0


Je décompose en un système de 2 ordres 1:

Y(2)'=(-C1*cos(atan(-Y(2)/C3)+C5*abs(Y(1))-C2)/C4;
Y(1)'=Y(2);


J'aimerais également imposer des conditions limites

dans un premier temps:
soit tf une valeur définie de t

y(0)=0
y(tf)=a
y'(0)=0
y'(tf)=0
( si possible après: des conditions en y''(0) et y''(tf) )

J'utilise Matlab, l'algo le mieux adapté me semble être le bvp4c


Je code donc:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function dY=f11(t,Y)
dY(2,:)=(-C1*cos(atan(-Y(2)/C3)+C5*abs(Y(1))-C2)/C4;
dY(1,:)=Y(2);
end
Puis pour la partie res j'essaie:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
function res = twobc(Ya,Yb)
res = [Ya(1) Ya(2) (Yb(1)-a) Yb(2)];
end
et enfin la fonction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
solinit = bvpinit(linspace(0,tf,5),[0 1]);
sol = bvp4c(@f11,@twobc,solinit);

évidemment cela ne marche pas et j'aimerais comprendre pourquoi et comment rectifier le problème.

Je vous remercie par avance.