Fit

Voir le sujet précédent Voir le sujet suivant Aller en bas

Fit

Message  lassaib le Mar 6 Mai - 16:36

salut,

Je suis confronté à un problème. J'ai regardé dans la doc, mais en vain (peut être que j'ai mal regardé !).
Au fait je veux faire ceci. Supposons que j'ai une liste de couple de points
0.1 0.2
0.2 0.3
0.4 0.5
0.7 0.6
0.9 0.81
.....
dans couple.data; je le représente avec ReadData, et je veux créer une fonction numérique f(x) = ax^2 +b qui passe exactement par les points de couple.data.
Donc le probleme revient à determiner a et b pour chaque couple de points de couple.data, f(x) est juste un exemple.

merci

lassaib

Nombre de messages : 24
Age : 43
Date d'inscription : 05/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Fit

Message  P.Fradin le Mar 6 Mai - 18:37

Bonjour lassaib,

Il faudrait préciser le problème, c'est un problème d'interpolation, quel type de fonction veux-tu? Est-ce qu'une fonction affine par morceaux (segments qui joindraient les points) conviendrait, ou peut-être une fonction C1...?

Voici un exemple de fichier où on utilise une spline cubique (à enregistrer puis à ouvrir avec TeXgraph):

Code:

% TeXgraph version 1.94 beta-2
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-0.1#1#-0.1#1#10#10##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0.5#0.5#0.5#0.5#0#1#6##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=-0.882, phi:=1.2152,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Macros
16#f#{ recherche un point (x, f(x)) dans Dat par interpolation linéaire}
[$b:=Nil, $trouve:=0,
for $z in stock do
    $a:=B, b:=z, $x1:=$x2, $y1:=$y2, x2:=Re(b), y2:=Im(b),
    if x1<=%1 And %1<x2 then
      trouve:=1,
      y1+(y2-y1)/(x2-x1)*(%1-x1)
    fi
od,
if trouve=0 And %1=x2 then y2 fi]
##
16#Init#stock:=Get(Spline(0, ReadData("/home/pfradin/fichiersteg/lassaib.dat"),0),0)
##
% Déclaration des Eléments graphiques
% objet6 (Grille)
18##[Color:=12632256]##
2#objet6#[0+i*(0),0.1+i*(0.1)]#0#0##
% objet5 (Axes)
18##[Color:=0]##
1#objet5#[0+i*(0),0.1+i*(0.1),2+i*(2)]#0#0##
% objet4 (Utilisateur)
18##[tMin:=-0.1908,tMax:=1.0763]##
14#objet4#[ Point(ReadData("/home/pfradin/fichiersteg/lassaib.dat")),
  Color:=red, Width:=8, Courbe(t+i*f(t))
]
#-1##

Dans la macro Init on charge le fichier de données (il faut que tu mettes le bon nom), puis on construit une spline qui passe par ces points et on stocke la liste des points de cette spline dans la variable (prédéfinie) stock.

La macro f définit une fonction telle que f(x) corresponde à l'ordonnée du point de la courbe spline d'abscisse x (par interpolation linéaire).

Dans le troisième élément graphique, j'ai dessiné les points du fichier de données (il faut que tu mettes le bon nom là aussi) et la courbe représentative de f.



_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Fit

Message  lassaib le Mar 6 Mai - 19:16

Vous etes genial, c'est justement une question d'interpolation.
Vous l'avez si bien fait que je n'ai rien à ajouter si que Very Happy
Et de comprendre votre script Rolling Eyes

Merci

lassaib

Nombre de messages : 24
Age : 43
Date d'inscription : 05/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Fit

Message  lassaib le Mer 7 Mai - 16:29

Salut,

J'ai essayé hier nuit avec les memes données; mais je me bloque: les points sont visibles (en noirs ) mais la courbe en rouge n'est pas dessinée No Alors que c'est elle que j'ai besoin les points doivent etre virés. Que faire , peut etre reessayer encore ! Je suis sous fedora 8 et TeXgraph 1.93

lassaib

Nombre de messages : 24
Age : 43
Date d'inscription : 05/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Fit

Message  P.Fradin le Mer 7 Mai - 19:14

lassaib a écrit:Salut,

J'ai essayé hier nuit avec les memes données; mais je me bloque: les points sont visibles (en noirs ) mais la courbe en rouge n'est pas dessinée No Alors que c'est elle que j'ai besoin les points doivent etre virés. Que faire , peut etre reessayer encore ! Je suis sous fedora 8 et TeXgraph 1.93

Salut,

As-tu bien modifié le nom du fichier dans la macro Init?
Une fois fait, il faut enregistrer et recharger le fichier.

Ah j'y suis, j'ai oublié de mettre ReCalc() dans la macro Init, il faut donc modifier la macro Init ainsi:

Code:

[stock:=Get(Spline(0, ReadData("T:\lassaib.dat"),0),0),
 ReCalc()]

Bien sûr, il faut que tu mettes le bon nom de fichier.

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Fit

Message  lassaib le Mer 7 Mai - 20:19

Ouff, finalement c'est fait et c'est joli Laughing
Merci

lassaib

Nombre de messages : 24
Age : 43
Date d'inscription : 05/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Fit

Message  P.Fradin le Mer 7 Mai - 20:26

Juste une remarque:

Si c'est juste la courbe qui t'intéresse, tu peux remplacer la commande Courbe(t+i*\f(t)) dans l'élément objet4, par Ligne(stock,0), c'est plus efficace (puisque les points sont déjà calculés dans la variable stock).

Par contre si tu as besoin de valeurs partiulières sur la courbe, alors tu dois utiliser la macro f(x) pour calculer des images. Bien sûr cela n'a de sens que si c'est une courbe cartésienne y=f(x).

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Fit

Message  Contenu sponsorisé Aujourd'hui à 11:51


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum