bonsoir,
Je vais essayer d'expliquer mon problème clairement.
Je dois résoudre une EDO pour caractériser le comportement mécanique d'un métal subissant des chargement cyclique, on obtient un cycle d'hytérésis.
Mon système est définit comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
function  dy=f_iso(t,y)
global    Q b K n E sigma0 epoint
if abs(y(1))-Q*(1-exp(-b*y(2)))-sigma0<0
    dy(2)=0
else
    dy(2)=((abs(y(1))-Q*(1-exp(-b*y(2)))-sigma0)/K)^n
end
dy(3)=sign(y(1))*dy(2);
dy(1)=E*(epoint-dy(3));
dy=dy';
end
Puis ma fonction principale est:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
global Q  b   K n E sigma0 epoint
b=5;
Q=-150 ;
E=140000;
sigma0=200;
K=800;
n=6;
epoint=0.001;
% 1ere branche
[Tn,N]=ode45('f_iso',[0 10],[0  0  0]);
sigma1=N(:,1);
ep1=N(:,3);
e1=ep1+sigma1./E;
plot(e1,sigma1)
Ce qui me donne la première branche.
Ensuite je veux tracer 9 autres branches sachant que à partir de la deuxième ça devient cyclique.
Pour cela je fais une boucle for :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
L=length(N)
for w = 0:10
epoint=-epoint
[Tn,N]=ode45('f_iso',[10*(2*w+1) (30+20*w)],[N(L,:)]);
sigma2=N(:,1);
ep2=N(:,3);
e2=ep2+sigma2./E;
L=length(N)
end
A chaque itération Ti=Ti+20 et Tf=Tf+20 et comme condition initiale je prends la valeur du dernier vecteur précédent .
Mais je ne sais pas comment ployer pour faire en sorte d'avoir toutes les courbes sigma=f(e) sur un meme grave avec la boucle for...
De plus avec cette boucle, les valeurs vont être écraser à chaque itération donc ça va pas marcher...

merci