Drawing tangent line on a curve

Hi All !

I am new to Mathematica…
Could someone pl. suggest how to draw a tangent line on a curve… a demo would be great
I am working on finding instanteous rate of change of at a point …

Thanx

Here is a solution. I’ve picked a function that I am fond of, but you can adapt to your own purposes:

function which takes the name of function of one argument, a position to evaluate the derivative and a parameter that will be used for the tangent.

tangentLine[func_, loc_, param_] := 
 Module[
  {deriv, x},
  deriv = D[func[x], x] /. x -> loc;
  deriv (param - loc) + func[loc]
  ]

For example:

f[t_] := t^2 + Cos[t]
tangentLine[f, 2, z]

Here it is with a function that I have defined within a module, others might have put the function definition in an Initialization, but I think this is easier to read.

Module[
 {
  myFunction,
  tangent,
  t
  },
 myFunction[0] = 0;
 myFunction[1] = 0;
 myFunction[x_] := 3 x (1 - x) + (x Log[x] + (1 - x) Log[1 - x]);
 Manipulate[
  tangent = tangentLine[myFunction, where, t];
  Plot[myFunction[z], {z, 0, 1}, 
   Epilog -> {Red, 
     Line[{{0, tangent /. t -> 0}, {1, tangent /. t -> 1}}]}
   ],
  {{where, 0.25}, 0, 1}
  ]
 ]

Example result:

Here are approaches for single variable: tangent line and two variable functions (tangent plane).

  1. Single variable function:
tg[f_, x_, p_] := (f'[x] /. x -> p) (x - p) + f[p]

Here the argument f is function, x is symbol for differentiation and p is the x-value of point the line will be tangent to.

  • Example using a pure function:

    q = #^3 - 3 #^2 &;
    Manipulate[
     Plot[{q[x], tg[q, u, m] /. u -> x}, {x, -3, 3}, PlotRange -> {-5, 5},
       Epilog -> {Red, PointSize[0.02], Point[{m, q[m]}]}], {m, -1, 1, 
      0.01}]
    
  • Visualizing:

wctang01.gif

1. Tangent plane ``` tangent[f_, arg_, pt_] := (Grad[f @@ arg, arg] /. Thread[arg -> pt]).(arg - pt) + f @@ pt ```

This is essentially a generalization of the previous code exploiting the gradient function and dot product.

  • Example:

    w[x_, y_] := Sin[x] Cos[y];
    
  • Visualizing:

    ListAnimate[
      Table[
        Show[Plot3D[w[x, y], {x, -3, 3}, {y, -3, 3}, 
          ViewVector -> {10, 10, 10}, PlotStyle -> Opacity[0.7]], 
         Graphics3D[{Red, PointSize[0.03], 
           Point[{Join[{j, j}, {Sin[j] Cos[j]}]}]}], 
         Plot3D[Evaluate[(tangent[w, {x, y}, {j, j}] /. {x -> u, 
              y -> v})], {u, j - 0.5, j + 0.5}, {v, j - 0.5, j + 0.5}, 
          Mesh -> False, PlotStyle -> Green]], {j, -3, 3, 0.1}]];
    

wctang02.gif