Clear["Global`*"]

(* Define function *)
f[x_] := (x-Tan[x])

(* Plot the function to get an idea of where to start *)
Plot[f[x],{x,-10,10}]

(* Zoom in on graph to begin to see an area to define poitns in *)
Plot[f[x], {x, 4, 5}]

(* Continue to zoom in further *)
Plot[f[x], {x, 4.4, 4.6}]

(* Function is now beginning to appear more and more linear *)

Plot[f[x], {x, 4.45, 4.55}]

(* Function appears extremely linear now and has a negative slope. *)
Plot[f[x], {x, 4.49, 4.50}]

(* Choose two values from the x-axis to use as the x values for two points *)
a = 4.492;
b = 4.498;
(* Run the values through the function to get the y values *)
fa = f[a]
fb = f[b]
(* Find slope of straight line using two points *)
m = (fb - fa) / (b-a)
(* Define function for the straight line created above in y=mx+b *)
linearapprox[x_] := m(x-a)+fa

Plot[{f[x], linearapprox[x]}, {x, 4.49, 4.50}]

(* Since the straight line is so close the the graph of the function the root of linearapprox is similar to the root of f *)
(* find where linearapprox = 0 *)
root = a-fa/m

(* Now one can compare the answer above found through a linear approximation to one found by mathematica *)
actualrt = FindRoot[f[x] == 0, {x,4}]
actualrt = Replace[x,actualrt]

(* If we assume that mathematica's root is more accurate one can find the percent error of the approximation *)
((root-actualrt)/actualrt)*100

-0.0006787394894894033`
(* This is an absolutely tiny amount of error. So the linear approximation should be accurate enough for most practical uses. *)