Quel logiciel ?

Tout ce qui concerne les logiciels mathématiques (Matlab, Maxima, Scilab, R, ...) ou les calculatrices scientifiques.
[forum modéré par les modérateurs globaux du site]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
Binabik
Utilisateur débutant
Utilisateur débutant
Messages : 6
Inscription : mercredi 27 août 2008, 19:43

Quel logiciel ?

Message 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

MB
Administrateur
Administrateur
Messages : 7189
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Quel logiciel ?

Message 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 ?
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Quel logiciel ?

Message 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.

Binabik
Utilisateur débutant
Utilisateur débutant
Messages : 6
Inscription : mercredi 27 août 2008, 19:43

Re: Quel logiciel ?

Message 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.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Quel logiciel ?

Message 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.

EricK
Utilisateur chevronné
Utilisateur chevronné
Messages : 1481
Inscription : jeudi 02 novembre 2006, 22:38

Re: Quel logiciel ?

Message 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).

Framboise
Utilisateur chevronné
Utilisateur chevronné
Messages : 1159
Inscription : lundi 21 mai 2007, 13:57
Statut actuel : Autre
Localisation : Dordogne

Re: Quel logiciel ?

Message 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.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
J'ai le virus des sciences, ça se soigne ?

Binabik
Utilisateur débutant
Utilisateur débutant
Messages : 6
Inscription : mercredi 27 août 2008, 19:43

Re: Quel logiciel ?

Message 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.

Framboise
Utilisateur chevronné
Utilisateur chevronné
Messages : 1159
Inscription : lundi 21 mai 2007, 13:57
Statut actuel : Autre
Localisation : Dordogne

Re: Quel logiciel ?

Message 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.
J'ai le virus des sciences, ça se soigne ?

Binabik
Utilisateur débutant
Utilisateur débutant
Messages : 6
Inscription : mercredi 27 août 2008, 19:43

Re: Quel logiciel ?

Message 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.

Binabik
Utilisateur débutant
Utilisateur débutant
Messages : 6
Inscription : mercredi 27 août 2008, 19:43

Re: Quel logiciel ?

Message 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 ... 1220015851#

Merci de votre aide en tout cas.

Framboise
Utilisateur chevronné
Utilisateur chevronné
Messages : 1159
Inscription : lundi 21 mai 2007, 13:57
Statut actuel : Autre
Localisation : Dordogne

Re: Quel logiciel ?

Message par Framboise »

C'est donc tanh qui convient pour ton problème ?
J'ai le virus des sciences, ça se soigne ?

Binabik
Utilisateur débutant
Utilisateur débutant
Messages : 6
Inscription : mercredi 27 août 2008, 19:43

Re: Quel logiciel ?

Message par Binabik »

heu :o

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

Ca fonctionne pas trop mal :)

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Quel logiciel ?

Message par OG »

bonsoir

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

O.G.

Framboise
Utilisateur chevronné
Utilisateur chevronné
Messages : 1159
Inscription : lundi 21 mai 2007, 13:57
Statut actuel : Autre
Localisation : Dordogne

Re: Quel logiciel ?

Message 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.
J'ai le virus des sciences, ça se soigne ?

raphkebab
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 227
Inscription : mardi 31 décembre 2013, 12:37
Localisation : Caen

Re: Quel logiciel ?

Message 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) :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.