code for Newton method diagram

code for labeledarrow

code for dblabeledarrow

> f:=x->exp(.3*x)-3:
df:=unapply(diff(f(x),x),x):
X0:=5:
X1:=X0-f(X0)/df(X0):

> tanline:=df(X0)*(x-X0)+f(X0):
tanlineplot:=plot(tanline,x=.5..7):

> Graph:=plot(exp(.3*x)-3,x=-1..6,thickness=3, title=`Newton's Method`, titlefont =[TIMES,BOLD,16], labels=[`X`, `Y`],labelfont=[TIMES,BOLD,14], axesfont=[TIMES,BOLD,14] ):

> A1:=labeledarrow([1.91, 1.11], [3.69, 0.01],[.05,2,2], `root`,[-1.6,.1], 14, blue):

> A2:=dblabeledarrow([X0+1,0],[X0+1,evalf(f(X0))],[.05,2,2], `delta y`,[0,1], 11, blue):
dotlines:=plot({[[X0,f(X0)],[X0,-1.5]], [[X1,0],[X1,-1.5]],[[X0-1,evalf(f(X0))],[X0+1.5,evalf(f(X0))]]},linestyle=3,color=black):
A3:=dblabeledarrow([X1,-1.2],[X0,-1.2],[.05,2,2], `delta x`,[0,.5], 11, blue):
A4:=labeledarrow(
[3.5,2.5],[X0,f(X0)],[.05,2,2],`(x0,f(x0))`,[-1.7,0],12,blue):
A5:=labeledarrow(
[6.5,-1],[X0,0],[.05,2,2],`x0 = approx root`,[-3,1.5],12,blue):
A6:=labeledarrow(
[7,-2.3],[X1,0],[.05,2,2],`x1 =next approx root`,[-4.2,1.5],12,blue):
A7:=labeledarrow(
[8,3.25],[7,3.8],[.05,2,2],`slope = f'(x0)`,[-2.2,1],12,blue):

> plots[display]([Graph,tanlineplot,A1,A2,A3,A4,A5,A6,A7,dotlines],xtickmarks=[],ytickmarks=[],scaling=constrained,view=[-1 ..11,-3..6]);