(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 52167, 1483]*) (*NotebookOutlinePosition[ 53770, 1532]*) (* CellTagsIndexPosition[ 53696, 1526]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[{ "Matem\[AAcute]ticas con ", StyleBox["Mathematica", FontSlant->"Italic"], " " }], "Title"], Cell["\<\ Pr\[AAcute]ctica 8. Gr\[AAcute]ficos 3D. Derivadas parciales. Extremos \ relativos y extremos condicionados\ \>", "Subtitle"], Cell[TextData[StyleBox["Francisco Javier P\[EAcute]rez Gonz\[AAcute]lez\n\ Departamento de An\[AAcute]lisis Matem\[AAcute]tico\nUniversidad de Granada", FontSize->12]], "Author", TextAlignment->Left], Cell[CellGroupData[{ Cell["Introducci\[OAcute]n", "Section"], Cell[TextData[{ "Con", StyleBox[" Mathematica", FontSlant->"Italic"], " puedes hacer de forma muy sencilla espectaculares representaciones gr\ \[AAcute]ficas de superficies y curvas en ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^3\)]], ". A tal efecto, el programa proporciona una gran variedad de comandos de \ uso general y tambi\[EAcute]n \"paquetes\" dirigidos a fines m\[AAcute]s \ espec\[IAcute]ficos. En esta pr\[AAcute]ctica veremos las herramientas de uso \ m\[AAcute]s frecuente cuyo conocimiento te permitir\[AAcute], si el tema es \ de tu inter\[EAcute]s, proseguir el estudio por tu cuenta. Lo que debes \ aprender en este cuaderno es lo siguiente." }], "Text"], Cell["\<\ Representar gr\[AAcute]ficamente superficies definidas de distintas formas. Calcular derivadas parciales, vectores gradientes y derivadas direccionales. Calcular y representar planos tangentes a una superficie. Calcular extremos relativos de campos escalares de dos y tres variables. Usar la teor\[IAcute]a de los multiplicadores de Lagrange para calcular \ extremos condicionados. Calcular extremos absolutos en conjuntos compactos.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Representaci\[OAcute]n gr\[AAcute]fica de superficies ", "Section"], Cell[TextData[{ "Para representar una superficie debes tener en primer lugar una descripci\ \[OAcute]n matem\[AAcute]tica de la misma. Las formas m\[AAcute]s frecuentes \ de dar una superficie en ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^3\)]], " son las siguientes:\n", StyleBox["a)", FontWeight->"Bold"], " La superficie viene dada por ", StyleBox["la gr\[AAcute]fica de una funci\[OAcute]n", FontWeight->"Bold", FontSlant->"Italic"], ", es decir, se trata de una supercie de la forma" }], "Text"], Cell[TextData[{ Cell[BoxData[ \(TraditionalForm\`S = \({\((x, y, z)\) \[Element] \(\(\[DoubleStruckCapitalR]\^3\) : \ \((x, y)\) \[Element] A\), \ z = f(x, y)} = {\((x, y, f(x, y))\) \[Element] \(\(\[DoubleStruckCapitalR]\^3\) : \ \ \((x, y)\) \[Element] A\)}\)\)]], " donde ", Cell[BoxData[ \(TraditionalForm\`A \[Subset] \ \[DoubleStruckCapitalR]\^2\)]] }], "Text", TextAlignment->Center], Cell[TextData[{ StyleBox["b)", FontWeight->"Bold"], " La superficie est\[AAcute] ", StyleBox["definida impl\[IAcute]citamente", FontWeight->"Bold", FontSlant->"Italic"], " por una ecuaci\[OAcute]n, es decir, se trata de una superficie de la \ forma" }], "Text"], Cell[TextData[{ Cell[BoxData[ \(TraditionalForm\`S = {\((x, y, z)\) \[Element] \(\(\[DoubleStruckCapitalR]\^3\) : h(x, y, z)\) = 0}\)]], " " }], "Text", TextAlignment->Center], Cell[TextData[{ "\n", StyleBox["c)", FontWeight->"Bold"], " La superficie est\[AAcute] ", StyleBox["definida param\[EAcute]tricamente", FontWeight->"Bold", FontSlant->"Italic"], ", es decir, se trata de una superficie de la forma ", Cell[BoxData[ \(TraditionalForm\`S = \[Phi](A)\)]], " donde ", Cell[BoxData[ \(TraditionalForm\`\[Phi]\)]], " es una funci\[OAcute]n de dos variables con valores en ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^3\)]], ". La funci\[OAcute]n \[Phi] transforma un subconjunto ", Cell[BoxData[ \(TraditionalForm\`A \[Subset] \[DoubleStruckCapitalR]\^\(\(2\)\(\ \)\)\ \)]], "en una superficie en ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^3\)]], ". En este caso se acostumbra a interpretar los puntos del conjunto ", Cell[BoxData[ \(TraditionalForm\`A\)]], " como par\[AAcute]metros que describen la superficie. Si notamos ", Cell[BoxData[ \(TraditionalForm\`\((u, v)\) \[Element] A\)]], " un elemento gen\[EAcute]rico de ", Cell[BoxData[ \(TraditionalForm\`A\)]], ", la funci\[OAcute]n \[Phi] debe ser de la forma" }], "Text"], Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Phi](u, v) = \((\(\[Phi]\_1\)(u, v), \(\[Phi]\_2\)(u, v), \(\[Phi]\_3\)(u, v))\)\)]]], "Text", TextAlignment->Center], Cell[TextData[{ "y, por tanto ", Cell[BoxData[ \(TraditionalForm\`S = \(\[Phi]( A) = {\((\(\[Phi]\_1\)(u, v), \(\[Phi]\_2\)(u, v), \(\[Phi]\_3\)( u, v))\), \ \ \((u, v)\) \[Element] A}\)\)]], ". " }], "Text"], Cell[TextData[{ "Nota: Oberva que ", StyleBox["a)", FontWeight->"Bold"], " es un caso particular de ", StyleBox["b)", FontWeight->"Bold"], ". En efecto, si ", Cell[BoxData[ \(TraditionalForm\`S\)]], " es la gr\[AAcute]fica de una funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`f\)]], " como en a), entonces ", Cell[BoxData[ \(TraditionalForm\`S\)]], " tambi\[EAcute]n viene dada como en b) sin m\[AAcute]s que considerar la \ funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`h(x, y, z) = z - f(x, y)\)]], ". Tambi\[EAcute]n ", StyleBox["a)", FontWeight->"Bold"], " es un caso particular de", StyleBox[" c)", FontWeight->"Bold"], " pues basta definir para ", Cell[BoxData[ \(TraditionalForm\`\((x, y)\) \[Element] A\)]] }], "Text"], Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Phi](x, y) = \((x, y, f(x, y))\)\)]]], "Text", TextAlignment->Center], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " dispone de comandos que permiten representar f\[AAcute]cilmente \ superficies de cualquier forma que vengan dadas." }], "Text"], Cell["\<\ Superficies que son gr\[AAcute]ficas de funciones: El comando Plot3D[ ]\ \>", "Theorem"], Cell["\<\ La sintaxis de este comando (muy parecida a la de \"Plot[ ]\") es \ \"Plot3D[f[x,y],{x,xmin,xmax},{y,ymin,ymax},opciones]\" donde se entiende que \ f[x,y] es una funci\[OAcute]n de dos variables que debe estar definida en el \ rect\[AAcute]ngulo [xmin,xmax]x[ymin,ymax]. \ \>", "Text"], Cell[BoxData[ \(g1 = Plot3D[Sin[\@\(x\^2 + \((3 + x)\) y\^2\)], {x, \(-3\), 3}, {y, \(-4\), 4}, \[IndentingNewLine]PlotPoints \[Rule] 50, \n\t\t ViewPoint \[Rule] {0.204, \(-1.212\), 3.153}, \[IndentingNewLine]Boxed \[Rule] False, \[IndentingNewLine]Axes \[Rule] None, \[IndentingNewLine]AmbientLight \[Rule] GrayLevel[ .2]]\)], "Input"], Cell[TextData[{ "F\[AAcute]cil, \[DownQuestion]verdad?. Claro est\[AAcute], he elegido las \ opciones de \"Plot3D[ ]\" que m\[AAcute]s me gustan para representar esa \ bonita superficie. Puedes consultar las opciones en la ayuda de ", StyleBox["Mathematica.", FontSlant->"Italic"] }], "Text"], Cell[BoxData[ \(Options[Plot3D]\)], "Input"], Cell[TextData[{ "Algunas de las opciones se entienden por s\[IAcute] solas y con un poco de \ pr\[AAcute]ctica aprender\[AAcute]s a usar las m\[AAcute]s frecuentes que \ son:\n", StyleBox["Mesh\[Rule]True/False", FontWeight->"Bold"], " Indica si deben representarse o no la ret\[IAcute]cula o malla sobre la \ que se construye la gr\[AAcute]fica.\n", StyleBox["Shading\[Rule]True/False", FontWeight->"Bold"], " \tIndica si la superficie debe ser o no ser sombreada. \n", StyleBox["PlotPoints\[Rule]n\.ba de puntos", FontWeight->"Bold"], " ", StyleBox["Es el n\[UAcute]mero de puntos que usar\[AAcute] ", FontFamily->"Times New Roman"], StyleBox["Mathematica ", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["para representar la gr\[AAcute]fica. Un n\[UAcute]mero muy alto \ producir\[AAcute] un gr\[AAcute]fico m\[AAcute]s \[OpenCurlyDoubleQuote]suave\ \[CloseCurlyDoubleQuote], pero aumentar\[AAcute], a veces de forma notable, \ el tiempo empleado para realizarlo.\n", FontFamily->"Times New Roman"], StyleBox["ViewPoint ", FontFamily->"Times New Roman", FontWeight->"Bold"], StyleBox["Establece el punto de vista desde el que se dibujar\[AAcute] la \ gr\[AAcute]fica. ", FontFamily->"Times New Roman"], StyleBox["Mathematica", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" trata de elegir siempre el punto de vista \[OAcute]ptimo. La \ forma de usar esta opci\[OAcute]n ser\[AAcute] \[OpenCurlyDoubleQuote]pegarlo\ \[CloseCurlyDoubleQuote] desde una ventana que automatiza el proceso. A dicha \ ventana se accede a trav\[EAcute]s del men\[UAcute] Input, submen\[UAcute] 3D \ ViewPoint Selector.\n", FontFamily->"Times New Roman"], StyleBox["ColorFunction\[Rule]Hue ", FontFamily->"Times New Roman", FontWeight->"Bold"], StyleBox["Colorea los puntos de la gr\[AAcute]fica en funci\[OAcute]n de su \ altura sobre el plano XY. ", FontFamily->"Times New Roman"] }], "Text"], Cell[TextData[{ "A continuaci\[OAcute]n puedes ver el efecto de cambiar algunas opciones. \ Como hemos puesto nombre a la gr\[AAcute]fica podemos representarla con \ \"Show[ ]\" y las nuevas opciones prevalecen. Observa la forma en que ", StyleBox["Mathematica", FontSlant->"Italic"], " representa los ejes \"X\", \"Y\", \"Z\"." }], "Text"], Cell[BoxData[ \(Show[g1, Mesh \[Rule] False, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}, ViewPoint -> {1.300, \ \(-2.400\), \ 2.000}, Ticks \[Rule] {Automatic, Automatic, {\(-1\), 1}}, ColorFunction -> Hue]; \nClear[g1]\)], "Input"], Cell[TextData[{ "A veces hay que darle una ayudita a ", StyleBox["Mathematica", FontSlant->"Italic"], " para que la gr\[AAcute]fica quede bien. Por ejemplo, la siguiente gr\ \[AAcute]fica no parece lo que es: parte de un cono de revoluci\[OAcute]n \ recto de ecuaci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`z = \@\(x\^2 + y\^2\)\)]], "." }], "Text"], Cell[BoxData[ \(Plot3D[\@\(x\^2 + y\^2\), {x, \(-1\), 1}, {y, \(-1\), 1}, AspectRatio \[Rule] 1, BoxRatios \[Rule] {1, 1, 1}, AxesLabel \[Rule] {"\", "\", "\"}, PlotPoints \[Rule] 30]\)], "Input"], Cell[TextData[{ "Si te fijas, lo que pasa es que los bordes del cono no est\[AAcute]n a la \ misma altura sino que su altura var\[IAcute]a desde 1 a ", Cell[BoxData[ \(TraditionalForm\`\@2\)]], ". Podemos mejorarla mucho cortando el cono con el plano ", Cell[BoxData[ \(TraditionalForm\`z = 1\)]], ". " }], "Text"], Cell[BoxData[ \(Plot3D[Min[\@\(x\^2 + y\^2\), 1], {x, \(-1\), 1}, {y, \(-1\), 1}, AspectRatio \[Rule] 1, BoxRatios \[Rule] {1, 1, 1}, AxesLabel \[Rule] {"\", "\", "\"}, PlotPoints \[Rule] 30]\)], "Input"], Cell["\<\ Es muy f\[AAcute]cil hacer animaciones gr\[AAcute]ficas en 3D; basta con que \ introduzcas un par\[AAcute]metro en la funci\[OAcute]n y uses un \"Do[ ]\". \ Aqu\[IAcute] puede ver una onda que se va desplazando producida por una gota \ que cae en el agua.\ \>", "Text"], Cell[BoxData[{ RowBox[{ StyleBox[ \(Do[Plot3D[ Cos[\@\(x^2\ + \ y^2\) + Abs[n - 2 Pi]]/\ \@\(x^2\ + \ y^2\ + \ 1/4\), \ {x, \(-4\) Pi, 4 Pi}, {y, \(-4\) Pi, 4 Pi}, \ PlotPoints -> 26, Lighting -> True, PlotRange -> {\(-2\), 2}, \ BoxRatios -> {1, 1, 1}, Boxed -> False, Axes -> None], \ {n, \ 0, \ 2 Pi\ - \ \((2 Pi/16)\), \ 2 Pi/16}]\), FormatType->StandardForm], StyleBox[" ", FormatType->StandardForm], StyleBox[";", FormatType->StandardForm], "\n", \(SelectionMove[EvaluationNotebook[], All, GeneratedCell]\), ";", "\n", \(FrontEndTokenExecute["\"]\)}], \(FrontEndTokenExecute["\"]\)}], "Input"], Cell["\<\ Una manera de hacer gr\[AAcute]ficas muy interesante consiste en levantar \ cilindros sobre curvas en el plano. Por ejemplo, podemos representar en el \ plano XY la circunferencia unidad cuya ecuaci\[OAcute]n es {Cos[t],Sin[t]} \ para -\[Pi]\[LessEqual]t\[LessEqual]\[Pi], o parte de ella controlando el \ intervalo de variaci\[OAcute]n del par\[AAcute]metro \"t\", y sobre esa curva \ podemos levantar un cilidro de la altura que queramos. Claro est\[AAcute] que \ en vez de la circunferencia unidad puedes elegir cualquier otra curva cuyas \ ecuaciones param\[EAcute]tricas conozcas.\ \>", "Text"], Cell[BoxData[ \(\(\(fig1 = ParametricPlot3D[{Cos[t], Sin[t], z}, {t, \(-\[Pi]\)/7, 11 \[Pi]/7}, {z, 0, 1}]\ ;\)\( (*\ sobre\ una\ parte\ de\ la\ circunferencia\ unidad\ levantamos\ un\ \ cilindro\ de\ altura\ 1\ *) \)\)\)], "Input"], Cell[TextData[{ "Antes de ejecutar la siguiente celda piensa medio minuto (no quiero que te \ canses...) si ", StyleBox["Mathematica", FontSlant->"Italic"], " podr\[AAcute] hacer lo que le pedimos. Se trata de representar la mitad \ superior de la esfera unidad." }], "Text"], Cell[BoxData[ \(\(Plot3D[\@\(1 - x\^2 - y\^2\), {x, \(-1\), 1}, {y, \(-1\), 1}, PlotPoints \[Rule] 50, AspectRatio \[Rule] 1, Axes \[Rule] None];\)\)], "Input"], Cell["\<\ Ya ves lo que ha pasado: nuestra funci\[OAcute]n no toma valores reales en \ todos los puntos del rect\[AAcute]ngulo [-1,1]x[-1,1]. Hay muchas formas de \ arreglar esto. Por ejemplo tomando parte real con el comando \"Re [ ]\".\ \>", "Text"], Cell[BoxData[ \(\(Plot3D[Re[\@\(1 - x\^2 - y\^2\)], {x, \(-1\), 1}, {y, \(-1\), 1}, PlotPoints \[Rule] 50, AspectRatio \[Rule] 1, Axes \[Rule] None];\)\)], "Input"], Cell["\<\ Pero si quieres representar la esfera completa el comand \"Plot3D[ ]\" no es \ el m\[AAcute]s apropiado porque una esfera no es una gr\[AAcute]fica.\ \>", "Text"], Cell["\<\ Curvas y superficies dadas por ecuaciones param\[EAcute]tricas: El comando \ ParametricPlot3D[ ]\ \>", "Theorem"], Cell["\<\ La sintaxis de este comando (muy parecida a la de \"ParametricPlot[ ]\") es \t\t\t\"ParametricPlot3D[{X[u,v], Y[u,v], Z[u,v]},{u, umin, umax},{v, vmin, \ vmax},opciones]\" donde se entiende que X, Y, Z son funciones de dos variables que deben estar \ definidas en el rect\[AAcute]ngulo [umin, umax]x[ymin, ymax]. Para usar este \ comando lo \[UAcute]nico que necesitas es conocer las ecuaciones param\ \[EAcute]tricas de la superficie. Aqu\[IAcute] tienes una esfera.\ \>", "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{Sin[\[Phi]] Cos[\[Theta]], Sin[\[Phi]] Sin[\[Theta]], Cos[\[Phi]]}, {\[Theta], \(-\[Pi]\), \[Pi]}, {\[Phi], 0, \[Pi]}];\)\)], "Input"], Cell["\<\ Controlando los par\[AAcute]metros puedes conseguir representar partes de la \ superficie. \ \>", "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{Sin[\[Phi]] Cos[\[Theta]], Sin[\[Phi]] Sin[\[Theta]], Cos[\[Phi]]}, {\[Theta], 0, 3 \[Pi]/2}, {\[Phi], \[Pi]/8, \[Pi]}];\)\)], "Input"], Cell[TextData[{ "El comando \"ParametricPlot3D[{f[x] Cos[t], f[x] Sin[t], x},{x,a,b},{t,0,2\ \[Pi]}]\" representa la gr\[AAcute]fica de la superficie de \ revoluci\[OAcute]n obtenida girando la curva de ecuaci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`y = f(x)\)]], " alrededor del segmento [a,b] del eje OZ. Por ejemplo, la esfera anterior \ puedes representarla como sigue" }], "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{\(\@\(1 - x\^2\)\) Cos[t], \(\@\(1 - x\^2\)\) Sin[t], x}, {x, \(-1\), 1}, {t, \(-\[Pi]\), \[Pi]}];\)\)], "Input"], Cell["Una bonita superficie.", "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{u\ Cos[u]\ \((4 + Cos[v + u])\), u\ Sin[u]\ \((4 + Cos[v + u])\), u\ Sin[v + u]}, {u, 0, 4\ \[Pi]}, { v, 0, 2\ \[Pi]}, PlotPoints \[Rule] {80, 20}]; \)\)], "Input"], Cell["Otra bonita superficie.", "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{Cos[\[Pi]\ t] + \(\(3 - t\)\/3\) Cos[s], Sin[\[Pi]\ t] + \(\(3 - t\)\/3\) Sin[s], t}, {s, 0, 2 \[Pi]}, {t, 0, 3}, AspectRatio -> 1, BoxRatios -> {1, 1, 1}, PlotPoints -> {30, 30}, Boxed -> False, Axes -> False, ViewPoint -> {\(-0.005\), \ \(-1.359\), \ \(-3.099\)}]; \)\)], "Input"], Cell["Aqu\[IAcute] tienes una peque\[NTilde]a maravilla.", "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{{Cos[s] \((3 + Cos[t])\), Sin[s] \((3 + Cos[t])\), Sin[t]}, {3 + Sin[s] \((3 + Cos[t])\), Sin[t], Cos[s] \((3 + Cos[t])\)}}, {s, 0, 2 \[Pi]}, {t, 0, 2 \[Pi]}, PlotPoints -> {30, 30}, Boxed \[Rule] False, Axes \[Rule] False]; \)\)], "Input"], Cell["Puedes combinar varias superficies en \"ParametricPlot3D[ ]\".", "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{\n\t\t{Sin[v] Cos[u], Sin[v] Sin[u], Cos[v]}, \n \t\t{Cos[u]/2, Sin[u]/2, v - 1}\n\t}, {u, 0, 3 Pi/2}, {v, 0, Pi}]; \)\)], "Input"], Cell[TextData[{ "El comando ParametricPlot3D[{X[t],Y[t],Z[t]},{t,tmin,tmax},opciones] sirve \ para representar curvas en ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^3\)]], " dadas por sus ecuaciones param\[EAcute]tricas. Si a\[NTilde]ades al final \ una funci\[OAcute]n de color, como en el siguiente ejemplo donde se usa la \ funci\[OAcute]n de color \"Hue[ ]\", los puntos de la curva se colorean \ variando los colores de forma continua." }], "Text"], Cell[BoxData[ \(\(\(ParametricPlot3D[{3 Cos[t], 3 Sin[t], t, Hue[t]}, {t, 0, 4 \[Pi]}]\)\(;\)\( (*\ una\ h\[EAcute]lice\ circular\ *) \)\)\)], "Input"], Cell["Tambi\[EAcute]n puedes controlar directamente el grosor de la \ l\[IAcute]nea.", "Text"], Cell[BoxData[ \(\(ParametricPlot3D[{3 Cos[t], 6 Sin[t], t, {Hue[t], Thickness[0.02]}}, {t, 0, 4 \[Pi]}]; \)\)], "Input"], Cell[BoxData[ \(\(ParametricPlot3D[{Cos[3\ t], \ Sin[t]\ Cos[5\ t], Sin[t], {Hue[t], Thickness[0.01]}}, \n\ {t, \ 0, \ 2\ Pi}, PlotPoints -> 160]; \)\)], "Input"], Cell["Curvas de nivel: el comando ContourPlot[ ]", "Theorem"], Cell[TextData[{ "Una forma interesante de ver la gr\[AAcute]fica de una funci\[OAcute]n es \ mediante curvas de nivel. Por este m\[EAcute]todo lo que se hace es \ representar la gr\[AAcute]fica de una funci\[OAcute]n en ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^3\)]], " proyectando sobre el plano XY las curvas intersecci\[OAcute]n de dicha \ superficie con planos paralelos al plano XY (curvas de nivel). Est\[AAcute]s \ acostumbrado a ver estas representaciones porque los mapas \ topogr\[AAcute]ficos representan el relieve del terreno por curvas de nivel. \ Esta representaci\[OAcute]n permite ver las zonas donde la funci\[OAcute]n \ var\[IAcute]a m\[AAcute]s r\[AAcute]pidamente porque las curvas de nivel est\ \[AAcute]n m\[AAcute]s pr\[OAcute]ximas entre s\[IAcute]. ", StyleBox["Mathematica", FontSlant->"Italic"], " representa con tonos m\[AAcute]s luminosos las zonas donde la funci\ \[OAcute]n toma valores m\[AAcute]s grandes y con tonos m\[AAcute]s oscuros \ las zonas donde la funci\[OAcute]n es m\[AAcute]s peque\[NTilde]a. En el \ siguiente ejemplo muestra claramente lo que se hace (observa, de paso, el uso \ de la primitiva gr\[AAcute]fica \"Polygon[ ]\" en 3D)." }], "Text", FontFamily->"Times New Roman"], Cell[BoxData[{ \(graph1\ = Plot3D[\((3 x\^2 + y\^2)\) Exp[1 - x\^2 - y\^2], {x, \(-2\), 2}, {y, \(-2\), 2}, PlotPoints -> 30\ , DisplayFunction -> Identity]; \n Plane[h_, size_] := \n\t Graphics3D[{ Polygon[{{\(-size\), \(-size\), h}, {size, \(-size\), h}, {size, size, h}, {\(-size\), size, h}}]}]\), \(graph2 = Show[{graph1, Plane[1.6, 2]}, \ DisplayFunction -> Identity]; \nShow[GraphicsArray[{graph1, graph2}], DisplayFunction -> $DisplayFunction\ ]; \nClear[graph1, graph2]\)}], "Input"], Cell[TextData[{ "Como puedes ver, \"ContourPlot[ ]\" nos va a proporcionar un \"mapa topogr\ \[AAcute]fico\" de la funci\[OAcute]n. Las l\[IAcute]neas de contorno unen \ los puntos de la superficie que tienen la misma altura. Por defecto, ", StyleBox["Mathematica", FontSlant->"Italic"], " representa curvas de contorno para una sucesi\[OAcute]n de valores de \ altura igualmente espaciados. La sintaxis del comando es" }], "Text"], Cell["\"ContourPlot[f[x,y],{x,xmin,xmax},{y,ymin,ymax},opciones]\"", "Text", TextAlignment->Center], Cell["\<\ Las opciones son las mismas del comando \"ContourGraphics[ ]\" que sirve para \ representar varios \"ContourPlot[ ]\" y, adem\[AAcute]s, puede controlarse el \ n\[UAcute]mero de puntos de evaluaci\[OAcute]n con PlotPoints\[Rule]n\.ba de \ puntos. Veamos el gr\[AAcute]fico de contorno de la superficie anterior.\ \>", "Text"], Cell[BoxData[ \(\(ContourPlot[ \((3 x\^2 + y\^2)\) Exp[1 - x\^2 - y\^2], {x, \(-2\), 2}, {y, \(-2\), 2}]; \)\)], "Input"], Cell["\<\ Puedes observar claramente dos cumbres (dos m\[AAcute]ximos) y un pozo (un m\ \[IAcute]nimo). Las opciones son muchas. \ \>", "Text"], Cell[BoxData[ \(Options[ContourGraphics]\)], "Input"], Cell["\<\ En el siguiente ejemplo pueden apreciarse claramente dos m\[AAcute]ximos y \ dos m\[IAcute]nimos.\ \>", "Text"], Cell[BoxData[ \(\(\(Show[ GraphicsArray[ Plot3D[Sin[x] Sin[y], \ {x, \ \(-\[Pi]\), \ \[Pi]}, \ {y, \ \(-\[Pi]\), \ \[Pi]}], ContourPlot[Sin[x]\ Sin[y], \ {x, \ \(-\[Pi]\), \ \[Pi]}, \ {y, \ \(-\[Pi]\), \ \[Pi]}, PlotPoints -> 50, PlotPoints -> 50, ColorFunction -> \((Hue[If[# > 0, #, # - .5]]&)\)]]]; \) (*\ Como\ la\ funci\[OAcute]n\ Hue[] es\ peri\[OAcute]dica, \ Hue[x] = Hue[x + 1], \ dicha\ funci\[OAcute]n\ no\ distingue\ 1\ de\ - 1, \ \ y\ como\ Mathematica\ antes\ de\ aplicarla\ hace\ una\ reducci\[OAcute]n \ de\ escala, la\ he\ cambiado\ un\ poco\ para\ que\ coloree\ de\ forma\ distinta\ los \ m\[AAcute]ximos\ y\ los\ m\[IAcute]nimos\ *) \)\)], "Input"], Cell["Podemos animar la gr\[AAcute]fica de contorno anterior.", "Text"], Cell[BoxData[{ \(Do[ContourPlot[Sin[x + n]\ Sin[y + n], \ {x, \(-Pi\), Pi}, {y, \(-Pi\), Pi}, ColorFunction -> \((Hue[# + n/\((2 Pi)\)]&)\), PlotPoints -> 40], { n, 0, 2 Pi - 2 Pi/50, 2 Pi/50}]; \n SelectionMove[EvaluationNotebook[], All, GeneratedCell]; \n FrontEndTokenExecute["\"]\), \(FrontEndTokenExecute["\"]\)}], "Input"], Cell["\<\ El comando \"DensityPlot[f[x,y],{x,xmin,xmx},{y,ymin,ymax},opciones]\", \ parecido al anterior, representa los valores de la funci\[OAcute]n sobre una \ ret\[IAcute]cula en el plano. Lo que hace es dividir el rect\[AAcute]ngulo \ [xmin,xmax]x[ymin,ymax] en 15x15=225 retangulitos y evaluar en el centro de \ cada uno de ellos la funci\[OAcute]n. Los tonos m\[AAcute]s luminosos se \ corresponden con los valores mayores de la funci\[OAcute]n. Con este comando \ se pueden hacer gr\[AAcute]ficas muy hermosas.\ \>", "Text"], Cell[BoxData[ \(\(\(DensityPlot[Sin[1/\((x*y)\)], {x, \(-2\), 2}, {y, \(-2\), 2}, PlotPoints -> 200, ColorFunction -> Hue, Mesh -> False];\)\( (*\ si\ aumentas\ el\ n\[UAcute]mero\ de\ puntos\ queda\ mejor\ pero\ tarda\ \ m\[AAcute]s\ *) \)\)\)], "Input"], Cell["Curvas y superficies definidas impl\[IAcute]citamente", "Theorem"], Cell["\<\ Puedes representar curvas impl\[IAcute]citamente definidas con el comando \ \"ImplicitPlot[ecuacion,{x,xmin,xmax}] \". Antes debemos cargar el paquete \ correspondiente.\ \>", "Text"], Cell[BoxData[ \(<< \ Graphics`ImplicitPlot`\)], "Input"], Cell[BoxData[ \(\(ImplicitPlot[x\^2\/9 + y\^2\/3 == 1, {x, \(-3\), 3}]; \)\)], "Input"], Cell[TextData[{ "Ten en cuenta que una ecuaci\[OAcute]n de la forma ", Cell[BoxData[ \(TraditionalForm\`f(x, y) = 0\)]], " puede representar \"algo m\[AAcute]s\" que una curva." }], "Text"], Cell[BoxData[ \(g[x_, y_] = \(-12\) + 16\ x + 2\ x\^2 - 8\ x\^3 + 2\ x\^4 + 11\ y\^2 - 20\ x\ y\^2 + 7\ x\^2\ y\^2 + 5\ y\^4; \n ImplicitPlot[g[x, y] == 0, {x, \(-6\), 6}, PlotRange -> All]; \)], "Input"], Cell["\<\ Para representar superficies impl\[IAcute]citamente definidas hay que cargar \ el paquete siguiente que pone a nuestra disposici\[OAcute]n el comando \ ContourPlot3D[ ] que es el an\[AAcute]logo en tres dimensiones de \ ContourPlot[ ]. \ \>", "Text"], Cell["<"S5.30.1"], Cell[BoxData[ \(\(\(ContourPlot3D[2 x^2 + y^2 - z^2 - 1, \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {x, \(-2\), 2}, \ {y, \(-2\), 2}, \ {z, \(-2\), 2}, \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotPoints -> {{5, 7}, {5, 7}, {5, 7}}]; \) (*\ Hiperboloide\ de\ una\ hoja\ *) \)\)], "Input"], Cell[BoxData[ \(\(ContourPlot3D[z\^2 + \((2 - \@\(x\^2 + y\^2\))\)\^2 - 1, \[IndentingNewLine]\t{x, \(-3\), 3}, {y, \(-3\), 3}, {z, \(-1\), 1}, \[IndentingNewLine]\tPlotPoints -> {{5, 7}, {5, 7}, {5, 7}}]; \)\)], "Input"], Cell[BoxData[ \(\(\(ContourPlot3D[x^2 + 2\ y^2 + 3\ z^2 - 3, \[IndentingNewLine]\t\t{x, \(-2\), 2}, {y, \(-2\), 2.2}, {z, \(-1\), 1}, \[IndentingNewLine]\t\tPlotPoints -> {{5, 7}, {5, 7}, {5, 7}}]; \)\ (*\ elipsoide\ *) \)\)], "Input"], Cell[CellGroupData[{ Cell["Ejercicio 1", "Exercise"], Cell[TextData[{ "Haz una animaci\[OAcute]n gr\[AAcute]fica para representar la evoluci\ \[OAcute]n de la gr\[AAcute]fica de la funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`f(x, y) = \(cos(x\ t)\) \(sen(y\ t)\)\)]], " cuando el par\[AAcute]metro ", Cell[BoxData[ \(TraditionalForm\`t\)]], " toma los valores 1 a 5 con incrementos de 0.5. Elije las opciones \ apropiadas para optimizar la representaci\[OAcute]n." }], "ExerciseText"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Derivadas parciales", "Section"], Cell[TextData[{ "Para campos escalares de varias variables (esto es, funciones que \ \"salen'' de ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^n\)]], " y \"llegan'' a \[DoubleStruckCapitalR]), el comando \ \"D[f[x,y,...],{x,n1},{y,n2},...]}\" nos devuelve la derivada parcial de ", Cell[BoxData[ \(TraditionalForm\`f\)]], " respecto de ", Cell[BoxData[ \(TraditionalForm\`x\)]], " n1-veces, respecto de ", Cell[BoxData[ \(TraditionalForm\`y\)]], " n2-veces,... pudiendo omitirse el n\[UAcute]mero de veces si \[EAcute]ste \ es 1. Si se omite una variable quiere decir que no se deriva respecto de ella \ ninguna vez. " }], "Text"], Cell[BoxData[ \(\(\(D[ x\^y + Sin[x*y], {x, 3}, {y, 2}]\)\(//\)\(Simplify\)\(\ \)\)\)], "Input"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " conoce la regla de la cadena para derivadas parciales. Observa \ c\[OAcute]mo eval\[UAcute]a correctamente las derivadas parciales de una \ funci\[OAcute]n compuesta. Tambi\[EAcute]n debes fijarte en la forma en que \ ", StyleBox["Mathematica", FontSlant->"Italic"], " representa las derivadas parciales." }], "Text"], Cell[BoxData[{ \(f[u_, v_] = g[u\^2 + v\^2, Cos[u*v]]; \ (*\ f[u, v]\ es\ la\ funci\[OAcute]n\ compuesta\ g[x, y]\ con\ x = u\^2 + v\^2, \ y = Cos[u*v]\ *) \nD[f[u, v], u]\), \(D[f[u, v], u] /. {u -> 1, v -> \[Pi]/2}\)}], "Input"], Cell["\<\ Para definir una funci\[OAcute]n derivada parcial hay que tomar ciertas \ precauciones. En particular, no es aconsejable usar la asignaci\[OAcute]n \ diferida. \ \>", "Text"], Cell[BoxData[{ \(f[x_, y_] = Sin[x*y]; \nfx3[x_, y_] := D[f[x, y], {x, 3}]\), \(fx3[1, 2]\)}], "Input"], Cell[TextData[{ "Al definir fx3[x,y] con una igualdad diferida (:=) lo que ", StyleBox["Mathematica", FontSlant->"Italic"], " ha almacenado como definici\[OAcute]n de fx3[x,y] ", StyleBox["no", FontWeight->"Bold", FontSlant->"Italic"], " es la derivada parcial de f[x,y] respecto a la variable ", Cell[BoxData[ \(TraditionalForm\`x\)]], " tres veces, sino el comando ", Cell[BoxData[ \(TraditionalForm\`"D[f[x,y], {x, 3}]"\)]], "; pero dicho comando ", StyleBox["no se ha ejecutado", FontSlant->"Italic"], " pues se trata de una ", StyleBox["asignaci\[OAcute]n diferida", FontSlant->"Italic"], " por lo que dicho comando se ejecuta ", StyleBox["despu\[EAcute]s", FontSlant->"Italic"], " de que se llame a la funci\[OAcute]n fx3[x,y]. Por eso cuando escribes \ fx3[1,2] lo que est\[AAcute]s diciendo a ", StyleBox["Mathematica", FontSlant->"Italic"], " es que derive f[1,2] respecto a la variable 1 tres veces y, claro est\ \[AAcute], 1 no es una variable v\[AAcute]lida para derivar. Naturalmente, \ esto se arregla definiendo fx3[x,y] con la asignaci\[OAcute]n inmediata (=)." }], "Text"], Cell[BoxData[{ \(Clear[fx3]\), \(fx3[x_, y_] = D[f[x, y], {x, 3}]; \nfx3[1, 2]\)}], "Input"], Cell["\<\ La forma m\[AAcute]s segura de definir una derivada parcial es localizar la \ variable respecto de la que se deriva y sustituir despu\[EAcute]s por la \ variable en cuesti\[OAcute]n. Haci\[EAcute]ndolo de esta forma se puede usar \ la asignaci\[OAcute]n diferida.\ \>", "Text"], Cell[BoxData[{ \(Clear[fx3]\), \(fx[x_, y_] := Module[{s}, D[f[s, y], {s, 3}] /. s -> x]\), \(fx[1, 2]\), \(Clear[f, fx]\)}], "Input"], Cell["Gradiente de un campo escalar", "Theorem"], Cell[TextData[{ "El gradiente de un campo escalar ", StyleBox["f", FontSlant->"Italic"], " es el campo vectorial ", Cell[BoxData[ \(TraditionalForm\`\[Del]f\)]], " cuyas componentes son las derivadas parciales de primer orden de ", StyleBox["f", FontSlant->"Italic"], ". ", "Para calcular el gradiente de una funci\[OAcute]n de varias variables \ basta construir el vector formado por las derivadas parciales primeras de la \ funci\[OAcute]n respecto de todas las variables." }], "Text"], Cell[BoxData[{ \(Clear[f]\), \(\(grad[f_]\)[x_, y_] = {D[f[x, y], x], D[f[x, y], y]}\ (*\ gradiente\ de\ un\ campo\ escalar\ de\ dos\ variables\ *) \), \(\(grad[f_]\)[x_, y_, z_] = {D[f[x, y, z], x], D[f[x, y, z], y], D[f[x, y, z], z]}\ (*\ gradiente\ de\ un\ campo\ escalar\ de\ tres\ variables\ *) \)}], "Input"], Cell[TextData[{ "Aunque estos comandos tienen el mismo nombre ", StyleBox["Mathematica", FontSlant->"Italic"], " sabe cu\[AAcute]l usar en cada caso porque antes de usarlo comprueba si \ la funci\[OAcute]n ", StyleBox["f ", FontSlant->"Italic"], "(que t\[UAcute] debes de haber definido previamente) tiene dos o tres \ variables." }], "Text"], Cell[BoxData[{ \(f[x_, y_] = x^2 Sin[x*y]; \nf[x_, y_, z_] = y*z*Cos[x^2 + z^2]; \n \(grad[f]\)[x, y]\), \(\(grad[f]\)[1, Pi]\), \(\(grad[f]\)[x, y, z]\), \(\(grad[f]\)[1, \(-1\), 2]\)}], "Input"], Cell["\<\ Con frecuencia hay que evaluar un vector gradiente en vectores. Entonces \ debemos definirlo de forma que esto pueda hacerse c\[OAcute]modamente.\ \>", "Text"], Cell[BoxData[{ \(Clear[f]\), \(\(grad[f_]\)[{x_, y_}] = \(grad[f]\)[x, y]; \n \(grad[f_]\)[{x_, y_, z_}] = \(grad[f]\)[x, y, z]; \)}], "Input"], Cell[BoxData[{ \(f[x_, y_] = x^2 Sin[x*y]; \nf[x_, y_, z_] = y*z*Cos[x^2 + z^2]; \n \(grad[f]\)[{1, Pi}]\), \(\(grad[f]\)[{1, \(-1\), 2}]\)}], "Input"], Cell[TextData[{ "El vector gradiente es \[UAcute]til para calcular derivadas de un campo \ escalar en una direcci\[OAcute]n dada. Te recuerdo que una direcci\[OAcute]n \ en ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^n\)]], " es un vector de norma 1. Si ", StyleBox["f ", FontSlant->"Italic"], "es un campo escalar con derivadas parciales continuas, la derivada de ", StyleBox["f ", FontSlant->"Italic"], "en un punto ", StyleBox["a ", FontSlant->"Italic"], "en la direcci\[OAcute]n dada por el vector ", StyleBox["u ", FontSlant->"Italic"], "viene dada por el producto escalar ", Cell[BoxData[ \(TraditionalForm \`\[LeftAngleBracket]\[Del]\(f(a)\) | u\[RightAngleBracket]\)]], ". Supuesto que ", Cell[BoxData[ \(TraditionalForm\`\[Del]\(f(a)\) \[NotEqual] 0\)]], ", la direcci\[OAcute]n en la cual la derivada direccional de ", StyleBox["f ", FontSlant->"Italic"], "en ", StyleBox["a ", FontSlant->"Italic"], "es m\[AAcute]xima, que indica la direcci\[OAcute]n en la cual el campo en \ ", StyleBox["a ", FontSlant->"Italic"], "crece m\[AAcute]s r\[AAcute]pidamente, viene dada por el vector ", Cell[BoxData[ \(TraditionalForm\`\[Del]\(f(a)\) / || \[Del]\(f(a)\) || \)]], ". Por tanto, ", StyleBox[ "el vector gradiente en cada punto indica la direcci\[OAcute]n en la que el \ campo aumenta m\[AAcute]s r\[AAcute]pidamente en dicho punto", FontWeight->"Bold"], ". An\[AAcute]logamente, la direcci\[OAcute]n en la cual la derivada \ direccional de ", StyleBox["f ", FontSlant->"Italic"], "en ", StyleBox["a ", FontSlant->"Italic"], "es m\[IAcute]nima, que indica la direcci\[OAcute]n en la cual el campo en \ ", StyleBox["a ", FontSlant->"Italic"], "decrece m\[AAcute]s r\[AAcute]pidamente, viene dada por el vector ", Cell[BoxData[ \(TraditionalForm\`\(-\[Del]\(f(a)\)\) / || \[Del]\(f(a)\) || \)]], ". Si ", StyleBox["a ", FontSlant->"Italic"], "y ", StyleBox["b ", FontSlant->"Italic"], "son puntos de ", Cell[BoxData[ \(TraditionalForm\`\[DoubleStruckCapitalR]\^n\)]], StyleBox[" ", FontSlant->"Italic"], "la direcci\[OAcute]n del punto ", StyleBox["a ", FontSlant->"Italic"], "hacia el punto ", StyleBox["b ", FontSlant->"Italic"], "viene dada por el vector ", Cell[BoxData[ \(TraditionalForm\`\((b - a)\) / || b - a || \)]], "." }], "Text"], Cell[CellGroupData[{ Cell["Ejercicio 2", "Exercise"], Cell[TextData[{ "a) Comprueba que las funciones ", Cell[BoxData[ \(TraditionalForm\`2 ArcTan[y\/\(x + \@\(x\^2 + y\^2\)\)]\)]], " y ", Cell[BoxData[ \(TraditionalForm\`ArcTan[y\/x]\)]], " tienen las mismas derivadas parciales.\nb) Define ", Cell[BoxData[ \(TraditionalForm \`g[\[Rho], \[Theta]] = f[\[Rho]\ Cos[\[Theta]], \[Rho]\ Sin[\[Theta]]]\)]], " donde ", Cell[BoxData[ \(TraditionalForm\`f(x, y)\)]], " es una funci\[OAcute]n de dos variables que no se supone conocida. Se \ dice que la funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`g\)]], " es la expresi\[OAcute]n de ", Cell[BoxData[ \(TraditionalForm\`f\)]], " en coordenadas polares. Calcula las derivadas parciales de primer orden \ de ", Cell[BoxData[ \(TraditionalForm\`g(\[Rho], \[Theta])\)]], " .\nc) Calcula las derivadas parciales de primer orden de la \ funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm \`F(x, y) = \[Integral]\_\(x\ y\ \)\%\(f(x, y)\)\(h(t)\) \[DifferentialD]t\)]], "." }], "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell["Ejercicio 3", "Exercise"], Cell[TextData[{ "a) Sea ", Cell[BoxData[ \(TraditionalForm\`f(x, y) = log(1 + x\^2 + 2 x + y\^2)\)]], ". Comprueba que ", Cell[BoxData[ \(TraditionalForm \`\(\[PartialD]\^2\ f\/\[PartialD]\ x\^2\) \((x, y)\) + \(\[PartialD]\^2\ f\/\[PartialD]\ y\^2\) \((x, y)\) = 0\)]], " (la funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`\(f\ \)\)]], "es arm\[OAcute]nica).", "\n", "b) Sea ", Cell[BoxData[ \(TraditionalForm\`z = x\ \(f(x, y)\) + y\ \(g(x + y)\)\)]], ". Comprueba que ", Cell[BoxData[ \(TraditionalForm \`\(\[PartialD]\^2\ z\/\[PartialD]\ x\^2\) \((x, y)\) + \(\[PartialD]\^2\ z\/\[PartialD]\ y\^2\) \((x, y)\) - 2\ \(\[PartialD]\^2\ z\/\(\[PartialD]\ x \[PartialD]\ y\)\) \((x, y)\) = 0\)]], "." }], "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell["Ejercicio 4", "Exercise"], Cell[TextData[{ "Define un comando de la forma derDir[func][punto,dir] que calcule la \ derivada direccional de un campo escalar \"func\" en el punto \"punto\" en la \ direcci\[OAcute]n \"dir={a,b}\" del punto ", StyleBox["a", FontSlant->"Italic"], " hacia el punto ", StyleBox["b", FontSlant->"Italic"], ". \nCalcula las derivadas de las siguientes funciones en el punto y en la \ direcci\[OAcute]n que se indica en cada caso.\na) ", Cell[BoxData[ FormBox[ RowBox[{\(f(x, y)\), "=", " ", FormBox[\(sen(\@\(1 + x\^2 + y\^2\))\), "TraditionalForm"]}], TraditionalForm]]], ", punto ", Cell[BoxData[ \(TraditionalForm\`\((1, \(-2\))\)\)]], ", direcci\[OAcute]n de dicho punto hacia el punto ", Cell[BoxData[ \(TraditionalForm\`\((\(-2\), \(-1\))\)\)]], ".\nb)", Cell[BoxData[ FormBox[ RowBox[{" ", FormBox[\(f(x, y) = x\^2/4 + y\^2/9\), "TraditionalForm"]}], TraditionalForm]]], ", punto ", Cell[BoxData[ \(TraditionalForm\`\((\(-2\), 3)\)\)]], ", direcci\[OAcute]n de dicho punto hacia el punto ", Cell[BoxData[ \(TraditionalForm\`\((3, \(-2\))\)\)]], ".\nc) ", Cell[BoxData[ \(TraditionalForm\`f(x, y) = 1\/\(1 + 2 x\^2 + 2 y\^2\)\)]], ", punto ", Cell[BoxData[ \(TraditionalForm\`\((1, 1)\)\)]], ", direcci\[OAcute]n de dicho punto hacia el punto ", Cell[BoxData[ \(TraditionalForm\`\((\(-3\), \(-1\))\)\)]], "." }], "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell["Ejercicio 5", "Exercise"], Cell[TextData[{ "Representa gr\[AAcute]ficamente las siguientes funciones junto con sus \ planos tangentes, que debes calcular, en los puntos indicados.\na) ", Cell[BoxData[ \(TraditionalForm\`z = \(sen(\[ExponentialE]\^x)\)\ \(cos(x + y)\)\)]], " en ", Cell[BoxData[ \(TraditionalForm\`\((a, b)\) = \((1, 1)\)\)]], ".\nb) ", Cell[BoxData[ \(TraditionalForm\`z = \(cos(x + y)\) \(exp(x\^2 - y\^2)\)\)]], " en ", Cell[BoxData[ \(TraditionalForm\`\((a, b)\) = \((0.5, \(-0.5\))\)\)]], ".\nc) ", Cell[BoxData[ \(TraditionalForm\`x\^2 + y\^2 + z\^2 - 1 = 0\)]], " en ", Cell[BoxData[ \(TraditionalForm\`\((1\/\@3, 1\/\@3, 1\/\@3)\)\)]], "." }], "ExerciseText"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Extremos relativos", "Section"], Cell[TextData[{ StyleBox[ "Como ya sabes, para calcular los extremos relativos de un campo escalar de \ varias variables, lo primero que hay que hacer es calcular los puntos cr\ \[IAcute]ticos, es decir, los puntos donde se anula el vector gradiente; y \ despu\[EAcute]s estudiar la matriz hessiana en esos puntos. Veamos un \ ejemplo.\nSe trata de calcular los extremos relativos de la funci\[OAcute]n ", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`f(x, y) = x\^3 + 3 x\ y\^2 - 15\ x - 12\ y\)]], ". Definimos los comandos apropiados para el gradiente y la matriz \ hessiana." }], "Text"], Cell[BoxData[ RowBox[{ \(Clear[f]; \n \(grad[f_]\)[x_, y_] = {D[f[x, y], x], D[f[x, y], y]}; (*\ vector\ gradiente\ *) \n\(grad[f_]\)[{x_, y_}] = \(grad[f]\)[x, y]; \ (*\ para\ que\ el\ gradiente\ pueda\ evaluarse\ en\ vectores \ {x, y}\ *) \[IndentingNewLine]\(H[f_]\)[x_, y_] = {{D[f[x, y], {x, 2}], D[f[x, y], x, y]}, {D[f[x, y], x, y], D[f[x, y], {y, 2}]}}; (*\ matriz\ hesiana\ *) \n \(H[f_]\)[{x_, y_}] = \(H[f]\)[x, y]; \), StyleBox[" ", FontColor->GrayLevel[0]], \( (*\ para\ que\ la\ matrtiz\ hesiana\ pueda\ evaluarse\ en\ vectores \ {x, y}\ *) \)}]], "Input"], Cell[BoxData[ \(f[x_, y_] = x\^3 + 3\ x*y\^2 - 15 x - 12 y; \n (*calculamos\ los\ puntos\ cr\[IAcute]ticos\ y\ los\ sacamos\ como\ una \ lista\ usando\ el\ comando\ de\ sustituci\[OAcute]n\ /. \ *) \n pcrit = {x, y} /. Solve[\(grad[f]\)[x, y] == {0, 0}, {x, y}]\)], "Input"], Cell["\<\ Si hubi\[EAcute]ramos obtenido soluciones imaginarias deber\[IAcute]amos \ elegir solamente las soluciones reales. Ahora estudiaremos la matriz hesiana \ en cada uno de los puntos cr\[IAcute]ticos. Primero evaluamos la matriz \ hesiana en dichos puntos.\ \>", "Text"], Cell[BoxData[ \(hesis = Map[H[f], pcrit]\)], "Input"], Cell["\<\ Ahora necesitamos el comando \"Det[m]\" que proporciona el determinante de la \ matriz cuadrada m. Nuestro objetivo ser\[AAcute] calcular el determinante de \ la matriz hessiana en cada punto cr\[IAcute]tico. \ \>", "Text"], Cell[BoxData[ \(Map[Det, hesis]\)], "Input"], Cell["\<\ Como el determinante de la matriz hesiana es negativo en los puntos (-1,-2) y \ (1,2) ya podemos asegurar que dichos puntos son puntos de silla. Nos queda \ por ver el primer elemento de la matriz hessiana en los puntos (-2,-1) y \ (2,1).\ \>", "Text"], Cell[BoxData[ \({\(\(H[f]\)[\(-2\), \(-1\)]\)[\([1, 1]\)], \(\(H[f]\)[2, 1]\)[\([1, 1]\)]}\)], "Input"], Cell["\<\ Concluimos que en (-2,-1) hay un m\[AAcute]ximo relativo y en (2,1) hay un m\ \[IAcute]nimo relativo. Podemos comprobar gr\[AAcute]ficamente los resultados \ obtenidos.\ \>", "Text"], Cell[BoxData[ \(\(Plot3D[f[x, y], {x, \(-3\), 3}, {y, \(-3\), 3}, BoxRatios -> {1, 1, 1}]; \)\)], "Input"], Cell[BoxData[ \(\(ContourPlot[f[x, y], {x, \(-2.5\), 2.5}, {y, \(-2.5\), 2.5}]; \)\)], "Input"], Cell[TextData[{ "Para una funci\[OAcute]n de tres variables podemos construir \ c\[OAcute]modamente su matriz hessiana con la ayuda del comando \"Outer[ ]\". \ Si ", Cell[BoxData[ \(TraditionalForm\`h\)]], " es una funci\[OAcute]n, pongamos de 2 variables, y ", Cell[BoxData[ \(TraditionalForm\`\[Alpha] = {a, b, c, d}, \ \[Beta] = {u, v, w}\)]], " son listas, el comando" }], "Text"], Cell[TextData["Outer[h,\[Alpha],\[Beta]]"], "Text", TextAlignment->Center], Cell[TextData[{ "proporciona una matriz de orden 4x3 cuyos elementos son ", Cell[BoxData[ \(TraditionalForm\`h[\[Alpha][\([i]\)], \[Beta][\([j]\)]]\)]], ". Si aplicamos el comando \"Outer[ ]\" al operador diferencial D, al \ vector gradiente de una funci\[OAcute]n y a las variables de dicha funci\ \[OAcute]n, obtenemos la matriz hessiana." }], "Text"], Cell[BoxData[{ \(\(grad3[f_]\)[x_, y_, z_] = {D[f[x, y, z], x], D[f[x, y, z], y], D[f[x, y, z], z]}; \n \(H3[f_]\)[x_, y_, z_] = Outer[D, \(grad3[f]\)[x, y, z], {x, y, z}]\), \(\(H3[f]\)[x, y, z] // MatrixForm\)}], "Input"], Cell[CellGroupData[{ Cell["Ejercicio 6", "Exercise"], Cell[TextData[{ "Haz un programa que calcule y clasifique los puntos cr\[IAcute]ticos de \ una funci\[OAcute]n de dos variables, ", Cell[BoxData[ \(TraditionalForm\`f(x, y)\)]], ", que se supone conocida. El programa debe proporcionar como salida la \ lista de los puntos cr\[IAcute]ticos reales, la lista de los puntos de silla, \ la lista de los m\[AAcute]ximos relativos, la lista de los m\[IAcute]nimos \ relativos y la lista de los puntos que son casos dudosos. Los \ c\[AAcute]lculos deben hacerse de forma num\[EAcute]rica. Comprueba tu \ programa con la funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm \`f(x, y) = \(x\^5\) y\^3 - 2 \( x\^3\) y\^3 + 6 \( x\^2\) y + 6 \( y\^2\) x - 4 x\ y + 7 y - 5 x + 8\)]], "." }], "ExerciseText"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Extremos condicionados", "Section"], Cell[TextData[{ "Hagamos un problema de extremos condicionados. Se trata de calcular el m\ \[AAcute]ximo y el m\[IAcute]nimo absolutos de ", Cell[BoxData[ \(TraditionalForm\`x\^3 + y\^3 + z\^3\)]], " en el elipsoide ", Cell[BoxData[ \(TraditionalForm\`4 x\^2 + 9 y\^2 + 16 z\^2 - 25 = 0\)]], ". " }], "Text"], Cell[BoxData[ \(\(F[x_, y_, z_, \[Lambda]_] = \((x^3 + y^3 + z^3)\) + \[Lambda]\ \((4 x^2 + 9 y^2 + 16 z^2 - 25)\) (*\ funci\[OAcute]n\ de\ Lagrange\ *) \)\)], "Input"], Cell[BoxData[ \(gradF[x_, y_, z_, \[Lambda]_] = {D[F[x, y, z, \[Lambda]], x], D[F[x, y, z, \[Lambda]], y], D[F[x, y, z, \[Lambda]], z], D[F[x, y, z, \[Lambda]], \[Lambda]]}\)], "Input"], Cell[BoxData[ \(pcritic = Solve[gradF[x, y, z, \[Lambda]] \[Equal] {0, 0, 0, 0}, {x, y, z, \[Lambda]}]\)], "Input"], Cell[TextData[{ "La existencia de los extremos absolutos buscados est\[AAcute] garantizada \ por la compacidad de la esfera y dichos extremos tienen que alzanzarse en \ alguno de los puntos obtenidos. Para evaluar ", Cell[BoxData[ \(TraditionalForm\`x\^3 + y\^3 + z\^\(3\ \)\)]], "nos est\[AAcute]n sobrando las \[Lambda] as\[IAcute] que las quitamos y \ evaluamos." }], "Text"], Cell[BoxData[ \(pcrit = {x, y, z} /. pcritic\)], "Input"], Cell[BoxData[ \(f[{x_, y_, z_}] = x^3 + y^3 + z^3; \n\nvalores = Map[f, pcrit]\)], "Input"], Cell[BoxData[ \(\(\(Max[valores]\ \) (*\ m\[AAcute]ximo\ absoluto\ *) \)\)], "Input"], Cell[BoxData[ \(\(\(Min[valores]\ \) (*\ m\[IAcute]nimo\ absoluto\ *) \)\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["C\[AAcute]lculo de extremos absolutos en un compacto", "Section"], Cell["\<\ Finalmente, haremos un ejercicio que combina extremos relativos y \ condicionados. Se considera la funci\[OAcute]n \ \>", "Text"], Cell[BoxData[ \(TraditionalForm \`f(x, y, z) = \(\@48\) x\ y\ z\ - \((1 - x\^2 - y\^2 - z\^2)\)\^\(3/2\)\)], "Text", TextAlignment->Center], Cell[TextData[{ "definida en la bola cerrada unidad: ", Cell[BoxData[ \(TraditionalForm\`x\^2 + y\^2 + z\^2 \[LessEqual] 1\)]], ". Se trata de calcular su m\[AAcute]ximo absoluto y su m\[IAcute]nimo \ absoluto en dicha bola. \nEste problema consta realmente de dos problemas: \ calcular los extremos relativos de la funci\[OAcute]n en la bola abierta y \ calcular los extremos de la funci\[OAcute]n en la frontera de la bola, es \ decir, en la esfera unidad (un problema de extremos condicionados). Empecemos \ por el primero." }], "Text"], Cell[BoxData[ \(f[x_, y_, z_] = \(\@48\) x\ y\ z\ - \((1 - x^2 - y^2 - z^2)\)^\((3/2)\); \n pt = {x, y, z} /. Solve[{D[f[x, y, z], x], D[f[x, y, z], y], D[f[x, y, z], z]} == {0, 0, 0}, \n\t\t\t{x, y, z}]\)], "Input"], Cell[BoxData[{ \(\(Hessin[f_]\)[x_, y_, z_] = Outer[D, {D[f[x, y, z], x], D[f[x, y, z], y], D[f[x, y, z], z]}, {x, y, z}] (*\ La\ matriz\ hessiana . \ Observa\ que\ no\ est\[AAcute]\ definida\ en\ la\ esfera\ unidad\ *) \), \(\(\(Hessin[f_]\)[{x_, y_, z_}] = \(Hessin[f]\)[x, y, z]; \)\)}], "Input"], Cell[BoxData[ \(\(normamenorqueuno[x_] := \@\(x . x\) < \(1\ \ \ \) (*\ criterio\ para\ seleccionar\ los\ puntos\ con\ norma\ eucl\[IAcute]dea \ < 1\ *) ; \n\t\t\t\n prt = Select[pt, normamenorqueuno]\n (*\ seleccionamos\ entre\ los\ puntos\ cr\[IAcute]ticos\ los\ que\ est\[AAcute]n\ en\ el\ interior\ de\ la\ bola\ *) \)\)], "Input"], Cell[BoxData[{ \(matriceshesianas = Map[Hessin[f], prt]\n (*\ calculamos\ las\ mateices\ hesianas\ en\ cada\ punto\ *) \), \(valorespropiosmatriceshesianas = Map[Eigenvalues, matriceshesianas]\n (* \ calculamos\ los\ valores\ propios\ de\ las\ matices\ hesianas\ *) \)}], "Input"], Cell["\<\ A la vista de este resultado, se sigue que hay un \[UAcute]nico extremo \ relativo dentro de la bola que se encuentra en el origen y corresponde a un m\ \[IAcute]nimo. Calculemos los extremos de la funci\[OAcute]n en la esfera \ unidad.\ \>", "Text"], Cell[BoxData[ \(F[x_, y_, z_, \[Lambda]_] = f[x, y, z] + \[Lambda] \((x^2 + y^2 + z^2 - 1)\); \n pcond = Solve[{D[F[x, y, z, \[Lambda]], x], D[F[x, y, z, \[Lambda]], y], D[F[x, y, z, \[Lambda]], z], D[F[x, y, z, \[Lambda]], \[Lambda]]} == {0, 0, 0, 0}, {x, y, z, \[Lambda]}]\)], "Input"], Cell[TextData[{ "Ahora lo que hay que hacer es calcular los valores de la funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`f\)]], " en los puntos de la esfera unidad obtenidos. Para evaluar ", Cell[BoxData[ \(TraditionalForm\`f\)]], " sobran los valores de \[Lambda]. Los quitamos y evaluamos. " }], "Text"], Cell[BoxData[ \(npcon = {x, y, z} /. pcond\)], "Input"], Cell[BoxData[ \(f[{x_, y_, z_}] = f[x, y, z]; \n\nMap[f, npcon]\)], "Input"], Cell[TextData[{ "Como ", Cell[BoxData[ \(TraditionalForm\`f(0, 0, 0) = \(-1\)\)]], " (no debemos olvidar este valor, aunque en este caso no influye en el \ resulado final), concluimos que al m\[AAcute]ximo absoluto de ", Cell[BoxData[ \(TraditionalForm\`f\)]], " es ", Cell[BoxData[ \(TraditionalForm\`4\/3\)]], " y el m\[IAcute]nimo absoluto es ", Cell[BoxData[ \(TraditionalForm\`\(-\(4\/3\)\)\)]], "." }], "Text"], Cell[CellGroupData[{ Cell["Ejercicio 7", "Exercise"], Cell[TextData[{ "Calcula los valores m\[AAcute]ximo y m\[IAcute]nimo absolutos de ", Cell[BoxData[ \(TraditionalForm \`f(x, y) = x\^2 + 5 x\^2 + 6 x\ y\ - 22\ x - 26\ y\ + 37\)]], " en la regi\[OAcute]n del plano dada por ", Cell[BoxData[ \(TraditionalForm \`K = {\((x, y)\) \[Element] \(\(\[DoubleStruckCapitalR]\^2\) : \ 1 \[LessEqual] x\^2 + 2 y\^2 \[LessEqual] 12\)}\)]], " y representa la gr\[AAcute]fica de ", Cell[BoxData[ \(TraditionalForm\`f\)]], " cerca del punto donde se alcanza el m\[IAcute]nimo absoluto." }], "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell["Ejercicio 8", "Exercise"], Cell[TextData[{ "Calcula los valores m\[AAcute]ximo y m\[IAcute]nimo absolutos que alcanza \ la funci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`f(x, y, z) = 9 x\^2 + 6 y\^2 - 4 z\^2\)]], " sobre el elipsoide de ecuaci\[OAcute]n ", Cell[BoxData[ \(TraditionalForm\`x\^2 + y\^2 + 6 z\^2 = 4\)]], "." }], "ExerciseText"] }, Open ]] }, Open ]] }, FrontEndVersion->"Microsoft Windows 3.0", ScreenRectangle->{{0, 1920}, {0, 1125}}, AutoGeneratedPackage->None, WindowSize->{1887, 1035}, WindowMargins->{{2, Automatic}, {Automatic, 2}}, PageHeaders->{{Cell[ TextData[ "F. Javier P\[EAcute]rez Gonz\[AAcute]lez\nDpto. An\[AAcute]lisis \ Matem\[AAcute]tico - Universidad de Granada"], "Header"], Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], Cell[ TextData[ "Gr\[AAcute]ficas 3D. Derivadas parciales.\nExtremos relativos y \ condicionados."], "Header"]}, {Cell[ TextData[ "F. Javier P\[EAcute]rez Gonz\[AAcute]lez\nDpto. An\[AAcute]lisis \ Matem\[AAcute]tico - Universidad de Granada"], "Header"], Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], Cell[ TextData[ "Gr\[AAcute]ficas 3D. Derivadas parciales.\nExtremos relativos y \ condicionados."], "Header"]}}, Magnification->1.25, StyleDefinitions -> "Classroom.nb" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{ "S5.30.1"->{ Cell[26538, 706, 65, 1, 59, "Input", CellTags->"S5.30.1"]} } *) (*CellTagsIndex CellTagsIndex->{ {"S5.30.1", 53601, 1519} } *) (*NotebookFileOutline Notebook[{ Cell[1709, 49, 116, 5, 69, "Title"], Cell[1828, 56, 153, 4, 80, "Subtitle"], Cell[1984, 62, 203, 3, 72, "Author"], Cell[CellGroupData[{ Cell[2212, 69, 39, 0, 69, "Section"], Cell[2254, 71, 711, 14, 54, "Text"], Cell[2968, 87, 457, 8, 198, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[3462, 100, 73, 0, 69, "Section"], Cell[3538, 102, 550, 14, 67, "Text"], Cell[4091, 118, 482, 12, 33, "Text"], Cell[4576, 132, 281, 9, 34, "Text"], Cell[4860, 143, 221, 7, 33, "Text"], Cell[5084, 152, 1190, 34, 88, "Text"], Cell[6277, 188, 192, 4, 29, "Text"], Cell[6472, 194, 248, 7, 33, "Text"], Cell[6723, 203, 820, 29, 34, "Text"], Cell[7546, 234, 124, 2, 29, "Text"], Cell[7673, 238, 199, 5, 33, "Text"], Cell[7875, 245, 98, 2, 60, "Theorem"], Cell[7976, 249, 295, 5, 33, "Text"], Cell[8274, 256, 394, 7, 174, "Input"], Cell[8671, 265, 300, 6, 33, "Text"], Cell[8974, 273, 48, 1, 60, "Input"], Cell[9025, 276, 2008, 45, 224, "Text"], Cell[11036, 323, 350, 7, 33, "Text"], Cell[11389, 332, 306, 5, 81, "Input"], Cell[11698, 339, 374, 10, 34, "Text"], Cell[12075, 351, 233, 4, 65, "Input"], Cell[12311, 357, 336, 9, 34, "Text"], Cell[12650, 368, 241, 4, 65, "Input"], Cell[12894, 374, 280, 5, 33, "Text"], Cell[13177, 381, 782, 17, 152, "Input"], Cell[13962, 400, 609, 9, 54, "Text"], Cell[14574, 411, 266, 5, 60, "Input"], Cell[14843, 418, 285, 7, 33, "Text"], Cell[15131, 427, 182, 3, 65, "Input"], Cell[15316, 432, 251, 4, 33, "Text"], Cell[15570, 438, 186, 3, 65, "Input"], Cell[15759, 443, 172, 3, 33, "Text"], Cell[15934, 448, 123, 3, 60, "Theorem"], Cell[16060, 453, 493, 8, 99, "Text"], Cell[16556, 463, 207, 4, 60, "Input"], Cell[16766, 469, 115, 3, 33, "Text"], Cell[16884, 474, 198, 3, 60, "Input"], Cell[17085, 479, 404, 8, 33, "Text"], Cell[17492, 489, 166, 2, 65, "Input"], Cell[17661, 493, 38, 0, 33, "Text"], Cell[17702, 495, 221, 3, 60, "Input"], Cell[17926, 500, 39, 0, 33, "Text"], Cell[17968, 502, 355, 5, 98, "Input"], Cell[18326, 509, 66, 0, 33, "Text"], Cell[18395, 511, 316, 5, 60, "Input"], Cell[18714, 518, 78, 0, 33, "Text"], Cell[18795, 520, 185, 3, 123, "Input"], Cell[18983, 525, 482, 9, 54, "Text"], Cell[19468, 536, 174, 3, 60, "Input"], Cell[19645, 541, 94, 1, 33, "Text"], Cell[19742, 544, 136, 2, 60, "Input"], Cell[19881, 548, 182, 3, 81, "Input"], Cell[20066, 553, 61, 0, 60, "Theorem"], Cell[20130, 555, 1268, 21, 75, "Text"], Cell[21401, 578, 573, 11, 165, "Input"], Cell[21977, 591, 441, 8, 54, "Text"], Cell[22421, 601, 101, 1, 33, "Text"], Cell[22525, 604, 335, 5, 33, "Text"], Cell[22863, 611, 141, 3, 60, "Input"], Cell[23007, 616, 143, 3, 33, "Text"], Cell[23153, 621, 57, 1, 60, "Input"], Cell[23213, 624, 121, 3, 33, "Text"], Cell[23337, 629, 778, 14, 123, "Input"], Cell[24118, 645, 71, 0, 33, "Text"], Cell[24192, 647, 404, 7, 123, "Input"], Cell[24599, 656, 532, 8, 54, "Text"], Cell[25134, 666, 275, 4, 60, "Input"], Cell[25412, 672, 72, 0, 60, "Theorem"], Cell[25487, 674, 193, 4, 33, "Text"], Cell[25683, 680, 60, 1, 60, "Input"], Cell[25746, 683, 91, 1, 76, "Input"], Cell[25840, 686, 201, 5, 33, "Text"], Cell[26044, 693, 228, 4, 81, "Input"], Cell[26275, 699, 260, 5, 33, "Text"], Cell[26538, 706, 65, 1, 59, "Input", CellTags->"S5.30.1"], Cell[26606, 709, 303, 5, 102, "Input"], Cell[26912, 716, 242, 4, 112, "Input"], Cell[27157, 722, 261, 4, 102, "Input"], Cell[CellGroupData[{ Cell[27443, 730, 31, 0, 48, "Exercise"], Cell[27477, 732, 460, 10, 33, "ExerciseText"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[27986, 748, 38, 0, 69, "Section"], Cell[28027, 750, 688, 18, 54, "Text"], Cell[28718, 770, 119, 3, 60, "Input"], Cell[28840, 775, 397, 10, 33, "Text"], Cell[29240, 787, 254, 4, 102, "Input"], Cell[29497, 793, 184, 4, 33, "Text"], Cell[29684, 799, 112, 2, 102, "Input"], Cell[29799, 803, 1163, 30, 76, "Text"], Cell[30965, 835, 101, 2, 102, "Input"], Cell[31069, 839, 287, 5, 33, "Text"], Cell[31359, 846, 153, 4, 123, "Input"], Cell[31515, 852, 48, 0, 60, "Theorem"], Cell[31566, 854, 517, 14, 33, "Text"], Cell[32086, 870, 353, 6, 102, "Input"], Cell[32442, 878, 360, 10, 33, "Text"], Cell[32805, 890, 220, 5, 165, "Input"], Cell[33028, 897, 169, 3, 33, "Text"], Cell[33200, 902, 156, 3, 102, "Input"], Cell[33359, 907, 165, 3, 123, "Input"], Cell[33527, 912, 2468, 78, 98, "Text"], Cell[CellGroupData[{ Cell[36020, 994, 31, 0, 48, "Exercise"], Cell[36054, 996, 1095, 33, 107, "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell[37186, 1034, 31, 0, 48, "Exercise"], Cell[37220, 1036, 840, 25, 76, "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell[38097, 1066, 31, 0, 48, "Exercise"], Cell[38131, 1068, 1505, 44, 155, "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell[39673, 1117, 31, 0, 48, "Exercise"], Cell[39707, 1119, 718, 21, 125, "ExerciseText"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[40474, 1146, 37, 0, 69, "Section"], Cell[40514, 1148, 635, 13, 66, "Text"], Cell[41152, 1163, 684, 14, 144, "Input"], Cell[41839, 1179, 300, 4, 102, "Input"], Cell[42142, 1185, 277, 5, 33, "Text"], Cell[42422, 1192, 57, 1, 60, "Input"], Cell[42482, 1195, 233, 4, 33, "Text"], Cell[42718, 1201, 48, 1, 60, "Input"], Cell[42769, 1204, 262, 5, 33, "Text"], Cell[43034, 1211, 114, 2, 60, "Input"], Cell[43151, 1215, 192, 4, 33, "Text"], Cell[43346, 1221, 117, 2, 60, "Input"], Cell[43466, 1225, 102, 2, 60, "Input"], Cell[43571, 1229, 406, 10, 33, "Text"], Cell[43980, 1241, 76, 1, 33, "Text"], Cell[44059, 1244, 365, 7, 33, "Text"], Cell[44427, 1253, 245, 4, 102, "Input"], Cell[CellGroupData[{ Cell[44697, 1261, 31, 0, 48, "Exercise"], Cell[44731, 1263, 794, 17, 54, "ExerciseText"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[45574, 1286, 41, 0, 69, "Section"], Cell[45618, 1288, 333, 9, 33, "Text"], Cell[45954, 1299, 198, 4, 60, "Input"], Cell[46155, 1305, 207, 3, 60, "Input"], Cell[46365, 1310, 137, 3, 60, "Input"], Cell[46505, 1315, 390, 8, 33, "Text"], Cell[46898, 1325, 61, 1, 60, "Input"], Cell[46962, 1328, 98, 2, 102, "Input"], Cell[47063, 1332, 89, 1, 60, "Input"], Cell[47155, 1335, 89, 1, 60, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[47281, 1341, 71, 0, 69, "Section"], Cell[47355, 1343, 139, 3, 33, "Text"], Cell[47497, 1348, 157, 4, 36, "Text"], Cell[47657, 1354, 551, 10, 66, "Text"], Cell[48211, 1366, 256, 5, 106, "Input"], Cell[48470, 1373, 335, 5, 81, "Input"], Cell[48808, 1380, 377, 6, 127, "Input"], Cell[49188, 1388, 309, 5, 123, "Input"], Cell[49500, 1395, 260, 5, 33, "Text"], Cell[49763, 1402, 339, 6, 81, "Input"], Cell[50105, 1410, 335, 9, 33, "Text"], Cell[50443, 1421, 59, 1, 60, "Input"], Cell[50505, 1424, 80, 1, 102, "Input"], Cell[50588, 1427, 458, 15, 36, "Text"], Cell[CellGroupData[{ Cell[51071, 1446, 31, 0, 48, "Exercise"], Cell[51105, 1448, 616, 15, 33, "ExerciseText"] }, Open ]], Cell[CellGroupData[{ Cell[51758, 1468, 31, 0, 48, "Exercise"], Cell[51792, 1470, 347, 9, 33, "ExerciseText"] }, Open ]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)