verzija: SageMath 9.4
from sage.plot.plot3d.shapes import *
%display latex
var('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.
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)).
Zadana je funkcija f(x,y)=3xy−x3−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 √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.
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 →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 (23,49) 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)=2x3+xy2+5x2+y2. Odredite smjer i brzinu najbržeg rasta i pada funkcije f u točki (−32,−2).
g(x,y)=2*x^3+x*y^2+5*x^2+y^2
grad_g=g.diff(); grad_g
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 12√41.
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 −12√41.
v2=grad_g(-3/2,-2); v2
norm(vector(v2))
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.
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: (−53,0), (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 (−53,0) 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)