bonjour,
je suis en train de faire un programme sur matlab pour l'optimisation des paramètres d'une fonction, ce code contient 2 fonctions et un code principal. Voici le contenu:
fonction 1(fonction à optimiser les paramètres a1 et a2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
function y = f(a,x)
y=3.2-(17496*(35.95.^3)*(a(1)*x).^(3/(a(2)-1))*sinh((35.95.^(a(2)-1))*a(1)*x)/((a(2)-1)*(a(2)+2)));
end
fonction 2: erreur entre les yi(sortie expérimentale) et f(xi,a) la fonction théorique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function out = F (a)
global xi yi
out = sum ( (yi - f(a,xi)).^2 );
end
code principal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
global xi yi	 
xi = [10800 43200 86400 172800 604800];
yi = [0.6 0.7 1 1.2 1.4];
a0 = [0.1 15]; %initialisation aléatoire des paramètres dont je ne dispose d'aucune idée concernant leur estimation
asol = fminsearch ( 'F', a0);
plot (pi, yi, '*', xi, f(asol, xi))
cependant un message d'erreur m'apparait et ceci le contenu:
??? Input argument "a" is undefined.

Error in ==> f at 2
y=3.2-(17496*(35.95.^3)*(a(1)*x).^(3/(a(2)-1))*sinh((35.95.^(a(2)-1))*a(1)*x)/((a(2)-1)*(a(2)+2)));
 
??? Input argument "a" is undefined.

Error in ==> E at 3
out = sum ( (yi - f(a,xi)).^2 );
 
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> f at 2
y=3.2-(17496*(35.95.^3)*(a(1)*x).^(3/(a(2)-1))*sinh((35.95.^(a(2)-1))*a(1)*x)/((a(2)-1)*(a(2)+2)));

Error in ==> E at 3
out = sum ( (yi - f(a,xi)).^2 );

Error in ==> fminsearch at 205
fv(:,1) = funfcn(x,varargin{:});

Error in ==> optimum at 5
asol = fminsearch ( 'E', a0);
 
et comme je suis débutante en matlab je n'arrive pas à corriger cette erreur, d'après ce que j'ai compris beaucoup d'entrée pour f, mais ce ne sont que 5 entrée