Fit
2 participants
Page 1 sur 1
Fit
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
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 : 50
Date d'inscription : 05/02/2008
Re: Fit
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):
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.
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.
Re: Fit
Vous etes genial, c'est justement une question d'interpolation.
Vous l'avez si bien fait que je n'ai rien à ajouter si que
Et de comprendre votre script
Merci
Vous l'avez si bien fait que je n'ai rien à ajouter si que
Et de comprendre votre script
Merci
lassaib- Nombre de messages : 24
Age : 50
Date d'inscription : 05/02/2008
Re: Fit
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 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
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 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 : 50
Date d'inscription : 05/02/2008
Re: Fit
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 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.
Re: Fit
Ouff, finalement c'est fait et c'est joli
Merci
Merci
lassaib- Nombre de messages : 24
Age : 50
Date d'inscription : 05/02/2008
Re: Fit
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).
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).
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|