Sur Matlab, j'ai tracé ma courbe à l'aide de points de mesures. C'est une courbe d'étalonnage.
Elle a l'allure d'une courbe exponentielle de la forme : a*e^(-bx)+c.
Je dois ainsi trouver les coefficiients a et b qui me permettront d'avoir une fonction exponentielle qui se rapproche au maximum de ma courbe d'origine.
la fin de ton message (celle avec le code) est illisible. Est-ce que tu pourrais la réécrire ? Sinon, l'utilisation de fminsearch est assez simple. D'abord, tu dois créer une fonction dont tu vas chercher un minimum. Je te propose la fonction suivante :
Ensuite, tu essaies d'intuiter des valeurs initiales pour a,b et c. Ensuite, il suffit d'appeler fminsearch avec en premier argument ta fonction et en second argument ton vecteur de valeurs initiales.
Avez-vous entendu parler de Julia ? Laissez-vous tenter ...
Merci pour la fonction ! Mais comment l'insérer ? Aussi, je dois trouver les valeurs de a;b,c c'est pour ca que je ne comprends pas comment je peux leur inutiter des valeurs...
j'ai teste le code avec polyval et polyfit avec un polynome à la puissance negative... Une calamité. Je suis nulle en programmation, je commence vraiment à péter les plombs en vrai, ca fait 4 jours aujourd'hui que je suis bloquée sur une optimisation de courbe. Ca me bloque grave dans mon projet que je dois bientot rendre. Bref, s'il te plait aide moi
Déjà, il faudrait commencer par trier tes données. Je vois que les \(x\) sont donnés en ordre décroissant. Ce n'est pas vraiment un problème, sauf qu'en affichant tes données, on voit qu'il y a un espèce de coin sur ta courbe au passage des x = 11.8 -> 10.8 -> 10.9. Ce genre de chose peut faire échouer un fit polynomial. Est-ce qu'il ne faudrait pas inverser le 10.8 et le 10.9 ?
Edit: je t'ai aussi demandé de me donner le code que tu as utilisé pour calculer tes fits.
- Edité par Nozio 16 septembre 2021 à 11:34:23
Avez-vous entendu parler de Julia ? Laissez-vous tenter ...
tes 2 premières lignes ne servent à rien dans tous les cas, puisque tu redéfinis juste après x et y
x=[12.5,11.8,10.9,10.8,6.5,6.2,6.1,5.423,4.625];
y=[0,0.61,1.3,1.4,14.9,18.5,20.1,29.7,58.2];
xlabel('Conductivité');
ylabel('Inductance');
p=polyfit(x,y,3) % fit ordre 3
x2=linspace(4,14,100)
y2=polyval(p,x2) % calcul avec le polynome p sur un échantillonnage plus grand de x (de 4 à 14 en 100 valeurs)
plot(x,y) % données d'origine
hold on % on garde l'affichage
plot(x2,y2) % données avec le polynome calculé
hold off % on "relache" le graphique
ça donne un résultat pas trop mal (on a un creux normal entre 6 et 10, vu que l'on a peut de données, mais en passant en ordre 4 ou 5, on colle mieux)
optimiser une courbe exponentielle sur Matlab
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Avez-vous entendu parler de Julia ? Laissez-vous tenter ...
Avez-vous entendu parler de Julia ? Laissez-vous tenter ...
Avez-vous entendu parler de Julia ? Laissez-vous tenter ...