Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
87 views
ubuntu2004
Kernel: SageMath 9.4

Lokální extrémy f-cí 2 prom.

Definice lokálních extrémů

Definice. Funkce z=f(x,y)z = f(x,y) nabývá v bodě X=(a,b)X = (a,b) lokální maximum v bodě XX, jestliže pro všechny body (x,y)(x,y) ležící v jistém okolí bodu XX splňují podmínku: f(x,y)f(a,b). f(x,y) \le f(a,b). Hodnota f(X)=f(a,b)f(X) = f(a,b) se nazývá hodnotou lokálního maxima funkce ff. Pokud je na jistém okolí bodu XX splněna nerovnost f(a,b)f(x,y),f(a,b) \le f(x,y), potom hovoříme o tzv. lokálním minimu funkce ff v bodě XX. Hodnotu f(X)f(X) pak nazveme lokálním minimem.

Nutná podmínka existence lok. extr.

Věta. Nabývá-li funkce z=f(x,y)z = f(x,y) v bodě X=(a,b)X = (a,b) lokální extrém, pak fx(a,b)=fy(a,b)=0.(*) \frac{\partial f}{\partial x}(a,b) = \frac{\partial f}{\partial y}(a,b) = 0. \tag{*}

Bod XR2X\in\mathbb R^2 ve kterém funkce ff splňuje se bude nazývat stacionárním bodem funkce ff.

Příklad (hledání stac. bodů)

Nechť a) z=f(x,y)=x2+y22x6y+14.z = f(x,y) = x^2 + y^2 - 2x - 6y + 14.

b) z=x2y2.z = x^2 - y^2. Najděme stacionární body této funkce.

Řešení

# a) var("x, y") f(x,y) = x^2 + y^2 - 2 * x - 6 * y + 14 show("f(x,y) = \t", f(x,y)) f_x = f(x,y).diff(x) f_y = f(x,y).diff(y) eq1 = f_x == 0 eq2 = f_y == 0 show(eq1,",", eq2) sol = solve([eq1, eq2], x, y) for res in sol: show(res)
f(x,y)x=x x2+y22x6y+14\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(x,y)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | x^{2} + y^{2} - 2 \, x - 6 \, y + 14
2x2=0,2y6=0\renewcommand{\Bold}[1]{\mathbf{#1}}2 \, x - 2 = 0 \verb|,| 2 \, y - 6 = 0
[x=1,y=3]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = 1, y = 3\right]
f(1,3)
4
plot3d(f(x,y), (x, -4, 6), (y, -2, 8))
# b var("x, y") f(x,y) = x^2 - y^2 show("f(x,y) = \t", f(x,y)) f_x = f(x,y).diff(x) f_y = f(x,y).diff(y) eq1 = f_x == 0 eq2 = f_y == 0 show(eq1,",", eq2) sol = solve([eq1, eq2], x, y) for res in sol: show(res)
p1 = plot3d(f(x,y), (x, -5, 5), (y, -5, 5)) p2 = point3d((0, 0, 0), size=200, color="green") (p1 + p2).show()

Funkce z=x2y2z = x^2 - y^2 má v bodě X=(0,0)X = (0,0) tzv. sedlový bod. Obecně, je-li bod XX stacionárním bodem funkce z=f(x,y)z = f(x,y) a funkce ff v tomto bodě nenabývá ani lokální maximum ani lokální minimum, pak se bod XX bude nazývat sedlovým bodem funkce f.f.

Postačující podmínka existence lok. extrému

Věta. Předpokládejme, že funkce z=f(x,y)z = f(x,y) má spojité parciální derivace na okolí bodu X=(a,b)X=(a,b) a nechť je bod XX stacionárním bodem funkce ff. Položme D=D(a,b)=2fx2(a,b)2fy2(a,b)[2fxy(a,b)]2. D = D(a,b) = \frac{\partial^2 f}{\partial x^2}(a,b)\frac{\partial^2 f}{\partial y^2}(a,b) - \left[\frac{\partial^2 f}{\partial x\partial y}(a,b)\right]^2. (a) Jestliže D>0D > 0 a 2fx2>0,\frac{\partial^2 f}{\partial x^2} > 0, potom je f(a,b)f(a,b) lokálním minimem.

(b) Jestliže D>0D > 0 a 2fx2<0,\frac{\partial^2 f}{\partial x^2} < 0, potom je f(a,b)f(a,b) lokálním maximem.

(c) Jestliže D<0D < 0, potom je bod X=(a,b)X=(a,b) sedlovým bodem funkce f.f.

Poznámky. (a) Poznamenejme, že v případě, kdy je D=0D = 0, potom předchozí věta nedává žádnou informaci o existenci a druhu lokálního extrému v daném bodě.

(b) D=det(2fx22fxy2fyx2fy2). D = det\left( \begin{matrix} \frac{\partial^2 f}{\partial x^2}&\frac{\partial^2 f}{\partial x\partial y}\\ \frac{\partial^2 f}{\partial y\partial x}&\frac{\partial^2 f}{\partial y^2} \end{matrix} \right).

Příklad (aplikace postačující podmínky)

Najděme lokální extrémy a sedlové body funkce z=x4+y44xy+1.z = x^4 + y^4 - 4xy + 1.

Řešení

var("x, y") assume(x, "real"); assume(y, "real") f(x,y) = x^4 + y^4 - 4*x*y + 1 show("f(x,y) = \t", f(x,y))
f(x,y)x=x x4+y44xy+1\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(x,y)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | x^{4} + y^{4} - 4 \, x y + 1
  1. Najděme gradient funkce ff v obecném bodě:

gradf = f(x,y).gradient() show("gradient(f) = \t", gradf)
gradient(f)x=x (4x34y,4y34x)\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|gradient(f)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | \left(4 \, x^{3} - 4 \, y,\,4 \, y^{3} - 4 \, x\right)
  1. Hledejme stacionární body funckce f.f. Tj. takové body X,X, pro které je gradf(X)=O.gradf(X) = \vec O.

eq1 = gradf[0] == 0 eq2 = gradf[1] == 0 sols = solve([eq1, eq2], x, y) for reseni in sols: show(reseni)
[x=i,y=(1)14]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = \sqrt{-i}, y = -\left(-1\right)^{\frac{1}{4}}\right]
[x=(1)14,y=(1)34]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = \left(-1\right)^{\frac{1}{4}}, y = \left(-1\right)^{\frac{3}{4}}\right]
[x=(i),y=i]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = \left(-i\right), y = i\right]
[x=i,y=(i)]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = i, y = \left(-i\right)\right]
[x=(1),y=(1)]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = \left(-1\right), y = \left(-1\right)\right]
[x=1,y=1]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = 1, y = 1\right]
[x=0,y=0]\renewcommand{\Bold}[1]{\mathbf{#1}}\left[x = 0, y = 0\right]

Dostáváme tedy trojici stacionárních bodů: S1=(0,0), S2=(1,1), S3=(1,1). S_1 = (0,0),\ S_2 = (1,1),\ S_3 = (-1,-1).

Nyní vyšetřeme postupně tyto tři stacionární body pomocí kritéria uvedeného v předchozí větě.

S1 = vector([0,0]); S2 = vector([1,1]); S3 = vector([-1,-1]) stac_body = [S1, S2, S3] H_f = f(x,y).hessian() D = H_f.det() print("Hessova matice je matice 2x2:") show("H(f) = \t", H_f) print("Vypočtěme dále determinant Hessovy matice, tj. tzv. Hessián:") show("D = \t", D) #for bod in stac_body:
Hessova matice je matice 2x2:
H(f)x=x (12x24412y2)\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|H(f)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | \left(\begin{array}{rr} 12 \, x^{2} & -4 \\ -4 & 12 \, y^{2} \end{array}\right)
Vypočtěme dále determinant Hessovy matice, tj. tzv. Hessián:
Dx=x 144x2y216\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 144 \, x^{2} y^{2} - 16

Postupně vyšetřeme trojici stacionárních bodů S1S_1S3S_3, zdali splňují postačující podmínky existence lok. extrému.

S_1 = (0,0); S_2 = (1,1); S_3 = (-1,-1) stac_body = [S_1, S_2, S_3] for bod in stac_body: func_val = f(x=bod[0], y=bod[1]) D_bod = D.subs(x=bod[0], y=bod[1]) H_bod = H_f.subs(x=bod[0], y=bod[1]) show("D(a,b) = \t", D_bod) show("H(a,b) = \t", H_bod) if D.subs(x=bod[0], y=bod[1]) > 0 and H_f.subs(x=bod[0], y=bod[1])[0][0] > 0: print(f"funkce f nabývá v bodě {bod} lokální minimum {func_val}") elif D.subs(x=bod[0], y=bod[1]) > 0 and H_f.subs(x=bod[0], y=bod[1])[0][0] < 0: print(f"funkce f nabývá v bodě {bod} lokální maximum {func_val}") elif D.subs(x=bod[0], y=bod[1]) < 0: print(f"funkce f má v bodě {bod} sedlový bod.") else: print("Podle našeho kritéria nelze rozhodnout o existenci ani druhu lokálního extrému.") print("-"* 50)
D(a,b)x=x 16\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(a,b)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -16
H(a,b)x=x (0440)\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|H(a,b)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | \left(\begin{array}{rr} 0 & -4 \\ -4 & 0 \end{array}\right)
funkce f má v bodě (0, 0) sedlový bod. --------------------------------------------------
D(a,b)x=x 128\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(a,b)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 128
H(a,b)x=x (124412)\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|H(a,b)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | \left(\begin{array}{rr} 12 & -4 \\ -4 & 12 \end{array}\right)
funkce f nabývá v bodě (1, 1) lokální minimum -1 --------------------------------------------------
D(a,b)x=x 128\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(a,b)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 128
H(a,b)x=x (124412)\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|H(a,b)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | \left(\begin{array}{rr} 12 & -4 \\ -4 & 12 \end{array}\right)
funkce f nabývá v bodě (-1, -1) lokální minimum -1 --------------------------------------------------
p1 = contour_plot(f(x,y), xrange=(-1.5, 1.5), yrange=(-1.5, 1.5), axes=True, fill=False, labels=True, contours=[-.5, 0, .5, 0.9, 1, 1.1, 1.5, 2, 3]) p2 = points([(1,1), (-1,-1)]) (p1 + p2).show(aspect_ratio=1)
Image in a Jupyter notebook
plot3d(f(x,y), (x, -2, 2), (y, -2, 2))

Příklad

Najděte a klasifikujte stacionární body funkce z=f(x,y)=10x2y5x24y2x42y4. z = f(x,y) = 10x^2y - 5x^2 - 4y^2 - x^4 - 2y^4.

Řešení

var("x,y") f(x,y) = 10*x^2*y - 5*x^2 - 4*y^2 - x^4 - 2*y^4 show("f(x,y) = \t", f(x,y)) f_x = f(x,y).diff(x) f_y = f(x,y).diff(y) eq1 = f_x.factor() == 0 eq2 = f_y.factor() == 0 print("Řešme následující soustavu pro nalezení stac. body funkce f") show(eq1) show(eq2) stac_body = solve([eq1, eq2], [x, y], to_poly_solve=True,domain='real') # vyselektujme reálná řešení: realne_stac_body = [] for res in stac_body: if res[0].rhs() in RR and res[1].rhs() in RR: print(res) realne_stac_body.append(res)
f(x,y)x=x x42y4+10x2y5x24y2\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(x,y)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -x^{4} - 2 \, y^{4} + 10 \, x^{2} y - 5 \, x^{2} - 4 \, y^{2}
Řešme následující soustavu pro nalezení stac. body funkce f
2(2x210y+5)x=0\renewcommand{\Bold}[1]{\mathbf{#1}}-2 \, {\left(2 \, x^{2} - 10 \, y + 5\right)} x = 0
8y3+10x28y=0\renewcommand{\Bold}[1]{\mathbf{#1}}-8 \, y^{3} + 10 \, x^{2} - 8 \, y = 0
[x == 0, y == 0] [x == 0.8566569484936832, y == 0.6467722289890377] [x == -0.8566569484936832, y == 0.6467722289890377] [x == -2.644224422442244, y == 1.898384575299635] [x == 2.644224422442244, y == 1.898384575299635]
realne_stac_body
[[x == 0, y == 0], [x == 0.8566569484936832, y == 0.6467722289890377], [x == -0.8566569484936832, y == 0.6467722289890377], [x == -2.644224422442244, y == 1.898384575299635], [x == 2.644224422442244, y == 1.898384575299635]]
#S_1 = (0,0); S_2 = (1,1); S_3 = (-1,-1) #stac_body = [S_1, S_2, S_3] H_f = f(x,y).hessian() D = H_f.det() stac_body = [] for reseni in realne_stac_body: bod = reseni[0].rhs(), reseni[1].rhs() stac_body.append(bod) for bod in stac_body: func_val = f(x=bod[0], y=bod[1]) f_xx = H_f.subs(x=bod[0], y=bod[1])[0][0] D_S = D.subs(x=bod[0], y=bod[1]) show("f(S) = \t", func_val) show("f_xx(S) = \t", f_xx) show("D(S) = \t", D_S) if D.subs(x=bod[0], y=bod[1]) > 0 and H_f.subs(x=bod[0], y=bod[1])[0][0] > 0: print(f"funkce f nabývá v bodě {bod} lokální minimum {func_val}") elif D.subs(x=bod[0], y=bod[1]) > 0 and H_f.subs(x=bod[0], y=bod[1])[0][0] < 0: print(f"funkce f nabývá v bodě {bod} lokální maximum {func_val}") elif D.subs(x=bod[0], y=bod[1]) < 0: print(f"funkce f má v bodě {bod} sedlový bod.") else: print("Podle našeho kritéria nelze rozhodnout o existenci ani druhu lokálního extrému.") print("-------------------------------") p1 = contour_plot(f(x,y), xrange=(-4, 4), yrange=(-1, 3), axes=True, fill=False, labels=True, contours=[-1.48, 0, 0.9, 3, 7, 20, 30, 40]) #p2 = points([(1,1), (-1,-1)]) (p1).show(aspect_ratio=1)
f(S)x=x 0\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 0
f_xx(S)x=x 10\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_xx(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -10
D(S)x=x 80\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 80
funkce f nabývá v bodě (0, 0) lokální maximum 0 -------------------------------
f(S)x=x 1.4846788189669673\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -1.4846788189669673
f_xx(S)x=x 5.870888949049354\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_xx(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -5.870888949049354
D(S)x=x 187.63629386082852\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -187.63629386082852
funkce f má v bodě (0.8566569484936832, 0.6467722289890377) sedlový bod. -------------------------------
f(S)x=x 1.4846788189669673\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -1.4846788189669673
f_xx(S)x=x 5.870888949049354\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_xx(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -5.870888949049354
D(S)x=x 187.63629386082852\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -187.63629386082852
funkce f má v bodě (-0.8566569484936832, 0.6467722289890377) sedlový bod. -------------------------------
f(S)x=x 8.495858128437817\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 8.495858128437817
f_xx(S)x=x 55.935382048887554\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_xx(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -55.935382048887554
D(S)x=x 2488.7181647838893\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 2488.7181647838893
funkce f nabývá v bodě (-2.644224422442244, 1.898384575299635) lokální maximum 8.495858128437817 -------------------------------
f(S)x=x 8.495858128437817\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 8.495858128437817
f_xx(S)x=x 55.935382048887554\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_xx(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -55.935382048887554
D(S)x=x 2488.7181647838893\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 2488.7181647838893
funkce f nabývá v bodě (2.644224422442244, 1.898384575299635) lokální maximum 8.495858128437817 -------------------------------
Image in a Jupyter notebook
plot3d(f(x,y), (x, -3, 3), (y, -3, 3))
X1 = minimize(-f, [-2, 2]) X2 = minimize(-f, [2,2]) show(X1) show(X2) numerical_approx(f(X1[0], X1[1]), digits=3), numerical_approx(f(X2[0], X2[1]), digits=3)
(2.6442242776214253,1.8983844161366608)\renewcommand{\Bold}[1]{\mathbf{#1}}\left(-2.6442242776214253,\,1.8983844161366608\right)
(2.6442242776214253,1.8983844161366608)\renewcommand{\Bold}[1]{\mathbf{#1}}\left(2.6442242776214253,\,1.8983844161366608\right)
(8.50, 8.50)

Příklad

Najděme vzdálenost bodu X=(1,0,2)X = (1,0,-2) od roviny ρ\rho dané rovnicí x+2y+z=4. x + 2y + z = 4.

Řešení

Jestliže Y=(x,y,z)ρY = (x,y,z)\in\rho, pak z+2=6x2yz + 2 = 6 -x - 2y a d=d(X,Y)=(x1)2+y2+(z+2)2=(x1)2+y2+(6x2y)2. d = d(X,Y) = \sqrt{(x-1)^2 + y^2 + (z+2)^2} = \sqrt{(x-1)^2 + y^2 + (6-x-2y)^2}.

Odtud d2=f(x,y)=(x1)2+y2+(6x2y)2. d^2 = f(x,y) = (x-1)^2 + y^2 + (6-x-2y)^2.

var("x,y") f(x,y) = (x-1)^2 + y^2 + (6 - x - 2*y)^2 show("f(x,y) = \t", f(x,y))
f(x,y)x=x (x+2y6)2+(x1)2+y2\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(x,y)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | {\left(x + 2 \, y - 6\right)}^{2} + {\left(x - 1\right)}^{2} + y^{2}
f_x = f(x,y).diff(x) f_y = f(x,y).diff(y) eq1 = f_x.factor() == 0 eq2 = f_y.factor() == 0 print("Řešme následující soustavu pro nalezení stac. body funkce f") show(eq1) show(eq2) stac_body = solve([eq1, eq2], [x, y], to_poly_solve=True,domain='real') # vyselektujme reálná řešení: realne_stac_body = [] for res in stac_body: if res[0].rhs() in RR and res[1].rhs() in RR: print(res) realne_stac_body.append(res)
Řešme následující soustavu pro nalezení stac. body funkce f
4x+4y14=0\renewcommand{\Bold}[1]{\mathbf{#1}}4 \, x + 4 \, y - 14 = 0
4x+10y24=0\renewcommand{\Bold}[1]{\mathbf{#1}}4 \, x + 10 \, y - 24 = 0
[x == (11/6), y == (5/3)]
H_f = f(x,y).hessian() D = H_f.det() stac_body = [] for reseni in realne_stac_body: bod = reseni[0].rhs(), reseni[1].rhs() stac_body.append(bod) for bod in stac_body: func_val = f(x=bod[0], y=bod[1]) f_xx = H_f.subs(x=bod[0], y=bod[1])[0][0] D_S = D.subs(x=bod[0], y=bod[1]) show("f(S) = \t", func_val) show("f_xx(S) = \t", f_xx) show("D = \t", D_S) if D.subs(x=bod[0], y=bod[1]) > 0 and H_f.subs(x=bod[0], y=bod[1])[0][0] > 0: print(f"funkce f nabývá v bodě {bod} lokální minimum {func_val}") elif D.subs(x=bod[0], y=bod[1]) > 0 and H_f.subs(x=bod[0], y=bod[1])[0][0] < 0: print(f"funkce f nabývá v bodě {bod} lokální maximum {func_val}") elif D.subs(x=bod[0], y=bod[1]) < 0: print(f"funkce f má v bodě {bod} sedlový bod.") else: print("Podle našeho kritéria nelze rozhodnout o existenci ani druhu lokálního extrému.") print("-------------------------------") p1 = contour_plot(f(x,y), xrange=(-4, 4), yrange=(-1, 3), axes=True, fill=False, labels=True, contours=[-1.48, 0, 0.9, 3, 7, 20, 30, 40]) p2 = points([(11/6,5/3)], size=50, color="red") (p1 + p2).show(aspect_ratio=1)
f(S)x=x 256\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | \frac{25}{6}
f_xx(S)x=x 4\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_xx(S)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 4
Dx=x 24\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|D|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 24
funkce f nabývá v bodě (11/6, 5/3) lokální minimum 25/6 -------------------------------
Image in a Jupyter notebook
d = sqrt(25/6) print(f"Vzdálenost bodu X od roviny rho je rovna číslu d = {d}.")
Vzdálenost bodu X od roviny rho je rovna číslu d = 5/6*sqrt(6).

Konec 13.12.

Příklad

Krabice ve tvaru kvádru bez víčka se má vyrobit z 12 m2m^2 kartónu. Najděte maximální možný objem takové krabice.

Řešení

var("x, y, z") V(x,y,z) = x*y*z
# Obsah pláště bez horní podstavy je roven 12: eq = 2*x*z + 2*y*z + x*y == 12 res = solve(eq, z) res
[z == -1/2*(x*y - 12)/(x + y)]
latex(res[0].rhs())
-\frac{x y - 12}{2 \, {\left(x + y\right)}}

Definujme funkci f(x,y)=V(x,y,z=xy122(x+y)).f(x,y) = V(x,y,z = -\frac{x y - 12}{2 \, {\left(x + y\right)}}).

f(x,y) = V(x, y, z=res[0].rhs()) show("f(x,y) = \t", f(x,y))
f(x,y)x=x (xy12)xy2(x+y)\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(x,y)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -\frac{{\left(x y - 12\right)} x y}{2 \, {\left(x + y\right)}}

Vypočítejme nyní parciální derivace funkce f(x,y).f(x,y).

f_x = f(x,y).diff(x) f_y = f(x,y).diff(y) show("f_x = \t", f_x) show("f_y = \t", f_y)
f_xx=x xy22(x+y)(xy12)y2(x+y)+(xy12)xy2(x+y)2\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_x|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -\frac{x y^{2}}{2 \, {\left(x + y\right)}} - \frac{{\left(x y - 12\right)} y}{2 \, {\left(x + y\right)}} + \frac{{\left(x y - 12\right)} x y}{2 \, {\left(x + y\right)}^{2}}
f_yx=x x2y2(x+y)(xy12)x2(x+y)+(xy12)xy2(x+y)2\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f_y|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -\frac{x^{2} y}{2 \, {\left(x + y\right)}} - \frac{{\left(x y - 12\right)} x}{2 \, {\left(x + y\right)}} + \frac{{\left(x y - 12\right)} x y}{2 \, {\left(x + y\right)}^{2}}
# nyní hledejme stacionární body funkce f: soustava = [f_x == 0, f_y == 0] reseni = solve(soustava, x, y)
reseni
[[x == 0, y == 0], [x == 2*I*sqrt(3), y == -2*I*sqrt(3)], [x == -2*I*sqrt(3), y == 2*I*sqrt(3)], [x == -2, y == -2], [x == 2, y == 2]]
pripustna_reseni = [] for bod in reseni: if bod[0].rhs() in RR and bod[0].rhs() > 0 and bod[1].rhs() in RR and bod[1].rhs() > 0: pripustna_reseni.append(bod) pripustna_reseni
[[x == 2, y == 2]]
show("z = \t", res[0].rhs())
zx=x xy122(x+y)\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|z|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | -\frac{x y - 12}{2 \, {\left(x + y\right)}}
x0 = 2 y0 = 2 z0 = res[0].rhs().subs(x=x0, y=y0) show("z0 = ", z0)
z0x=1\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|z0|\phantom{\verb!x!}\verb|=| 1

Nyní lze říci, že z fyzikální podstaty problému lze usuzovat, že existují délky x0,y0,z0x_0, y_0, z_0 takové, že V=V(x0,y0,z0)V = V(x_0,y_0,z_0) je rovno maximálnímu objemu. Tato hodnoty je též lokálním maximem funkce V=V(x,y,z)V = V(x,y,z) a tudíž je (x0,y0,z0)=(2,2,1)(x_0,y_0,z_0) = (2, 2, 1)

show("Absolutní maximum funkce V je rovno: V_max = \t", V(2, 2, 1))
AbsolutníxmaximumxfunkcexVxjexrovno:xV_maxx=x 4\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|Absolutní|\phantom{\verb!x!}\verb|maximum|\phantom{\verb!x!}\verb|funkce|\phantom{\verb!x!}\verb|V|\phantom{\verb!x!}\verb|je|\phantom{\verb!x!}\verb|rovno:|\phantom{\verb!x!}\verb|V_max|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 4
f(x,y).hessian().
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-11-b5d37067fd27> in <module> ----> 1 f(x,y).hessian().show() /ext/sage/9.4/local/lib/python3.9/site-packages/sage/structure/element.pyx in sage.structure.element.Element.__getattr__ (build/cythonized/sage/structure/element.c:4708)() 491 AttributeError: 'LeftZeroSemigroup_with_category.element_class' object has no attribute 'blah_blah' 492 """ --> 493 return self.getattr_from_category(name) 494 495 cdef getattr_from_category(self, name): /ext/sage/9.4/local/lib/python3.9/site-packages/sage/structure/element.pyx in sage.structure.element.Element.getattr_from_category (build/cythonized/sage/structure/element.c:4820)() 504 else: 505 cls = P._abstract_element_class --> 506 return getattr_from_other_class(self, cls, name) 507 508 def __dir__(self): /ext/sage/9.4/local/lib/python3.9/site-packages/sage/cpython/getattr.pyx in sage.cpython.getattr.getattr_from_other_class (build/cythonized/sage/cpython/getattr.c:2618)() 370 dummy_error_message.cls = type(self) 371 dummy_error_message.name = name --> 372 raise AttributeError(dummy_error_message) 373 attribute = <object>attr 374 # Check for a descriptor (__get__ in Python) AttributeError: 'sage.matrix.matrix_symbolic_dense.Matrix_symbolic_dense' object has no attribute 'show'

Absolutní maximum a minimum funkce

Definice. Mějme dánu funkci f:RnRf:\mathbb R^n\supset\to\mathbb R a nechť X0Df.X_0\in D_f. Potom řekneme, že funkce ff nabývá v bodě X0X_0

a) absolutní maximum funkce ff, jestliže f(X)f(X0),  XDf, f(X) \le f(X_0),\ \ \forall X\in D_f,

b) absolutní minimum funkce ff, jestliže f(X)f(X0),  XDf. f(X) \ge f(X_0),\ \ \forall X\in D_f.

Postačující podmínka existence absolutních extrémů

Věta. Nechť DRnD\subseteq\mathbb R^n je omezená a uzavřená podmnožina euklidovského prostoru Rn.\mathbb R^n. Dále nechť f:DRf:D\to\mathbb R je funkce spojitá na množině D.D. Potom funkce ff dosahuje absolutního maxima v jistém bodě XmaxDX_{max}\in D a dosahuje absolutního minima v jistém bodě XminD.X_{min}\in D.

Postup pro určení absolutních extrémů

K určení absolutního maxima a minima spojité funkce ff na omezené a uzavřené množině postupujte v následujících krocích:

  1. Najděte stacionární body uvnitř množiny DD a určete funkční hodnoty v těchto bodech.

  2. Najděte extrémy funkce ff na hranici množiny D.D.

  3. Největší/nejmenší hodnota určená v bodech 1. a 2. je hodnotou absolutního maxima/minima funkce f.f.

Příklad

Najděte absolutní maximum a absolutní minimum funkce f(x,y)=x22xy+2y f(x,y) = x^2 - 2xy + 2y na obdélníku D={(x,y):0x3,0y2}.D = \{(x,y): 0\le x\le 3,0\le y\le 2\}.

Řešení

Funkce ff je polynomem dvou proměnných a je tudíž spojitou funkcí na prostoru R2\mathbb R^2 a tedy také na omezené a uzavřené množině D.D.

# Určeme stacionární body funkce f var("x,y") f(x,y) = x^2 - 2 * x * y + 2 * y f_x = f(x,y).diff(x); f_y = f(x,y).diff(y) stac_body = solve([f_x == 0, f_y == 0], x, y) stac_body
[[x == 1, y == 1]]

Bod X1=(1,1)X_1 = (1,1) leží zřejmě vnitřním bodem obdélníku D.D.

# určíme funkční hodnotu v bodě X_1: h1 = f(1,1) show("f(X_1) = \t", h1)
f(X_1)x=x 1\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|f(X_1)|\phantom{\verb!x!}\verb|=|\phantom{\verb!x!}\verb| | 1

Vyjádřeme hranici D\partial D množiny DD takto: D=L1L2L3L4. \partial D = L_1\cup L_2\cup L_3\cup L_4. kde Li, i=1,,4L_i,\ i=1,\ldots, 4 jsou strany obdélníku D.D.

image.png

Na straně L1L_1 platí: f(x,0)=x2, 0x3. f(x, 0) = x^2,\ 0\le x \le 3. Funkce ff na L1L_1 nabývá zřejmě svého minima f(0,0)=0f(0,0) = 0 a maxima f(3,0)=9.f(3,0) = 9.

Na straně L2L_2 platí: f(3,y)=94y, 0y2. f(3,y) = 9 - 4y,\ 0\le y\le 2. Funkce je klesající a proto nabývá svého maxima f(3,0)=9f(3,0) = 9 a svého minima f(3,2)=1.f(3,2) = 1.

Na straně L3L_3 je y=2y=2 a platí: f(x,2)=x24x+4=(x2)2, 0x3. f(x,2) = x^2 - 4x + 4 = (x-2)^2,\ 0\le x\le 3. Minimum je rovno hodnotě f(2,2)=0f(2,2) = 0 a maximum je zde rovno hodnotě f(0,2)=4.f(0,2) = 4.

Na straně L4L_4 pak je x=0x = 0 a platí: f(0,y)=2y, 0y2. f(0,y) = 2y,\ 0\le y\le 2. Maximum na straně L4L_4 je rovno hodnotě f(0,2)=4f(0,2) = 4 a minimum je rovno hodnotě f(0,0)=0f(0,0) = 0 Tudíž na hranici D\partial D je absolutní minimum rovno hodnotě 00 a maximum je rovno hodnotě 9.9.

Porovnáním extremálních hodnot podle bodu 3.docházíme k závěru, že absolutní minimum se dosahuje na hranici D\partial D a jerovno hodnotě f(0,0)=f(2,2)=0f(0,0) = f(2,2) = 0 a absolutní maximum se dosahuje též na hranici D\partial D a je rovno hodnotě f(3,0)=9.f(3,0) = 9.

plot3d(f(x,y), (x, 0, 3), (y, 0, 2))

Samostatná cvičení

Lokální extrémy

  1. Předpokládejme, že (1,1)(1,1) je stacionárním bodem funkce ff se spojitými parciálními derivacemi druhého řádu. V každém případě, co lze říci o funkci ff?

a) f2x2(1,1)=4\frac{\partial f^2}{\partial x^2}(1,1) = 4, f2xy(1,1)=1,\frac{\partial f^2}{\partial x\partial y}(1,1) = 1, f2y2(1,1)=2.\frac{\partial f^2}{\partial y^2}(1,1) = 2.

b) f2x2(1,1)=4\frac{\partial f^2}{\partial x^2}(1,1) = 4, f2xy(1,1)=3,\frac{\partial f^2}{\partial x\partial y}(1,1) = 3, f2y2(1,1)=2.\frac{\partial f^2}{\partial y^2}(1,1) = 2.

  1. Najděte lokální maxima a minima a sedlové body následujících funkcí.

a) f(x,y)=x2+xy+y2+yf(x,y) = x^2 + xy + y^2 + y

b) f(x,y)=xy2x2yx2y2f(x,y) = xy - 2x - 2y - x^2 - y^2

c) f(x,y)=2x28xy+y44y3f(x,y) = 2x^2 - 8xy + y^4 - 4y^3

d) f(x,y)=x3+y3+3xyf(x,y) = x^3 + y^3 + 3xy

e) f(x,y)=(xy)(1xy)f(x,y) = (x - y)(1 - xy)

f) f(x,y)=y(ex1)f(x,y) = y(e^x - 1)

g) f(x,y)=yxy22x+7yf(x,y) = y\sqrt{x} - y^2 - 2x + 7y

h) f(x,y)=2x4+2x2y2f(x,y) = 2 - x^4 + 2x^2 - y^2

Absolutní extrémy

  1. Najděte absolutní maximum a minimum funkce ff na množině D.D.

a) f(x,y)=x2+y22xf(x,y) = x^2 + y^2 - 2x, DD je uzavřený trojúhelníkový obrazec s vrcholy v bodech (2,0),(0,2),(0,2).(2,0), (0,2), (0,-2).

b) f(x,y)=x+yxy,f(x,y) = x + y -xy, DD je trojúhelníkový obrazec s vrcholy v bodech (0,0),(0,2),(4,0).(0,0), (0,2), (4,0).

c) f(x,y)=x2+y2+x2y+4,f(x,y) = x^2 + y^2 + x^2y + 4, D={(x,y):x1, y1}.D=\{(x,y): |x|\le 1,\ |y|\le 1\}.

d) f(x,y)=x2+xy+y26y,f(x,y) = x^2 + xy + y^2 - 6y, D={(x,y):3x3, 0y5}.D = \{(x,y): -3 \le x \le 3,\ 0 \le y \le 5\}.