Gradijent realne funkcije dvije varijable

verzija: SageMath 9.4

In [1]:
from sage.plot.plot3d.shapes import *
In [2]:
%display latex
In [3]:
var('y z u v')
Out[3]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(y, z, u, v\right)\]

Neka je $z=f(x,y)$ realna funkcija dvije realne varijable i neka je $(x_0,y_0)$ točka iz domene funkcije $f$.

  • U točki $(x_0,y_0)$ funkcija $f$ najbrže raste duž vektora $\nabla f(x_0,y_0)$, tj. u smjeru pripadnog jediničnog vektora $\frac{\nabla f(x_0,y_0)}{|\nabla f(x_0,y_0)|}$. Brzina rasta u smjeru pripadnog jediničnog vektora jednaka je $|\nabla f(x_0,y_0)|$.
  • U točki $(x_0,y_0)$ funkcija $f$ najbrže pada duž vektora $-\nabla f(x_0,y_0)$, tj. u smjeru pripadnog jediničnog vektora $-\frac{\nabla f(x_0,y_0)}{|\nabla f(x_0,y_0)|}$. Brzina pada u smjeru pripadnog jediničnog vektora jednaka je $-|\nabla f(x_0,y_0)|$.
  • Ako je $\nabla f(x_0,y_0)=(0,0)$, tada je $(x_0,y_0)$ stacionarna točka funkcije $f$ pa ne postoji smjer najbržeg rasta i pada u točki $(x_0,y_0).$

Geometrijska interpretacija

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).$

1. zadatak

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)$.

Rješenje

In [4]:
f(x,y)=3*x*y-x^3-2*y

Gradijent funkcije $f$

In [5]:
grad_f=f.diff(); grad_f
Out[5]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left( x, y \right) \ {\mapsto} \ \left(-3 \, x^{2} + 3 \, y,\,3 \, x - 2\right)\]

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}$.

In [6]:
v1=grad_f(1,0); v1
Out[6]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(-3,\,1\right)\]
In [7]:
norm(vector(v1))
Out[7]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\sqrt{10}\]

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}$.

In [8]:
f(1,0)
Out[8]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}-1\]
In [9]:
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])

Gradijentno vektorsko polje funkcije $f$

In [10]:
plot_vector_field(f.diff(), (x,-1.5,1.5), (y,-1.5,1.5), color='blue',plot_points=20)
Out[10]:
In [11]:
plot_vector_field(f.diff(), (x,-3,3), (y,-3,3), color='blue',plot_points=30)
Out[11]:
In [12]:
plot_vector_field(f.diff(), (x,-3,3), (y,-3,3), color='blue',plot_points=50)
Out[12]:

"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.

In [13]:
solve([grad_f[0]==0,grad_f[1]==0],[x,y])
Out[13]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[\left[x = \left(\frac{2}{3}\right), y = \left(\frac{4}{9}\right)\right]\right]\]
In [14]:
hess_f=f.diff(2); hess_f
Out[14]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rr} \left( x, y \right) \ {\mapsto} \ -6 \, x & \left( x, y \right) \ {\mapsto} \ 3 \\ \left( x, y \right) \ {\mapsto} \ 3 & \left( x, y \right) \ {\mapsto} \ 0 \end{array}\right)\]
In [15]:
hess_f(2/3,4/9)
Out[15]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rr} -4 & 3 \\ 3 & 0 \end{array}\right)\]
In [16]:
hess_f(2/3,4/9).det()
Out[16]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}-9\]

Zumirano gradijentno vektorsko polje funkcije $f$ u blizini sedlaste točke $\big(\frac{2}{3},\frac{4}{9}\big)$

In [17]:
plot_vector_field(f.diff(), (x,0.6,0.75), (y,0.3,0.55), color='blue',plot_points=20)
Out[17]:

2. zadatak

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).$

Rješenje

In [18]:
g(x,y)=2*x^3+x*y^2+5*x^2+y^2

Gradijent funkcije $g$

In [19]:
grad_g=g.diff(); grad_g
Out[19]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left( x, y \right) \ {\mapsto} \ \left(6 \, x^{2} + y^{2} + 10 \, x,\,2 \, x y + 2 \, y\right)\]

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}.$

In [20]:
v2=grad_g(-3/2,-2); v2
Out[20]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\frac{5}{2},\,2\right)\]
In [21]:
norm(vector(v2))
Out[21]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\frac{1}{2} \, \sqrt{41}\]

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}$.

In [22]:
g(-3/2,-2)
Out[22]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\frac{5}{2}\]
In [23]:
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])

Gradijentno vektorsko polje funkcije $g$

In [24]:
plot_vector_field(g.diff(), (x,-3,2), (y,-4,4), color='blue',plot_points=20)
Out[24]:
In [25]:
plot_vector_field(g.diff(), (x,-3,2), (y,-4,4), color='blue',plot_points=30)
Out[25]:
In [26]:
plot_vector_field(g.diff(), (x,-3,2), (y,-4,4), color='blue',plot_points=50)
Out[26]:

Funkcija $g$ ima četiri stacionarne točke: $\big(\!-\!\frac{5}{3},0\big),\ (0,0),\ (-1,2),\ (-1,-2)$

In [27]:
solve([grad_g[0]==0,grad_g[1]==0],[x,y])
Out[27]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[\left[x = \left(-\frac{5}{3}\right), y = 0\right], \left[x = 0, y = 0\right], \left[x = \left(-1\right), y = 2\right], \left[x = \left(-1\right), y = \left(-2\right)\right]\right]\]

Hesseova matrica funkcije $g$

In [28]:
hess_g=g.diff(2); hess_g
Out[28]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rr} \left( x, y \right) \ {\mapsto} \ 12 \, x + 10 & \left( x, y \right) \ {\mapsto} \ 2 \, y \\ \left( x, y \right) \ {\mapsto} \ 2 \, y & \left( x, y \right) \ {\mapsto} \ 2 \, x + 2 \end{array}\right)\]

Funkcija $g$ u točki $\big(\!-\!\frac{5}{3},0\big)$ ima lokalni maksimum.

In [29]:
hess_g(-5/3,0)
Out[29]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rr} -10 & 0 \\ 0 & -\frac{4}{3} \end{array}\right)\]
In [30]:
hess_g(-5/3,0).det()
Out[30]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\frac{40}{3}\]

Zumirano gradijentno vektorsko polje funkcije $g$ u blizini točke $\big(\!-\!\frac{5}{3},0\big)$

In [31]:
plot_vector_field(g.diff(), (x,-1.8,-1.5), (y,-0.5,0.5), color='blue',plot_points=20)
Out[31]:

Funkcija $g$ u točki $(0,0)$ ima lokalni minimum.

In [32]:
hess_g(0,0)
Out[32]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rr} 10 & 0 \\ 0 & 2 \end{array}\right)\]
In [33]:
hess_g(0,0).det()
Out[33]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}20\]

Zumirano gradijentno vektorsko polje funkcije $g$ u blizini točke $(0,0)$

In [34]:
plot_vector_field(g.diff(), (x,-0.1,0.1), (y,-0.2,0.2), color='blue',plot_points=20)
Out[34]:

Točka $(-1,2)$ je sedlasta točka funkcije $g.$

In [35]:
hess_g(-1,2)
Out[35]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rr} -2 & 4 \\ 4 & 0 \end{array}\right)\]
In [36]:
hess_g(-1,2).det()
Out[36]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}-16\]

Zumirano gradijentno vektorsko polje funkcije $g$ u blizini točke $(-1,2)$

In [37]:
plot_vector_field(g.diff(), (x,-1.1,-0.9), (y,1.9,2.1), color='blue',plot_points=20)
Out[37]:

Točka $(-1,-2)$ je sedlasta točka funkcije $g.$

In [38]:
hess_g(-1,-2)
Out[38]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rr} -2 & -4 \\ -4 & 0 \end{array}\right)\]
In [39]:
hess_g(-1,-2).det()
Out[39]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}-16\]

Zumirano gradijentno vektorsko polje funkcije $g$ u blizini točke $(-1,-2)$

In [40]:
plot_vector_field(g.diff(), (x,-1.1,-0.9), (y,-2.1,-1.9), color='blue',plot_points=20)
Out[40]:
In [ ]: