. Si consideri la funzione
> | f:=(x,y)->4-x^2-y^2; |
(1) |
il cui grafico in un intorno del punto (1,0) e`
> | plot3d(f,0..2,-1..1,grid=[50,50],style=surface,axes=boxed); |
memorizziamo questo grafico in un registro F, per poi poter aggiungere altri grafici senza riscivere tutto
> | F:=plot3d(f,0..2,-1..1,grid=[50,50],style=surface,axes=boxed); |
(2) |
Calcoliamo a mano il gradiente nel punto (1,0), oppure carichiamo il pacchetto MultivariateCalculus e facciamoci calcolare il gradiente in (1,0)
> | with(Student[MultivariateCalculus]): H:=Gradient(f(x,y),[x,y]=[1,0]); |
(3) |
Ne ricaviamo l'equazione del piano tangente in (1,0), che riportiamo in un grafico insieme a F; il vettore (-2,0,-1) e` normale al piano;
> | piano_tg:=(x,y)->f(1,0)-2*(x-1); |
(4) |
> | T:=plot3d(piano_tg,0..2,-1..1,color=red,style=surface): with(VectorCalculus): vs1:=VectorSpace('cartesian'[x,y,z], [1,0,3]): V:=PlotVector(vs1:-Vector([-2,0,-1]),color=red): with(plots):display({F,T,V}); |
Tagliamo ora con il piano orizzontale a altezza f(1,0), ottenendo una curva
> | Or:=plot3d(f(1,0),0..2,-1..1,color=blue,style=surface): S:=implicitplot3d(f(x,y)=f(1,0), x=0..2, y=-1..1, z=2.9..3.1,style=wireframe,color=black): display({F,T,V,Or,S}); |
L'intersezione tra i due piani e` una retta che risulta tangente alla curva; il gradiente (proiezione sui primi due fattori del vettore normale al piano)
sara` quindi ortogonale a questa retta. Proiettando nel piano xy, otteniamo che il gradiente in un punto e` ortogonale alla linea di livello per quel punto. Puo` essere necessario caricare il pacchetto piu` volte, qualche volta da` errore.
> | with(Student[VectorCalculus]); tv:=TangentVector(<cos(t), sin(t), 3>, t, 'output'=plot, 'range'=-Pi/2 .. Pi/2, 'vectors'=1,vectoroptions=[color=black]): nv:=PrincipalNormal(<cos(t), sin(t), 3>, t, 'output'=plot, 'range'=-Pi/2 .. Pi/2, 'vectors'=1,vectoroptions=[color=magenta], curveoptions=[color=black]): display({F,T,V,Or,S,tv,nv}); |
> | tv0:=TangentVector(<cos(t), sin(t), 0>, t, 'output'=plot, 'range'=-Pi/2 .. Pi/2, 'vectors'=1,vectoroptions=[color=black]): nv0:=PrincipalNormal(<cos(t), sin(t), 0>, t, 'output'=plot, 'range'=-Pi/2 .. Pi/2, 'vectors'=1,vectoroptions=[color=magenta]): display({F,T,V,Or,S,tv,nv,tv0,nv0}); |
> |