Definimos la función:

(%i3) z( x, y) : = exp( - x ^ 2 - y ^ 2) ;
p :[ 1, 1] $
wxplot3d( z( x, y),[ x, 0, 2],[ y, 0, 2]) ;
(%o1) z ( x , y ) := exp ( x 2 y 2 ) (%t3)  (Gráficos)
(%o3)

Ahora definimos el gradiente que nos determina el ritmo de máxima variación:

(%i4) define( nabla( x, y), matrix([ diff( z( x, y), x), diff( z( x, y), y)])) ;
(%o4) nabla ( x , y ) := ( 2 x %e y 2 x 2 2 y %e y 2 x 2 )

Lo necesitmos en el punto p y buscamos su norma:

(%i7) vm : nabla( p[ 1], p[ 2]) $
rm : float( round( float( sqrt( vm. transpose( vm))) * 100) / 100) $
print( "El ritmo de máxima variación en ",[ p[ 1], p[ 2]], "es de", rm, "en la dirección", vm[ 1]) $
El ritmo de máxima variación en [ 1 , 1 ] es de 0.38 en la dirección [ 2 %e 2 , 2 %e 2 ]
(%i10) v :[ vm[ 1][ 1], vm[ 1][ 2]] $
v :( 1 / sqrt( v. v)) * v $
wxdraw3d( color = green,
   contour_levels = 5,
   contour = both,
   surface_hide = true,
   explicit( z( x, y), x, 0, 2, y, 0, 2),
   color = red,
   head_length = 0 . 01,
   line_width = 3,
   vector([ p[ 1], p[ 2], z( p[ 1], p[ 2])],[ v[ 1], v[ 2], 1])) ;
0 errores, 0 advertencias (%t10)  (Gráficos)
(%o10)

El vector vm, el gradiente, nos indica la dirección, en el plano XY, de máximo crecimientos. La representación colocamos un vector de 3 componentes, con la z=1, para visualizar que la dirección (x,y) nos hace "subir la elevación".


Created with wxMaxima.