verzija: SageMath 9.4
from sage.plot.plot3d.shapes import *
%display latex
var('y z u v')
Neka je $z=f(x,y)$ realna funkcija dvije realne varijable i neka je $(x_0,y_0)$ točka iz domene funkcije $f$.
Gradijent funkcije $z=f(x,y)$ u točki $(x_0,y_0)$ je dvodimenzionalni vektor $\big(f_x(x_0,y_0),f_y(x_0,y_0)\big)$ kojeg možemo promatrati kao trodimenzionalni vektor $\big(f_x(x_0,y_0),f_y(x_0,y_0),0\big)$ koji leži u $xy$-ravnini. Nadalje, točku $(x_0,y_0)$ možemo promatrati kao točku $(x_0,y_0,0)$ koja se nalazi u $xy$-ravnini. Točka $\big(x_0,y_0,f(x_0,y_0)\big)$ se nalazi na grafu funkcije $f$. Neka je $\Pi$ ravnina koja prolazi točkom $(x_0,y_0,0)$ i razapeta je s vektorima $\big(f_x(x_0,y_0),f_y(x_0,y_0),0\big)$ i $\vec{k}=(0,0,1)$. Ravnina $\Pi$ također prolazi točkom $\big(x_0,y_0,f(x_0,y_0)\big)$, okomita je na $xy$-ravninu i siječe graf funkcije $f$ u krivulji koja prolazi točkom $\big(x_0,y_0,f(x_0,y_0)\big).$ Ukoliko se iz točke $\big(x_0,y_0,f(x_0,y_0)\big)$ šećemo po dobivenoj krivulji, tada se po plohi (grafu funkcije $f$) šećemo u smjeru najbržeg rasta i najbržeg pada funkcije $f$ u točki $(x_0,y_0)$.
Gradijent funkcije $z=f(x,y)$ u točki $(x_0,y_0)$ daje nam krivulju na plohi kroz točku $\big(x_0,y_0,f(x_0,y_0)\big)$ duž koje ploha ima najstrmiji uspon i najstrmiji pad u točki $\big(x_0,y_0,f(x_0,y_0)\big).$
Zadana je funkcija $f(x,y)=3xy-x^3-2y.$ Odredite smjer i brzinu najbržeg rasta i pada funkcije $f$ u točki $(1,0)$.
f(x,y)=3*x*y-x^3-2*y
grad_f=f.diff(); grad_f
U točki $(1,0)$ funkcija $f$ najbrže raste duž vektora $(-3,1)$, a brzina tog rasta u smjeru pripadnog jediničnog vektora iznosi $\sqrt{10}$.
U točki $(1,0)$ funkcija $f$ najbrže pada duž vektora $(3,-1)$, a brzina tog pada u smjeru pripadnog jediničnog vektora iznosi $-\sqrt{10}$.
v1=grad_f(1,0); v1
norm(vector(v1))
Na slici je prikazan graf funkcije $f$ i zadana žuta točka $(1,0,-1).$ Najstrmiji uspon u žutoj točki ploha ima duž plavog dijela krivulje, a najstrmiji pad u žutoj točki ploha ima duž crvenog dijela krivulje. Na slici je prikazana i ravnina kroz točku $(1,0,-1)$ koja je određena s gradijentom funkcije $f$ u točki $(1,0)$ (tj., s njegovim trodimenzionalnim reprezentantom u $xy$-ravnini) i vektorom $\vec{k}$.
f(1,0)
ploha1=implicit_plot3d(3*x*y-x^3-2*y-z,(x,-3,3),(y,-3,3),(z,-5,5),color='pink')
krivulja1=parametric_plot3d([1-3*u,u,f(1-3*u,u)],(u,0,1.177),color='blue',radius=0.02)
krivulja2=parametric_plot3d([1-3*u,u,f(1-3*u,u)],(u,-0.21,0),color='red',radius=0.02)
rav=parametric_plot3d([1-3*u,u,v],(u,-0.6,1.3),(v,-5,5),color='bisque',opacity=0.5)
toc1=Sphere(0.1,color='yellow').scale(0.7,0.7,2).translate(1,0,-1)
(ploha1+rav+krivulja1+krivulja2+toc1).show(viewer='threejs',online=True,aspect_ratio=[2.5,2.5,1])
plot_vector_field(f.diff(), (x,-1.5,1.5), (y,-1.5,1.5), color='blue',plot_points=20)
plot_vector_field(f.diff(), (x,-3,3), (y,-3,3), color='blue',plot_points=30)
plot_vector_field(f.diff(), (x,-3,3), (y,-3,3), color='blue',plot_points=50)
"Bjelina" na slici, tj. "sitni" vektori nam sugeriraju da vjerojatno postoje stacionarne točke. Naime, u stacionarnoj točki je gradijent jednak nulvektoru, a u njezinoj blizini gradijent je vektor jako male duljine.
Funkcija $f$ ima jednu stacionarnu točku $\big(\frac{2}{3},\frac{4}{9}\big)$ u kojoj je sedlo.
solve([grad_f[0]==0,grad_f[1]==0],[x,y])
hess_f=f.diff(2); hess_f
hess_f(2/3,4/9)
hess_f(2/3,4/9).det()
plot_vector_field(f.diff(), (x,0.6,0.75), (y,0.3,0.55), color='blue',plot_points=20)
Zadana je funkcija $g(x,y)=2x^3+xy^2+5x^2+y^2.$ Odredite smjer i brzinu najbržeg rasta i pada funkcije $f$ u točki $\big(\!-\!\frac{3}{2},-2\big).$
g(x,y)=2*x^3+x*y^2+5*x^2+y^2
grad_g=g.diff(); grad_g
U točki $\big(\!-\!\frac{3}{2},-2\big)$ funkcija $g$ najbrže raste duž vektora $\big(\frac{5}{2},2\big)$, a brzina tog rasta u smjeru pripadnog jediničnog vektora iznosi $\frac{1}{2}\sqrt{41}$.
U točki $\big(\!-\!\frac{3}{2},-2\big)$ funkcija $g$ najbrže pada duž vektora $\big(\!-\!\frac{5}{2},-2\big)$, a brzina tog pada u smjeru pripadnog jediničnog vektora iznosi $-\frac{1}{2}\sqrt{41}.$
v2=grad_g(-3/2,-2); v2
norm(vector(v2))
Na slici je prikazan graf funkcije $g$ i zadana žuta točka $\big(\!-\!\frac{3}{2},-2,\frac{5}{2}\big).$ Najstrmiji uspon u žutoj točki ploha ima duž plavog dijela krivulje, a najstrmiji pad u žutoj točki ploha ima duž crvenog dijela krivulje. Na slici je prikazana i ravnina kroz točku $\big(\!-\!\frac{3}{2},-2,\frac{5}{2}\big)$ koja je određena s gradijentom funkcije $g$ u točki $\big(\!-\!\frac{3}{2},-2\big)$ (tj., s njegovim trodimenzionalnim reprezentantom u $xy$-ravnini) i vektorom $\vec{k}$.
g(-3/2,-2)
ploha2=implicit_plot3d(g(x,y)-z,(x,-3,2),(y,-4,4),(z,-2,8),color='pink')
krivulja3=parametric_plot3d([-1.5+2.5*u,-2+2*u,g(-1.5+2.5*u,-2+2*u)],(u,0,1.023),color='blue',radius=0.03)
krivulja4=parametric_plot3d([-1.5+2.5*u,-2+2*u,g(-1.5+2.5*u,-2+2*u)],(u,-0.205,0),color='red',radius=0.03)
rav2=parametric_plot3d([-1.5+2.5*u,-2+2*u,v],(u,-0.5,1.3),(v,-2,8),color='bisque',opacity=0.5)
toc2=Sphere(0.1,color='yellow').scale(0.8,0.8,1.6).translate(-1.5,-2,2.5)
(ploha2+rav2+krivulja3+krivulja4+toc2).show(viewer='threejs',online=True,aspect_ratio=[2.5,1.8,1])
plot_vector_field(g.diff(), (x,-3,2), (y,-4,4), color='blue',plot_points=20)
plot_vector_field(g.diff(), (x,-3,2), (y,-4,4), color='blue',plot_points=30)
plot_vector_field(g.diff(), (x,-3,2), (y,-4,4), color='blue',plot_points=50)
Funkcija $g$ ima četiri stacionarne točke: $\big(\!-\!\frac{5}{3},0\big),\ (0,0),\ (-1,2),\ (-1,-2)$
solve([grad_g[0]==0,grad_g[1]==0],[x,y])
hess_g=g.diff(2); hess_g
Funkcija $g$ u točki $\big(\!-\!\frac{5}{3},0\big)$ ima lokalni maksimum.
hess_g(-5/3,0)
hess_g(-5/3,0).det()
plot_vector_field(g.diff(), (x,-1.8,-1.5), (y,-0.5,0.5), color='blue',plot_points=20)
Funkcija $g$ u točki $(0,0)$ ima lokalni minimum.
hess_g(0,0)
hess_g(0,0).det()
plot_vector_field(g.diff(), (x,-0.1,0.1), (y,-0.2,0.2), color='blue',plot_points=20)
Točka $(-1,2)$ je sedlasta točka funkcije $g.$
hess_g(-1,2)
hess_g(-1,2).det()
plot_vector_field(g.diff(), (x,-1.1,-0.9), (y,1.9,2.1), color='blue',plot_points=20)
Točka $(-1,-2)$ je sedlasta točka funkcije $g.$
hess_g(-1,-2)
hess_g(-1,-2).det()
plot_vector_field(g.diff(), (x,-1.1,-0.9), (y,-2.1,-1.9), color='blue',plot_points=20)