5B1148 Flervariabelanalys Karim Daho 2007-04-09 Matlab-uppgift 3 i Flervariabelanalys Av: Arash Rezai IT1 och Lucas Held ME1
Rapport i 5B1148 Flervariabelanalys Innehållsförteckning Förord.....3 Problem 1...3 Problem 2...6 Problem 3.....9 Problem 4.....13 Problem 5.....16 Problem 6.....19
Matlab-uppgift 3 Förord Vi läste igenom alla introduktions-exemplena mycket noggrant och kom fram till hur vi skulle bära oss åt i Matlab. Nedan följer uppgifterna, med dess lösningar i Matlab, samt graferna till samtliga uppgifter. För enkelhetens skull har vi lagt max ett problem per sida. För att förenkla för läsaren, har vi markerat all Matlab-kod med färgen röd, samt all resultat i Matlab med blått. Problem 1: Find and classify all critical points of the function which you studied in the previous lesson, and compare your results with the contour and gradient plot of g that you have already made. OBS!! Om du tycker att funktionen g(x,y) från problem1 är besvärlig och inte kan få grepp om den så får ersättas med g(x,y)=exp(-2y^2-4xy-x^4)! Matlabkoden för problem1: Vi börjar med att mata in funktionen i MATLAB (kommandot syms används för att MATLAB ska se x, y och z som symboler istället för variabler). syms x y z f=exp(-2*y^2-4*x*y-x^4) Vi låter sedan MATLAB ta ut funktionen f:s förstaderivator med avseende på x och y. fx=diff(f,x) fy=diff(f,y) Kommandot solve används för att ta reda på i vilka punkter förstaderivatorna blir noll. [xcr,ycr]=solve(fx,fy); [xcr,ycr] MATLAB returnerar då 3 punkter: (0, 0), (1, -1) och (-1, 1)
Vi behöver också andraderivatorna som senare behövs för att skapa en hessiandeterminant (som i sin tur används för att klassificera extrempunkterna): fxx=diff(fx,x) fxy=diff(fx,y) fyy=diff(fy,y) Vi får fram matrisen av andraderivatorna gradf = jacobian(f, [x, y]) Och sedan tar vi determinanten av den hessmatf = jacobian(gradf, [x, y]) hessdetf1 = simplify(det(hessmatf)) Vi gör en tabell av extrempunkter, tillsammans med Hessiandeterminanten och andra partiella derivatan med avseende på x. xcr = xcr(1:3); ycr = ycr(1:3); for k = 1:3 [xcr(k), ycr(k), subs(hessdetf1, [x,y], [xcr(k), ycr(k)]),... subs(fxx, [x,y], [xcr(k), ycr(k)])] end x-koord. y-koord. Hessiandeterminant '' f xx Typ av extrempunkt 0 0-16 0 Sadelpunkt 1-1 2 32e -12e Maximipunkt -1 1 2 32e -12e Maximipunkt Genom att titta på hessiandeterminanten och andraderivatan med avseende på x kan man klassificera extrempunkterna på följande sätt: Är hessiandeterminanten för en extrempunkt negativ betyder det att den punktens egenvärden har olika tecken, vilket i sin tur betyder att den är en sadelpunkt. Är hessiandeterminanten för en extrempunkt positiv vet man att punkten är antingen en minimi- eller maximipunkt. För att bestämma vilken av dessa punkten är tittat man på andraderivatan med avseende på x: är den negativ har vi en maximipunkt, och är den positiv har vi en minimipunkt. Här ser vi att första punkten (0,0) är en sadelpunkt (negativ hessiandeterminant). (1,-1) och (-1,1) är båda maximipunkter (positiv hessiandeterminant och negativ andraderivata med avseende på x). Vi plottar lite så man kan se allt grafiskt också! Med hjälp av följande kommandon skapar vi en 2d-graf med vektorpilar för hur funktionen växer: [xx, yy] = meshgrid(-3:.1:3,-3:.1:3); ffun = inline(vectorize(f)); fxfun = inline(vectorize(gradf(1))); fyfun = inline(vectorize(gradf(2))); contour(xx, yy, ffun(xx,yy), 30) hold on [xx, yy] = meshgrid(-3:.25:3,-3:.25:3); quiver(xx, yy, fxfun(xx,yy), fyfun(xx,yy), 0.6) axis equal tight, hold off
Contour-grafen: Och med hjälp av följande kommandon får vi en 3d-graf syms x y f=exp(-2*y^2-4*x*y-x^4) [X1,Y1]= meshgrid(-5:.1:5,-5:.1:5); zfun = @(x, y) eval(vectorize(f)); Z1=zfun(X1,Y1); surf(x1,y1,z1) Surf-grafen: Egna kommentarer: Vi tyckte problem1 var besvärligt och kunde inte få grepp om det, då den första funktionen bara resulterade i nollor när vi deriverade, så istället ersatte vi den första funktionen med g(x,y)=exp(-2y^2-4xy-x^4).
Problem 2: Find and classify the critical points of the function You may have trouble substituting the symbolic values of the coordinates of the critical points into the Hessian matrix; if so, convert them to numerical values, using double. Matlabkoden för problem2: syms x y z f2=(3*x^2)+(4*y^2)+(z^2)-(9*x*y*z) f2 = 3*x^2+4*y^2+z^2-9*x*y*z Vi tar fram första- och andraderivatorna mha. att använda jacobian-kommandot två gånger, första gången för att ta fram förstaderivatorna, och andra gången för att ta fram andraderivatorna (som sedan används för att skapa en hessianmatris): gradf2=jacobian(f2,[x,y,z]) hessmatf2=jacobian(gradf2,[x,y,z]) gradf2 = [ 6*x-9*y*z, 8*y-9*x*z, 2*z-9*x*y] hessmatf2 = [ 6, -9*z, -9*y] [ -9*z, 8, -9*x] [ -9*y, -9*x, 2] För att hitta extrempunkterna måste vi hitta de punkter där partiella derivatorna är 0. Detta görs med kommandot solve : [xcr2,ycr2,zcr2]=solve(gradf2(1),gradf2(2), gradf2(3)); [xcr2,ycr2,zcr2] Punkterna: (0,0,0), (4/9, 2 3 9, 4 3 2 3 ), (-4/9, 9 9, - 4 3 2 3 ), (-4/9, - 9 9, 4 3 9 ) och (4/9, - 2 3 9, - 4 3 9 ) Det finns 5 extrempunkter, nu evaluerar vi hessianmatrisen i extrempunkterna. H1=subs(hessmatf2,[x,y,z], [xcr2(1),ycr2(1),zcr2(1)]) H2=subs(hessmatf2,[x,y,z], [xcr2(2),ycr2(2),zcr2(2)]) H3=subs(hessmatf2,[x,y,z], [xcr2(3),ycr2(3),zcr2(3)])
H4=subs(hessmatf2,[x,y,z], [xcr2(4),ycr2(4),zcr2(4)]) H5=subs(hessmatf2,[x,y,z], [xcr2(5),ycr2(5),zcr2(5)]) Hessianmatrisen, H1, till (0,0,0): [ 6, 0, 0] [ 0, 8, 0] [ 0, 0, 2] Hessianmatrisen, H2, till (4/9, 2/9*3^(1/2), 4/9*3^(1/2)): [ 6, -4*3^(1/2), -2*3^(1/2)] [ -4*3^(1/2), 8, -4] [ -2*3^(1/2), -4, 2] Hessianmatrisen, H3, till (-4/9, 2/9*3^(1/2), -4/9*3^(1/2)): [ 6, 4*3^(1/2), -2*3^(1/2)] [ 4*3^(1/2), 8, 4] [ -2*3^(1/2), 4, 2] Hessianmatrisen, H4, till (-4/9, -2/9*3^(1/2), 4/9*3^(1/2)): [ 6, -4*3^(1/2), 2*3^(1/2)] [ -4*3^(1/2), 8, 4] [ 2*3^(1/2), 4, 2] Hessianmatrisen, H5, till (4/9, -2/9*3^(1/2), -4/9*3^(1/2)): [ 6, 4*3^(1/2), 2*3^(1/2)] [ 4*3^(1/2), 8, -4] [ 2*3^(1/2), -4, 2] Vi har alltså ovan fått ut en hessianmatris för varje extrempunkt, men för att kunna klassificera punkterna tar vi nu fram egenvärdena för respektive hessianmatris. Detta med kommandot eig : eig(h1) eig(h2) eig(h3) eig(h4) eig(h5) Vi omvandlar egenvärdena H2, H3, H4 och H5 till numeriska värden. H1 är redan numerisk och behöver därmed inte bli konverterad. eig(h1) double(eig(h2)) double(eig(h3)) double(eig(h4)) double(eig(h5))
För att få en överskådlig syn över alla punkter sätter vi dem, och deras egenvärden, i en tabell: Punkt Egenvärden Typ av punkt (0,0,0) 6 8 2 Minimipunkt (4/9, 2 3 9, 4 3 9 ) 14.0565-4.3445 6.2880 (-4/9, 2 3 9, - 4 3 9 ) 14.0565-4.3445 6.2880 (-4/9, - 2 3 9, 4 3 9 ) 14.0565-4.3445 6.2880 (4/9, - 2 3 9, - 4 3 9 ) 14.0565-4.3445 6.2880 Sadelpunkt Sadelpunkt Sadelpunkt Sadelpunkt Egna kommentarer: Vi kan direkt komma med slutsatsen att första punkten är minimipunkt, och de fyra andra (som har samma egenvärden) är sadelpunkter. Detta enligt: - alla egenvärden är positiva minimipunkt - alla egenvärden är negativa maximipunkt - olika tecken på egenvärdena sadel Alltså: (0,0,0) är minimipunkt. Resterande fyra är sadelpunkter.
Problem 3: Find and classify all critical points of the function Relate your results to a simultaneous contour and gradient plot of the function. Matlabkoden för problem3: syms x y k=(x^4)+(y^4)+(x*y)-(x^2)-(y^2) kx=diff(k,x) ky=diff(k,y) kx = 4*x^3+y-2*x ky = 4*y^3+x-2*y I detta problem använder vi oss av en grafisk metod: Vi plottar en graf med två kurvor i, en där förstaderivatan med avseende på x är noll(röd), och en där förstaderivatan med avseende på y är noll(blå). Sedan läser vi av i grafen där de båda kurvorna skär varandra (dessa punkter är extrempunkter). [x1,y1]=meshgrid(-8:.1:8,-8:.1:8); kxfun=inline(vectorize(kx)); kyfun=inline(vectorize(ky)); contour(x1,y1,kxfun(x1,y1),[0,0],'r'), hold on contour(x1,y1,kyfun(x1,y1),[0,0],'b'), hold off Gradient-grafen:
Vi läser av ur grafen att det finns punkter kring: (-1,1), (-.5,-.5), (0,0), (.5,.5) och (1,-1) och låter sedan newtonfilen bestämma punktena mer exakt: [xsol,ysol]=newton2d(kx, ky, -1, 1); [xsol,ysol] ans = -0.8660 0.8660 [xsol,ysol]=newton2d(kx, ky, -.5, -.5); [xsol,ysol] ans = -0.5000-0.5000 [xsol,ysol]=newton2d(kx, ky, 0, 0); [xsol,ysol] ans = 0 0 [xsol,ysol]=newton2d(kx, ky,.5,.5); [xsol,ysol] ans = 0.5000 0.5000 [xsol,ysol]=newton2d(kx, ky, 1, -1); [xsol,ysol] ans = 0.8660-0.8660 Punkterna var alltså: 3 3 (, ), (-.5,-.5), (0,0), (.5,.5) samt ( 2 2 3 3, ). 2 2 Beräknar hessiandeterminanten: hessdetk = simplify(diff(kx, x)*diff(ky, y) - diff(kx, y)^2) hessdetk = 144*x^2*y^2-24*x^2-24*y^2+3 Tar fram hessiandeterminanterna och andraderivatorna med avseende på x för de olika punkterna: double(subs(hessdetk, [x,y], [-0.8660, 0.8660])) double(subs(diff(kx, x), [x,y], [-0.8660, 0.8660])) double(subs(hessdetk, [x,y], [-0.5000, -0.5000])) double(subs(diff(kx, x), [x,y], [0.5000, -0.5000])) double(subs(hessdetk, [x,y], [0, 0])) double(subs(diff(kx, x), [x,y], [0, 0])) double(subs(hessdetk, [x,y], [0.5000, 0.5000])) double(subs(diff(kx, x), [x,y], [0.5000, 0.5000])) double(subs(hessdetk, [x,y], [0.8660, -0.8660])) double(subs(diff(kx, x), [x,y], [0.8660, -0.8660])) Sedan sätter vi in alla punkter, deras hessiandeterminant och andraderivata med avseende på x för att få en bra överblick, se nästa sida:
x-koord. y-koord. Hessiandeterminant Andraderivatan map. x Typ av extrempunkt 3 2 3 2 48 7 Minimi -0.5-0.5 0 1 Minimi 0 0 3-2 Maximi 0.5 0.5 0 1 Minimi 3 2 3 2 48 7 Minimi Vi plottar, först i 2d, sedan också i3d: [X1,Y1]= meshgrid(-1:.05:1,-1:.05:1); zfun = @(x, y) eval(vectorize(k)) Z1=zfun(X1,Y1); zfun = @(x, y) eval(vectorize(k)) I 2d: ezcontour(k, [-1, 1, -1, 1]) Ezcontour-grafen: Och i 3d: surf(x1,y1,z1)
Surf-grafen: Egna kommentarer: (-0.8660, 0.8660) och (0.8660, -0.8660) är båda minimipunkter(positiv hessiandeterminant och positiv andraderivata). (0,0) är en maximipunkt(positiv hessiandeterminant och negativ andraderivata). (-0.5000, -0.5000) och (0.5000, 0.5000) går att klassificera enkelt genom att titta i grafen. Men eftersom contourplotten ser lite konstig ut just vid (0.5, 0.5) och (-0.5,-0.5) testar vi punkten med hjälp av inline-kommnadot: f=inline('x^4+y^4+x*y-x^2-y^2','x','y') f = Inline function: f(x,y) = x^4+y^4+x*y-x^2-y^2 För punkten (0.5,0.5): f(0.5, 0.5) ans= -0.1250 f(0.51, 0.51) ans = -0.1248 f(0.49, 0.49) ans = -0.1248 För punkten (-0.5,-0.5): f(-0.5, -0.5) ans= -0.1250 f(-0.51, -0.51) ans = -0.1248 f(-0.49, -0.49) ans = -0.1248 Vi ser alltså att vårt antagande att (0.5,0.5) och (-0.5,-0.5) är minimipunkter, vilket stämmer.
Problem 4: Find and classify all critical points of the function MATLAB will report many critical points, but only a few of them are real. Matlabkoden till problem4: syms x y z f2=(x^4)+(y^4)+(z^4) + (x*y*z) f2 = x^4+y^4+z^4+x*y*z Även i detta problem använder vi oss av jacobian-kommandot två gånger får att ta fram första- och andraderivatorna: gradf2=jacobian(f2,[x,y,z]) hessmatf2=jacobian(gradf2,[x,y,z]) gradf2 = [ 4*x^3+y*z, 4*y^3+x*z, 4*z^3+x*y] MATLAB ger oss följande hessianmatris: hessmatf2 = [ 12*x^2, z, y] [ z, 12*y^2, x] [ y, x, 12*z^2] Använder kommandot solve för att se vid vilka punkter som derivatorna är 0: [xcr2,ycr2,zcr2]=solve(gradf2(1),gradf2(2),gradf2(3)); [xcr2,ycr2,zcr2] Matlab ger oss punkterna: [ 0, 0, 0] [ -1/4, 1/4, 1/4] [ -1/4, -1/4, -1/4] [ 1/4, 1/4*i, 1/4*i] [ 1/4, -1/4*i, -1/4*i] [ 1/4, -1/4, 1/4] [ 1/4, 1/4, -1/4] [ -1/4, -1/4*i, 1/4*i] [ -1/4, 1/4*i, -1/4*i] [ -1/4*i, -1/4, 1/4*i] [ 1/4*i, -1/4, -1/4*i] [ 1/4*i, 1/4, 1/4*i] [ -1/4*i, 1/4, -1/4*i] [ 1/4*i, 1/4*i, 1/4] [ -1/4*i, -1/4*i, 1/4] [ -1/4*i, 1/4*i, -1/4] [ 1/4*i, -1/4*i, -1/4]
Det är bara 1,2,3,6 och 7 som är reella. Tar fram deras hessainmatriser: H1=subs(hessmatf2,[x,y,z], [xcr2(1),ycr2(1),zcr2(1)]) H2=subs(hessmatf2,[x,y,z], [xcr2(2),ycr2(2),zcr2(2)]) H3=subs(hessmatf2,[x,y,z], [xcr2(3),ycr2(3),zcr2(3)]) H6=subs(hessmatf2,[x,y,z], [xcr2(6),ycr2(6),zcr2(6)]) H7=subs(hessmatf2,[x,y,z], [xcr2(7),ycr2(7),zcr2(7)]) Hessianmatrisen, H1, till (0,0,0): [ 0, (0), (0)] [ (0), 0, (0)] [ (0), (0), 0] Hessianmatrisen, H2, (-1/4, 1/4, 1/4): [ 3/4, (1/4), (1/4)] [ (1/4), 3/4, (-1/4)] [ (1/4), (-1/4), 3/4] Hessianmatrisen, H3, (-1/4, -1/4, -1/4): [ 3/4, (-1/4), (-1/4)] [ (-1/4), 3/4, (-1/4)] [ (-1/4), (-1/4), 3/4] Hessianmatrisen, H6 (1/4, -1/4, 1/4): [ 3/4, (1/4), (-1/4)] [ (1/4), 3/4, (1/4)] [ (-1/4), (1/4), 3/4] Hessianmatrisen, H7, (1/4, 1/4, -1/4): [ 3/4, (-1/4), (1/4)] [ (-1/4), 3/4, (1/4)] [ (1/4), (1/4), 3/4] Vi tar ut egenvärdena för att kunna klassificera extrempunkterna: eig(h1) eig(h2) eig(h3) eig(h6) eig(h7) Sedan sätter vi in alla punkter och deras egenvärden i en tabell: Punkt Egenvärden Typ av extrempunkt (0,0,0) 0 0 0 Sadel (-1/4,1/4,1/4) 0.2500 1.000 1.000 Minimi (-1/4,-1/4,-1/4) 0.2500 1.000 1.000 Minimi (1/4,-1/4,1/4) 0.2500 1.000 1.000 Minimi (1/4,1/4,-1/4) 0.2500 1.000 1.000 Minimi Vi ser här att alla egenvärden till punkten (0,0,0), vilket gör att vi inte kan klassificera den punkten direkt, utan måste kolla om värden för punkter nära origo växlar tecken Växlar dessa värden har vi en sadelpunkt. Är de alla positiva har vi en minimipunkt, och är de alla negativa har vi en maximipunkt. De övriga fyra punkterna har samma egenvärden, alla positiva, vilket betyder att de alla är minimipunkter. Vi kollar vilka värden några punkter mycket nära origo får:
Kommandot inline låter oss mata in en vald punkt och då få ut funktionens värde i den punkten. f = inline('x^4+y^4+x*y*z','x', 'y','z') Inline function: f(x,y,z) = x^4+y^4+x*y*z punkt1=f(0.001,0.001,0.001) punkt1 = 1.0020e-009 punkt2=f(-0.001,0.001,0.001) punkt2 = -9.9800e-010 Egna kommentarer: Alla punkter utom (0,0,0) verkar vara minimipunkter. Punkten (0,0,0) har vi kommit fram till att den är en sadelpunkt, eftersom funktionsvärdet för punkter mycket nära den har olika tecken. Men vi kan dessvärre inte kontrollera detta grafiskt eftersom det är för många variabler, så vi sitter i mörkret här.
Problem 5: Find and classify all critical points of the function h(x, y) = y^2*exp(x^2) - x - 3*y. You will need the graphical/numerical method to find the critical points. Matlabkoden för problem5: syms x y k = y^2*exp(x^2) - x - 3*y kx=diff(k,x) kx = 2*y^2*x*exp(x^2)-1 ky=diff(k,y) ky = 2*y*exp(x^2)-3 Här använder vi oss av den grafiska metoden igen. Plottar och titta var de båda partiella derivatorna är noll: [x1,y1]=meshgrid(-6:.1:6,-6:.1:6); kxfun=inline(vectorize(kx)); kyfun=inline(vectorize(ky)); contour(x1,y1,kxfun(x1,y1),[0,0],'r'), hold on contour(x1,y1,kyfun(x1,y1),[0,0],'b'), hold off Gradient-grafen: Följde punkter approximerades ur grafen: (0.2,1.4) (1.2,0.2) (2.1,0.1) (4.0,0.1)
Vi använder Newton-filen för att bestämma punkterna mer exakt: [xsol,ysol]=newton2d(kx, ky, 0.2, 1.4); [xsol,ysol] [xsol,ysol]=newton2d(kx, ky, 1.2, 0.2); [xsol,ysol] [xsol,ysol]=newton2d(kx, ky, 2.1, 0.1); [xsol,ysol] [xsol,ysol]=newton2d(kx, ky, 4.0, 0.1); [xsol,ysol] Vi ser att det endast finns två extrempunkter. De resterande två visade sig inte vara extrempunkter. punkt1 = 0.2348 1.4195 punkt2 = 1.3406 0.2486 punkt3 = 1.3406 0.2486 punkt4 = 1.3406 0.2486 Tar fram hessiandeterminanten: hessdetk = simplify(diff(kx, x)*diff(ky, y) - diff(kx, y)^2) hessdetk = -4*y^2*exp(2*x^2)*(-1+2*x^2) Och tar fram hessiandeterminanten samt andraderivatan med avseende på x för de båda punkterna: double(subs(hessdetk, [x,y], [0.2348, 1.4195])) double(subs(diff(kx, x), [x,y], [0.2348, 1.4195])) double(subs(hessdetk, [x,y], [1.3406, 0.2486])) double(subs(diff(kx, x), [x,y], [1.3406, 0.2486])) Sedan sätter vi in punkterna samt deras hessiandeterminanter och andraderivata med avseende på x: x-värde y-värde Hessiandeterminant '' k xx Typ av punkt 0.2348 1.4195 8.0072 4.7279 Sadelpunkt 1.3406 0.2486-23.3420 3.4259 Minimipunkt Den första punkten (0.2348, 1.4195) har positiv hessiandeterminant och positiv andraderivata med avseende på x, vilket betyder lokalt min. Den andra punkten (1.3406, 0.2486) har negativ hessiandeterminant, vilket betyder att det är en sadelpunkt där. På nästa sida kollar vi grafiskt.
2d-graf i närheten av punkt1: ezcontour(k, [0.2, 0.27, 1.39, 1.45]) Och i närheten av punkt2: ezcontour(k, [1.3, 1.4, 0.2, 0.3]) Egna kommentarer: Lösningarna som vi har fått ut stämmer med grafen. Även i grafen ser vi att det är ett lokalt minimum i (0.2348, 1.4195) och en sadelpunkt i (1.3406, 0.2486).
Problem 6: Find and classify all critical points of the function h(x, y) = y^2*exp(x) - x - 3*y. Use both the analytical and the graphical/numerical methods to find the critical points, and compare the results. Matlabkoden för problem6: Grafiskt: syms x y k = y^2*exp(x) - x - 3*y kx=diff(k,x) ky=diff(k,y) kx = y^2*exp(x)-1 ky = 2*y*exp(x)-3 Använder den grafiska metoden igen: Plottar båda partialderivatorna=0 och kollar var dessa skär varandra: [x1,y1]=meshgrid(-4:.1:6,-6:.1:6); kxfun=inline(vectorize(kx)); kyfun=inline(vectorize(ky)); contour(x1,y1,kxfun(x1,y1),[0,0],'r'), hold on contour(x1,y1,kyfun(x1,y1),[0,0],'b'), hold off Punkter utlästa ur graf: (0.9,0.8) och (6.0,0.0)
Newtons tar fram mer exakta värden: [xsol,ysol]=newton2d(kx, ky, 0.9, 0.8); [xsol,ysol] [xsol,ysol]=newton2d(kx, ky, 6.0, 0.1); [xsol,ysol] ans = 0.8109 0.6667 ans = 0.8109 0.6667 Båda är samma punkt, finns alltså bara en punkt. Tar fram hessiandeterminanten: hessdetk = simplify(diff(kx, x)*diff(ky, y) - diff(kx, y)^2) hessdetk = -2*y^2*exp(2*x) Tar fram hessiandeterminanten och andraderivatan med avseende på x för punkten: double(subs(hessdetk, [x,y], [0.8109, 0.6667])) double(subs(diff(kx, x), [x,y], [0.8109, 0.6667])) Vi sätter sedan in punkten och dess hessiandeterminant I en tabell: x-koord. y-koord. Hessiandeterminant Typ av extrempunkt ln(9/4) 2/3-4.5002 Sadelpunkt Punktens Hessiandeterminant är negativ, alltså är det en sadelpunkt. Andraderivatan är överflödig här. Vi tittar grafiskt: ezcontour(k, [0.75, 0.88, 0.62, 0.71])
Analytiskt: syms x y f 2 y^2*exp(x) - x - 3*y Tar fram första och andra partiella derivatorna mha. kommandot jacobian två gånger: gradf2=jacobian(f2,[x,y]) hessmatf2=jacobian(gradf2,[x,y] gradf2 = [ y^2*exp(x)-1, 2*y*exp(x)-3] hessmatf2 = [ y^2*exp(x), 2*y*exp(x)] [ 2*y*exp(x), 2*exp(x)] Tar fram punkter där förstaderivatorna är 0 mha. kommandot solve : [xcr2,ycr2]=solve(gradf2(1),gradf2(2)); a= [xcr2,ycr2] a = [ log(9/4), 2/3] Det finns alltså en extrempunkt. Tar fram numeriska värden för punktens koordinater: Double(a) ans= [0.8109 0.6667] Evaluerar hessianmatrisen i extrempunkten: H1=subs(hessmatf2,[x,y], [xcr2(1),ycr2(1)]) H1 = [ 1, 3] [ 3, 9/2] Tar fram egenvärdena: eig(h1) ans = 11/4+1/4*193^(1/2) 11/4-1/4*193^(1/2) Tar fram numeriska värden för egenvärdena: double(eig(h1)) ans = 6.2231-0.7231 Vi ser att extrempunkten är en sadelpunkt (ena egenvärdet >0, andra <0) Egna kommentarer: Här ser vi klart och tydligt att man kan göra på två helt olika sätt (numerisk/grafisk och analytisk) och erhålla samma resultat. I detta problem tycker vi analytiska metoden var betydligt smidigare, bl.a. eftersom man slipper approximera med ögonmått var derivatorna = 0 och sedan använda newton-filen. Det som är positivt med den grafiska är dock att man lättare kan se vad man gör den analytiska metoden är ju mer teori utan praktik, så det gäller att man vet vad man gör.