Code PSTricks avec \multido

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

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.

Code PSTricks avec \multido

Messagepar Fabrice Couvreur » Jeudi 22 Décembre 2011, 19:31

Bonsoir,
Dans le code ci-dessous :
Code: Tout sélectionner
\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{lmodern}
\usepackage{esvect}
\usepackage{pstricks-add,pst-tree,pst-node}
\begin{document}
\begin{center}
\psset{xunit=1cm,algebraic=true,nodesep=2pt}
\begin{pspicture}(-1.5,0)(11.5,0)
\psaxes[yAxis=false,Dx=3,labels=none](-1,0)(-1.5,0)(11.5,0)
\psline[linecolor=red,linewidth=1pt]{->}(0,0)(1,0)
\psline[linecolor=red,linewidth=1pt](0,-0.05)(0,0.05)
\multido{\i=0+1,\n=-1+3}{5}
{%
\fpAdd{\i}{1}{\m}
\uput[d](\n,-0.3){{$\scriptstyle{u_{\i}}$}}
\uput[u](\n,0){\rnode{\i}{$\scriptstyle{M_{\i}}$}}
\nccurve[angleA=45,angleB=135]{->}{\i}{\m}\naput{$\scriptstyle{r}$}} ?
\uput[d](5,-0.05){$\color{red}\scriptstyle{5}$}
\uput[d](11,-0.05){$\color{red}\scriptstyle{11}$}
\uput[d](0,0){$\color{red}\scriptstyle{O}$}
\uput[d](0.5,0){$\color{red}\scriptstyle{\vv{i}}$}
\end{pspicture}
\end{center}
\end{document}

je n'arrive pas à faire ce que je souhaite. En effet, le premier terme de la suite est égal à -1, donc je dois décaler les abscisses des points de -1 vers la gauche. J'ai bien essayé
Code: Tout sélectionner
\uput[d](\n-1,-0.3){{$\scriptstyle{u_{\n}}$}}
mais sans succès. J'ai également essayé de faire le code plus court en faisant :
Code: Tout sélectionner
\multido{\i=0+1, \m=1+1}{\nccurve[angleA=45,angleB=135]{->}{\i}{\m}\naput{$\scriptstyle{r}$}
sans plus de succès.
Merci.
Dernière édition par Fabrice Couvreur le Vendredi 23 Décembre 2011, 00:19, édité 1 fois.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 594
Inscription: Samedi 18 Août 2007, 00:55

Publicité

Re: Code PSTricks avec \multido

Messagepar texmaker » Jeudi 22 Décembre 2011, 20:25

Il doit être possible d'utiliser la commande (dans la boucle multido - m prendra la valeur n-1) :
Code: Tout sélectionner
\fpSub{\n}{1}{\m}

et ensuite d'utiliser \m à la place de \n là où c'est nécessaire
Texmaker (version courante : 5.0) : éditeur LaTeX libre et multi-plateforme avec afficheur pdf.
PdfAdd : Tableaux variations, courbes, arbres, graphes, loi binomiale, cercle trigo, suites pour pdflatex et Asymptote
Site de documentation sur LaTeX
texmaker
Kilo-utilisateur
 
Messages: 226
Inscription: Vendredi 30 Juillet 2010, 11:19
Statut actuel: Actif et salarié | Enseignant

Re: Code PSTricks avec \multido

Messagepar Fabrice Couvreur » Vendredi 23 Décembre 2011, 00:21

Bonsoir,
J'ai édité mon message pour améliorer le code. Je ne rencontre plus qu'un problème au niveau du label r qui ne s'affiche pas.
Merci.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 594
Inscription: Samedi 18 Août 2007, 00:55

Re: Code PSTricks avec \multido

Messagepar djiblamb » Vendredi 23 Décembre 2011, 00:43

Bonsoir.

Au moment d'envoyer le message que j'étais en train de préparer, je viens de réaliser que tu as édité ton premier message. Tant pis, j'envoie quand même le mien, au moins pour les variables utilisables avec multido.

Voici le code que j'avais préparé :
Code: Tout sélectionner
\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{lmodern}
\usepackage{esvect}
\usepackage{pstricks-add,pst-tree,pst-node}

\begin{document}
\begin{center}
\psset{nodesep=3pt}
\SpecialCoor
\begin{pspicture}(-1.5,0)(11.5,0)
\psaxes[yAxis=false,labels=none,ticksize=-2pt 2pt](0,0)(-1.5,0)(11.5,0)
%On place les termes de la suite, les points qui les représentent et les nœuds%
\multido{\n=0+1}{5}{%
\uput[d](! 1 neg \n \space 3 mul add 0.3 neg){{$\scriptstyle{u_{\n}}$}}
\uput[u](! 1 neg \n \space 3 mul add 0){\rnode{\n}{$\scriptstyle{M_{\n}}$}}
\psline(! 1 neg \n \space 3 mul add 0.1 neg)(! 1 neg \n \space 3 mul add 0.1)}
%On indique les valeurs des termes de la suite%
\multido{\n=-1+3}{5}{\uput[d](\n,0){$\color{red}\scriptstyle{\n}$}}
%Les arcs pour faire apparaître la raison%
\multido{\nA=0+1,\nB=1+1}{4}{\nccurve[angleA=45,angleB=135]{->}{\nA}{\nB}\naput{$\scriptstyle{r}$}}
%Le repère de la droite%
\psline[linecolor=red,linewidth=1pt]{->}(0,0)(1,0)
\uput[d](0,0){$\color{red}\scriptstyle{O}$}
\end{pspicture}
\end{center}
\end{document}

Quelques mots d'explication :
  • \SpecialCoor sert à écrire les coordonnées des points directement en PostScript, ce qui permet de faire des calculs sur ces coordonnées ; du coup, dans le premier multido, les coordonnées sont calculées en RPN (la notation polonaise inversée : je ne sais pas si on peut faire plus simple, avec algebraic=true, par exemple, je n'ai pas réussi). J'ai placé les nœuds aux points d'abscisses 3n-1.
  • Le deuxième multido, rien à dire.
  • Le troisième reprend ton idée de relier les nœuds en utilisant deux variables ; mais attention, les variables autorisées dans un multido ne sont pas quelconque : la première lettre indique leur type, mais aucun type ne commence par la lettre m, d'où le problème que tu as rencontré.
  • J'ai modifié les unités, mais dans ton code initial, en allant de -0.5 à 4.5, tu aurais certainement eu du mal à représenter 11...
  • Toujours dans le code initial, la ligne permettant de représenter en rouge le vecteur unité apparaît deux fois : au début et à la fin.
En espérant avoir fait avancer le problème.

Djib
djiblamb
Hecto-utilisateur
 
Messages: 87
Inscription: Samedi 27 Septembre 2008, 09:58
Statut actuel: Actif et salarié | Enseignant

Re: Code PSTricks avec \multido

Messagepar Fabrice Couvreur » Vendredi 23 Décembre 2011, 01:31

Bonsoir,
@djiblamb
J'apprends beaucoup de tes explications toujours très claires.
J'ai modifié le code que tu proposes car l'idée de l'exercice est de calculer u(3). Donc, il ne faut pas indiquer toutes les valeurs, mais seulement 5 et 11. De plus, il ne faudrait pas graduer régulièrement, mais plutôt tous les trois pas (r=3).
Code: Tout sélectionner
\psset{nodesep=3pt}
\SpecialCoor
\begin{pspicture}(-1.5,-0.5)(11.5,1.25)
\psaxes[yAxis=false,labels=none,ticksize=-2pt 2pt](0,0)(-1.5,0)(11.5,0)
%On place les termes de la suite, les points qui les représentent et les nœuds%
\multido{\n=0+1}{5}{%
\uput[d](! 1 neg \n \space 3 mul add 0.3 neg){{$\scriptstyle{u_{\n}}$}}
\uput[u](! 1 neg \n \space 3 mul add 0){\rnode{\n}{$\scriptstyle{M_{\n}}$}}
\psline(! 1 neg \n \space 3 mul add 0.1 neg)(! 1 neg \n \space 3 mul add 0.1)}
%Les arcs pour faire apparaître la raison%
\multido{\nA=0+1,\nB=1+1}{4}{\nccurve[angleA=45,angleB=135]{->}{\nA}{\nB}\naput{$\scriptstyle{r}$}}
%Le repère de la droite%
\psline[linecolor=red,linewidth=1pt]{->}(0,0)(1,0)
\uput[d](0,0){$\color{red}\scriptstyle{O}$}
\uput[d](0.5,0){$\color{red}\scriptstyle{\vv{i}}$}
%On indique les valeurs de deux termes de la suite%
\uput[d](5,0){$\color{red}\scriptstyle{5}$}
\uput[d](11,0){$\color{red}\scriptstyle{11}$}
\end{pspicture}

Merci.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 594
Inscription: Samedi 18 Août 2007, 00:55

Re: Code PSTricks avec \multido

Messagepar GMaths » Vendredi 23 Décembre 2011, 10:09

Bonjour,

D'un point de vue mathématique : ne vaudrait-il pas mieux... mettre les flèches entre les u_n plutôt que les M_n ? Ne faudrait-il pas écrire "+r", plutôt que "r" ? :roll:
Simple remarque pour tendre vers une figure parfaite. ;-)

----

Merci de me donner sans cesse des idées pour alimenter la galerie ! ;-)
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Code PSTricks avec \multido

Messagepar kojak » Vendredi 23 Décembre 2011, 16:49

GMaths a écrit:D'un point de vue mathématique : ne vaudrait-il pas mieux... mettre les flèches entre les u_n plutôt que les M_n ? Ne faudrait-il pas écrire "+r", plutôt que "r" ? :roll:
Simple remarque pour tendre vers une figure parfaite. ;-)
Parfaitement d'accord avec cette remarque :wink:
pas d'aide par MP
kojak
Modérateur
 
Messages: 10309
Inscription: Samedi 18 Novembre 2006, 19:50
Statut actuel: Actif et salarié | Enseignant

Re: Code PSTricks avec \multido

Messagepar Fabrice Couvreur » Vendredi 23 Décembre 2011, 17:49

Bonjour,
Oui, c'est vrai.
Code: Tout sélectionner
\psset{nodesep=3pt}
\SpecialCoor
\begin{pspicture}(-1.5,-1.5)(11.5,1.25)
\psaxes[yAxis=false,labels=none,ticksize=0pt](0,0)(-1.5,0)(11.5,0)
%On place les termes de la suite, les points qui les représentent et les nœuds%
\multido{\n=0+1}{5}{%
\uput[d](! 1 neg \n \space 3 mul add 0.3 neg){\rnode{\n}{$\scriptstyle{u_{\n}}$}}
\uput[u](! 1 neg \n \space 3 mul add 0){{$\scriptstyle{M_{\n}}$}}
\psline(! 1 neg \n \space 3 mul add 0.1 neg)(! 1 neg \n \space 3 mul add 0.1)}
%Les arcs pour faire apparaître la raison%
\multido{\nA=0+1,\nB=1+1}{4}{\nccurve[angleA=-45,angleB=-135]{->}{\nA}{\nB}\nbput{$\scriptstyle{+\;r}$}}
%Le repère de la droite%
\psline[linecolor=red,linewidth=1pt]{->}(0,0)(1,0)
\uput[d](0,0){$\color{red}\scriptstyle{O}$}
\uput[d](0.5,0){$\color{red}\scriptstyle{\vv{i}}$}
\psline[linecolor=red,linewidth=1pt](0,-2pt)(0,2pt)
%On indique les valeurs de deux termes de la suite%
\uput[d](5,0){$\color{red}\scriptstyle{5}$}
\uput[d](11,0){$\color{red}\scriptstyle{11}$}
\end{pspicture}
Fabrice Couvreur
Giga-utilisateur
 
Messages: 594
Inscription: Samedi 18 Août 2007, 00:55


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot], Google Adsense [Bot] et 13 invités

cron