Bonjour à tous, voila je dois réaliser un programme de gradient simple à pas fixe donc je me suis un peu creusé la cervelle pour pondre un programme que voici et qui ne fonctionne pas, je n'arrive pas à trouver pourquoi.
Mon probleme est que je retombe toujours sur mes valeurs initial T=[2.2 0.1]
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
28
29
30 erreur=10^-4; %Initialisation S=[0.4 0.6 0.3 0.8 0.9]; %Valeurs de la sortie échantillonée T0=[2.2 0.1]; %Valeurs de téta1 et téta2 pas=10^-3; %Le pas Te=1; T=T0; %*************Attention: Q=norme(S(i)-M(i))^2 vecteur bruit for i=1:1:5 M(i)=T(1)*(1-exp(-T(2)*i*Te)) %Réponse du modèle dQ1(i)=-2*(1-exp(-T(2))*(S(i)-M(i))) %Dérivée de Q par rapport à téta1 dQ2(i)=2*T(1)*(i*Te*exp(-T(2))*(S(i)-M(i))) %Dérivée de Q par rapport à téta2 end for i=1:1:5 if sqrt(dQ1(i)^2 + dQ2(i)^2) > erreur %Si norme gradient Q > erreur on stop break end T(1) = T(1) - pas*dQ1(i); %Calcul du nouveau point téta1 T(2) = T(2) - pas*dQ2(i); %Calcul du nouveau point téta2 M(i)=T(1)*(1-exp(-T(2)*i*Te)) %Nouvelle réponse du modèle dQ1(i)=-2*(1-exp(-T(2))*(S(i)-M(i))) %Nouvelle dérivé de Q dQ2(i)=2*T(1)*(i*Te*exp(-T(2))*(S(i)-M(i))) end i % nombre d'itérations T(1) % position du dernier point téta1 T(2) % position du dernier point téta2
et i=1 et je ne vois pas ou est mon erreur si quelqu'un peut me venir en aide se serais cool !!
Partager