IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tableaux - Graphiques - Images - Flottants Discussion :

[tikz] tracer une portion de courbe


Sujet :

Tableaux - Graphiques - Images - Flottants

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut [tikz] tracer une portion de courbe
    Bonjour,

    je trace des figures dans l'environnement "tikz" depuis environ 1an, je me considère débutant. A l'aide de Google, j'ai toujours trouvé une solution à un problème, mais là il sèche ! Je galère.
    A l'aide de "tikz" je souhaite retracer la figure ci-dessous.
    Nom : CycleTs.png
Affichages : 2581
Taille : 104,1 Ko

    Pour l'instant je n'arrive à la tracer que partiellement à l'aide du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    \documentclass[10pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
     
    \usepackage{tikz}
    \usetikzlibrary{intersections}
     
    \mathversion{bold}
     
    \begin{document}
    \begin{tikzpicture}
     
    \coordinate (A) at (1,0.5);
    \coordinate (B) at (1.1,5);
    \coordinate (C) at (3,5);
    \coordinate (D) at (4.2,3.4);
    \coordinate (E) at (5.64,1.48);
    \coordinate (F) at (7,0.5);
     
     
    \draw[->, -latex] (0,0)--(8,0) node[below]{$s (kJ.K^{-1}.kg^{-1})$};
    \draw[->, -latex] (0,0)--(0,6) node[left]{$T (K)$};;
     
    \node[draw, circle, inner sep=2pt] at (0.5,2.5){$L$};
    \node[draw, circle, inner sep=2pt] at (6.5,2.5){$V$};
    \node[draw, circle, inner sep=2pt] at (2.4,0.6){$L$};
    \node at (3,0.6){$+$};
    \node[draw, circle, inner sep=2pt] at (3.6,0.6){$V$};
     
    \draw[line width=1pt, dashed, name path=courbe] (A) ..controls (B) and (C) .. (D) node[pos=.1] (P){}  node[pos=.5] (Q) {} ..controls (E) .. (F)  ;
    \draw[name path=DroiteUne] (-0.2,3.5)node[left]{$T_1$}--++(7,0);
    \draw[name path=DroiteDeux] (-0.2,1.5)node[left]{$T_2$}--++(7,0);
     
    \path[name intersections={of=courbe and DroiteUne}];
    \coordinate (LUn)  at (intersection-1);
    \coordinate (I)  at (intersection-2);
     
    \path[name intersections={of=courbe and DroiteDeux}];
    \coordinate (LDeux)  at (intersection-1);
    \coordinate (G)  at (intersection-2);
     
    \draw[line width=1.5pt, red] (LUn) --(I) node[pos=.5]{$<$};
     
    \draw[line width=1.5pt, red, name path=DroiteTrois] (I) --++(0,-2) node[pos=.5, rotate=90]{$<$};
    \path[name intersections={of=DroiteDeux and DroiteTrois}];
    \coordinate (Finter)  at (intersection-1);
     
    \draw[line width=1.5pt, red] (Finter) --(LDeux) node[pos=.5]{$>$};
     
    \fill[gray] (LUn) circle (1mm) node[below right, black]{$L_1$};
    \fill[gray] (I) circle (1mm) node[below left, black]{$I$};
    \fill[gray] (LDeux) circle (1mm) node[below right, black]{$L_2$};
    \fill[gray] (Finter) circle (1mm) node[below, black]{$F$};
    \fill[gray] (G) circle (1mm);
     
    \end{tikzpicture}
     
    \end{document}
    ce qui donne :
    Nom : figure.PNG
Affichages : 2687
Taille : 12,3 Ko

    mes problèmes sont les suivants :
    - comment tracer en rouge la partie de la courbe se trouvant entre L1 et L2 ?
    - comment trouver le maximum de la courbe afin de placer le point C, comme cela est fait sur le modèle joint ?

    Merci d'avoir pris le temps de lire mon message, en espérant que vous ayez la solution.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 344
    Points : 561
    Points
    561
    Par défaut
    Bonjour,

    pour tracer la portion de courbe, il y a bien une solution avec l'option domain de Tikz mais pour ça il faudrait connaitre l'équation la courbe et demander à Tikz de tracer la courbe directement, sans passer par des points prédéfinis. Je t'invite à regarder à partir de la page 55 du PDF « Tikz pour l'impatient » disponible sur internet.

    Après pour trouver le sommet de la courbe, instinctivement je ferai le calcul de la dérivée à la main. J'ignore si Tikz sait faire ça. Par contre si tu passes par Gnuplot, y'a peut être moyen d'automatiser un petit peu la démarche.
    La FAQ apporte souvent la solution aux problèmes
    Avant de demander de l'aide, pensez à faire un ECM ! Un problème bien expliqué est un problème à moitié résolu .

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Benoists Voir le message
    Bonjour,

    pour tracer la portion de courbe, il y a bien une solution avec l'option domain de Tikz mais pour ça il faudrait connaitre l'équation la courbe et demander à Tikz de tracer la courbe directement, sans passer par des points prédéfinis. Je t'invite à regarder à partir de la page 55 du PDF « Tikz pour l'impatient » disponible sur internet.

    Après pour trouver le sommet de la courbe, instinctivement je ferai le calcul de la dérivée à la main. J'ignore si Tikz sait faire ça. Par contre si tu passes par Gnuplot, y'a peut être moyen d'automatiser un petit peu la démarche.
    Le problème est que je n'ai pas la fonction mathématique de la courbe. J'arrête de me prendre la tête, j'ai trouvé une solution mais c'est de la bidouille : je recrée une nouvelle courbe qui se superpose au mieux à celle qui est en pointillé.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    \documentclass[10pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
     
    \usepackage{tikz}
    \usetikzlibrary{decorations.markings,decorations.pathmorphing,decorations.pathreplacing,decorations.text}
    \usetikzlibrary{intersections}
     
     
    \mathversion{bold}
     
    \begin{document}
    \begin{tikzpicture}
    % Définition du style "flèche" mettant une flèche au milieu du trait tracé ;
    		 % #1 = position (ici, #1=0.5 pour le milieu) et #2 = couleur. Le scale=2 est pour voir un peu mieux la flèche ; à changer selon les besoins
    \tikzset{fleche/.style args={#1:#2}{ postaction = decorate,decoration={name=markings,mark=at position #1 with {\arrow[#2,scale=2]{>}}}}}
     
    \coordinate (A) at (0.5,0.5);
    \coordinate (B) at (2.5,2.6);
    \coordinate (C) at (3.2,5.5);
    \coordinate (D) at (4.6,3.2);
    \coordinate (E) at (5.72,1.36);
    \coordinate (F) at (7,0.5);
     
     
    \draw[->, -latex] (0,0)--(8,0) node[below]{$s (kJ.K^{-1}.kg^{-1})$};
    \draw[->, -latex] (0,0)--(0,5) node[left]{$T (K)$};;
     
    \node[draw, circle, inner sep=2pt] at (0.5,2.5){$L$};
    \node[draw, circle, inner sep=2pt] at (6.5,2.5){$V$};
    \node[draw, circle, inner sep=2pt] at (2.4,0.6){$L$};
    \node at (3,0.6){$+$};
    \node[draw, circle, inner sep=2pt] at (3.6,0.6){$V$};
     
    \draw[line width=1pt, dashed, name path=courbe] (A) ..controls (B) and (C) .. (D) node[pos=.1] (P){}  node[pos=.5] (Q) {} ..controls (E) .. (F)  ;
    \draw[name path=DroiteUne] (-0.2,3.5)node[left]{$T_1$}--++(7,0);
    \draw[name path=DroiteDeux] (-0.2,1.5)node[left]{$T_2$}--++(7,0);
     
    \path[name intersections={of=courbe and DroiteUne}];
    \coordinate (LUn)  at (intersection-1);
    \coordinate (I)  at (intersection-2);
     
    \path[name intersections={of=courbe and DroiteDeux}];
    \coordinate (LDeux)  at (intersection-1);
    \coordinate (G)  at (intersection-2);
     
    \draw[fleche=0.5:red,line width=1.5pt, red] (I) --(LUn);
     
    \draw[fleche=0.5:red,line width=1.5pt, red, name path=DroiteTrois] (I) --++(0,-2);
    \path[name intersections={of=DroiteDeux and DroiteTrois}];
    \coordinate (Finter)  at (intersection-1);
     
    \draw[fleche=0.5:red,line width=1.5pt, red] (LUn) to[in=53, out=-129] (LDeux);
     
    \draw[fleche=0.5:red,line width=1.5pt, red] (LDeux)--(Finter);
     
     
    \fill[gray] (LUn) circle (1mm) node[below right, black]{$L_1$};
    \fill[gray] (I) circle (1mm) node[below left, black]{$I$};
    \fill[gray] (LDeux) circle (1mm) node[below right, black]{$L_2$};
    \fill[gray] (Finter) circle (1mm) node[below, black]{$F$};
    \fill[gray] (G) circle (1mm);
    \fill[gray] (3.6,4.04) circle (1mm) node[above, black]{$C$};
     
    \end{tikzpicture}
    \end{document}
    ce qui donne :
    Nom : figure2.PNG
Affichages : 2384
Taille : 10,4 Ko

    Merci quand même. Cela dit si quelqu'un a la solution sans passer par de la bidouille, je suis preneur.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par herveb22 Voir le message
    Cela dit si quelqu'un a la solution sans passer par de la bidouille, je suis preneur.
    Bonjour,
    il suffit d'effacer la courbe entre les deux points (LDeux) et (LUn) en construisant un rectangle de diagonale (LUn)--(LDeux) rempli de la couleur de fond blanche.

    Ligne 44 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \filldraw[white] (LDeux) rectangle (LUn);
    Puis de tracer la courbe de couleur rouge dans un environnement scope limité à ce même rectangle avec \clip .

    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    \documentclass[10pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
     
    \usepackage{tikz}
    \usetikzlibrary{intersections}
     
    \mathversion{bold}
     
    \begin{document}
    \begin{tikzpicture}
     
    \coordinate (A) at (1,0.5);
    \coordinate (B) at (1.1,5);
    \coordinate (C) at (3,5);
    \coordinate (D) at (4.2,3.4);
    \coordinate (E) at (5.64,1.48);
    \coordinate (F) at (7,0.5);
     
     
    \draw[->, -latex] (0,0)--(8,0) node[below]{$s (kJ.K^{-1}.kg^{-1})$};
    \draw[->, -latex] (0,0)--(0,6) node[left]{$T (K)$};;
     
    \node[draw, circle, inner sep=2pt] at (0.5,2.5){$L$};
    \node[draw, circle, inner sep=2pt] at (6.5,2.5){$V$};
    \node[draw, circle, inner sep=2pt] at (2.4,0.6){$L$};
    \node at (3,0.6){$+$};
    \node[draw, circle, inner sep=2pt] at (3.6,0.6){$V$};
     
    \draw[line width=1pt, dashed, name path=courbe] (A) ..controls (B) and (C) .. (D) node[pos=.1] (P){}  node[pos=.5] (Q) {} ..controls (E) .. (F)  ;
     
    \draw[name path=DroiteUne] (-0.2,3.5)node[left]{$T_1$}--++(7,0);
    \draw[name path=DroiteDeux] (-0.2,1.5)node[left]{$T_2$}--++(7,0);
     
    \path[name intersections={of=courbe and DroiteUne}];
    \coordinate (LUn)  at (intersection-1);
    \coordinate (I)  at (intersection-2);
     
    \path[name intersections={of=courbe and DroiteDeux}];
    \coordinate (LDeux)  at (intersection-1);
    \coordinate (G)  at (intersection-2);
     \filldraw[white] (LDeux) rectangle (LUn);
     
    \draw[line width=1.5pt, red] (LUn) --(I) node[pos=.5]{$<$};
     
    \draw[line width=1.5pt, red, name path=DroiteTrois] (I) --++(0,-2) node[pos=.5, rotate=90]{$<$};
    \path[name intersections={of=DroiteDeux and DroiteTrois}];
    \coordinate (Finter)  at (intersection-1);
     
    \draw[line width=1.5pt, red] (Finter) --(LDeux) node[pos=.5]{$>$};
     
    \fill[gray] (LUn) circle (1mm) node[below right, black]{$L_1$};
    \fill[gray] (I) circle (1mm) node[below left, black]{$I$};
    \fill[gray] (LDeux) circle (1mm) node[below right, black]{$L_2$};
    \fill[gray] (Finter) circle (1mm) node[below, black]{$F$};
    \fill[gray] (G) circle (1mm);
     
     \begin{scope}
     \clip (LDeux) rectangle (LUn);
     \draw(-0.2,3.5)--(LUn);
     \draw[red,line width=1pt, name path=courbe] (A) ..controls (B) and (C) .. (D) node[pos=.1] (P){}  node[pos=.5] (Q) {} ..controls (E) .. (F)  ;
     \end{scope}
     
    \end{tikzpicture}
     
    \end{document}
    Dernière modification par Invité ; 01/11/2016 à 15h42.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Quant à la recherche du maximum :
    comme la compilation plante si l'intersection de deux courbes est vide, je ferai une boucle de recherche du style foreach qui chercherait l'intersection entre une droite verticale (parallèle à l'axe des ordonnées) et la portion de courbe où s'effectue la recherche.

    On définit au départ le maximum comme étant l'ordonnée du premier point de la courbe, puis à chaque incrément il suffit de tester si l'ordonnée du nouveau point d'intersection est supérieure au maximum déjà trouvé.
    A la fin de la boucle, il suffit de récupérer les coordonnées du point maximum.
    Dernière modification par Invité ; 01/11/2016 à 13h00.

  6. #6
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Bonjour,

    N'hésitez pas à regarder visualtikz sur le CTAN.
    C'est un condensé de la doc tikz en français qui je trouve est bien fait.
    Peut-être y trouverez vous une aide.
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

Discussions similaires

  1. [Débutant] Calcul d'intégral d'une portion de courbe
    Par Kratein dans le forum MATLAB
    Réponses: 3
    Dernier message: 29/04/2016, 08h59
  2. Réponses: 2
    Dernier message: 29/10/2014, 15h03
  3. Réponses: 5
    Dernier message: 29/09/2014, 23h08
  4. Colorier une portion de courbe
    Par breeder dans le forum MATLAB
    Réponses: 4
    Dernier message: 11/12/2007, 21h32
  5. Réponses: 2
    Dernier message: 04/04/2007, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo