Bonjour,
je viens d'arriver sur le forum et je suis debutant sur matlab et en programmation.
Je souhaite minimiser l'erreur entre des données expérimentales et le résultat de mon programme Matlab.
cont et def sont des vecteurs composés de 418 points . Il s'agit des données expérimentales
contcal est un vecteur composé de 416 points. Il s'agit du résultat de mon calcul matlab.
je cherche a minimiser la difference entre le vecteur cont et contcal.Pour cela je cherche a miniser l'erreur e calculée a chaque itération (voir programme). Pour cela je cherche a déterminer la meilleure combinaison entre les coefficients G1,G2,G3,alpha1,alpha2,alpha3 pour que l'erreur e soit la plus petite possible.
Pour miniser cette erreur je voudrais utiliser la fonction fmincon de Matlab. Il s'agit pour cela de trouver le vecteur x=(G1,G2,G3,alpha1,alpha2,alpha3) tel que l'erreur soit la plus petite possible en ayant comme contrainte 0<abs(alpha1)<1,0<abs(alpha2)<1,0<abs(alpha3)<1 et abs(alpha1)>abs(alpha2)>abs(alpha3)
Pouvez vous m'aider?
Voici mon programme:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
G0=7837.4;
G1=132.8861;
G2=41.5930;
G3=28.1075;
alpha1=-0.0001;
alpha2=-0.3930;
alpha3=-0.4102;
%Les données expérimentales sont composées de 418 points
m=418;
deltatime=0.00000001;
%on initialise l'erreur et les boucles à zéro
e=0;
for i=1:m-1
    k=i+1;
    loop1=0;
    loop2=0;
    loop3=0;
    for j=0:i-1
        loop1=loop1+((j+1)^(1+alpha1)-j^(1+alpha1))*(def(k-j)-def(k-j-1));
        boucle1(i)=loop1;
       loop2=loop2+((j+1)^(1+alpha2)-j^(1+alpha2))*(def(k-j)-def(k-j-1));
        boucle2(i)=loop2;
        loop3=loop3+((j+1)^(1+alpha3)-j^(1+alpha3))*(def(k-j)-def(k-j-1));
        boucle3(i)=loop3;
    end
end
for i=1:m-1
  deralpha1(i)=(deltatime^(alpha1))/(gamma(2+alpha1))*(((1+alpha1)/(i^(-alpha1))*def(1))+boucle1(i));
  deralpha2(i)=(deltatime^(alpha2))/(gamma(2+alpha2))*(((1+alpha2)/(i^(-alpha2))*def(1))+boucle2(i));
  deralpha3(i)=(deltatime^(alpha3))/(gamma(2+alpha3))*(((1+alpha3)/(i^(-alpha3))*def(1))+boucle3(i));
  contcal(i)=G0*def(i)+G1*deralpha1(i)+G2*deralpha2(i)+G3*deralpha3(i);
  e=e+(contcal(i)-cont(i))*(contcal(i)-cont(i));
end
figure;
plot (def,cont,'m*');
figure;
plot (defgraphe,contcal,'g+');
figure;
plot (def,'m*');
figure;
plot (defgraphe,'m*');
figure;
plot (contcal,'m*');
figure;
plot (cont,'m*');
Je peux bien sur aussi vous envoyer les données si besoin est.
En vous remerciant.