Page 1 sur 1

Représenter des intervalles

MessagePosté: Dimanche 20 Janvier 2008, 22:14
par projetmbc
Bonjour,
quelqu'un connait-il un moyen de représenter des intervalles sur la droite réelle ? Je sais qu'on peut le faire via PSTricks mais connaissez-vous une solution "clé en main" pour éviter de réinventer la roue.

Par avance merci.

Re: Représenter des intervalles

MessagePosté: Dimanche 20 Janvier 2008, 22:22
par guiguiche
Je crois que quelqu'un en a parlé sur ce forum. Effectue une recherche.

Re: Représenter des intervalles

MessagePosté: Lundi 21 Janvier 2008, 12:23
par rebouxo
Avec Pstricks et l'extension pstricks-add

Code: Tout sélectionner
\begin{pspicture}(-5,-1)(5,1)
\psaxes%
[yaxis=false]
(0,0)(-5,-1)(5,1) % Axes horizontal.
\psline[arrows=[-]](-4,0)(1,0)
\end{pspicture}


Devrait construire l'intervalle $[-4\,;\,0]$
Olivier

Re: Représenter des intervalles

MessagePosté: Mardi 22 Janvier 2008, 00:00
par projetmbc
Ok merci pour PSTricks. En fait je chercher une solution clé en main. Cela ne doit pas exister. Tant pis, je le ferais à la main sans la clé. Merci pour ces infos.

Re: Représenter des intervalles

MessagePosté: Mardi 22 Janvier 2008, 00:21
par MB
C'est quoi une solution "clé en main" dans ce cas ?

Re: Représenter des intervalles

MessagePosté: Mardi 22 Janvier 2008, 16:48
par projetmbc
On entre les bornes et hop c'est dessiner. Voilà ce que j'entends par clé en main. On pourrait imaginer aussi la représentation de réunions d'intervalles ou bien de solutions d'inéquations linéaires à une inconnue.

Ceci étant dit, la méthode via PSTricks n'est pas méchante.

Re: Représenter des intervalles

MessagePosté: Mardi 22 Janvier 2008, 16:55
par rebouxo
Code: Tout sélectionner
\newcommand{\psFerme}[2]%
{%
\psline[arrows=[-]](#1,0)(#2,0)
}%


On pourrait aussi faire plus user friendly en mettant des mots clés à la keyval. Mais j'ai toujours pas compris la manip :oops:

Olivier

Re: Représenter des intervalles

MessagePosté: Mardi 22 Janvier 2008, 17:45
par D.GH
rebouxo a écrit:
Code: Tout sélectionner
\newcommand{\psFerme}[2]%
{%
\psline[arrows=[-]](#1,0)(#2,0)
}%


On pourrait aussi faire plus user friendly en mettant des mots clés à la keyval. Mais j'ai toujours pas compris la manip :oops:
Olivier


Bonjour,

Voici la manip avec 'xkeyval' .

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% http://www.cnam.fr/maths/Membres/ghorbanzadeh/
\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{latexsym,amsmath,amssymb}

\usepackage{pstricks-add}

\usepackage{xkeyval}

\makeatletter
% paramètre pour la Borne inférieure
\define@key{MonIntV}{binf}{\def\Intbinf{#1}}
% paramètre pour la Borne supérieure
\define@key{MonIntV}{bisup}{\def\Intbsup{#1}}


% valeurs par default
\presetkeys{MonIntV}{binf=1,bisup=2}{}

\def\MonIntV{\@ifnextchar[\@MonIntV{\@MonIntV[]}}
\def\@MonIntV[#1]{\setkeys{MonIntV}{#1}%
 \psline[arrows=[-]](\Intbinf,0)(\Intbsup,0)}
\makeatother

\begin{document}

par default (1;2):       \MonIntV \\

avec l'option (0,5 ; 2)   :  \MonIntV[binf=0.5]  \\

avec l'option (2;7) :  \MonIntV[binf=2,bisup=7]  \\
\end{document}


D.GH

Re: Représenter des intervalles

MessagePosté: Mardi 22 Janvier 2008, 22:44
par balf
Je suggère de prendre pour point de départ plus naturel la construction suivante, en plain TeX :

Code: Tout sélectionner
\def\psFerme(#1,#2){\psline[arrows=[-](#1,0)(#2,0)}


qui permet d'écrire, p. ex. psFerme(1,2)

Ceci n'incorpore pas l'usage de xkeyval (ou plutôt, vu le contexte, pst-xkey) qui permettrait, peut-être plus utile que ce que propose D. GH d'utiliser un paramètre décrivant s'il agit d'un intervalle fermé, ouvert ou semi-fermé. Je ne sais pas bien me servir de xkeyval, mais D. GH qui semble s'y connaître pourrait peut-être adapter. Qu'en pense-t-il ?

On peut même imaginer une variante pour avoir un intervalle sur une droite quelconque du plan en donnant les coordonnées du point-origine et du point-extrémité.

B.A.

Re: Représenter des intervalles

MessagePosté: Mercredi 23 Janvier 2008, 13:01
par D.GH
balf a écrit:.............ce que propose D. GH d'utiliser un paramètre décrivant s'il agit d'un intervalle fermé, ouvert ou semi-fermé. Je ne sais pas bien me servir de xkeyval, mais D. GH qui semble s'y connaître pourrait peut-être adapter. Qu'en pense-t-il ?

B.A.


Bonjour,

Comme il a été suggéré, je propose, une solution de dépannage, en introduisant un paramètre pour la forme.
- intervalle fermé : paramètre =1
Intervalle fermé à droite : paramètre =2
Intervalle fermé à gauche : paramètre =3
Intervalle ouvert : paramètre =4

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% http://www.cnam.fr/maths/Membres/ghorbanzadeh/
\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{latexsym,amsmath,amssymb}

\usepackage{pstricks-add}

%%%%%%%%%%%%%%%%%%%%%%%%%%
% #1 la forme de l'intervalle
% #2 borne inf
% #3 borne  sup
\newcommand{\MonIntV}[3][1]{%
\ifnum #1=1 \psline{[-]}(#2,0)(#3,0) \fi
\ifnum #1=2 \psline{]-]}(#2,0)(#3,0) \fi
\ifnum #1=3 \psline{[-[}(#2,0)(#3,0) \fi
\ifnum #1=4 \psline{]-[}(#2,0)(#3,0) \fi
}

\begin{document}

par default (0.5;2):       \MonIntV{0.5}{2} \\

                           \MonIntV[1]{0.5}{2} \\
                           \MonIntV[2]{0.5}{2} \\
                           \MonIntV[3]{0.5}{2} \\
                           \MonIntV[4]{0.5}{2} \\

\end{document}


D.GH

Re: Représenter des intervalles

MessagePosté: Mercredi 23 Janvier 2008, 13:11
par D.GH
bonjour,

Voici une proposition avec 'xkeyval'.

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% http://www.cnam.fr/maths/Membres/ghorbanzadeh/
\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{latexsym,amsmath,amssymb}

\usepackage{pstricks-add}

\usepackage{xkeyval}

\makeatletter
% paramètre pour la forme
\define@key{MonIntV}{forme}{\def\Intforme{#1}}
% paramètre pour la Borne inférieure
\define@key{MonIntV}{binf}{\def\Intbinf{#1}}
% paramètre pour la Borne supérieure
\define@key{MonIntV}{bisup}{\def\Intbsup{#1}}


% valeurs par default
\presetkeys{MonIntV}{forme=1,binf=1,bisup=2}{}

\def\MonIntV{\@ifnextchar[\@MonIntV{\@MonIntV[]}}
\def\@MonIntV[#1]{\setkeys{MonIntV}{#1}%
\ifnum\Intforme=1 \psline{[-]}(\Intbinf,0)(\Intbsup,0) \fi
\ifnum\Intforme=2 \psline{]-]}(\Intbinf,0)(\Intbsup,0) \fi
\ifnum\Intforme=3 \psline{[-[}(\Intbinf,0)(\Intbsup,0) \fi
\ifnum\Intforme=4 \psline{]-[}(\Intbinf,0)(\Intbsup,0) \fi}
\makeatother

\begin{document}

par default (1;2):       \MonIntV \\
                         \MonIntV[forme=1,binf=1,bisup=2]  \\
                         \MonIntV[forme=2,binf=1,bisup=2]  \\
                         \MonIntV[forme=3,binf=1,bisup=2]  \\
                         \MonIntV[forme=4,binf=1,bisup=2]  \\


\end{document}


D.GH

Re: Représenter des intervalles

MessagePosté: Mercredi 23 Janvier 2008, 16:21
par MB
Ces solutions ne passent pas avec pdftex je suppose non ?

Re: Représenter des intervalles

MessagePosté: Mercredi 23 Janvier 2008, 16:31
par D.GH
Bonjour,

Voici une autre version avec le Module 'ifthen', pour le paramètre forme j'ai mis les 4 positions possibles 'FF,Fo,OF,OO'

MB a écrit:Ces solutions ne passent pas avec pdftex je suppose non ?


Je ne l'ai pas encore testé pour pdfLaTeX (mais comme on dit seul l'impossible est impossible).

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% http://www.cnam.fr/maths/Membres/ghorbanzadeh/
\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{latexsym,amsmath,amssymb}

\usepackage{pstricks-add}

\usepackage{xkeyval}

\usepackage{ifthen}

\makeatletter
% paramètre pour la forme
\define@cmdkey{MonIntV}{forme}{\def\Intforme{#1}}
% paramètre pour la Borne inférieure
\define@cmdkey{MonIntV}{binf}{\def\Intbinf{#1}}
% paramètre pour la Borne supérieure
\define@cmdkey{MonIntV}{bisup}{\def\Intbsup{#1}}


% valeurs par default
\presetkeys{MonIntV}{forme=FF,binf=1,bisup=2}{}

\def\MonIntV{\@ifnextchar[\@MonIntV{\@MonIntV[]}}
\def\@MonIntV[#1]{\setkeys{MonIntV}{#1}%
\ifthenelse{\equal{\Intforme}{FF}}{\psline{[-]}(\Intbinf,0)(\Intbsup,0)}
{\ifthenelse{\equal{\Intforme}{OF}}{\psline{]-]}(\Intbinf,0)(\Intbsup,0)}
{\ifthenelse{\equal{\Intforme}{FO}}{\psline{[-[}(\Intbinf,0)(\Intbsup,0)}
{\ifthenelse{\equal{\Intforme}{OO}}{\psline{]-[}(\Intbinf,0)(\Intbsup,0)}{}
}
}
}
}
\makeatother

\begin{document}

par default (1;2):       \MonIntV \\
                         \MonIntV[forme=FF,binf=1,bisup=2]  \\
                         \MonIntV[forme=OF,binf=1,bisup=2]  \\
                         \MonIntV[forme=FO,binf=1,bisup=2]  \\
                         \MonIntV[forme=OO,binf=1,bisup=2]  \\


\end{document}


D.GH

Re: Représenter des intervalles

MessagePosté: Mercredi 23 Janvier 2008, 19:08
par projetmbc
Plutôt pas mal tout ceci... :D Merci beaucoup !

Re: Représenter des intervalles

MessagePosté: Mercredi 23 Janvier 2008, 20:11
par D.GH
projetmbc a écrit:Plutôt pas mal tout ceci... :D Merci beaucoup !


Bon $\LaTeX$

D.GH

Re: Représenter des intervalles

MessagePosté: Dimanche 14 Février 2010, 19:36
par chellier
Bon, c'est vrai, c'est un gros déterrage de sujet, mais cette solution avec asymptote peut, peut-être, servir à quelqu'un pour des cas assez simples :
http://cgmaths.fr/Atelier/Asymptote/AsyInequations.html

Christophe

Re: Représenter des intervalles

MessagePosté: Dimanche 14 Février 2010, 21:26
par GMaths
chellier a écrit:Bon, c'est vrai, c'est un gros déterrage de sujet, mais cette solution avec asymptote peut, peut-être, servir à quelqu'un pour des cas assez simples :
http://cgmaths.fr/Atelier/Asymptote/AsyInequations.html

Christophe


J'ai survolé les images... et regardé le code du dernier exemple ; j'ai une petite suggestion : utiliser hspace pour éviter de tatonner avec des "quad".

Code: Tout sélectionner
import inequations_cg;
usepackage("fourier");
usepackage("amsmath"); // Pour utiliser \text{}
unitsize(1cm);

real x1=0,x2=3,xm=(x1+x2)/2;

sol2onaxis("",x1,rsol,"]","",x2,lsol,"[",NoTicks(),true);
xtick("$L$",1,1.5*N,linewidth(bp));  // Pour placer la graduation
xtick(1,S,linewidth(bp));                     // Il faut la Nord et la Sud
label(format("$\underbrace{\hspace{%f cm}}
_{\text{intervalle ouvert contenant } L}$",x2-x1),(xm,-.9));
label("Pour $n \geqslant p$, $u_n$ est dans l'intervalle",(xm,.8));

shipout(bbox(1mm,invisible));

Re: Représenter des intervalles

MessagePosté: Lundi 15 Février 2010, 09:42
par chellier
En effet, merci, c'est quand même plus propre...
Je suis un dingue de \quad, j'en mets partout, il faut que je me calme :oops:

Christophe

Re: Représenter des intervalles

MessagePosté: Lundi 15 Février 2010, 09:53
par GMaths
chellier a écrit:Je suis un dingue de \quad, j'en mets partout
:lol:

Connais-tu :
  • \qquad,
  • \hfil (ne pas confondre avec \hfill) ?