Nous sommes le Ven 18 Juil, 2025 14:44
Supprimer les cookies

Page 2 sur 2Précédent 1, 2Tracer une courbe

Pour une tâche précise, pour remplacer un logiciel propriétaire donné...

Jeu 13 Déc, 2007 11:55

Gnuplot permet aussi de tracer des splines et courbes de bezier.

Il suffit de mettre les points dans un fichier texte, appelé points.txt dans ce cas-ci:

Code: Tout sélectionner
0 0
20 15
30 20
40 15
50 10
60 5


La commande suivante va produire un graphique avec les points, un spline et une courbe de bezier:

Code: Tout sélectionner
plot 'data.txt' title 'points', 'data.txt' smooth csplines title 'spline', 'data.txt' smooth bezier title 'bezier'
moron

Messages : 366

Jeu 13 Déc, 2007 14:46

Merci pour vos propositions.
Pour le moment, je les teste mais ce n'est pas toujours évident de prendre en main tous ces logiciels.
theliar

Messages : 32

Ven 14 Déc, 2007 18:23

sinequanon fonctionne très bien avec wine.

Je ne ne connais pas de logiciel aussi simple sous linux. Peut être en java.

Le gros reproche que je fais à gnuplot (maxima, R etc...) c'est de ne pas pouvoir fixer l'unité en cm.

Par exemple 2cm pour 1 unité sur l'axe des abscisses.
Je n'ai trouvé que latex et pstricks pour mes courbes. La qualité est irréprochable mais l'investissement important.


Pour obtenir la courbe représentative d'une fonction passant par des points de coordonnées données c'est très simple avec \pscurve.
\pscurve[linecolor=red,linewidth=0.2mm,plotpoints=1000]{-}(-4,-0.5)(-3,0)(0,1)

J'en profite pour mettre une macro qui me serre justement pour obtenir la courbe représentative d'une fonction passant par des points de coordonnées données mais en rajoutant la tangente en ces points

ce n'est pas de moi
Code: Tout sélectionner
%% macro trace tangente
\def\traceTangente(#1,#2,#3,#4){%
\ifthenelse{\lengthtest{#4pt>0pt}}{\FPeval\DemiTangenteV{(#3)*(#4)}
\FPeval\TangentXa{(#1)-(#4)}
\FPeval\TangentXb{(#1)+(#4)}
\FPeval\TangentYa{(#2)-(\DemiTangenteV)}
\FPround\TangentYa\TangentYa{3}
\FPeval\TangentYb{(#2)+(\DemiTangenteV)}
\FPround\TangentYb\TangentYb{3}
\psline{<->}(\TangentXa,\TangentYa)(\TangentXb,\TangentYb)}{}}
\makeatletter
%% macro interpolation
\def\Interpolation(#1,#2,#3)(#4,#5,#6){%
\edef\PolyInterp{(x+(-1)*(#4))^2*((1+(-2)*(x+(-1)*(#1))*(#1+(-1)*(#4))/((#1+(-1)*(#4))^2))*#2+(x+(-1)*(#1))*#3)/((#1+(-1)*(#4))^2)+(x+(-1)*(#1))^2*((1+(-2)*(x+(-1)*(#4))*(#4+(-1)*(#1))/((#1+(-1)*(#4))^2))*#5+(x+(-1)*(#4))*#6)/((#1+(-1)*(#4))^2)}%
\psplot[algebraic=true]{#1}{#4}{\PolyInterp}}
%% la   macro principale
\def\HermiteDDL(#1,#2,#3,#4){\def\Hermite@xa{#1}\def\Hermite@ya{#2}\def
\Hermite@za{#3}
\psdot(#1,#2)
\traceTangente(#1,#2,#3,#4)\Hermite@next}

\def\Hermite@next{\@ifnextchar ({\Hermite@job}{\Hermite@end}}

\def\Hermite@job(#1,#2,#3,#4){%
\psdot(#1,#2)
\Interpolation(\Hermite@xa,\Hermite@ya,\Hermite@za)(#1,#2,#3)
\def\Hermite@xa{#1}\def\Hermite@ya{#2}\def\Hermite@za{#3}
\traceTangente(#1,#2,#3,#4)\Hermite@next}
\def\Hermite@end{}
\makeatother

et pour créer le graphique
\psset{xunit=1.5cm , yunit=1.5cm}
\begin{pspicture*}[shift=-4cm](-4.5,-3.2)(3.5,2.2)
\def\pshlabel#1{\psframebox*[framesep=1pt]{\footnotesize #1}}
\def\psvlabel#1{\psframebox*[framesep=1pt]{\footnotesize #1}}
\psgrid[gridlabels=0pt,gridwidth=.3pt, gridcolor=gray, subgridwidth=.3pt, subgridcolor=gray, subgriddiv=2](0,0)(-4,-3)(3,2)
\psaxes[labels=all,labelsep=0pt,Dx=1,Dy=1]{->}(0,0)(-4,-3)(3,2)
\psline[]{->}(-4,-0.5)(-2.5,0)
\HermiteDDL(-4,-0.5,0.3333,0)(-3,0,1,0)(-2,1,0,.5)(-1.5,0,-2,0)(-0.5,-1.5,0,0.5)(0,-1,1,0)(0.5,-0.5,0,0.5)(2,-1.5,-2,0.5)(2.5,-3,-5,0)
\uput[dr](-4,-0.5){$A$}\uput[ur](2,-1.5){$B$}
\end{pspicture*}
i love vim
limax

Avatar de l’utilisateur
Messages : 474
Géo : grenoble

Lun 17 Déc, 2007 09:28

irimi

Messages : 503

Mar 18 Déc, 2007 20:38

Besoin d'un logiciel scientifique pour Linux ?

Faites donc un p'tit tour =>

A mon avis, vous ne serez pas déçu !!

Y'a de tout pour tout et pour tous...

Nicolas CJ
Quiconque demande reçoit et qui cherche trouve
Mt 7.8
Nicolas CJ

Avatar de l’utilisateur
Messages : 167
Géo : Essonne

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit