Tikz and Secant Line diagram











up vote
5
down vote

favorite
1












Hi I am looking for feedback to improve an existing program PLUS advice for a desired diagram in the same direction.



Here is my minimal example:



documentclass{article}
usepackage{tikz}
usetikzlibrary{decorations.pathreplacing}

begin{document}
begin{center}
begin{tikzpicture}[scale=1.75,cap=round]
tikzset{axes/.style={}}
%draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
% The graphic
begin{scope}[style=axes]
draw[->] (-.5,0) -- (4.5,0) node[below] {$x$};
draw[->] (0,-.5)-- (0,3) node[left] {$y$};
foreach x/xtext in {1.5/x_{1}, 3/x_{2}}
draw[xshift=x cm] (0pt,2pt) -- (0pt,-2pt)
node[below,fill=white,font=normalsize]
{$xtext$};
foreach y/ytext in {1/y_{1}=f(x_{1}), 2.125/y_{1}=f(x_{2})}
draw[yshift=y cm] (2pt,0pt) -- (-2pt,0pt)
node[left,fill=white,font=normalsize]
{$ytext$};
%%%
draw[domain=.5:3.25,smooth,variable=x,red,<->,thick] plot ({x},{.5*(x-1.5)*(x-1.5)+1});
%%%
filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
draw[thick,blue!50,shorten >=-.5cm,shorten <=-.5cm] (1.5,1)--(3,2.125)
node[midway,left] {scriptsize Secant Line};
%%%
draw[blue!50,thick,dashed] (1.5,1)--(3,1)--(3,2.125);
draw[blue!50] (3,1.1)--(2.9,1.1)--(2.9,1);
draw[decoration={brace,mirror,raise=5pt},decorate,blue!50]
(1.5,-.250) -- node[below=6pt] {$x_{2}-x_{1}$} (3,-.250);
draw[decoration={brace,mirror, raise=5pt},decorate,blue!50]
(3,1) -- node[right=6pt] {$f(x_{2})-f(x_{1})$} (3,2.215);
%%%
filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
end{scope}
end{tikzpicture}
end{center}
end{document}


This will Output



enter image description here



I am trying to go here with the picture:



enter image description here



This is a bit beyond my programming skills I think ? PLease all suggestions welcome










share|improve this question


























    up vote
    5
    down vote

    favorite
    1












    Hi I am looking for feedback to improve an existing program PLUS advice for a desired diagram in the same direction.



    Here is my minimal example:



    documentclass{article}
    usepackage{tikz}
    usetikzlibrary{decorations.pathreplacing}

    begin{document}
    begin{center}
    begin{tikzpicture}[scale=1.75,cap=round]
    tikzset{axes/.style={}}
    %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
    % The graphic
    begin{scope}[style=axes]
    draw[->] (-.5,0) -- (4.5,0) node[below] {$x$};
    draw[->] (0,-.5)-- (0,3) node[left] {$y$};
    foreach x/xtext in {1.5/x_{1}, 3/x_{2}}
    draw[xshift=x cm] (0pt,2pt) -- (0pt,-2pt)
    node[below,fill=white,font=normalsize]
    {$xtext$};
    foreach y/ytext in {1/y_{1}=f(x_{1}), 2.125/y_{1}=f(x_{2})}
    draw[yshift=y cm] (2pt,0pt) -- (-2pt,0pt)
    node[left,fill=white,font=normalsize]
    {$ytext$};
    %%%
    draw[domain=.5:3.25,smooth,variable=x,red,<->,thick] plot ({x},{.5*(x-1.5)*(x-1.5)+1});
    %%%
    filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
    filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
    draw[thick,blue!50,shorten >=-.5cm,shorten <=-.5cm] (1.5,1)--(3,2.125)
    node[midway,left] {scriptsize Secant Line};
    %%%
    draw[blue!50,thick,dashed] (1.5,1)--(3,1)--(3,2.125);
    draw[blue!50] (3,1.1)--(2.9,1.1)--(2.9,1);
    draw[decoration={brace,mirror,raise=5pt},decorate,blue!50]
    (1.5,-.250) -- node[below=6pt] {$x_{2}-x_{1}$} (3,-.250);
    draw[decoration={brace,mirror, raise=5pt},decorate,blue!50]
    (3,1) -- node[right=6pt] {$f(x_{2})-f(x_{1})$} (3,2.215);
    %%%
    filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
    filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
    end{scope}
    end{tikzpicture}
    end{center}
    end{document}


    This will Output



    enter image description here



    I am trying to go here with the picture:



    enter image description here



    This is a bit beyond my programming skills I think ? PLease all suggestions welcome










    share|improve this question
























      up vote
      5
      down vote

      favorite
      1









      up vote
      5
      down vote

      favorite
      1






      1





      Hi I am looking for feedback to improve an existing program PLUS advice for a desired diagram in the same direction.



      Here is my minimal example:



      documentclass{article}
      usepackage{tikz}
      usetikzlibrary{decorations.pathreplacing}

      begin{document}
      begin{center}
      begin{tikzpicture}[scale=1.75,cap=round]
      tikzset{axes/.style={}}
      %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
      % The graphic
      begin{scope}[style=axes]
      draw[->] (-.5,0) -- (4.5,0) node[below] {$x$};
      draw[->] (0,-.5)-- (0,3) node[left] {$y$};
      foreach x/xtext in {1.5/x_{1}, 3/x_{2}}
      draw[xshift=x cm] (0pt,2pt) -- (0pt,-2pt)
      node[below,fill=white,font=normalsize]
      {$xtext$};
      foreach y/ytext in {1/y_{1}=f(x_{1}), 2.125/y_{1}=f(x_{2})}
      draw[yshift=y cm] (2pt,0pt) -- (-2pt,0pt)
      node[left,fill=white,font=normalsize]
      {$ytext$};
      %%%
      draw[domain=.5:3.25,smooth,variable=x,red,<->,thick] plot ({x},{.5*(x-1.5)*(x-1.5)+1});
      %%%
      filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
      filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
      draw[thick,blue!50,shorten >=-.5cm,shorten <=-.5cm] (1.5,1)--(3,2.125)
      node[midway,left] {scriptsize Secant Line};
      %%%
      draw[blue!50,thick,dashed] (1.5,1)--(3,1)--(3,2.125);
      draw[blue!50] (3,1.1)--(2.9,1.1)--(2.9,1);
      draw[decoration={brace,mirror,raise=5pt},decorate,blue!50]
      (1.5,-.250) -- node[below=6pt] {$x_{2}-x_{1}$} (3,-.250);
      draw[decoration={brace,mirror, raise=5pt},decorate,blue!50]
      (3,1) -- node[right=6pt] {$f(x_{2})-f(x_{1})$} (3,2.215);
      %%%
      filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
      filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
      end{scope}
      end{tikzpicture}
      end{center}
      end{document}


      This will Output



      enter image description here



      I am trying to go here with the picture:



      enter image description here



      This is a bit beyond my programming skills I think ? PLease all suggestions welcome










      share|improve this question













      Hi I am looking for feedback to improve an existing program PLUS advice for a desired diagram in the same direction.



      Here is my minimal example:



      documentclass{article}
      usepackage{tikz}
      usetikzlibrary{decorations.pathreplacing}

      begin{document}
      begin{center}
      begin{tikzpicture}[scale=1.75,cap=round]
      tikzset{axes/.style={}}
      %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
      % The graphic
      begin{scope}[style=axes]
      draw[->] (-.5,0) -- (4.5,0) node[below] {$x$};
      draw[->] (0,-.5)-- (0,3) node[left] {$y$};
      foreach x/xtext in {1.5/x_{1}, 3/x_{2}}
      draw[xshift=x cm] (0pt,2pt) -- (0pt,-2pt)
      node[below,fill=white,font=normalsize]
      {$xtext$};
      foreach y/ytext in {1/y_{1}=f(x_{1}), 2.125/y_{1}=f(x_{2})}
      draw[yshift=y cm] (2pt,0pt) -- (-2pt,0pt)
      node[left,fill=white,font=normalsize]
      {$ytext$};
      %%%
      draw[domain=.5:3.25,smooth,variable=x,red,<->,thick] plot ({x},{.5*(x-1.5)*(x-1.5)+1});
      %%%
      filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
      filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
      draw[thick,blue!50,shorten >=-.5cm,shorten <=-.5cm] (1.5,1)--(3,2.125)
      node[midway,left] {scriptsize Secant Line};
      %%%
      draw[blue!50,thick,dashed] (1.5,1)--(3,1)--(3,2.125);
      draw[blue!50] (3,1.1)--(2.9,1.1)--(2.9,1);
      draw[decoration={brace,mirror,raise=5pt},decorate,blue!50]
      (1.5,-.250) -- node[below=6pt] {$x_{2}-x_{1}$} (3,-.250);
      draw[decoration={brace,mirror, raise=5pt},decorate,blue!50]
      (3,1) -- node[right=6pt] {$f(x_{2})-f(x_{1})$} (3,2.215);
      %%%
      filldraw[black] (1.5,1) circle (1pt) node[above] {scriptsize $P$};
      filldraw[black] (3,2.125) circle (1pt) node[left] {scriptsize $Q$};
      end{scope}
      end{tikzpicture}
      end{center}
      end{document}


      This will Output



      enter image description here



      I am trying to go here with the picture:



      enter image description here



      This is a bit beyond my programming skills I think ? PLease all suggestions welcome







      tikz-pgf tikz-arrows






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 days ago









      MathScholar

      3428




      3428






















          3 Answers
          3






          active

          oldest

          votes

















          up vote
          7
          down vote



          accepted










          With decorations.markings you can mark coordinates along the path, which then allow you to draw tangents. Note that drawing tangents has already been discussed at length in this nice answer, and I am implicitly using the same approach. However, my code is an attempt to have a unified treatment of both of your requests, i.e. tangent and secants, so at first sight it looks quite different.



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{decorations.pathreplacing,decorations.markings,calc,arrows.meta,bending}

          begin{document}
          begin{tikzpicture}[scale=2.5,cap=round,mark pos/.style args={#1/#2}{%
          postaction={decorate,decoration={markings,%
          mark=at position #1 with {
          coordinate (#2);}}}}]
          tikzset{axes/.style={}}
          %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
          % The graphic
          begin{scope}[style=axes]
          %%%
          pgfmathsetmacro{posP}{0.38}
          draw[red,{Latex[bend]}-{Latex[bend]},thick,mark
          pos/.list={posP-0.005/p-0,posP/P,posP+0.005/p-2,0.5/q-4,0.62/q-3,0.74/q-2,0.86/q-1}] plot[domain=.5:3.25,samples=101,variable=x] ({x},{.5*(x-1.5)*(x-1.5)+1});
          draw[red] let p1=($(p-2)-(p-0)$),n1={(y1/x1)*(1cm/1pt)}
          in ($(P)-1*(1,n1)$) -- ($(P)+2*(1,n1)$) node[right,anchor=north
          west,font=scriptsize,text width=1cm]{slope $m$ $=$ instaneous rate dots};
          fill (P) circle (1pt) node[above,font=scriptsize] {$P$};
          foreach X in {1,...,4}
          {fill (q-X) circle (1pt) node[below right,font=scriptsize] {$Q_X$};
          path (P) -- (q-X) coordinate[pos=-0.5] (L-X) coordinate[pos={1.2+X*0.3}] (R-X);
          draw[cyan,dashed] (L-X) -- (R-X) node[right,font=scriptsize] (mX) {slope $m_X$}; }
          draw[line width=2mm,-{Latex[bend]},red!20] ($(m1)+(0.5,0.1)$)
          to[out=-90,in=65] ++ (-0.2,-1.2);
          %%%
          %%%
          end{scope}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer























          • No Marmot, you can take them out. I am reviewing the out put . It is hard to read since the points are cluttered but feel free to change these. There is no hurry. I also would not know how to make the red arrow indicating the secants approach the tangent.
            – MathScholar
            2 days ago












          • In short, make as many changes to the original as you require
            – MathScholar
            2 days ago






          • 2




            @MathScholar Well, I could do that, but this would require me knowing what the target output is. Plus I do not know what " I also would not know how to make the red arrow indicating the secants approach the tangent" means. (Remember, I am just a simple marmot. ;-)
            – marmot
            2 days ago










          • the target output is exactly the image(picture) above. I just provided a minimal example which I thought could lead there. Your welcome to change as much as you need I appreciate you contribution.
            – MathScholar
            2 days ago










          • @MathScholar Is that closer now?
            – marmot
            2 days ago


















          up vote
          7
          down vote













          I refactored the yesterday answer and added some new features.



          documentclass[pstricks,border=12pt,12pt]{standalone}
          usepackage{pstricks-add,pst-eucl}


          deff(#1){((#1+3)/3+sin(#1+3))}
          deffp(#1){Derive(1,f(#1))}
          psset{unit=2}

          begin{document}
          multido{r=2.0+-.1}{19}{%
          begin{pspicture}[algebraic](-1.6,-.6)(4.4,3.4)
          psaxes[ticks=none,labels=none]{->}(0,0)(-1.6,-.6)(4.1,3.1)[$x$,0][$y$,90]
          psplot[linecolor=red,linewidth=2pt]{-1}{3.9}{f(x)}
          %
          psplotTangent[linecolor=blue]{1.6}{1}{f(x)}
          psplotTangent[linecolor=cyan,Derive={-1/fp(x)}]{1.6}{.5}{f(x)}
          %
          pstGeonode[PosAngle={135,90}]
          (*1.6 {f(x)}){A}
          (*{1.6 rspace add} {f(x)}){B}
          pstGeonode[PosAngle={-120,-60},PointName={x_1,x_2},PointNameSep=8pt]
          (A|0,0){x1}
          (B|0,0){x2}
          pstGeonode[PosAngle={210,150},PointName={f(x_1),f(x_2)},PointNameSep=20pt]
          (0,0|A){fx1}
          (0,0|B){fx2}
          pcline[nodesep=-.5,linecolor=green](A)(B)
          %
          psset{linestyle=dashed}
          psCoordinates(A)
          psCoordinates(B)
          %
          psset{linecolor=gray,linestyle=dashed,labelsep=4pt,arrows=|*-|*,offset=-16pt}
          pcline(x1)(x2)
          nbput{$x_2-x_1$}
          pcline(fx2)(fx1)
          nbput{$f(x_2)-f(x_1)$}
          end{pspicture}}
          end{document}


          enter image description here



          Secant, tangent, and normal lines are given free of charge!






          share|improve this answer























          • Hey I like it but need the program in Tikz. Thanks for sharing
            – MathScholar
            2 days ago










          • I can show the tangent but this space is too narrow to contain.
            – Artificial Stupidity
            2 days ago












          • You can change the original program to allow for your space. Any response is appreciated
            – MathScholar
            2 days ago










          • Nice animation (+1)
            – marmot
            2 days ago










          • I really like this animation and will try this tomorrow with TiKz
            – MathScholar
            2 days ago


















          up vote
          2
          down vote













          I see that @marmot has already given you the solution. This is just another way of doing it. Just an attempt to do it without using any extra libraries.



          enter image description here



          documentclass[border=1cm]{standalone}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}[declare function={func(y) = 0.1*(y-5)*(y-5)+1;}]
          draw[domain=2:15,smooth,variable=x,thick] plot ({x},{func(x)});
          draw[fill] (6.4,{func(6.4)})node[below]{p}circle (2pt)coordinate(p);
          foreach[count=i] x in {8.0,9.6,...,14.4}{
          draw[fill] (x,{0.1*(x-5)*(x-5)+1})node[below]{Q$_i$} circle (2pt)coordinate(Qi);
          draw[thick,blue!80,dashed,shorten >=-2cm,shorten <=-2cm] (p) -- (Qi)node[right=0.7cm](mi){slope m$_i$};
          }
          draw[thick,red!70,shorten >=-9cm,shorten <=-4cm] (p) -- (6.401,{func(6.401)});
          draw[-latex,line width=4mm,red!20] (m4.south east) to[out=-100, in=25] (m2.south east)node[below,anchor=north west,red]{slope $m=ldots$};
          end{tikzpicture}
          end{document}





          share|improve this answer























          • Yes, this looks very good to me! (One reason why I did not go that way is that one may not necessarily plot a known function, but just draw some curve by other means, e.g. with to[out=...,in=...] or .. (...) and (...) ... But as long as you do not go that way, this a very nice and compact way of achieving this.)
            – marmot
            2 days ago










          • Thanks @marmot . I got your point.
            – nidhin
            2 days ago










          • @nidhin Thank you for this. The program has its own merits as well. Thanks for sharing
            – MathScholar
            2 days ago











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "85"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460632%2ftikz-and-secant-line-diagram%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          3 Answers
          3






          active

          oldest

          votes








          3 Answers
          3






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          7
          down vote



          accepted










          With decorations.markings you can mark coordinates along the path, which then allow you to draw tangents. Note that drawing tangents has already been discussed at length in this nice answer, and I am implicitly using the same approach. However, my code is an attempt to have a unified treatment of both of your requests, i.e. tangent and secants, so at first sight it looks quite different.



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{decorations.pathreplacing,decorations.markings,calc,arrows.meta,bending}

          begin{document}
          begin{tikzpicture}[scale=2.5,cap=round,mark pos/.style args={#1/#2}{%
          postaction={decorate,decoration={markings,%
          mark=at position #1 with {
          coordinate (#2);}}}}]
          tikzset{axes/.style={}}
          %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
          % The graphic
          begin{scope}[style=axes]
          %%%
          pgfmathsetmacro{posP}{0.38}
          draw[red,{Latex[bend]}-{Latex[bend]},thick,mark
          pos/.list={posP-0.005/p-0,posP/P,posP+0.005/p-2,0.5/q-4,0.62/q-3,0.74/q-2,0.86/q-1}] plot[domain=.5:3.25,samples=101,variable=x] ({x},{.5*(x-1.5)*(x-1.5)+1});
          draw[red] let p1=($(p-2)-(p-0)$),n1={(y1/x1)*(1cm/1pt)}
          in ($(P)-1*(1,n1)$) -- ($(P)+2*(1,n1)$) node[right,anchor=north
          west,font=scriptsize,text width=1cm]{slope $m$ $=$ instaneous rate dots};
          fill (P) circle (1pt) node[above,font=scriptsize] {$P$};
          foreach X in {1,...,4}
          {fill (q-X) circle (1pt) node[below right,font=scriptsize] {$Q_X$};
          path (P) -- (q-X) coordinate[pos=-0.5] (L-X) coordinate[pos={1.2+X*0.3}] (R-X);
          draw[cyan,dashed] (L-X) -- (R-X) node[right,font=scriptsize] (mX) {slope $m_X$}; }
          draw[line width=2mm,-{Latex[bend]},red!20] ($(m1)+(0.5,0.1)$)
          to[out=-90,in=65] ++ (-0.2,-1.2);
          %%%
          %%%
          end{scope}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer























          • No Marmot, you can take them out. I am reviewing the out put . It is hard to read since the points are cluttered but feel free to change these. There is no hurry. I also would not know how to make the red arrow indicating the secants approach the tangent.
            – MathScholar
            2 days ago












          • In short, make as many changes to the original as you require
            – MathScholar
            2 days ago






          • 2




            @MathScholar Well, I could do that, but this would require me knowing what the target output is. Plus I do not know what " I also would not know how to make the red arrow indicating the secants approach the tangent" means. (Remember, I am just a simple marmot. ;-)
            – marmot
            2 days ago










          • the target output is exactly the image(picture) above. I just provided a minimal example which I thought could lead there. Your welcome to change as much as you need I appreciate you contribution.
            – MathScholar
            2 days ago










          • @MathScholar Is that closer now?
            – marmot
            2 days ago















          up vote
          7
          down vote



          accepted










          With decorations.markings you can mark coordinates along the path, which then allow you to draw tangents. Note that drawing tangents has already been discussed at length in this nice answer, and I am implicitly using the same approach. However, my code is an attempt to have a unified treatment of both of your requests, i.e. tangent and secants, so at first sight it looks quite different.



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{decorations.pathreplacing,decorations.markings,calc,arrows.meta,bending}

          begin{document}
          begin{tikzpicture}[scale=2.5,cap=round,mark pos/.style args={#1/#2}{%
          postaction={decorate,decoration={markings,%
          mark=at position #1 with {
          coordinate (#2);}}}}]
          tikzset{axes/.style={}}
          %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
          % The graphic
          begin{scope}[style=axes]
          %%%
          pgfmathsetmacro{posP}{0.38}
          draw[red,{Latex[bend]}-{Latex[bend]},thick,mark
          pos/.list={posP-0.005/p-0,posP/P,posP+0.005/p-2,0.5/q-4,0.62/q-3,0.74/q-2,0.86/q-1}] plot[domain=.5:3.25,samples=101,variable=x] ({x},{.5*(x-1.5)*(x-1.5)+1});
          draw[red] let p1=($(p-2)-(p-0)$),n1={(y1/x1)*(1cm/1pt)}
          in ($(P)-1*(1,n1)$) -- ($(P)+2*(1,n1)$) node[right,anchor=north
          west,font=scriptsize,text width=1cm]{slope $m$ $=$ instaneous rate dots};
          fill (P) circle (1pt) node[above,font=scriptsize] {$P$};
          foreach X in {1,...,4}
          {fill (q-X) circle (1pt) node[below right,font=scriptsize] {$Q_X$};
          path (P) -- (q-X) coordinate[pos=-0.5] (L-X) coordinate[pos={1.2+X*0.3}] (R-X);
          draw[cyan,dashed] (L-X) -- (R-X) node[right,font=scriptsize] (mX) {slope $m_X$}; }
          draw[line width=2mm,-{Latex[bend]},red!20] ($(m1)+(0.5,0.1)$)
          to[out=-90,in=65] ++ (-0.2,-1.2);
          %%%
          %%%
          end{scope}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer























          • No Marmot, you can take them out. I am reviewing the out put . It is hard to read since the points are cluttered but feel free to change these. There is no hurry. I also would not know how to make the red arrow indicating the secants approach the tangent.
            – MathScholar
            2 days ago












          • In short, make as many changes to the original as you require
            – MathScholar
            2 days ago






          • 2




            @MathScholar Well, I could do that, but this would require me knowing what the target output is. Plus I do not know what " I also would not know how to make the red arrow indicating the secants approach the tangent" means. (Remember, I am just a simple marmot. ;-)
            – marmot
            2 days ago










          • the target output is exactly the image(picture) above. I just provided a minimal example which I thought could lead there. Your welcome to change as much as you need I appreciate you contribution.
            – MathScholar
            2 days ago










          • @MathScholar Is that closer now?
            – marmot
            2 days ago













          up vote
          7
          down vote



          accepted







          up vote
          7
          down vote



          accepted






          With decorations.markings you can mark coordinates along the path, which then allow you to draw tangents. Note that drawing tangents has already been discussed at length in this nice answer, and I am implicitly using the same approach. However, my code is an attempt to have a unified treatment of both of your requests, i.e. tangent and secants, so at first sight it looks quite different.



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{decorations.pathreplacing,decorations.markings,calc,arrows.meta,bending}

          begin{document}
          begin{tikzpicture}[scale=2.5,cap=round,mark pos/.style args={#1/#2}{%
          postaction={decorate,decoration={markings,%
          mark=at position #1 with {
          coordinate (#2);}}}}]
          tikzset{axes/.style={}}
          %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
          % The graphic
          begin{scope}[style=axes]
          %%%
          pgfmathsetmacro{posP}{0.38}
          draw[red,{Latex[bend]}-{Latex[bend]},thick,mark
          pos/.list={posP-0.005/p-0,posP/P,posP+0.005/p-2,0.5/q-4,0.62/q-3,0.74/q-2,0.86/q-1}] plot[domain=.5:3.25,samples=101,variable=x] ({x},{.5*(x-1.5)*(x-1.5)+1});
          draw[red] let p1=($(p-2)-(p-0)$),n1={(y1/x1)*(1cm/1pt)}
          in ($(P)-1*(1,n1)$) -- ($(P)+2*(1,n1)$) node[right,anchor=north
          west,font=scriptsize,text width=1cm]{slope $m$ $=$ instaneous rate dots};
          fill (P) circle (1pt) node[above,font=scriptsize] {$P$};
          foreach X in {1,...,4}
          {fill (q-X) circle (1pt) node[below right,font=scriptsize] {$Q_X$};
          path (P) -- (q-X) coordinate[pos=-0.5] (L-X) coordinate[pos={1.2+X*0.3}] (R-X);
          draw[cyan,dashed] (L-X) -- (R-X) node[right,font=scriptsize] (mX) {slope $m_X$}; }
          draw[line width=2mm,-{Latex[bend]},red!20] ($(m1)+(0.5,0.1)$)
          to[out=-90,in=65] ++ (-0.2,-1.2);
          %%%
          %%%
          end{scope}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer














          With decorations.markings you can mark coordinates along the path, which then allow you to draw tangents. Note that drawing tangents has already been discussed at length in this nice answer, and I am implicitly using the same approach. However, my code is an attempt to have a unified treatment of both of your requests, i.e. tangent and secants, so at first sight it looks quite different.



          documentclass[tikz,border=3.14mm]{standalone}
          usetikzlibrary{decorations.pathreplacing,decorations.markings,calc,arrows.meta,bending}

          begin{document}
          begin{tikzpicture}[scale=2.5,cap=round,mark pos/.style args={#1/#2}{%
          postaction={decorate,decoration={markings,%
          mark=at position #1 with {
          coordinate (#2);}}}}]
          tikzset{axes/.style={}}
          %draw[style=help lines,step=1cm, dotted] (-5.25,-5.25) grid (5.25,5.25);
          % The graphic
          begin{scope}[style=axes]
          %%%
          pgfmathsetmacro{posP}{0.38}
          draw[red,{Latex[bend]}-{Latex[bend]},thick,mark
          pos/.list={posP-0.005/p-0,posP/P,posP+0.005/p-2,0.5/q-4,0.62/q-3,0.74/q-2,0.86/q-1}] plot[domain=.5:3.25,samples=101,variable=x] ({x},{.5*(x-1.5)*(x-1.5)+1});
          draw[red] let p1=($(p-2)-(p-0)$),n1={(y1/x1)*(1cm/1pt)}
          in ($(P)-1*(1,n1)$) -- ($(P)+2*(1,n1)$) node[right,anchor=north
          west,font=scriptsize,text width=1cm]{slope $m$ $=$ instaneous rate dots};
          fill (P) circle (1pt) node[above,font=scriptsize] {$P$};
          foreach X in {1,...,4}
          {fill (q-X) circle (1pt) node[below right,font=scriptsize] {$Q_X$};
          path (P) -- (q-X) coordinate[pos=-0.5] (L-X) coordinate[pos={1.2+X*0.3}] (R-X);
          draw[cyan,dashed] (L-X) -- (R-X) node[right,font=scriptsize] (mX) {slope $m_X$}; }
          draw[line width=2mm,-{Latex[bend]},red!20] ($(m1)+(0.5,0.1)$)
          to[out=-90,in=65] ++ (-0.2,-1.2);
          %%%
          %%%
          end{scope}
          end{tikzpicture}
          end{document}


          enter image description here







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 2 days ago

























          answered 2 days ago









          marmot

          76.6k487161




          76.6k487161












          • No Marmot, you can take them out. I am reviewing the out put . It is hard to read since the points are cluttered but feel free to change these. There is no hurry. I also would not know how to make the red arrow indicating the secants approach the tangent.
            – MathScholar
            2 days ago












          • In short, make as many changes to the original as you require
            – MathScholar
            2 days ago






          • 2




            @MathScholar Well, I could do that, but this would require me knowing what the target output is. Plus I do not know what " I also would not know how to make the red arrow indicating the secants approach the tangent" means. (Remember, I am just a simple marmot. ;-)
            – marmot
            2 days ago










          • the target output is exactly the image(picture) above. I just provided a minimal example which I thought could lead there. Your welcome to change as much as you need I appreciate you contribution.
            – MathScholar
            2 days ago










          • @MathScholar Is that closer now?
            – marmot
            2 days ago


















          • No Marmot, you can take them out. I am reviewing the out put . It is hard to read since the points are cluttered but feel free to change these. There is no hurry. I also would not know how to make the red arrow indicating the secants approach the tangent.
            – MathScholar
            2 days ago












          • In short, make as many changes to the original as you require
            – MathScholar
            2 days ago






          • 2




            @MathScholar Well, I could do that, but this would require me knowing what the target output is. Plus I do not know what " I also would not know how to make the red arrow indicating the secants approach the tangent" means. (Remember, I am just a simple marmot. ;-)
            – marmot
            2 days ago










          • the target output is exactly the image(picture) above. I just provided a minimal example which I thought could lead there. Your welcome to change as much as you need I appreciate you contribution.
            – MathScholar
            2 days ago










          • @MathScholar Is that closer now?
            – marmot
            2 days ago
















          No Marmot, you can take them out. I am reviewing the out put . It is hard to read since the points are cluttered but feel free to change these. There is no hurry. I also would not know how to make the red arrow indicating the secants approach the tangent.
          – MathScholar
          2 days ago






          No Marmot, you can take them out. I am reviewing the out put . It is hard to read since the points are cluttered but feel free to change these. There is no hurry. I also would not know how to make the red arrow indicating the secants approach the tangent.
          – MathScholar
          2 days ago














          In short, make as many changes to the original as you require
          – MathScholar
          2 days ago




          In short, make as many changes to the original as you require
          – MathScholar
          2 days ago




          2




          2




          @MathScholar Well, I could do that, but this would require me knowing what the target output is. Plus I do not know what " I also would not know how to make the red arrow indicating the secants approach the tangent" means. (Remember, I am just a simple marmot. ;-)
          – marmot
          2 days ago




          @MathScholar Well, I could do that, but this would require me knowing what the target output is. Plus I do not know what " I also would not know how to make the red arrow indicating the secants approach the tangent" means. (Remember, I am just a simple marmot. ;-)
          – marmot
          2 days ago












          the target output is exactly the image(picture) above. I just provided a minimal example which I thought could lead there. Your welcome to change as much as you need I appreciate you contribution.
          – MathScholar
          2 days ago




          the target output is exactly the image(picture) above. I just provided a minimal example which I thought could lead there. Your welcome to change as much as you need I appreciate you contribution.
          – MathScholar
          2 days ago












          @MathScholar Is that closer now?
          – marmot
          2 days ago




          @MathScholar Is that closer now?
          – marmot
          2 days ago










          up vote
          7
          down vote













          I refactored the yesterday answer and added some new features.



          documentclass[pstricks,border=12pt,12pt]{standalone}
          usepackage{pstricks-add,pst-eucl}


          deff(#1){((#1+3)/3+sin(#1+3))}
          deffp(#1){Derive(1,f(#1))}
          psset{unit=2}

          begin{document}
          multido{r=2.0+-.1}{19}{%
          begin{pspicture}[algebraic](-1.6,-.6)(4.4,3.4)
          psaxes[ticks=none,labels=none]{->}(0,0)(-1.6,-.6)(4.1,3.1)[$x$,0][$y$,90]
          psplot[linecolor=red,linewidth=2pt]{-1}{3.9}{f(x)}
          %
          psplotTangent[linecolor=blue]{1.6}{1}{f(x)}
          psplotTangent[linecolor=cyan,Derive={-1/fp(x)}]{1.6}{.5}{f(x)}
          %
          pstGeonode[PosAngle={135,90}]
          (*1.6 {f(x)}){A}
          (*{1.6 rspace add} {f(x)}){B}
          pstGeonode[PosAngle={-120,-60},PointName={x_1,x_2},PointNameSep=8pt]
          (A|0,0){x1}
          (B|0,0){x2}
          pstGeonode[PosAngle={210,150},PointName={f(x_1),f(x_2)},PointNameSep=20pt]
          (0,0|A){fx1}
          (0,0|B){fx2}
          pcline[nodesep=-.5,linecolor=green](A)(B)
          %
          psset{linestyle=dashed}
          psCoordinates(A)
          psCoordinates(B)
          %
          psset{linecolor=gray,linestyle=dashed,labelsep=4pt,arrows=|*-|*,offset=-16pt}
          pcline(x1)(x2)
          nbput{$x_2-x_1$}
          pcline(fx2)(fx1)
          nbput{$f(x_2)-f(x_1)$}
          end{pspicture}}
          end{document}


          enter image description here



          Secant, tangent, and normal lines are given free of charge!






          share|improve this answer























          • Hey I like it but need the program in Tikz. Thanks for sharing
            – MathScholar
            2 days ago










          • I can show the tangent but this space is too narrow to contain.
            – Artificial Stupidity
            2 days ago












          • You can change the original program to allow for your space. Any response is appreciated
            – MathScholar
            2 days ago










          • Nice animation (+1)
            – marmot
            2 days ago










          • I really like this animation and will try this tomorrow with TiKz
            – MathScholar
            2 days ago















          up vote
          7
          down vote













          I refactored the yesterday answer and added some new features.



          documentclass[pstricks,border=12pt,12pt]{standalone}
          usepackage{pstricks-add,pst-eucl}


          deff(#1){((#1+3)/3+sin(#1+3))}
          deffp(#1){Derive(1,f(#1))}
          psset{unit=2}

          begin{document}
          multido{r=2.0+-.1}{19}{%
          begin{pspicture}[algebraic](-1.6,-.6)(4.4,3.4)
          psaxes[ticks=none,labels=none]{->}(0,0)(-1.6,-.6)(4.1,3.1)[$x$,0][$y$,90]
          psplot[linecolor=red,linewidth=2pt]{-1}{3.9}{f(x)}
          %
          psplotTangent[linecolor=blue]{1.6}{1}{f(x)}
          psplotTangent[linecolor=cyan,Derive={-1/fp(x)}]{1.6}{.5}{f(x)}
          %
          pstGeonode[PosAngle={135,90}]
          (*1.6 {f(x)}){A}
          (*{1.6 rspace add} {f(x)}){B}
          pstGeonode[PosAngle={-120,-60},PointName={x_1,x_2},PointNameSep=8pt]
          (A|0,0){x1}
          (B|0,0){x2}
          pstGeonode[PosAngle={210,150},PointName={f(x_1),f(x_2)},PointNameSep=20pt]
          (0,0|A){fx1}
          (0,0|B){fx2}
          pcline[nodesep=-.5,linecolor=green](A)(B)
          %
          psset{linestyle=dashed}
          psCoordinates(A)
          psCoordinates(B)
          %
          psset{linecolor=gray,linestyle=dashed,labelsep=4pt,arrows=|*-|*,offset=-16pt}
          pcline(x1)(x2)
          nbput{$x_2-x_1$}
          pcline(fx2)(fx1)
          nbput{$f(x_2)-f(x_1)$}
          end{pspicture}}
          end{document}


          enter image description here



          Secant, tangent, and normal lines are given free of charge!






          share|improve this answer























          • Hey I like it but need the program in Tikz. Thanks for sharing
            – MathScholar
            2 days ago










          • I can show the tangent but this space is too narrow to contain.
            – Artificial Stupidity
            2 days ago












          • You can change the original program to allow for your space. Any response is appreciated
            – MathScholar
            2 days ago










          • Nice animation (+1)
            – marmot
            2 days ago










          • I really like this animation and will try this tomorrow with TiKz
            – MathScholar
            2 days ago













          up vote
          7
          down vote










          up vote
          7
          down vote









          I refactored the yesterday answer and added some new features.



          documentclass[pstricks,border=12pt,12pt]{standalone}
          usepackage{pstricks-add,pst-eucl}


          deff(#1){((#1+3)/3+sin(#1+3))}
          deffp(#1){Derive(1,f(#1))}
          psset{unit=2}

          begin{document}
          multido{r=2.0+-.1}{19}{%
          begin{pspicture}[algebraic](-1.6,-.6)(4.4,3.4)
          psaxes[ticks=none,labels=none]{->}(0,0)(-1.6,-.6)(4.1,3.1)[$x$,0][$y$,90]
          psplot[linecolor=red,linewidth=2pt]{-1}{3.9}{f(x)}
          %
          psplotTangent[linecolor=blue]{1.6}{1}{f(x)}
          psplotTangent[linecolor=cyan,Derive={-1/fp(x)}]{1.6}{.5}{f(x)}
          %
          pstGeonode[PosAngle={135,90}]
          (*1.6 {f(x)}){A}
          (*{1.6 rspace add} {f(x)}){B}
          pstGeonode[PosAngle={-120,-60},PointName={x_1,x_2},PointNameSep=8pt]
          (A|0,0){x1}
          (B|0,0){x2}
          pstGeonode[PosAngle={210,150},PointName={f(x_1),f(x_2)},PointNameSep=20pt]
          (0,0|A){fx1}
          (0,0|B){fx2}
          pcline[nodesep=-.5,linecolor=green](A)(B)
          %
          psset{linestyle=dashed}
          psCoordinates(A)
          psCoordinates(B)
          %
          psset{linecolor=gray,linestyle=dashed,labelsep=4pt,arrows=|*-|*,offset=-16pt}
          pcline(x1)(x2)
          nbput{$x_2-x_1$}
          pcline(fx2)(fx1)
          nbput{$f(x_2)-f(x_1)$}
          end{pspicture}}
          end{document}


          enter image description here



          Secant, tangent, and normal lines are given free of charge!






          share|improve this answer














          I refactored the yesterday answer and added some new features.



          documentclass[pstricks,border=12pt,12pt]{standalone}
          usepackage{pstricks-add,pst-eucl}


          deff(#1){((#1+3)/3+sin(#1+3))}
          deffp(#1){Derive(1,f(#1))}
          psset{unit=2}

          begin{document}
          multido{r=2.0+-.1}{19}{%
          begin{pspicture}[algebraic](-1.6,-.6)(4.4,3.4)
          psaxes[ticks=none,labels=none]{->}(0,0)(-1.6,-.6)(4.1,3.1)[$x$,0][$y$,90]
          psplot[linecolor=red,linewidth=2pt]{-1}{3.9}{f(x)}
          %
          psplotTangent[linecolor=blue]{1.6}{1}{f(x)}
          psplotTangent[linecolor=cyan,Derive={-1/fp(x)}]{1.6}{.5}{f(x)}
          %
          pstGeonode[PosAngle={135,90}]
          (*1.6 {f(x)}){A}
          (*{1.6 rspace add} {f(x)}){B}
          pstGeonode[PosAngle={-120,-60},PointName={x_1,x_2},PointNameSep=8pt]
          (A|0,0){x1}
          (B|0,0){x2}
          pstGeonode[PosAngle={210,150},PointName={f(x_1),f(x_2)},PointNameSep=20pt]
          (0,0|A){fx1}
          (0,0|B){fx2}
          pcline[nodesep=-.5,linecolor=green](A)(B)
          %
          psset{linestyle=dashed}
          psCoordinates(A)
          psCoordinates(B)
          %
          psset{linecolor=gray,linestyle=dashed,labelsep=4pt,arrows=|*-|*,offset=-16pt}
          pcline(x1)(x2)
          nbput{$x_2-x_1$}
          pcline(fx2)(fx1)
          nbput{$f(x_2)-f(x_1)$}
          end{pspicture}}
          end{document}


          enter image description here



          Secant, tangent, and normal lines are given free of charge!







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited yesterday

























          answered 2 days ago









          Artificial Stupidity

          4,5291832




          4,5291832












          • Hey I like it but need the program in Tikz. Thanks for sharing
            – MathScholar
            2 days ago










          • I can show the tangent but this space is too narrow to contain.
            – Artificial Stupidity
            2 days ago












          • You can change the original program to allow for your space. Any response is appreciated
            – MathScholar
            2 days ago










          • Nice animation (+1)
            – marmot
            2 days ago










          • I really like this animation and will try this tomorrow with TiKz
            – MathScholar
            2 days ago


















          • Hey I like it but need the program in Tikz. Thanks for sharing
            – MathScholar
            2 days ago










          • I can show the tangent but this space is too narrow to contain.
            – Artificial Stupidity
            2 days ago












          • You can change the original program to allow for your space. Any response is appreciated
            – MathScholar
            2 days ago










          • Nice animation (+1)
            – marmot
            2 days ago










          • I really like this animation and will try this tomorrow with TiKz
            – MathScholar
            2 days ago
















          Hey I like it but need the program in Tikz. Thanks for sharing
          – MathScholar
          2 days ago




          Hey I like it but need the program in Tikz. Thanks for sharing
          – MathScholar
          2 days ago












          I can show the tangent but this space is too narrow to contain.
          – Artificial Stupidity
          2 days ago






          I can show the tangent but this space is too narrow to contain.
          – Artificial Stupidity
          2 days ago














          You can change the original program to allow for your space. Any response is appreciated
          – MathScholar
          2 days ago




          You can change the original program to allow for your space. Any response is appreciated
          – MathScholar
          2 days ago












          Nice animation (+1)
          – marmot
          2 days ago




          Nice animation (+1)
          – marmot
          2 days ago












          I really like this animation and will try this tomorrow with TiKz
          – MathScholar
          2 days ago




          I really like this animation and will try this tomorrow with TiKz
          – MathScholar
          2 days ago










          up vote
          2
          down vote













          I see that @marmot has already given you the solution. This is just another way of doing it. Just an attempt to do it without using any extra libraries.



          enter image description here



          documentclass[border=1cm]{standalone}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}[declare function={func(y) = 0.1*(y-5)*(y-5)+1;}]
          draw[domain=2:15,smooth,variable=x,thick] plot ({x},{func(x)});
          draw[fill] (6.4,{func(6.4)})node[below]{p}circle (2pt)coordinate(p);
          foreach[count=i] x in {8.0,9.6,...,14.4}{
          draw[fill] (x,{0.1*(x-5)*(x-5)+1})node[below]{Q$_i$} circle (2pt)coordinate(Qi);
          draw[thick,blue!80,dashed,shorten >=-2cm,shorten <=-2cm] (p) -- (Qi)node[right=0.7cm](mi){slope m$_i$};
          }
          draw[thick,red!70,shorten >=-9cm,shorten <=-4cm] (p) -- (6.401,{func(6.401)});
          draw[-latex,line width=4mm,red!20] (m4.south east) to[out=-100, in=25] (m2.south east)node[below,anchor=north west,red]{slope $m=ldots$};
          end{tikzpicture}
          end{document}





          share|improve this answer























          • Yes, this looks very good to me! (One reason why I did not go that way is that one may not necessarily plot a known function, but just draw some curve by other means, e.g. with to[out=...,in=...] or .. (...) and (...) ... But as long as you do not go that way, this a very nice and compact way of achieving this.)
            – marmot
            2 days ago










          • Thanks @marmot . I got your point.
            – nidhin
            2 days ago










          • @nidhin Thank you for this. The program has its own merits as well. Thanks for sharing
            – MathScholar
            2 days ago















          up vote
          2
          down vote













          I see that @marmot has already given you the solution. This is just another way of doing it. Just an attempt to do it without using any extra libraries.



          enter image description here



          documentclass[border=1cm]{standalone}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}[declare function={func(y) = 0.1*(y-5)*(y-5)+1;}]
          draw[domain=2:15,smooth,variable=x,thick] plot ({x},{func(x)});
          draw[fill] (6.4,{func(6.4)})node[below]{p}circle (2pt)coordinate(p);
          foreach[count=i] x in {8.0,9.6,...,14.4}{
          draw[fill] (x,{0.1*(x-5)*(x-5)+1})node[below]{Q$_i$} circle (2pt)coordinate(Qi);
          draw[thick,blue!80,dashed,shorten >=-2cm,shorten <=-2cm] (p) -- (Qi)node[right=0.7cm](mi){slope m$_i$};
          }
          draw[thick,red!70,shorten >=-9cm,shorten <=-4cm] (p) -- (6.401,{func(6.401)});
          draw[-latex,line width=4mm,red!20] (m4.south east) to[out=-100, in=25] (m2.south east)node[below,anchor=north west,red]{slope $m=ldots$};
          end{tikzpicture}
          end{document}





          share|improve this answer























          • Yes, this looks very good to me! (One reason why I did not go that way is that one may not necessarily plot a known function, but just draw some curve by other means, e.g. with to[out=...,in=...] or .. (...) and (...) ... But as long as you do not go that way, this a very nice and compact way of achieving this.)
            – marmot
            2 days ago










          • Thanks @marmot . I got your point.
            – nidhin
            2 days ago










          • @nidhin Thank you for this. The program has its own merits as well. Thanks for sharing
            – MathScholar
            2 days ago













          up vote
          2
          down vote










          up vote
          2
          down vote









          I see that @marmot has already given you the solution. This is just another way of doing it. Just an attempt to do it without using any extra libraries.



          enter image description here



          documentclass[border=1cm]{standalone}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}[declare function={func(y) = 0.1*(y-5)*(y-5)+1;}]
          draw[domain=2:15,smooth,variable=x,thick] plot ({x},{func(x)});
          draw[fill] (6.4,{func(6.4)})node[below]{p}circle (2pt)coordinate(p);
          foreach[count=i] x in {8.0,9.6,...,14.4}{
          draw[fill] (x,{0.1*(x-5)*(x-5)+1})node[below]{Q$_i$} circle (2pt)coordinate(Qi);
          draw[thick,blue!80,dashed,shorten >=-2cm,shorten <=-2cm] (p) -- (Qi)node[right=0.7cm](mi){slope m$_i$};
          }
          draw[thick,red!70,shorten >=-9cm,shorten <=-4cm] (p) -- (6.401,{func(6.401)});
          draw[-latex,line width=4mm,red!20] (m4.south east) to[out=-100, in=25] (m2.south east)node[below,anchor=north west,red]{slope $m=ldots$};
          end{tikzpicture}
          end{document}





          share|improve this answer














          I see that @marmot has already given you the solution. This is just another way of doing it. Just an attempt to do it without using any extra libraries.



          enter image description here



          documentclass[border=1cm]{standalone}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}[declare function={func(y) = 0.1*(y-5)*(y-5)+1;}]
          draw[domain=2:15,smooth,variable=x,thick] plot ({x},{func(x)});
          draw[fill] (6.4,{func(6.4)})node[below]{p}circle (2pt)coordinate(p);
          foreach[count=i] x in {8.0,9.6,...,14.4}{
          draw[fill] (x,{0.1*(x-5)*(x-5)+1})node[below]{Q$_i$} circle (2pt)coordinate(Qi);
          draw[thick,blue!80,dashed,shorten >=-2cm,shorten <=-2cm] (p) -- (Qi)node[right=0.7cm](mi){slope m$_i$};
          }
          draw[thick,red!70,shorten >=-9cm,shorten <=-4cm] (p) -- (6.401,{func(6.401)});
          draw[-latex,line width=4mm,red!20] (m4.south east) to[out=-100, in=25] (m2.south east)node[below,anchor=north west,red]{slope $m=ldots$};
          end{tikzpicture}
          end{document}






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 2 days ago

























          answered 2 days ago









          nidhin

          1,450820




          1,450820












          • Yes, this looks very good to me! (One reason why I did not go that way is that one may not necessarily plot a known function, but just draw some curve by other means, e.g. with to[out=...,in=...] or .. (...) and (...) ... But as long as you do not go that way, this a very nice and compact way of achieving this.)
            – marmot
            2 days ago










          • Thanks @marmot . I got your point.
            – nidhin
            2 days ago










          • @nidhin Thank you for this. The program has its own merits as well. Thanks for sharing
            – MathScholar
            2 days ago


















          • Yes, this looks very good to me! (One reason why I did not go that way is that one may not necessarily plot a known function, but just draw some curve by other means, e.g. with to[out=...,in=...] or .. (...) and (...) ... But as long as you do not go that way, this a very nice and compact way of achieving this.)
            – marmot
            2 days ago










          • Thanks @marmot . I got your point.
            – nidhin
            2 days ago










          • @nidhin Thank you for this. The program has its own merits as well. Thanks for sharing
            – MathScholar
            2 days ago
















          Yes, this looks very good to me! (One reason why I did not go that way is that one may not necessarily plot a known function, but just draw some curve by other means, e.g. with to[out=...,in=...] or .. (...) and (...) ... But as long as you do not go that way, this a very nice and compact way of achieving this.)
          – marmot
          2 days ago




          Yes, this looks very good to me! (One reason why I did not go that way is that one may not necessarily plot a known function, but just draw some curve by other means, e.g. with to[out=...,in=...] or .. (...) and (...) ... But as long as you do not go that way, this a very nice and compact way of achieving this.)
          – marmot
          2 days ago












          Thanks @marmot . I got your point.
          – nidhin
          2 days ago




          Thanks @marmot . I got your point.
          – nidhin
          2 days ago












          @nidhin Thank you for this. The program has its own merits as well. Thanks for sharing
          – MathScholar
          2 days ago




          @nidhin Thank you for this. The program has its own merits as well. Thanks for sharing
          – MathScholar
          2 days ago


















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460632%2ftikz-and-secant-line-diagram%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

          Alcedinidae

          RAC Tourist Trophy