Plano tanxente a unha superficie $F(x,y,z)=0$ nun punto

{{{id=0| #auto %hide var('x,y,z') @interact def example(f='x^2+y^2-z^2', rango_x='(-2, 2)', rango_y='(-2,2)',rango_z='(-2,2)',punto='(1,0,1)'): xmin, xmax = sage_eval(rango_x); ymin, ymax = sage_eval(rango_y); zmin, zmax = sage_eval(rango_z);px, py, pz = sage_eval(punto); f=f.replace('^','**'); tg(x,y,z) = eval(f) if tg(px,py,pz) != 0: html('

O punto $%s$ non está na superficie

'%latex(punto)) else: Pt=(x-px)*diff(tg,x)(px,py,pz)+(y-py)*diff(tg,y)(px,py,pz)+(z-pz)*diff(tg,z)(px,py,pz) html('

O plano tanxente é $0=%s$

'%latex(Pt)) S = implicit_plot3d(eval(f), (x, xmin, xmax), (y, ymin, ymax),(z, zmin, zmax),opacity=0.4) T = implicit_plot3d(Pt, (x, xmin, xmax), (y, ymin, ymax),(z, zmin, zmax),color='red') show(S+T) ///
f 
rango_x 
rango_y 
rango_z 
punto 
}}} {{{id=3| /// }}}