Page 1 sur 1

Quel logiciel ?

MessagePosté: Mercredi 27 Août 2008, 18:51
par Binabik
Bonjour,

J'ai un petit problème. J'ai un ensemble de point formant une courbe (vaguement logarithmique ou de type racine carrée).
Je dois recommencer l'exercice 4 fois.

Comment est ce que je peux faire pour trouver cette formule ? existe-t-il des logiciels qui font ca ?

Excel le fait, mais la courbe est assez éloignée de ce que je veux. (gros coef d'erreur)

Ex:
X Y
0 0
0.1 8.55
0.2 14.78
0.4 22.92
0.7 32
1 35.33
1.3 37.24
1.6 38.2
2.15 40.83
2.7 42.5
3 43.22
3.5 43.25
4 43.3
4.5 43.33
5 43.35
5.5 43.38
6 43.4
6.5 43.43
7 43.45
7.5 43.48
8 43.5
8.5 43.53
9 43.55
9.5 43.58
10 43.6
10.5 43.63
11 43.655
11.5 43.681
12 43.707
12.5 43.733
13 43.759
13.5 43.785
14 43.811

Merci

Re: Quel logiciel ?

MessagePosté: Mercredi 27 Août 2008, 20:14
par MB
Binabik a écrit:J'ai un petit problème. J'ai un ensemble de point formant une courbe (vaguement logarithmique ou de type racine carrée).
Je dois recommencer l'exercice 4 fois.


Pas tout compris.

Binabik a écrit:Comment est ce que je peux faire pour trouver cette formule ? existe-t-il des logiciels qui font ca ?


Tu veux un logiciel à qui tu donnes un ensemble de points et qui te retrouvent la formule d'une fonction passant par ces points ?

Re: Quel logiciel ?

MessagePosté: Mercredi 27 Août 2008, 20:22
par OG
Bonjour

Tout d'abord je ne comprends pas la phrase "Je dois recommencer l'exercice 4fois."

Pour ce type de pb il y a deux types d'approche et ce n'est pas une question de logiciel.

1) je sais que la loi qui lie $x$ et $y$ est du type linéaire, polynomiale de degré fixé à l'avance, exponentielle, logarithmique et on cherche la courbe dans la classe définie préalablement la plus proche. Les cas simples et usuelles sont "les pbs de moindres carrés". Quand en terminale en chimie sur le graphique des nuages de points on nous faisait tracer la droite qui est la plus proche au pif c'était du moindres carrés, les coefficients de la droite ont une interprétation... (ici il y avait une discussion d'exponential fitting !)

2) la loi qui lie $x$ et $y$ n'est pas connue et là on peut trouver des fonctions qui passent par le nuage de points, c'est l'interpolation. Il y a l'interpolation polynomiale mais vu le nbre de points je le déconseille ici car c'est instable. Il y a aussi les splines cubiques interpolant (une fonction polynomiale par morceaux).

Quel est le but ?

Cordialement
O.G.

Re: Quel logiciel ?

MessagePosté: Mercredi 27 Août 2008, 20:34
par Binabik
2eme possibilite :)

Je cherche un formule passant pas l'ensemble de point (ou s en approche le plus possible). Peut m'importe que se soit un polynome, un log ou une formule de "amalgame" de type Ln(AX^d+...).


En faite le coup des 4 fois c est que j ai 4 graphique avec 4 nuage de points diferents, et je veux 4 formules.

Re: Quel logiciel ?

MessagePosté: Mercredi 27 Août 2008, 20:47
par OG
Binabik a écrit:2eme possibilite :)


J'ai oublié de dire : pour le polynôme d'interpolation le degré est égale au nombre de points $-1$ et pour les splines tu as autant de polynôme de degré 3 (pour les splines cubiques) que d'intervalles [0,0.1], [0.1,0.2]. En tant que formule ce sera compliqué et surtout inaffichable !

Pour préciser, le but c'est :

1) un graphique
2) donner une valeur (approchée) en un point où tu n'as pas d'information ?
3) autre chose

O.G.

Re: Quel logiciel ?

MessagePosté: Mercredi 27 Août 2008, 21:41
par EricK
Binabik a écrit:Je cherche un formule passant pas l'ensemble de point (ou s en approche le plus possible). Peut m'importe que se soit un polynome, un log ou une formule de "amalgame" de type Ln(AX^d+...).


Si tu prends un polynôme alors, ça s'appelle un polynôme d'interpolation de Lagrange ... formule très simple ... et résultat catastrophique ...

Donc, soit tu connais a priori la tête de ta fonction et dans ce cas, il n'y a pas de formule à chercher, soit tu ne la connais pas et alors deux possibilités :
- interpolation par des splines (et bonjour la tête les formules lorsque le nombre de points et les contraintes imposées augmentent)
- ne pas faire d'interpolation mais une approximation en moindres carrés ou une approximation uniforme (il y a l'algorithme de Remez pour ça).

Re: Quel logiciel ?

MessagePosté: Mercredi 27 Août 2008, 21:51
par Framboise
Bonjour,

La courbe obtenue, en ajustant les échelles, a des ressemblances avec une courbe de titration en chimie, la courbe I-U d'une diode ou d'un transistor, ou la fonction tanh . Il y a toutefois une petite irrégularité dans l'angle en haut à gauche.

-----

Le polynôme d'interpolation de Lagrange est très séduisant, mais le polynôme obtenu va faire des oscillations énormes entre les points et son écriture sera très lourde.

Re: Quel logiciel ?

MessagePosté: Jeudi 28 Août 2008, 13:59
par Binabik
Rebonjuour :)

Merci a tous pour votre aide.

Framboise m'a devance pour ce qui est de tracer la courbe...
Donc maintenant tout le monde peut la voir :)


Ce n'est pas tres important si la fonction en quiestion passe absolument dans tout les points. Une erreur de quelque dixieme dans la fonction d'approximation ne me derange pas.

Ce qui est important c est que la fonction "fit" a mieux sur la courbe.

Je suis pas dutout un specialiste en maths (je suis geologue), du coup je suis un peu perdu dans vos aides...

On m'a parle de gnuplot pour essayer de trouver la fonction vous pensez que se serait une bonne idee ? (heu apres lecture du tutorial, j ai l'impression que se logiciel ne fait que tracer les fonction, il ne peut en "deviner une" a partir de point...)


Apres un peu plus de recherche, il semblerai qu un formule de type : 1-exp(-x) se rapprocherai de l'allure de mon nuage de points... Quelqu un a une idee comment parametrer une tel fonction ?


Merci encore.

Re: Quel logiciel ?

MessagePosté: Jeudi 28 Août 2008, 19:33
par Framboise
Peut-être pourrais-tu nous donner une idée de la nature de ces mesures pour en dériver une équation ?

Avec 1-exp(-x) on n'est pas très loin de mon idée de tanh.
Ce qui m'ennuie beaucoup, c'est l'espèce de décrochement-irrégularité dans le coin en haut à gauche de la courbe.

Re: Quel logiciel ?

MessagePosté: Jeudi 28 Août 2008, 20:17
par Binabik
moi ce me derange pas ;)

Du moment que la courbes est "proche" ca va. Si la formule "fit" a +/- 95% c'est bon.

En faite ces points sont des données économique que je dois appliquer par la suite a des teneurs.

Re: Quel logiciel ?

MessagePosté: Vendredi 29 Août 2008, 14:18
par Binabik
C'est encore moi :D

Bon ben finalement gnuplot est genial :D il fait exactement ce dont j ai besoin :

http://www.clubic.com/forum/programmati ... 220015851#

Merci de votre aide en tout cas.

Re: Quel logiciel ?

MessagePosté: Vendredi 29 Août 2008, 16:14
par Framboise
C'est donc tanh qui convient pour ton problème ?

Re: Quel logiciel ?

MessagePosté: Vendredi 29 Août 2008, 16:25
par Binabik
heu :o

J'utilise -a*exp(-x)+b

Ca fonctionne pas trop mal :)

Re: Quel logiciel ?

MessagePosté: Vendredi 29 Août 2008, 19:50
par OG
bonsoir

merci pour l'info je ne savais pas que Gnuplot faisait du "curve-fitting".

O.G.

Re: Quel logiciel ?

MessagePosté: Samedi 30 Août 2008, 11:47
par Framboise
merci pour l'info je ne savais pas que Gnuplot faisait du "curve-fitting".


De même.

Cela me semble une bonne solution en choisissant une fonction de départ judicieusement.

Re: Quel logiciel ?

MessagePosté: Mardi 06 Juin 2017, 12:27
par raphkebab
Je vient joué les rabat-joie.
Le modèle -a*exp(-x)+b ne me parait absolument pas adapté.
Pour faire ce genre de chose on adapte une loi de Weibull.

donc je propose cette formule :
beta-beta*exp(-(alpha*x)^p)

Petit code R :
Code: Tout sélectionner
x_data=read.csv("//s-usr/usr/busson-r/_supp/test.csv")
names(x_data)<-c("x","y")

my_red=function(x,alpha,p,beta) beta-beta*exp(-(alpha*x)^p)
res=nls(y~my_red(x,alpha,p,beta),start=list(alpha=1,p=1,beta=45),data=x_data)

my_green=function(x,alpha,beta) alpha-beta*exp(-(x))
res2=nls(y~my_green(x,alpha,beta),start=list(alpha=45,beta=45),data=x_data)

plot(x_data$x,x_data$y)
points(x_data$x,predict(res,list(x = x_data$x)),col="red")
points(x_data$x,predict(res2,list(x = x_data$x)),col="green")


On peut voir que t'on modèle est toujours décalé (points verts) par rapport aux observations (points noirs) :