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]:
(y,z,u,v)(y,z,u,v)

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

  • U točki (x0,y0)(x0,y0) funkcija ff najbrže raste duž vektora f(x0,y0)f(x0,y0), tj. u smjeru pripadnog jediničnog vektora f(x0,y0)|f(x0,y0)|f(x0,y0)|f(x0,y0)|. Brzina rasta u smjeru pripadnog jediničnog vektora jednaka je |f(x0,y0)||f(x0,y0)|.
  • U točki (x0,y0)(x0,y0) funkcija ff najbrže pada duž vektora f(x0,y0)f(x0,y0), tj. u smjeru pripadnog jediničnog vektora f(x0,y0)|f(x0,y0)|f(x0,y0)|f(x0,y0)|. Brzina pada u smjeru pripadnog jediničnog vektora jednaka je |f(x0,y0)||f(x0,y0)|.
  • Ako je f(x0,y0)=(0,0)f(x0,y0)=(0,0), tada je (x0,y0) stacionarna točka funkcije f pa ne postoji smjer najbržeg rasta i pada u točki (x0,y0).

Geometrijska interpretacija

Gradijent funkcije z=f(x,y) u točki (x0,y0) je dvodimenzionalni vektor (fx(x0,y0),fy(x0,y0)) kojeg možemo promatrati kao trodimenzionalni vektor (fx(x0,y0),fy(x0,y0),0) koji leži u xy-ravnini. Nadalje, točku (x0,y0) možemo promatrati kao točku (x0,y0,0) koja se nalazi u xy-ravnini. Točka (x0,y0,f(x0,y0)) se nalazi na grafu funkcije f. Neka je Π ravnina koja prolazi točkom (x0,y0,0) i razapeta je s vektorima (fx(x0,y0),fy(x0,y0),0) i k=(0,0,1). Ravnina Π također prolazi točkom (x0,y0,f(x0,y0)), okomita je na xy-ravninu i siječe graf funkcije f u krivulji koja prolazi točkom (x0,y0,f(x0,y0)). Ukoliko se iz točke (x0,y0,f(x0,y0)) š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 (x0,y0).

Gradijent funkcije z=f(x,y) u točki (x0,y0) daje nam krivulju na plohi kroz točku (x0,y0,f(x0,y0)) duž koje ploha ima najstrmiji uspon i najstrmiji pad u točki (x0,y0,f(x0,y0)).

1. zadatak

Zadana je funkcija f(x,y)=3xyx32y. 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]:
(x,y)  (3x2+3y,3x2)

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

In [6]:
v1=grad_f(1,0); v1
Out[6]:
(3,1)
In [7]:
norm(vector(v1))
Out[7]:
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 k.

In [8]:
f(1,0)
Out[8]:
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 (23,49) u kojoj je sedlo.

In [13]:
solve([grad_f[0]==0,grad_f[1]==0],[x,y])
Out[13]:
[[x=(23),y=(49)]]
In [14]:
hess_f=f.diff(2); hess_f
Out[14]:
((x,y)  6x(x,y)  3(x,y)  3(x,y)  0)
In [15]:
hess_f(2/3,4/9)
Out[15]:
(4330)
In [16]:
hess_f(2/3,4/9).det()
Out[16]:
9

Zumirano gradijentno vektorsko polje funkcije f u blizini sedlaste točke (23,49)

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)=2x3+xy2+5x2+y2. Odredite smjer i brzinu najbržeg rasta i pada funkcije f u točki (32,2).

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]:
(x,y)  (6x2+y2+10x,2xy+2y)

U točki (32,2) funkcija g najbrže raste duž vektora (52,2), a brzina tog rasta u smjeru pripadnog jediničnog vektora iznosi 1241.
U točki (32,2) funkcija g najbrže pada duž vektora (52,2), a brzina tog pada u smjeru pripadnog jediničnog vektora iznosi 1241.

In [20]:
v2=grad_g(-3/2,-2); v2
Out[20]:
(52,2)
In [21]:
norm(vector(v2))
Out[21]:
1241

Na slici je prikazan graf funkcije g i zadana žuta točka (32,2,52). 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 (32,2,52) koja je određena s gradijentom funkcije g u točki (32,2) (tj., s njegovim trodimenzionalnim reprezentantom u xy-ravnini) i vektorom k.

In [22]:
g(-3/2,-2)
Out[22]:
52
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: (53,0), (0,0), (1,2), (1,2)

In [27]:
solve([grad_g[0]==0,grad_g[1]==0],[x,y])
Out[27]:
[[x=(53),y=0],[x=0,y=0],[x=(1),y=2],[x=(1),y=(2)]]

Hesseova matrica funkcije g

In [28]:
hess_g=g.diff(2); hess_g
Out[28]:
((x,y)  12x+10(x,y)  2y(x,y)  2y(x,y)  2x+2)

Funkcija g u točki (53,0) ima lokalni maksimum.

In [29]:
hess_g(-5/3,0)
Out[29]:
(100043)
In [30]:
hess_g(-5/3,0).det()
Out[30]:
403

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

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]:
(10002)
In [33]:
hess_g(0,0).det()
Out[33]:
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]:
(2440)
In [36]:
hess_g(-1,2).det()
Out[36]:
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]:
(2440)
In [39]:
hess_g(-1,-2).det()
Out[39]:
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 [ ]: