Bonjour,
Dans le cadre d'un projet pour l'université, je dois écrire un programme pour calculer le minimum d'une fonction donnée par l'utilisateur.
L'algorithme donné est le suivant:
Voici mon code:
A la ligne 14
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
31
32 function r=f(x) r=x*x; endfunction function res= minimum(f,l,T,bet,Niter,N) x0=rand(1,1); x=[]; for i=1:N x(1)=x0; A=x(i)-l B=x(i)+l y=grand(1,1,'bet',A,B) if f(y)<=f(x(i))then x(i+1)=y; elseif f(y)>=f(x(i)) then r=rand(1,1); p=exp(-(f(y)-f(x(i)))/T); if (r<p) then x(i+1)=y; else x(i+1)=x(i); end end if N==Niter then T=bet*T; l=bet*l; end end end endfunctionScilab me renvoie:if f(y)<=f(x(i))then
Opérateur, virgule ou point-virgule manquant.
at line 10 of function minimum called by :
endfunction
Voilà, je ne sais pas trop ce qui coince ici? J'ai bien le point virgule à la fin de l'expression après le premier "then". La fonction f(x)->x^2 est définie et marche correctement. Il y a surement autre chose que je ne comprends pas..
Merci en avance pour toute aide possible
Partager