[Gnuplot, Maxima] Fonctions implicites

Tout ce qui concerne les différents logiciels mathématiques (Matlab, Maxima, Scilab, R, Maple, Mathematica, ...) et les calculatrices scientifiques.
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.
> Préciser le nom du logiciel concerné dans le titre de votre message.

[Gnuplot, Maxima] Fonctions implicites

Messagepar MB » Lundi 22 Octobre 2007, 13:19

Bonjour,

je regardais comment représenter des fonctions implicites avec Gnuplot ou avec Maxima.

Avec Maxima, une fonction implicit_plot est définie et doit être chargée avant d'être utilisée :

Code: Tout sélectionner
load(implicit_plot);


Puis on utilise la fonction : (ici pour représenter une ellipse)

Code: Tout sélectionner
implicit_plot([(x-sqrt(2)/4)^2*24+y^2*12=1], [x,0.1,0.6], [y,-0.4,0.4], [gnuplot_preamble,  "set grid"]);


Le problème est que, par exemple, l'option [nticks,200] qui devrait améliorer la précision du tracé en augmentant le nombre de points calculés n'a aucun effet ici. Cette option ne doit fonctionner que pour les commandes du type plot2d.

En regardant donc du côté de Gnuplot directement, il me semble que la représentation de fonctions définies de manière implicite ne soit pas directement prise en charge (voir partie 6 sur ce lien). D'ailleurs c'est peut être pour cette raison qu'une fonction spécifique a été définie dans Maxima (même si à priori elle fait toujours appel à Gnuplot).

Bref ma question est :

Comment augmenter la qualité de la représentation produite par la fonction implicit_plot ? (sachant que l'usage direct de Gnuplot ne semble pas très pratique)
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar gigiair » Mardi 23 Octobre 2007, 09:25

MB a écrit:Comment augmenter la qualité de la représentation produite par la fonction implicit_plot ? (sachant que l'usage direct de Gnuplot ne semble pas très pratique)


Il ne servirait à peu près à rien d'augmenter le nombre de points. Implicit_plot construit un tableau de coordonnées dans %homepath%\maxout.gnuplot, groupées par deux et séparées par une ligne blanche. J'en déduis que la représentation graphique sera nécessairement une suite de segments.
Comme il vaut mieux faire appel au bon Dieu qu'à ses saints (même à saint Taxe, qui n'est pas le saint des percepteurs, mais celui des informaticiens), autant faire appel directement à gnuplot.
Sauver le code suivant sous le nom implicit.gnu dans %homepath% par exemple, puis dans gnuplot taper «load "implicit.gnu"».

Code: Tout sélectionner
f(x,y)=(x-sqrt(2)/4)**2*24+y**2*12;
set cntrparam levels discrete 1.0
set isosamples 100,100
set xrange [0:0.6]
set yrange [-0.5:0.5]
set cntrparam bspline
set contour base
unset surface
set table 'courbe.dat'
splot f(x,y)
unset table
plot  'courbe.dat' title '12*y^2+24*(x-sqrt(2)/4)^2 = 1'  w l


Pour améliorer la qualité on peut augmenter isosamples.
Le paramètre cntrparam levels discrete 1.0 est celui qui fait que la courbe tracée est la ligne de niveau 1. On peut évidemment en changer.
Le fichier %homepath%\courbe.dat est celui qui contient les coordonnées des points de la courbe. Il est instructif de le comparer à maxout.gnuplot
Pour changer d'équation, il suffit de rééditer le fichier. Il faut savoir que sous gnuplot, ^ n'est pas le symbole de l'exponentiation, il faut utiliser **.
Par contre il faut fixer «à la main» les paramètres de xrange et yrange. maxima lui, se débrouille tout seul, et peut aider à les fixer.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2409
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar MB » Mardi 23 Octobre 2007, 17:25

gigiair a écrit:Il ne servirait à peu près à rien d'augmenter le nombre de points. Implicit_plot construit un tableau de coordonnées dans %homepath%\maxout.gnuplot, groupées par deux et séparées par une ligne blanche. J'en déduis que la représentation graphique sera nécessairement une suite de segments.


Ca pourrait peut être augmenter le nombre de coordonnées calculées.

En tout cas, merci pour ta réponse. Je teste la solution Gnuplot dès que j'ai le temps.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar gigiair » Mardi 23 Octobre 2007, 20:01

MB a écrit:Ca pourrait peut être augmenter le nombre de coordonnées calculées.

Oui, mais sans amélioration très sensible du rendu qui se fera de toute façon comme une suite de segments, et non comme une courbe lissée.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2409
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar gigiair » Mardi 23 Octobre 2007, 20:08

MB a écrit:Ca pourrait peut être augmenter le nombre de coordonnées calculées.

Oui, mais sans amélioration très sensible du rendu qui se fera de toute façon comme une suite de segments, et non comme une courbe lissée.Je n'ai pas tout analysé du code de implicit_plot.lisp, mais il semble que ce soit le comportement normal de ce module. Peut-être une option pourrait le modifier. Si je trouve, je posterais ici, mais de toute façon le résultat risque d'être absolument identique à celui de gnuplot. C'est juste une question de syntaxe.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2409
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar MB » Mercredi 24 Octobre 2007, 13:28

gigiair a écrit:Oui, mais sans amélioration très sensible du rendu qui se fera de toute façon comme une suite de segments, et non comme une courbe lissée.


Bah d'après moi, même sans lisser la courbe, le fait d'augmenter le nombre de points calculés va améliorer la qualité de la représentation. Les segments seront plus courts. Par exemple, si on ne calculait que 4 points, la courbe ne serait composée que de 4 segments et son allure serait tout autre.

Bon, je teste ça sous Gnuplot.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar MB » Mercredi 24 Octobre 2007, 13:56

Bon, ça fonctionne bien et on peut en effet définir le nombre de points calculés via la commande set isosamples.

Pour faire les tests, j'ai copié le code suivant dans un fichier nommé ellipse.gnu.

Code: Tout sélectionner
f(x,y)=(x-sqrt(2)/4)**2*24+y**2*12;
set cntrparam levels discrete 1.0
set isosamples 1000,1000
set xrange [0.1:0.6]
set yrange [-0.3:0.3]
set size ratio 1
set grid
# show size
set cntrparam bspline
set contour base
unset surface
set table 'ellipse.dat'
splot f(x,y)
unset table
plot  'ellipse.dat' w l


La commande set size ratio 1 permet d'obtenir un repère orthonormé.

Voici les résultats obtenus.

Pour 1000 points calculés :

ellipse_1000.png
set isosamples 1000,1000


Pour 4 points calculés :

ellipse_4.png
set isosamples 4,4
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar gigiair » Mercredi 24 Octobre 2007, 20:27

Oui, ça marche d'enfer, mais ce que je disais valait pour la méthode implicit_plot de maxima, qui par construction trace une suite de segments, pas pour la méthode directe gnuplot.
gnuplottex permet d'inclure la figure dans un document LaTeX.
Il faut compiler avec l'option -shell-escape (-enable-write18). Voici un exemple :

Code: Tout sélectionner
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{gnuplottex}
\usepackage[frenchb]{babel}
\begin{document}

\begin{gnuplot}
    f(x,y)=(x-sqrt(2)/4)**2*24+y**2*12
    set cntrparam levels discrete 1.0
    set isosamples 1000,1000
    set xrange [0.1:0.6]
    set yrange [-0.3:0.4]
    set size ratio 1
    set grid
    # show size
    set cntrparam bspline
    set contour base
    unset surface
    set table 'ellipse.dat'
    splot f(x,y)
    unset table
    plot 'ellipse.dat' title '$24\,(x-\frac{\sqrt{2}}{4})^2+12\,y^2=1$'  w l
\end{gnuplot}
\end{document}
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2409
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: [Gnuplot, Maxima] Fonctions implicites

Messagepar MB » Mercredi 24 Octobre 2007, 21:55

gigiair a écrit:Oui, ça marche d'enfer, mais ce que je disais valait pour la méthode implicit_plot de maxima, qui par construction trace une suite de segments, pas pour la méthode directe gnuplot.


En tout cas, il semblerait que la fonction implicit_plot de maxima fasse toujours appel à Gnuplot.
J'ai regardé vite fait le code de cette fonction (fichier implicit_plot.lisp) et on trouve :

Code: Tout sélectionner
(format file "plot2d -data {~%")


Cette fonction n'utilise pas la méthode qui est utilisée classiquement pour représenter des fonctions définies implicitement avec Gnuplot.
Les coordonnées des points semblent calculées par maxima et pas par gnuplot.

En tout cas, je trouve le rendu pas génial. :mrgreen:
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant


Retourner vers Logiciels mathématiques

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité