9  Derivadas de funciones de varias variables

9.1 Ejercicios Resueltos

Para la realización de esta práctica se requieren los siguientes paquetes:

using SymPy  # Para el cálculo simbólico.
using Plots  # Para el dibujo de gráficas.
using Makie, GLMakie # Para el dibujo de gráficas en 3d.
using ImplicitPlots # Para el dibujo de gráficas de funciones implícitas.
using LaTeXStrings  # Para usar código LaTeX en los gráficos.
using LinearAlgebra # Para el módulo y el producto escalar de vectores.

Ejercicio 9.1 Dibujar las gráficas de las siguientes funciones.

  1. \(f(x,y) = 2x + 3y\).

    Usar la función surface del paquete Plots o la función surface del paquete Makie para representar superficies de funciones de dos variables.

    using Plots
    f(x, y) = x/2 - 2y
    xs = ys = range(0, 2, 2)
    Plots.surface(xs, ys, f, xlab = "x", ylab = "y", zlab = "z")
    using GLMakie
    f(x, y) = x/2 - 2y
    xs = ys = range(0, 2, 2)
    Makie.surface(xs, ys, f)
  2. \(g(x) = x^2 - y^2\).

    using Plots
    g(x, y) = x^2-y^2
    xs = ys = range(-1, 1, 30)
    Plots.surface(xs, ys, g, xlab = "x", ylab = "y", zlab = "z")
    using GLMakie
    g(x, y) = x^2 - y^2
    xs = ys = range(-1, 1, 30)
    Makie.surface(xs, ys, g)
  3. \(h(x) = \dfrac{\operatorname{sen}(x^2+y^2)}{\sqrt{x^2+y^2}}\)

    using Plots
    h(x, y) = sin(x^2+y^2)/sqrt(x^2+y^2)
    xs = ys = range(-pi, pi, 80)
    Plots.surface(xs, ys, h, xlab = "x", ylab = "y", zlab = "z")
    using GLMakie
    h(x, y) = sin(x^2+y^2)/sqrt(x^2+y^2)
    xs = ys = range(-pi, pi, 80)
    Makie.surface(xs, ys, h)

Ejercicio 9.2 Dibujar las curvas de nivel de las siguientes funciones.

  1. \(f(x,y) = 2x + 3y\).

    Usar la función contour del paquete Plots o la función contour del paquete Makie para representar curvas de nivel de funciones de dos variables.

    using Plots
    f(x, y) = x/2 - 2y
    xs = ys = range(0, 2, 50)
    Plots.contour(xs, ys, f, levels = 7, xlab = "x", ylab = "y", clabels = true)
    using GLMakie
    f(x, y) = x/2 - 2y
    xs = ys = range(0, 2, 50)
    Makie.contour(xs, ys, f, labels = true,  levels = 0:-0.5:-3)
  2. \(g(x) = x^2 - y^2\).

    using Plots
    g(x, y) = x^2 - y^2
    xs = ys = range(-1, 1, 100)
    Plots.contour(xs, ys, g, levels = 9, xlab = "x", ylab = "y", clabels = true)
    using GLMakie
    f(x, y) = x^2 - y^2
    xs = ys = range(-1, 1, 100)
    Makie.contour(xs, ys, f, labels = true,  levels = -1:0.2:1)
  3. \(h(x) = \dfrac{\operatorname{sen}(x^2+y^2)}{\sqrt{x^2+y^2}}\)

    using Plots
    h(x, y) = sin(x^2+y^2)/sqrt(x^2+y^2)
    xs = ys = range(-pi, pi, 80)
    Plots.contour(xs, ys, h, xlab = "x", ylab = "y")
    using GLMakie
    h(x, y) = sin(x^2+y^2)/sqrt(x^2+y^2)
    xs = ys = range(-pi, pi, 80)
    Makie.contour(xs, ys, h, labels = true,  levels = -1:0.2:1)

Ejercicio 9.3 Dibujar en una misma gráfica la superficie de la función \(f(x,y) = -4x e^{-x^2-y^2}\) y sus curvas de nivel.

using GLMakie
f(x, y) = -4x*exp(-x^2-y^2)
xs = ys = range(-2, 2, 50)
zs = f.(xs, ys')
zmin = minimum(zs)
fig = Figure()
ax = Axis3(fig[1,1], )
surf = Makie.surface!(ax, xs, ys, zs, transparency = true)
Makie.wireframe!(ax, xs, ys, zs, color = (:black, 0.1), transparency = true)
Makie.contour!(ax, xs, ys, zs, levels = 20, transformation = (:xy, zmin), transparency=true)
Colorbar(fig[1, 2], surf, height = Relative(0.5))
fig

Ejercicio 9.4 Sea \(f(x,y)= x^2-2y^2\).

  1. Dibujar la gráfica y el punto \((1, 1, f(1,1))\).

    Usar la función surface del paquete Makie para representar superficies de funciones de dos variables.

    Usar la función scatter del paquete Makie para dibujar puntos.

    using GLMakie
    f(x, y) = x^2 - 2y^2
    xs = ys = range(-2, 2, 30)
    fig = Figure()
    ax = Axis3(fig[1,1], azimuth = pi/4)
    Makie.surface!(ax, xs, ys, f, transparency = true)
    Makie.scatter!(ax, Point3(1, 1, f(1,1)), color = :red)
    fig
  2. Dibujar el plano \(y=1\) sobre la superficie. ¿Cuál es la curva que resulta de la intersección del plano con la superficie? ¿Cómo es la pendiente de la tangente a esta curva en \(x=1\)?

    xs = [-2 -2; 2 2]
    zs = [-6 2; -6 2]
    ys = [1 1; 1 1]
    Makie.surface!(ax, xs, ys, zs; colormap = [:orange])
    fig

    La curva resultante es la parábola \(f(x) = x^2\). La pendiente de la recta tangente a esta curva en \(x=1\) vale \(2\).

  3. Calcular la derivada parcial de \(f\) con respecto a \(x\) en el punto \((1,1)\).

    using SymPy
    @syms x y
    subs(diff(f(x,y), x), x => 1, y => 1)

    \(2\)

  4. Dibujar el plano \(x=1\) sobre la superficie. ¿Cuál es la curva que resulta de la intersección del plano con la superficie? ¿Cómo es la pendiente de la tangente a esta curva en \(y=1\)?

    ys = [-2 -2; 2 2]
    zs = [-6 2; -6 2]
    xs = [1 1; 1 1]
    Makie.surface!(ax, xs, ys, zs; colormap = [:magenta])
    fig

    La curva resultante es la parábola \(g(y) = -2y^2\). La pendiente de la recta tangente a esta curva en \(y=1\) vale \(-4\).

  5. Calcular la derivada parcial de \(f\) con respecto a \(y\) en el punto \((1,1)\).

    using SymPy
    @syms x y
    subs(diff(f(x,y), y), x => 1, y => 1)

    \(-4\)

Ejercicio 9.5 La presión \(P\) de un gas perfecto depende de la temperatura \(T\) y del volumen que ocupa \(V\) según la función

\[ P(T,V) = \frac{nRT}{V}, \]

donde \(n\) y \(R\) son constantes positivas propias de cada gas.

  1. Calcular la derivada parcial de la presión con respecto a la temperatura. ¿Cómo la interpretarías?

    using SymPy
    @syms n R T V
    diff(n*R*T/V, T)

    \(\frac{R n}{V}\)

    Como \(n\), \(R\) y \(V\) son positivos, la derivada parcial es positiva, por lo que si se mantiene el volumen constante y empezamos a aumentar la temperatura, la presión aumentará.

  2. Calcular la derivada parcial de la presión con respecto al volumen. ¿Cómo la interpretarías?

    diff(n*R*T/V, V)

    \(- \frac{R T n}{V^{2}}\)

    Como \(n\), \(R\), \(T\) y \(V\) son positivos, la derivada parcial es negativa, por lo que si se mantiene la temperatura constante y empezamos a aumentar el volumen, la presión disminuirá.

Ejercicio 9.6 Dada la función \(f(x,y) = e^{x+y}\operatorname{sen}\left(\frac{x}{y}\right)\), calcular las siguientes derivadas parciales de segundo orden.

  1. \(\dfrac{\partial^2f}{\partial y\partial x}\).

    using SymPy
    @syms x y
    f(x, y) = exp(x+y)sin(x/y)
    diff(f(x, y), x, y)

    \(\left(- \frac{x \cos{\left(\frac{x}{y} \right)}}{y^{2}} + \frac{x \sin{\left(\frac{x}{y} \right)}}{y^{3}} + \sin{\left(\frac{x}{y} \right)} + \frac{\cos{\left(\frac{x}{y} \right)}}{y} - \frac{\cos{\left(\frac{x}{y} \right)}}{y^{2}}\right) e^{x + y}\)

  2. \(\dfrac{\partial^2f}{\partial x\partial y}\).

    using SymPy
    @syms x y
    f(x, y) = exp(x+y)sin(x/y)
    diff(f(x, y), y, x)

    \(\left(- \frac{x \cos{\left(\frac{x}{y} \right)}}{y^{2}} + \frac{x \sin{\left(\frac{x}{y} \right)}}{y^{3}} + \sin{\left(\frac{x}{y} \right)} + \frac{\cos{\left(\frac{x}{y} \right)}}{y} - \frac{\cos{\left(\frac{x}{y} \right)}}{y^{2}}\right) e^{x + y}\)

  3. ¿Se cumple la igualdad de las derivadas cruzadas?

    Si, \(\dfrac{\partial^2f}{\partial y\partial x} = \dfrac{\partial^2f}{\partial x\partial y}\), porque ambas derivadas son continuas en todo su dominio.

Ejercicio 9.7 La función \(f(x, y, z) = e^{-x-2y-3z}\) da la temperatura en cada posición \((x,y,z)\) de una habitación.

  1. Si un mosquito está en la posición \((1, 1, 1)\), ¿en qué dirección debe volar para que la temperatura decrezca lo más rápidamente posible? ¿Cuál será la tasa de variación de la temperatura si el mosquito se mueve en esa dirección?

    Debe moverse en la dirección opuesta al vector gradiente de \(f\).

    using SymPy, LinearAlgebra
    @syms x y z
    f(x, y, z) = exp(-x-2y-3z)
    ∇f = lambdify(diff.(f(x, y, z), [x, y, z]))
    println("Dirección de máximo decrecimiento : $(-∇f(1, 1, 1))")
    println("Tasa de variación en esa dirección: $(-norm(∇f(1, 1, 1)))")
    Dirección de máximo decrecimiento : [0.0024787521766663585, 0.004957504353332717, 0.0074362565299990755]
    Tasa de variación en esa dirección: -0.009274641391805666
    using SymPy, LinearAlgebra
    @syms x y z
    f(x, y, z) = exp(-x-2y-3z)
    ex = [diff(f(x,y,z), i) for i in (x, y, z)]
    ∇f = lambdify(ex, (x, y, z))
    println("Dirección de máximo decrecimiento : $(-∇f(1, 1, 1))")
    println("Tasa de variación en esa dirección: $(-norm(∇f(1, 1, 1)))")
    Dirección de máximo decrecimiento : [0.0024787521766663585, 0.004957504353332717, 0.0074362565299990755]
    Tasa de variación en esa dirección: -0.009274641391805666
  2. Si el mosquito se mueve siguiendo la dirección del vector \((2, -1, 3)\), ¿la temperatura aumenta o disminuye? ¿Cuál será la tasa de variación de la temperatura en esa dirección?

    La tasa de variación de la función viene dada por la derivada direccional de la función en el punto \((1, 1, 1)\) siguiendo la dirección del vector \((2, -1, 3)\).

    dot(∇f(1, 1, 1), normalize([2, -1, 3]))
    -0.005962269466160785

    La temperatura disminuye.

Ejercicio 9.8 Calcular las ecuaciones de la recta normal y el plano tangente a la superficie \(x+2y-\ln(z)+4=0\) en el punto \((0,-2,1)\), y dibujarlos.

Usar la propiedad de que el vector gradiente de una función \(f(x,y,z)\) es siempre normal a las curvas de nivel \(f(x,y,z)=0\).

Dibujamos primero la superficie.

using SymPy, GLMakie
@syms x y z
f(x, y, z) = x + 2y - log(z) + 4
f1 = lambdify(solve(f(x,y,z), z)[1])
xs = range(-0.5, 0.5, 30)
ys = range(-2.5, -1.5, 30)
fig = Figure()
ax = Axis3(fig[1,1], aspect = :data)
Makie.surface!(ax, xs, ys, f1)
Makie.scatter!(ax, Point3(0, -2, 1), color = :red)
fig

Calculamos primero la ecuación de la recta normal.

∇f = lambdify(diff.(f(x, y, z), [x, y, z]), [x, y, z])
@syms t
nl(t) = [0, -2, 1] + t * ∇f(0, -2, 1) 
println("Ecuación de la recta normal: $(nl(t))")
Ecuación de la recta normal: Sym{PyCall.PyObject}[t, 2*t - 2, 1 - 1.0*t]

Y la dibujamos sobre la misma gráfica de la superficie.

ts = range(-0.5, 0.5, 2)
points = Point3.(nl.(ts))
Makie.lines!(ax, points)
fig

A continuación calculamos la ecuación del plano tangente.

using LinearAlgebra
tp(x,y) = solve(dot(([x, y, z] - [0, -2, 1]), ∇f(0, -2, 1)), z)[1]
println("Ecuación del plano tangente z = $(tp(x,y))")
Ecuación del plano tangente z = x + 2.0*y + 5.0

Y finalmente lo dibujamos en la misma gráfica de la superficie.

Makie.surface!(ax, xs, ys, lambdify(tp(x,y)), colormap = ["red"], alpha = 0.5, transparency = true)
fig

Ejercicio 9.9 La ecuación \(x^3+y^3=8\) define una curva implícita.

  1. Dibujar la gráfica de la ecuación.

    Usar la función implicit_plot del paquete ImplicitPlots para dibujar la gráfica de una función implícita definida por una ecuación.

    using Plots, ImplicitPlots, LaTeXStrings
    f(x, y) = x^3 + y^3 - 8 
    implicit_plot(f, xlab =  L"$x$", ylab = L"$y$", legend = false)
  2. Calcular la derivada de \(y\) como función implícita de \(x\).

    La derivada de \(y\) como función implícita de \(x\) en la ecuación \(f(x,y)=0\) se puede calcular como

    \[ \frac{dy}{dx} = -\frac{\partial f/\partial x}{\partial f/\partial y} \]

    using SymPy
    @syms x y
    y′ = -diff(f(x, y), x) / diff(f(x, y), y)

    \(- \frac{x^{2}}{y^{2}}\)

  3. Calcular la ecuación de la recta tangente a la curva implícita en el punto \((\sqrt[3]{4}, \sqrt[3]{4})\).

    x₀ = y₀ = 2^(2/3)
    tan = lambdify(y₀ + subs(y′, y => y₀, x => x₀)*(x-x₀))
    Plots.plot!(tan)

Ejercicio 9.10 La función \(f(x,y) = x^3+y^3-3xy\) determina la concentración de una sustancia \(z\) en función de las concentraciones de otras dos \(x\) e \(y\) en una reacción química.

  1. Representar la gráfica de la función.

    using GLMakie
    f(x, y) = x^3+y^3-3x*y
    xs = ys = range(-0.5, 1.5, 30)
    Makie.surface(xs, ys, f)
  2. Calcular los puntos críticos de la función.

    Los puntos críticos son los puntos que anulan el gradiente. Para resolver el sistema de ecuaciones que resulta de igualar el vector gradiente al vector nulo se pueden utilizar las funciones linsolve (para sistemas lineales) o nonlinsolve (para sistemas no lineales) del paquete SymPy.

    using SymPy
    @syms x y
    nonlinsolve(diff.(f(x, y), (x, y)), (x, y))
    Set{Sym} with 4 elements:
      (0, 0)
      (1, 1)
      (-1/2 - sqrt(3)*I/2, -1/2 + sqrt(3)*I/2)
      (-1/2 + sqrt(3)*I/2, -1/2 - sqrt(3)*I/2)
  3. Determinar los extremos relativos y los puntos de silla. ¿Para qué concentraciones de \(x\) e \(y\) la concentración de \(z\) será mínima?

    Para determinar los extremos relativos y los puntos de silla de una función de dos variables, hay que calcular el hessiano en los puntos críticos.

    Definimos una función para el hessiano.

    using LinearAlgebra
    hes = lambdify(det(hessian(f(x,y), (x,y))))
    #151 (generic function with 1 method)

    Calculamos el hessiano en el punto crítico \((0,0)\).

    hes(0,0)
    -9

    Como es negativo, en \((0,0)\) hay un punto de inflexión.

    Calculamos el hessiano en el punto crítico \((1,1)\).

    hes(1,1)
    27

    Como es positivo, existe un extremo relativo en \((1,1)\). Para ver si se trata de un máximo o mínimo calculamos \(\frac{\partial^2 f}{\partial x^2}\).

    fxx = lambdify(diff(f(x,y), x, x), (x,y))
    fxx(1,1)
    6

    Como es positiva, en \((1,1)\) hay un mínimo. Así pues, la concentración de \(z\) será mínima cuando las concentraciones de \(x\) e \(y\) sean 1.

Ejercicio 9.11 Sea \(f(x,y)=\sqrt{xy}\).

  1. Dibujar la gráfica de \(f\) y el punto \((1, 1, f(1,1))\).

    using GLMakie
    f(x, y) = sqrt(x*y)
    a = b = 1
    xs = ys = range(0.5, 2, 30)
    fig = Figure()
    ax = Axis3(fig[1,1], azimuth = -pi/4, elevation = 0.1)
    Makie.surface!(ax, xs, ys, f)
    Makie.scatter!(ax, Point3(a, b, f(a,b)), color = :red)
    fig
  2. Calcular el polinomio de Taylor de primer grado de \(f\) en el punto \((1,1)\) y representarlo gráficamente. Comprobar que se obtiene el plano tangente a la superficie de \(f\) en el punto \((1,1)\).

    La fórmula del polinomio de Taylor de primer grado de la función \(f(x,y)\) en el punto \((a,b)\) es

    \[ P^1(x,y) = f(a,b) + \nabla f(a,b)(x-a, y-b). \]

    using SymPy, LinearAlgebra
    @syms x, y
    ex = diff.(f(x, y), [x, y])
    ∇f = lambdify(ex, (x, y))
    p1(s,t) = f(a, b) + dot(∇f(a, b), [s-a, t-b])
    Makie.surface!(ax, xs, ys, p1; colormap = [:orange], transparency = true)
    fig
  3. Utilizar el polinomio anterior para calcular el valor aproximado de \(\sqrt{1.01\cdot 0.99}\). ¿Cuál es el error cometido en la aproximación?

    error = abs(f(1.01, 0.99) - p1(1.01, 0.99))
    5.000125006249245e-5
  4. Calcular el polinomio de Taylor de segundo grado de \(f\) en el punto \((1,1)\) y representarlo gráficamente.

    La fórmula del polinomio de Taylor de segundo grado de la función \(f(x,y)\) en el punto \((a,b)\) es

    \[ P^2(x,y) = f(a,b) + \nabla f(a,b)(x-a, y-b) + \frac{1}{2!}\nabla^2f(a,b)(x-a,y-b)(x-a,y-b). \]

    using SymPy, LinearAlgebra
    @syms x, y
    ∇²f = lambdify(hessian(f(x,y), (x, y)), (x, y))
    p2(s,t) = f(a, b) + dot(∇f(a, b), [s-a, t-b]) + 1/2 * dot(∇²f(a,b) * [s-a; t-b],  [s-a, t-b])
    Makie.surface!(ax, xs, ys, p2; colormap = [:magenta], transparency = true)
    fig
  5. Utilizar el polinomio anterior para calcular el valor aproximado de \(\sqrt{1.01\cdot 0.99}\). ¿Cuál es error cometido en la aproximación? ¿Es mayor o menor que en la aproximación mediante el polinomio de Taylor de primer grado?

    error = f(1.01, 0.99) - p2(1.01, 0.99) 
    -1.2500624979594477e-9

9.2 Ejercicios propuestos

Ejercicio 9.12 ¿Emparejar las siguientes funciones de dos variables con sus diagramas de contorno?

Curvas de nivel.

Empareja la función con su gráfica.

\(f(x,y) = \frac{\operatorname{sen}(2x^2+y^2)}{\sqrt{x^2+y^2}}\)
\(h(x,y) = \cos(x)-\operatorname{sen}(2y)\)
\(i(x,y) = \frac{1}{2}(\operatorname{sen}(x^2)-\cos(y^2))\)
\(g(x,y) = \frac{\cos(xy)}{\sqrt{x^2+1}}\)

Ejercicio 9.13 Dada la función

\[ f(x,y,z)=\frac{\ln(\sqrt{\cos(x^2y)})}{z^2}, \]

calcular \(\dfrac{\partial^3 f}{\partial y\partial z\partial x}\) en el punto \((2,\pi,1)\).


 🎁

Ejercicio 9.14 La velocidad de una reacción química típicamente depende de la temperatura y de la concentración de los reactivos. En una reacción de hidrólisis del acetato de etilo por hidróxido de sodio (NaOH) en una solución acuosa, la velocidad de reacción viene dada por la fórmula \(R(t,a,s)=\frac{t}{3}\sqrt[3]{a^2s^2}\), donde \(t\) es la temperatura de la reacción, \(a\) la concentración de acetato de etilo y \(s\) la concentración de hidróxido de sodio.

  1. ¿En qué dirección debe cambiarse la temperatura y las concentraciones de los reactivos para que la velocidad de reacción aumente lo más rápidamente posible si la temperatura y las concentraciones actuales son the 40ºC, 0.4 mol/l y 0.5 mol/l respectivamente?

    Dirección de cambio de la temperatura:


    Dirección de cambio del acetato de etilo:


    Dirección de cambio del hidróxido de sodio:


  2. ¿Cómo cambiará la velocidad de reacción en ese instante si la temperatura disminuye al mismo ritmo que aumenta la concentración del acetato de etilo y la concentración de acetato de etilo aumenta la mitad de lo que aumenta la concentración del hidróxido de sodio?


     🎁

Ejercicio 9.15 La superficie \(\frac{e^{z\cos(xy)}}{xz}=\frac{1}{e}\) define a \(z\) como función implícita \(z=f(x,y)\).

  1. ¿Cuál de las siguientes afirmaciones es cierta en el punto \((1,\pi,1)\)?

    Select an item
  2. ¿Cuál es la ecuación del plano tangente en el punto \((1,\pi,1)\)?

    Select an item

Ejercicio 9.16 Dada la función \(f(x,y)=-\dfrac{y}{9+x^2+y^2}\), ¿cuál de las siguientes afirmaciones es cierta?

Select an item

Ejercicio 9.17 Calcular el polinomio de Taylor de segundo grado de la función \(f(x,y)=\operatorname{sen}(x/y)\) en el punto \((\pi/2,1)\) y utilizarlo para calcular el valor aproximado de \(f(1.5,1)\).


 🎁