F11 - Tillämpning partiell derivata

KTH/ICT: IX1304, VT-2012
Göran Andersson, goeran@kth.se
120508

Mål

Att kunna redogöra för följande begrepp

gradient, Hessian

nivåkurva

att kunna

förklara principer för optimering, med och utan bivillkor

tillämpa optimering i Mathematica

Innehåll

Teori

Adams chapter 13.1-2

Extremvärden

Adams (6^th) ed. ch. 13.1-2
Adams (7^th) ed. ch. 13.1-2

Teori

Precis som i det endimensionella fallet spelar derivatorna en stor roll vid extremvärdesundersökningar. En fullständig teori ligger utanför kursramen så vi ska bara belysa problemet med några exempel. I sammanhanget brukar man använda sig av en vektor med de partiella derivatorna

∇f=(((∂f)/(∂(Subscript[x, 1]))),((∂f)/(∂(Subscript[x, 2]))),…,((∂f)/(∂(Subscript[x, n]))))

Denna vektor brukar kallas gradient och symbolen ∇ kallas nabla. Vektorn ∇f har egenskapen att peka i den riktning i vilken f ökar snabbast.

Låt oss som exempel betrakta funktionen f(x,y)=y+x y-(x^2) y-(y^2).

Gradienten i punkten (x,y) blir

∇f=(((∂f)/(∂x)),((∂f)/(∂y)))=(y-2x y,1+x-(x^2)-2y)

I den röda punkten 𝕒=(1,4) kan vi skriva

∇f(𝕒)=(4-2×1×4,1+1-(1^2)-2×4)=(-4,-7)

I figuren ovan är ∇f(𝕒)/(Norm[∇f(𝕒)])=(-4,-7)/(Sqrt[65]) med längd 1 utritad. I den gröna punkten 𝕓=((1/2),(5/8)) blir

∇f(𝕓)=((5/8)-2×(1/2)×(5/8),1+(1/2)-((((1/2)))^2)-2×(5/8))=(0,0)

Då ∇f(𝕓)=𝟘 sägs 𝕓 kallas vara en stationär punkt eller en kritisk punkt.

Här följder nu en strategi för att hitta max/min:

Problem : Hitta max/min
Sök max/min för f(x) som är kontinuerlig på ett kompakt (slutet och begränsat) område 𝒟.

Lösning:
	(I)	Sök alla kritiska eller singulära punkter i det inre av området 𝒟.
	(II)	Undersök funktionen på randen av 𝒟.
	(III)	Max/min finns i någon av de undersökta punkterna.

Med en singulär punkt menas här en punkt där ∇f(x) inte existerar.

Exempel 1

Låt oss fortsätta med att söka max/min till

f(x,y)=y-(x^2) y-(y^2), 𝒟={(x,y):(x^2)+(y^2)≤2}

Lösning

Vi ska först undersöka det inre av 𝒟, ℐ={(x,y):(x^2)+(y^2)<2}. Gradienten är

∇f=(((∂f)/(∂x)),((∂f)/(∂y)))=(-2x y,1-(x^2)-2y)

De kritiska punkterna blir:

(-2x y,1-(x^2)-2y)=(0,0)⇔(x,y)∈{(0,(1/2)),(1,0),(-1,0)}

=>f(0,(1/2))=(1/4), f(1,0)=0, f(-1,0)=0

På randen ∂𝒟 av 𝒟 gäller

∂𝒟={(x,y):(x^2)+(y^2)=2}⇔(x^2)=2-(y^2)

=>f(x,y)=y-(x^2) y-(y^2)=g(y)=y-(2-(y^2)) y-(y^2)=(y^3)-(y^2)-y

Vi söker nu extremvärden för g(y)

g'(y)=3(y^2)-2y-1=>g'(y)=0⇔y=-(1/3)∨y=1

Detta leder till fyra punkter (x,y)

(±(Sqrt[2-((((1/3)))^2)]),-(1/3))=(±((Sqrt[17])/3),-(1/3))∨(±(Sqrt[2-(1^2)]),1)=(±1,1)

Funktionens värde i punkterna blir:

=>f(±((Sqrt[17])/3),-(1/3))=g(-(1/3))=(5/27), f(±1,1)=g(1)=-1

Då (x,y)∈∂𝒟 så gäller -(Sqrt[2])≤y≤(Sqrt[2]). Vi måste därmed även undersöka y=±(Sqrt[2]).

=>f((Sqrt[2-(((-(Sqrt[2])))^2)]),-(Sqrt[2]))=f(0,-(Sqrt[2]))=g(-(Sqrt[2]))=-2-(Sqrt[2]), f(0,(Sqrt[2]))=g((Sqrt[2]))=-2+(Sqrt[2])

I detta fall finns inga ytterligare speciella punkter, t.ex. hörn. Därmed erhålls

(max_((x,y)∈𝒟))f(x,y)=max{(1/4),0,0,(5/27),(5/27),-1,-1,-2-(Sqrt[2]),-2+(Sqrt[2])}=(1/4)

(min_((x,y)∈𝒟))f(x,y)=min{(1/4),0,0,(5/27),(5/27),-1,-1,-2-(Sqrt[2]),-2+(Sqrt[2])}=-2-(Sqrt[2])

Dvs. max f=(1/4) som antas i (0,(1/2)) och min f=-(2+(Sqrt[2])) som antas i punkten (0,-(Sqrt[2])).

Mathematica

ClearAll["`*"]

f[x_,y_]:=y-(x^2) y-(y^2);
𝒟[x_,y_]:=(x^2)+(y^2)≤2;

M=Maximize[{f[x,y],𝒟[x,y]},{x,y}]

m=Minimize[{f[x,y],𝒟[x,y]},{x,y}]

pM={x,y,M[[1]]}/.M[[2]]

pm={x,y,m[[1]]}/.m[[2]]

Grafik

plot=Plot3D[f[x,y],{x,-2,2},{y,-2,2},PlotRange->{-3.5,.5},PlotPoints->35,ColorFunction->"DarkRainbow",RegionFunction->Function[{x,y,z},𝒟[x,y]],AxesLabel->{"x","y","z"},MeshFunctions->{Function[{x,y,z},z]},Mesh->{Range[-3.5,.5,0.25]}];
points=Graphics3D[{PointSize[0.02],Red,Point[pM],Blue,Point[pm]}];
Show[plot,points]

ContourPlot[f[x,y],{x,-1.5,1.5},{y,-1.5,1.5},PlotRange->{-3.5,.5},PlotPoints->35,ColorFunction->"DarkRainbow",Contours->Range[-3.5,.5,0.25],RegionFunction->Function[{x,y,z},𝒟[x,y]],FrameLabel->{"x","y"},Epilog->{PointSize[0.02],Red,Point[pM[[1;;2]]],Blue,Point[pm[[1;;2]]]}]

Manuell hantering

gradf[x_,y_]=D[f[x,y],{{x,y}}]

sol1=Solve[gradf[x,y]=={0,0}]

g[y_]=f[x,y]/.{(x^2)->2-(y^2)}

sol2=Solve[g'[y]==0]

points={x,y,f[x,y]}/.sol1

points=points~Join~({-(Sqrt[2-(y^2)]),y,f[-(Sqrt[2-(y^2)]),y]}/.sol2)

points=points~Join~({(Sqrt[2-(y^2)]),y,f[(Sqrt[2-(y^2)]),y]}/.sol2)

points=points~Join~{{0,-(Sqrt[2]),f[0,-(Sqrt[2])]},{0,(Sqrt[2]),f[0,(Sqrt[2])]}}

max[p_]:=Max[Last/@p];
min[p_]:=Min[Last/@p]

{m,M}={min[points],max[points]}

Select[points,Function[p,Last[p]==M]]

Select[points,Function[p,Last[p]==m]]

Exempel 2

En speciell typ av extremvärdesproblem är att söka extremvärde till en linjär funktion under bivillkor. Detta brukar kallas linjär programmering. Exempel: Sök maximum till funktionen

f(x,y)=3x+5y, 𝒟={(x,y):x≥0,y≥0,5x+y≤5, 2x+7y≤8}

Lösning

En linjär funktion har alltid en konstant gradient. Därför saknas inre kritiska punkter och extremvärdena måste antas på randen. Problemet kan lösas grafiskt genom att nivålinjer till funktionen ritas i ett diagram med området 𝒟 inritat. Dra musen över nivålinjerna i vänstra bilden, så visas funktionsvärdet.

Av grafen framgår att maxvärdet är f(x,y)=7 som antas i skärningen mellan de två begränsningslinjerna.

(Piecewise[{{5x+y=5}, {2x+7y=8}}])⇔(Piecewise[{{x=(9/11)}, {y=(10/11)}}])

Mathematica

ClearAll["`*"]

f[x_,y_]:=3x+5y;
𝒟[x_,y_]:=x≥0&&y≥0&&5x+y≤5&&2x+7y≤8;

Maximize[{f[x,y],𝒟[x,y]},{x,y}]

Grafik

cplot=ContourPlot[f[x,y],{x,0,1.5},{y,0,1.5},ContourShading->None,Contours->Range[0,12]];
dplot=RegionPlot[𝒟[x,y],{x,0,1.5},{y,0,1.5}];
Show[dplot,cplot,FrameLabel->{"x","y"}]

Lokala extremvärden

Adams (6^th) ed. ch. 13.1-2
Adams (7^th) ed. ch. 13.1-2

Teori

Denna teori ligger utanför kursramen och ges endast som en orientering.

Vi har tidigare sett att kritiska punkter till en funktion erhålls genom att söka punkter där

∇f=𝟘

Precis som i det envariabelfallet kan de kritiska punkterna klassificeras som lokala max eller min. Det finns även en typ som kallas sadelpunkt (motsvarar terrasspunkt i 1D).

Klassificeringen av lokala extremvärden är mer komplicerad för flerdimensionella funktioner, men går i korthet ut på följande:

Problem : Lokalt max/min
Bilda matrisen ℍ(𝕒)  (Hessian matrix) som består av alla andraderivator i den kritiska punkten 𝕒. Beräkna egenvärdena (Subscript[λ, i]) till matrisen. Egenvärdena till matrisen erhålls genom att lösa ekvationen

	ℍ(𝕒) · 𝕩 = λ 𝕩

	(I)	∀(Subscript[λ, i])>0=>ℍ(𝕒) positivt definit=>𝕒 lokalt min
	(II)	∀(Subscript[λ, i])<0=>ℍ(𝕒) negativt definit=>𝕒 lokalt max
	(III)	∀(Subscript[λ, i])≠0∧∀(Subscript[λ, i])≸0=>ℍ(𝕒) indefinit=>𝕒 sadelpunkt
	(IV)	∃(Subscript[λ, i])=0=>ℍ(𝕒) semidefinit=>ytterligare undersökning krävs

För två variabler kan ovanstående egenvärdesproblem förenklas till ett recept med andraderivatorna i punkten.

Problem : Lokalt max/min, två variabler
Bilda 𝒜=(Subscript[f, xx]^(′′))(a,b),ℬ=(Subscript[f, xy]^(′′))(a,b),𝒞=(Subscript[f, yy]^(′′))(a,b)  i den kritiska punkten (a,b)

	(I)	𝒜 𝒞-(ℬ^2)>0,𝒜>0=>lokalt min
	(II)	𝒜 𝒞-(ℬ^2)>0,𝒜<0=>lokalt max
	(III)	𝒜 𝒞-(ℬ^2)<0=>sadelpunkt
	(IV)	𝒜 𝒞-(ℬ^2)=0=>ytterligare undersökning krävs

Anm: uttrycket 𝒜 𝒞-(ℬ^2)=(Det[ℍ]) för två variabler.

ℍ(a,b)=(({{(Subscript[f, xx]^(′′))(a,b), (Subscript[f, xy]^(′′))(a,b)}, {(Subscript[f, yx]^(′′))(a,b), (Subscript[f, yy]^(′′))(a,b)}}))=(({{𝒜, ℬ}, {ℬ, 𝒞}}))=>(Det[ℍ])=(Det[({{𝒜, ℬ}, {ℬ, 𝒞}})])=𝒜 𝒞-(ℬ^2)

Exempel 3

Bestäm alla lokala max- och min-punkter till funktionen

f(x,y)=(1/10)(x+y+(((y^2)x)/2)-((x^3)/4)-((y^3)/5)-(((x^2)(y^2))/3))

Lösning

Vi använder Mathematica här:

ClearAll["`*"]

f[{x_,y_}]:=(1/10)(x+y+(((y^2)x)/2)-((x^3)/4)-((y^3)/5)-(((x^2)(y^2))/3))
𝕩={x,y};
𝕠={0,0};

Gradienten blir:

𝔾[{x_,y_}]={D[f[𝕩],x],D[f[𝕩],y]}

Vi söker nu gradientens nollställen.

solution=NSolve[𝔾[𝕩]==𝕠,𝕩,Reals];
𝕏=𝕩/.solution

De tre funktionerna 𝒜,ℬ,𝒞 införs med

𝒜[{x_,y_}]=D[f[𝕩],{x,2}]

ℬ[{x_,y_}]=D[f[𝕩],x,y]

𝒞[{x_,y_}]=D[f[𝕩],{y,2}]

För de tre kritiska punkterna beräknas nu den kvadratiska formen 𝒜 𝒞-(ℬ^2) och 𝒜=(Subscript[f, xx]^(′′))

{𝒜[𝕏[[1]]]𝒞[𝕏[[1]]]-((ℬ[𝕏[[1]]])^2),𝒜[𝕏[[1]]]}

Dvs. eftersom 𝒜 𝒞-(ℬ^2)<0  är (Subscript[𝕩, 1]) en sadelpunkt.

{𝒜[𝕏[[2]]]𝒞[𝕏[[2]]]-ℬ[𝕏[[2]]],𝒜[𝕏[[2]]]}

Eftersom 𝒜 𝒞-(ℬ^2)>0, 𝒜<0 är (Subscript[𝕩, 2]) en lokal maxpunkt.

{𝒜[𝕏[[3]]]𝒞[𝕏[[3]]]-ℬ[𝕏[[3]]],𝒜[𝕏[[3]]]}

Eftersom 𝒜 𝒞-(ℬ^2)<0 är (Subscript[𝕩, 3]) en sadelpunkt. Vi avslutar med en bild:

{p1,p2,p3}={{𝕏[[1,1]],𝕏[[1,2]],f[𝕏[[1]]]},{𝕏[[2,1]],𝕏[[2,2]],f[𝕏[[2]]]},{𝕏[[3,1]],𝕏[[3,2]],f[𝕏[[3]]]}}//N

points=Graphics3D[{PointSize[0.02],Red,Point[p2],Blue,Point[p1],Point[p3]}];
plot=Plot3D[f[𝕩],{x,-5,5},{y,-5,5},PlotRange->{-0.5,0.5},ClippingStyle->None,MeshFunctions->Function[{x,y,z},z],Mesh->9,PlotPoints->35
];
Show[plot,points]

Lösning med Hessian

ClearAll["`*"]

f[{x_,y_}]:=(1/10)(x+y+(((y^2)x)/2)-((x^3)/4)-((y^3)/5)-(((x^2)(y^2))/3))
𝕩={x,y};
𝕠={0,0};

Gradienten blir:

𝔾[{x_,y_}]=D[f[𝕩],{𝕩}]

Hessianen blir:

MatrixForm[
ℍ[{x_,y_}]=D[f[𝕩],{𝕩,2}]//Simplify
]

Vi söker nu gradientens nollställen.

solution=NSolve[𝔾[𝕩]==𝕠,𝕩,Reals];
𝕏=𝕩/.solution

Egenvärdena till hessianen i de tre stationära punkterna blir

λ[1]=Eigenvalues[ℍ[𝕏[[1]]]]

λ[2]=Eigenvalues[ℍ[𝕏[[2]]]]

λ[3]=Eigenvalues[ℍ[𝕏[[3]]]]

Alla egenvärden (Subscript[λ, 2]) är negativa. Slutsatsen här blir att matrisen (Subscript[ℍ, 2]) i punkten (Subscript[𝕩, 2]) är negativt definit, vilket innebär att (Subscript[𝕩, 2]) är en lokal max-punkt. För de två andra punkterna är hessianen indefinit, så (Subscript[𝕩, 1]) och (Subscript[𝕩, 3]) är sadelpunkter.

Några ytterligare exempel

1

Bestäm de största och minsta värdena för funktionen

f(x,y)=x y+(x^2)(y^2)

i området (Abs[x])≤1,(Abs[y])≤1.

Lösning

Området och funktionen är

𝒦={(x,y):-1≤x≤1∧-1≤y≤1}, f(x,y)=x y+(x^2)(y^2)

Eftersom området är kompakt existerar max/min. Vi söker först stationär punkt där ∇f=𝟘 i det inre området

ℐ={(x,y):-1<x<1∧-1<y<1}

∇f(x,y)=(y+2x (y^2) ,x+2(x^2) y)=(y (1+2x y) ,x (1+2x y))

∴∇f(x,y)=(0,0)⇔(Piecewise[{{y (1+2x y)=0}, {x (1+2x y)=0}}])⇔(x,y)=(0,0)∨x y=-(1/2)

Vi har därmed att  ∇f=𝟘 i origo och på hyperbeln x y =-1/2.

f(0,0)=0, f(x,y)(Overscript[=, x y =-1/2])-(1/2)+(1/4)=-(1/4)

Nästa område att undersöka är randen (exklusive hörnen).

∂=={(x,y):-1<x<1∧y=-1}⋃{(x,y):x=1∧-1<y<1}⋃{(x,y):-1<x<1∧y=1}⋃{(x,y):x=-1∧-1<y<1}

På (∂_1) gäller

(x,y)∈(∂_1)=>f(x,y)=f(x,-1)=g(x)=-x+(x^2),g'(x)=0⇔-1+2x=0=>x=(1/2)

Punkten (1/2,-1) ligger på den tidigare undersökta hyperbeln. (∂_2),(∂_3),(∂_4) ger alla punkter på hyperbeln. Återstår att undersöka hörnen.

f(-1,-1)=(-1)(-1)+(((-1))^2)(((-1))^2)=2=f(1,1)

f(1,-1)=f(-1,1)=0

Vi kan nu se bland de inramade värdena att

(max_((x.y)∈𝒦))(f(x,y))=2, (min_((x.y)∈𝒦))(f(x,y))=-(1/4)

Mathematica

ClearAll["`*"]

Området är

𝒦[x_,y_]:=(-1≤x≤1)&&(-1≤y≤1)

Funktionen definieras:

f[x_,y_]:=x y+(x^2)(y^2)

Extremvärdena blir

MinValue[{f[x,y],𝒦[x,y]},{x,y}]

MaxValue[{f[x,y],𝒦[x,y]},{x,y}]

2

Beräkna största och minsta värde av funktionen

f(x,y)=(x^2)-3x y+(y^2)-x+4y

i området 0≤y≤x≤1.

Lösning

Området och funktionen är

𝒦={(x,y):0≤x≤1∧0≤y≤x}, f(x,y)=(x^2)-3x y+(y^2)-x+4y

Eftersom området är kompakt existerar max/min. Vi söker först stationär punkt där ∇f=𝟘 i det inre området

ℐ={(x,y):0<x<1∧0<y<x}

∇f(x,y)=(2 x-3 y-1,-3 x+2 y+4)

∴∇f(x,y)=(0,0)⇔(Piecewise[{{2 x-3 y-1=0}, {-3 x+2 y+4=0}}])⇔(x,y)=(2,1)∉𝒦

Punkten ligger utanför området. Vi undersöker nu det inre av randen.

∂=={(x,y):0<x<1∧y=0}⋃{(x,y):x=1∧0<y<1}⋃{(x,y):0<x<1∧y=x}

(x,y)∈(∂_1)=>f(x,y)=f(x,0)=(Subscript[g, 1])(x)=(x^2)-x,(Subscript[g, 1]^′)(x)=0⇔2x-1=0=>x=(1/2)

(x,y)∈(∂_2)=>f(x,y)=f(1,y)=(Subscript[g, 2])(y)=(y^2)+y,(Subscript[g, 2]^′)(y)=0⇔2y+1=0=>y=-(1/2)

(x,y)∈(∂_3)=>f(x,y)=f(x,x)=(Subscript[g, 3])(x)=3 x-(x^2),(Subscript[g, 3]^′)(x)=0⇔3-2x=0=>x=(3/2)∉𝒦

Vi får två punkter i 𝒦

f((1/2),0)=-(1/4), f(1,(1/2))=(3/4)

Återstår att undersöka de tre hörnen.

f(0,0)=0, f(1,0)=0, f(1,1)=2

Vi kan nu se bland de inramade värdena att

(max_((x.y)∈𝒦))(f(x,y))=2, (min_((x.y)∈𝒦))(f(x,y))=-(1/4)

Mathematica

ClearAll["`*"]

Området är

𝒦[x_,y_]:=0≤y≤x≤1

Funktionen definieras:

f[x_,y_]:=(x^2)-3x y+(y^2)-x+4y

Extremvärdena blir

MinValue[{f[x,y],𝒦[x,y]},{x,y}]

MaxValue[{f[x,y],𝒦[x,y]},{x,y}]

Grafik

m=Minimize[{f[x,y],𝒦[x,y]},{x,y}]

M=Maximize[{f[x,y],𝒦[x,y]},{x,y}]

p1={x,y,m[[1]]}/.m[[2]]

p2={x,y,M[[1]]}/.M[[2]]

plot1=Plot3D[
f[x,y],{x,0,2},{y,0,2},PlotRange->All,
PlotStyle->Opacity[0.75],
RegionFunction->Function[{x,y,z},𝒦[x,y]],
Mesh->{Range[0,2,0.5],Range[0,2,0.5]},
AxesLabel->{"x","y","f"}
]

plot2=Graphics3D[{
{PointSize[0.02],Red,Point[p1]},
{PointSize[0.02],Blue,Point[p2]}
}];
Show[plot1,plot2]

3

Beräkna största och minsta värde till

f(x,y)=(x^2)+x ((y^2)-1)

i området (x^2)+(y^2)≤1.

Lösning

Området och funktionen är

𝒦={(x,y):(x^2)+(y^2)≤1}, f(x,y)=(x^2)+x ((y^2)-1)

Eftersom området är kompakt existerar max/min. Vi söker först stationär punkt där ∇f=𝟘 i det inre området

ℐ={(x,y):(x^2)+(y^2)<1}

∇f(x,y)=(2 x+(y^2)-1,2x y)

∴∇f(x,y)=(0,0)⇔(Piecewise[{{2 x+(y^2)-1=0}, {2x y=0}}])(Overscript[⇔, (x,y)∈ℐ])(x,y)=((1/2),0)

f((1/2),0)=-(1/4)

Vi undersöker nu “det inre” av randen.

∂=={(x,y):(x^2)+(y^2)=1}=>(y^2)-1=-(x^2)

(x,y)∈∂=>f(x,y)=(x^2)+x (-(x^2))=g(x)=(x^2)-(x^3), -1<x<1

g'(x)=0⇔2x-3(x^2)=0⇔x∈{0,(2/3)}

Eftersom (x^2)+(y^2)=1 får vi följande randpunkter:

{(0,±1),((2/3),±((Sqrt[5])/3))

f(0,±1)=0, f((2/3),±((Sqrt[5])/3))=(4/27)

Återstår gör “hörnpunkterna” x=±1.

f(-1,0)=2, f(1,0)=0

Vi kan nu se bland de inramade värdena att

(max_((x.y)∈𝒦))(f(x,y))=2, (min_((x.y)∈𝒦))(f(x,y))=-(1/4)

Mathematica

ClearAll["`*"]

Området är

𝒦[x_,y_]:=(x^2)+(y^2)≤1

Funktionen definieras:

f[x_,y_]:=(x^2)+x ((y^2)-1)

Extremvärdena blir

MinValue[{f[x,y],𝒦[x,y]},{x,y}]

MaxValue[{f[x,y],𝒦[x,y]},{x,y}]

Grafik

m=Minimize[{f[x,y],𝒦[x,y]},{x,y}]

M=Maximize[{f[x,y],𝒦[x,y]},{x,y}]

p1={x,y,m[[1]]}/.m[[2]]

p2={x,y,M[[1]]}/.M[[2]]

plot1=Plot3D[
f[x,y],{x,-1,1},{y,-1,1},PlotRange->All,
PlotStyle->Opacity[0.75],
RegionFunction->Function[{x,y,z},𝒦[x,y]],
Mesh->{Range[-1,1,0.5],Range[-1,1,0.5]},
AxesLabel->{"x","y","f"}
]

plot2=Graphics3D[{
{PointSize[0.02],Red,Point[p1]},
{PointSize[0.02],Blue,Point[p2]}
}];
Show[plot1,plot2]