Bonjour,
Je suis depuis un long moment bloquée sur un souci de programmation dans Matlab.
Je cherche a obtenir les paramètres x(1), x(2) et x(3) d'une fonction de la forme :
y(i) = x(1).*exp (((a(i)-x(2)).^2)./x(3).^2)
Sachant que la valeur de y évolue avec celle de a (un vecteur que je connais). J'utilise pour cela une boucle for.
La valeurs des paramètres x dépendent d'autres valeurs qui évoluent à chaque nouvelle valeur de a.
De plus le modele repose sur une l'integration d'une équation contenant y dans la formule principale et dans les bornes d'integrations. Cette équation est tres grande mais je pourrais la simplifier ainsi :
Soit f l'équation à intégrer : f (i) = f(y(i))
Soit nc la borne supérieure d'integration : nc(i) = nc(y(i))
Soit ns la borne inferieure d'integration, dépendant du nc de l'iteration precédente : ns (i) = ns (nc(i-1))
N(i) = quad ( f, nc, ns )
L'objectif du probleme est d'obtenir les valeurs x(1), x(2) et x(3) tel que sum(N) = 1e6 (soit un chiffre connu). Je suis en mesure d'imposer des intervalles dans lesquels se situent les differents x.
Je souhaitais utiliser des fonctions Matlab tels que fminimax, ou fmincon. Mais je n'y arrive pas puisque l'ensemble de mes equations dépendent de a(i). Je ne peux donc pas faire des ''function'' et les fonctions d'optimisation ne marche pas en cumulant le a(i) et l'integration. Pour le moment j'utilise une boucle pour tester divers valeurs de x(1), x(2) et x(3). Mais le calcul est tres tres long et je dois me restreindre a des intervals tres petits.
Je mets en piece jointe l'ensemble une description du probleme avec les equations.
D'avance un grand merci a celui ou celle qui sera en mesure de me débloquer.
Helene
Partager