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
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
1 2 3 4
| function out = F (a)
global xi yi
out = sum ( (yi - f(a,xi)).^2 );
end |
code principal
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
Partager