Bonjour,

Suite à une expérience j'ai collecté des datas que je fit à la chaine avec la fonction fit de matlab .
Il s'agit de la compilation de trois fonctions :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
F1= 'A1 .*exp(1-((1+((abs(x - XO1)/W1) .^ N1)) .^ (1/N1)))';
F2= 'A2 .*exp(1-((1+((abs(x - XO2)/W2) .^ N2)) .^ (1/N2)))';
F3= 'A3 .*exp(1-((1+((abs(x - XO3)/W3) .^ N3)) .^ (1/N3)))';
 
%Somme des fonctions en log + offset
F_TOTAL=['log(',F1,'+',F2,'+',F3,')+0.1'];
Il y a en tout 12 variables que je contraint dans des bornes.
J'utilise le paramètre Robust et également un vecteur poids.

J'arrive à fitter correctement, mais il semble que lors de changement brutaux durant l'expérience,
on observe des changement 'doux' des variables (concerne surtout XO1 et XO2, ou plutôt XO1-XO2).

Tandis que par Fortran on a des gros changement (pour les mêmes datas) qui correspond plutôt à ce qu'on attend (comme le montre le graphique, chaque point= 1 data=1fit=XO1-XO2).
J'ai essayer de changer plusieurs options de fit (Diffminchange, Diffmaxchange, TolFun,TolX,MaxIter,MaxFunEval) mais j'obtient le même type de resultat.

Nom : fortranvsmatlab.JPG
Affichages : 455
Taille : 56,9 Ko



J'aimerais mieux comprendre pourquoi je n'obtient pas la même chose avec Matlab qu'avec Fortran ?

Actuellement je commence à fitter avec une autre fonction lsqcurvefit mais pour l'instant non concluant, il existe peut être d'autres fonctions pour m'aider?



Merci par avance,