Bonjour à toutes et à tous,
Je suis face à un petit pb sur Matlab que je ne sais pas vraiment comment abordé : je possède une liste de données expérimentales qui me permettent à terme de tracer une courbe nommée "Isotherme de sorption".
J'ai facilement réussit à afficher mes données expérimentales avec le codes disponible en annexe, mais j'aimerais maintenant trouver une courbe qui approxime ces valeurs aux mieux.
Le seul problème c'est que je ne sais faire une tel approximation uniquement dans le cas ou je suis capable de décrire le comportement de mes données, et là j'en ai aucune idée. Ca ressemble à de l'exponentielle ou de l'arctan, mais je ne sais pas comment déterminer la courbe qui correspond au mieux à mes données.
Vous remarquerez surement que j'ai testé des approximation avec des polynômes sans grand succès, car il est vraiment important que ma courbe reste croissante (voir strictement croissante) sur l'intervalle [0;1].
Merci d'avance pour le temps que vous consacrerez à me répondre ou m'orienté vers un post similaire.
Annexe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 % Lecture du fichier textefid=fopen('isotheme de sorption 20GP.txt'); T = readmatrix('isotheme de sorption 20GP.txt'); fclose(fid); % Création des vecteurs d'abscisses et d'ordonnées xexp=T(:,1); yexp=T(:,2); % Lissage de la courbe (approximation polynomiale) coeff=polyfit(xexp,yexp,4); xlis=0:0.01:1; ylis=polyval(coeff,xlis); % Tracé des différentes courbes close() plot(xexp,yexp,'ko'); hold on; plot(xlis,ylis,'r--'); title('Isotherme de sorption'); xlabel('Hr'); ylabel('w'); grid;
Partager