Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
Práctica 4: Derivabilidad e
Integrabilidad con Matlab.
1. Cálculo de derivadas. Comando diff
Calculo directo de una derivada: Comando diff
Para calcular la derivada de orden n de una función de una variable se utiliza el comando diff
cuya sintaxis es,
diff(f,variable,n)
que calcula la derivada de orden n de la función (expresión simbólica) f, respecto de la
variable escogida, que ha tenido previamente que definirse como simbólica. Si no se
especifica el orden de la derivada, calcula la derivada primera. Si no se especifica la variable y
en la fórmula de la función aparece la x, derivará respecto de esa variable. Si la función depende
de una única variable, no es necesario especificar ésta para calcular la derivada.
Ejemplo 1: Calcular
d 2
dx
(x + cos( x + 1 )sen( x 2 )) y
d2
dx 2
( x Ln( x))
>> syms x
>> diff(x^2+cos(x+1)*sin(x^2),x)
ans =
2*x-sin(x+1)*sin(x^2)+2*cos(x+1)*cos(x^2)*x
Para que salga en formato matemático basta con enlazar con el comando pretty
>> pretty(diff(x^2+cos(x+1)*sin(x^2),x))
2 2
2 x - sin(x + 1) sin(x ) + 2 cos(x + 1) cos(x ) x
Para la segunda derivada
>> pretty(diff(x*log(x),x,2))
1/x
𝑥𝑥−3
, 𝑥𝑥 ≤2
𝑥𝑥 2 −2
Ejemplo 2: Estudiar la derivada de la función 𝑓𝑓(𝑥𝑥) = �2𝑥𝑥−6 en x=2.
, 𝑥𝑥 >2
𝑥𝑥 2
Empiezo dibujando la función para ver la información que obtengo,
>> x=-5:0.01:5;
>> y=((x-3)./(x.^2-2)).*(x<=2)+((2*x-6)./x.^2).*(x>2);
Warning: Divide by zero. Depende de la versión de Matlab
>> plot(x,y,'.')
1
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
400
300
200
Observo dos discontinuidades asintóticas; en el
punto x=2, de estudio de la derivabilidad, la función
es aparentemente continua, lo estudio
100
analíticamente.
0
-100
-200
-300
-5 -4 -3 -2 -1 0 1 2 3 4 5
Si dibujo directamente con fplot la función a trozos, la gráfica toma mejor aspecto.
>> fplot(@(x)((x-3)./(x.^2-2)).*(x<=2)+((2*x-6)./x.^2).*(x>2))
15
10
-5
-10
-15
-5 -4 -3 -2 -1 0 1 2 3 4 5
Hallo el valor de f(2),recordad que como es una función a trozos puedo usar anonymus,
versiones anteriores de Matlab permiten además inline, (que de momento también sigue en
uso pero desaparecerá) o bien puedo usar el comando subs, eligiendo manualmente la rama que
corresponde a x=2. Como ya me interesan cálculos simbólicos, voy a definir la x como simbólica
y voy a usar, el comando subs para hallar f(2).Aunque como ya se ha dicho se puede usar
también anonymus y se tiene también la opción del inline, os detallo a continuación todas las
formas posibles para que veáis las diferencias.
>> syms x Con el comando @anonymus
>> subs((x-3)/(x^2-2),x,2)
>> f=@(x)((x-3)/(x^2-2))*(x<=2)+((2*x-
ans = -0.5000
6)/x^2)*(x>2) La
>> f(2)
Elijo la rama manualmente ans=-0.5000 función
es
Con el comando inline, continua
en x=2,
>> f=inline('((x-3)/(x^2-2))*(x<=2)+((2*x-
6)/x^2)*(x>2)')
f = puede
ser
Inline function:
f(x) = ((x-3)/(x^2-2))*(x<=2)+((2*x-
6)/x^2)*(x>2) derivable
o no
>> f(2)
ans = -0.5000
Elige la rama el programa serlo.
Si lo haces por aquí, recuerda definir como simbólica la x,
antes de calcular después el límite.
>> limit((2*x-6)/x^2,x,2,'right')
ans =-1/2
>> limit((x-3)/(x^2-2),x,2,'left')
ans =-1/2
2
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
Estudio la derivabilidad en x=2.
Puedo optar por aplicar la Propiedad 4 del manual de teoría:
- La función es continua en x=2 y derivable en un entorno reducido de x=2, por propiedades
de derivabilidad para cada rama:
𝑥𝑥−3
x <2 , 2 −2 es derivable por cociente de derivables con denominador no nulo y su
𝑥𝑥
derivada es
>> syms x
>> f_izquierda=diff((x-3)/(x^2-2),x)
entonces en el punto x=2,
>>f_izquierda_en_2=limit(f_izquierda,x,2)
f_izquierda_en_2 =3/2
2𝑥𝑥−6
x >2 , es derivable por cociente de derivables con denominador no nulo y su
𝑥𝑥 2
derivada es
>> f_derecha=diff((2*x-6)/x^2,x)
f_derecha =2/x^2 - (2*(2*x - 6))/x^3
entonces en el punto x=2,
>> f_derecha_2=limit(f_ derecha,x,2)
f_ derecha _2 =1
Por lo tanto, la función no es derivable en x=2.
La función es continua en x=2 pero no es derivable en x=2, es decir, aunque no se aprecia en las
gráficas que he obtenido, hay un pico en x=2, redibujo la función acercándome a x=2
>> fplot(@(x)((x-3)./(x.^2-2)).*(x<=2)+((2*x-6)./x.^2).*(x>2),[1.99 2.01])
Ahí está el pico
-0.495
-0.5
-0.505
-0.51
-0.515
1.99 1.992 1.994 1.996 1.998 2 2.002 2.004 2.006 2.008 2.01
(También puedes hacer un zoom desde figure, pero se pierde la forma)
3
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
2. Aplicaciones de la derivada: Máximos-mínimos-Puntos de
Inflexión. Optimización.
1
Ejemplo 3: Determinar los máximos-mínimos y puntos de Inflexión de la función 𝑓𝑓(𝑥𝑥) = 𝑒𝑒 𝑥𝑥 .
Debemos saber que el dominio de la función es ℝ − {0}.
>> syms x
>> f=exp(1/x);
>> der_f=diff(f,x)
der_f = 1
1
-1/x^2*exp(1/x) La derivada es − 𝑥𝑥 2 𝑒𝑒 𝑥𝑥 que no se anula en el
>> solve(der_f,x) dominio de la función. De ahí que no posea ni
ans = máximos ni mínimos relativos.
Empty sym: 0-by-1
Calculo la derivada segunda, para determinar los puntos de Inflexión:
>> der2_f=diff(f,x,2)
der2_f =
2/x^3*exp(1/x)+1/x^4*exp(1/x)
>> solve(der2_f,x)
ans = -1/2 Al igualar la segunda derivada a cero, obtenemos un posible punto de inflexión,
que admitiremos como tal o descartaremos según su valor en la tercera derivada,
>> der3_f=diff(f,x,3)
der3_f =
-6/x^4*exp(1/x)-6/x^5*exp(1/x)-1/x^6*exp(1/x)
>> subs(der3_f,x,-1/2)
ans = 4.3307 Al ser distinto de cero, afirmamos que la función tiene un punto de inflexión
que se alcanza en x=-1/2, el punto de inflexión es (-1/2, f(-1/2)),
>> subs(f,-1/2)
ans = 0.1353 el punto de inflexión es (-0.5, 0.1353)
Nota: Si quieres dibujar la función, lleva cuidado pues la función no está definida en x=0, además
los valores que toma la función a la derecha del cero son cada vez mayores (tiende a +infinito
por la derecha del cero), pero tiende a cero por la izquierda del cero. Por ese motivo el comando
adecuado para dibujar la gráfica debe ser uno que te permita incluir, en la ventana gráfica, no
sólo los valores de la x si no también el de las y. En Matlab2017b el comando de dibujo que te
acepta la caja [xmin xmax ymin ymax] es ezplot, dibujando en implícitas (Ver práctica 3).
>> syms x y; fimplicit(y-exp(1/x),[-2 2 -1 8])
y - exp (1 /x )
8
4
y
-1
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
4
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
Ejemplo 4: La temperatura T de una reacción química en un laboratorio de productos
agrícolas viene dada, en función del tiempo t en horas, por la expresión 𝑇𝑇(𝑡𝑡) = 2𝑡𝑡 − 𝑡𝑡 2 para
𝑡𝑡 ∈ [0,2].
a) ¿Qué temperatura habrá a los quince minutos?
b) ¿En qué momento volverá a alcanzarse esta misma temperatura?
c) Halla las temperaturas máxima y mínima alcanzadas y lo momentos en que se producen.
Comienzo dibujando la función con valores de t entre 0 y 2. Para ello uso el comando fplot
>> fplot(@(t)2*t-t.^2,[0 2])
1
0.9
0.8
0.7
0.6
Temperatura
0.5
0.4
0.3
0.2
0.1
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Tiempo
Calculo la temperatura transcurridos 15 minutos (0.25 horas)
>> syms t
>> T_15min=subs(2*t-t^2,t,0.25)
T_15min =7/16
>> double(T_15min)
ans = 0.4375 Temperatura a los 15 minutos
Para averiguar cuando se vuelve a alcanzar la misma temepertura que a los 15 minutos,
resuelvo…
>> solve(2*t-t^2==0.4375,t)
ans =
1/4
7/4
>> double(ans)
ans =
0.2500
1.7500 horas que son 1.75*60 minutos
>> 1.75*60
ans = 105 minutos
Para hallar la temperatura máxima, gráficamente ya vemos que la función alcanza un máximo
en t= 1 y que su valor máximo es T(1)=1, lo compruebo con Matlab.
>> T=2*t-t^2;
>> derv_prim=diff(T,t,1)
derv_prim = 2 - 2*t
>> solve(derv_prim,t)
ans =1 Posible max-min
>> der_seg=diff(T,t,2)
der_seg =-2 Negativa luego presenta un máximo en t=1
5
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
El valor máximo es
>> subs(T,t,1)
ans =1
La función parabólica no tiene mínimo relativo, su valor mínimo se encontrará en los extremos
del intervalo:
>> subs(T,t,0)
ans =0
>> subs(T,t,2)
ans =0
2 1
Ejemplo 5: Dada la función 𝑓𝑓(𝑥𝑥) = �𝑥𝑥 𝑠𝑠𝑠𝑠𝑠𝑠 �𝑥𝑥� 𝑥𝑥 ≠ 0. Calcular 𝑓𝑓 ′ (0)
+ 𝑦𝑦 𝑓𝑓−′ (0). ¿Es f derivable en
0 𝑥𝑥 = 0
x=0?. Hallar 𝑓𝑓 ′ (1).
>> fplot(@(x)x.^2.*sin(1./x),[-1 1])
0.08
0.06
0.04
0.02
-0.02
-0.04
-0.06
-0.08
-0.1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Nos acercamos más al cero.
>> fplot(@(x)x.^2.*sin(1./x),[-1/10 1/10])
-3
10
-2
-4
-6
-8
-0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1
Aparentemente parece continua en x=0
Lo comprobamos analíticamente,
>> syms x
>> f=x^2*sin(1/x);
>> limit(f,x,0,'right')
ans =0 Por tanto f es continua en x=0
>> limit(f,x,0,'left')
ans =0
6
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
Estudio la derivabilidad en x=0
>> der=diff(f,x) Si calculamos la derivada y el límite de la
der =
2*x*sin(1/x) - cos(1/x) derivada en x=0,
NaN lo interpretamos como que el límite no
>>der_dcha_0=limit(der,x,0,’right’) existe. Efectivamente la parte
1
cos �𝑥𝑥� cunado x tiende a 0 es el coseno en
der_dcha_0 =NaN
Por la izquierda, exactamente igual el infinito que no tiene un valor definido.
Cuando esto ocurre no puedo afirmar mediante esta propiedad si la derivada existe o no,
luego este método no me sirve.
La alternativa es calcular la derivada por la derecha y por la izquierda por la propia definición:
>> syms h
>> f_en_0=0; %defino el valor de la función en 0 f ( x0 + h ) − f ( x0 ) donde h>0
f +' ( x0 ) = lim+
>> g=(subs(f,x,0+h)-f_en_0)/h h →0 h
g = Por tanto, la función es derivable a la
h sin(1/h)
derecha de x=0.
>> der_f_der_0=limit(g,h,0,'right')
der_f_der_0 =0
Si vamos por la izquierda, el resultado no debe cambiar.
Estos dos pasos te los puedes ahorrar ya
>> syms h lo habías hecho antes
>> f_en_0=0; f ( x0 + h ) − f ( x0 ) donde h<0
>> g=(subs(f,x,0+h)-f_en_0)/h f −′ ( x0 ) = lim −
h →0 h
g =
h sin(1/h)
>> der_f_der_0=limit(g,h,0,'left') Por tanto, la función es derivable a la
izquierda de x=0.
der_f_der_0 =0
Concluimos que en x=0 la función es derivable.
Para todo punto distinto de 0, la derivada la obtuve con el comando diff y estaba guardada en
der.
Para calcular la derivada en x=1.
>> der_f_en1=subs(der,x,1) Esto se podía haber hecho en un
solo paso
der_f_en1 = >> der_f_en1=subs(diff(f,x),x,1)
2*sin(1) - cos(1) der_f_en1 =
>> double(der_f_en1) 2*sin(1) - cos(1)
ans =
1.1426
7
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
Ejemplo 6: Un hombre conduce un vehículo y debe atravesar un terreno cenagoso. Se encuentra
en un puto P a 32 km del punto más próximo (línea recta) de una carretera (punto A) y desea
llegar en el menor tiempo posible a un punto B que se encuentra a 16 Km de A, en la línea de la
carretera. ¿A cuántos Km de A debe llegar a la carretera (punto C) si conduce a una velocidad
a 48 Km/h por el terreno cenagoso y a 80 Km/h por la carretera?
P
A C B
Debemos de obtener la función a minimizar en términos de una única variable, y a partir de
ahí utilizar matlab como herramienta para determinar su mínimo absoluto.
>> syms x
>> tiempo=sqrt(x^2+32^2)/48+(16-x)/80; función a minimizar en el intervalo [0,16]
>> der_tiempo=diff(tiempo,x) hallo su derivada, la guardo en der_tiempo
der_tiempo =
1/48/(x^2+1024)^(1/2)*x-1/80
>> pretty(der_tiempo) la muestro en formato matemático
x 1
------------------ - --
2 80
48 sqrt(x + 1024)
>> solve(der_tiempo,x) Igualo la derivada a cero, y resuelvo
ans = 24
El mínimo relativo de la función tiempo se alcanza en x=24, que queda fuera del intervalo
[0,16], por tanto lo desecho. Por el teorema de Weiertrass dado que la función tiempo es
continua en [0,16], existe un mínimo absoluto, que se alcanzará en uno de los extremos del
intervalo.
>> subs(tiempo,x,0)
ans = 13/15
ans =0.8667
>> subs(tiempo,x,16)
ans = 1280^(1/2)/48
ans= 0.7454
El menor valor de la función tiempo se alcanza en x=16; para llegar en el menor tiempo posible
debe de ir directamente por el terreno cenagoso hasta el punto B, sin tocar la carretera.
3. Cálculo de Integrales. Comando int
Matlab permite calcular integrales, tanto de forma analítica como numérica.
Se pueden calcular primitivas de funciones que combinen las funciones ordinarias (polinomios,
fracciones algebraicas, exponenciales, logarítmicas, trigonométricas e hiperbólicas y sus
inversas) siempre que la fórmula no sea excesivamente complicada y que se puedan expresar
como combinación de funciones elementales.
También se pueden calcular integrales definidas e integrales impropias.
8
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
El comando de integración es int y requiere que la variable de integración se haya definido
como simbólica.
𝑏𝑏
La sintáxis para calcular ∫𝑎𝑎 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑 es
int(función,variable,a,b)
Donde, función es la fórmula explícita de la función y=f(x),variable es la variable
respecto a la que se va a integrar, a es el límite inferior de la integral y b el superior, en el caso
de que no se especifiquen, el programa calculará la primitiva de la función.
>> syms x
>> int(f(x),x) � 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑
>> int(f(x),x,a,b) 𝑏𝑏
� 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑
𝑎𝑎
π
Ejemplo 7: Calcular ∫ x cos x dx y ∫
2 2
x 2 cos x dx
0
>> syms x
>> int(x^2*cos(x),x)
ans =
x^2*sin(x)-2*sin(x)+2*x*cos(x)
>> int(x^2*cos(x),x,0,pi/2)
ans =1/4*pi^2-2
>> double(ans)
ans = 0.4674
Matlab y las integrales impropias.
Matlab en general trabaja bien con las integrales impropias.
1 1
Ejemplo 8: Calcula integral impropia ∫−1 2 𝑑𝑑𝑑𝑑
𝑥𝑥
>> syms x;int(1/x^2,-1,1)
ans =Inf
La integral diverge.
1
Ejemplo 9: Calcular la integral impropia ∫0 𝐿𝐿𝐿𝐿(𝑥𝑥)𝑑𝑑𝑑𝑑
Se trata de una impropia pues f(x)=Ln(x) no está definida en x=0.
>> int(log(x),0,1)
ans = -1
Aún así su valor es convergente; la integral vale -1.
∞
Ejemplo 10: Calcular la integral impropia ∫0 𝑒𝑒 −𝑥𝑥 𝑑𝑑𝑑𝑑
>> int(exp(-x),0,inf)
ans =1
La integral converge, su valor es 1.
9
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
Cálculo de áreas.
Centraremos el trabajo del comando int en el cálculo de áreas de regiones. Además, vamos a
dibujar las curvas que delimitan la región, para visualizar la región de la cual se quiere
determinar el área.
Ejemplo 11: Calcular el área comprendida entre la gráfica de la función 𝑓𝑓(𝑥𝑥) = 𝑥𝑥 3 − 4𝑥𝑥 2 + 𝑥𝑥 + 6
entre x=-2 y x=4.
Empezamos dibujando el polinomio y el eje x, para situar los pasos por cero, que calcularemos
igualando el polinomio a cero, con solve.
>> fplot(@(x)x.^3-4*x.^2+x+6',[-2 4]) 10
>> hold on
>> fplot(@(x) x-x,[-2 4]) %con x-x consigo el
5
valor cero pero de la misma longitud que x, para evitar
0
problemas de dimensión
>> syms x -5
>> solve(x^3-4*x^2+x+6,x)
ans = -10
-1
-15
2
3 -20
-2 -1 1 2 4
0 3
Raíces en -1, 2 y 3 que caen todas dentro
del intervalo [-2,4]
Se le puede dar relleno a las regiones de las que queremos el área, pero esto no os lo voy a pedir
>> x=-2:0.01:4;
>> y1=x.^3-4*x.^2+x+6;
>> y2=x-x; %valor cero pero de la misma longitud que x, para evitar
problemas de dimensión
>> X=[x,fliplr(x)];
>> Y=[y1,fliplr(y2)];
>> fill(X,Y,’g’)
10
-5
-10
-15
-20
-2 -1 0 1 2 3 4
En los tramos en los que es negativa tengo que tomar el valor absoluto de la integral.
>>Area=abs(int(x^3-4*x^2+x+6,x,-2,-1))+int(x^3-4*x^2+x+6,x,-
1,2)+abs(int(x^3-4*x^2+x+6,x,2,3))+int(x^3-4*x^2+x+6,x,3,4)
Area =
73/3
>> double(Area)
ans =
24.3333
10
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
𝑥𝑥−1
Ejemplo 12: Calcular el área de la función 𝑓𝑓(𝑥𝑥) = a lo largo del intervalo [0,6].
𝑒𝑒 𝑥𝑥
>> fplot(@(x)(x-1)./exp(x),[0,6])
>> hold on
>> fplot(@(x) x-x,[0,6])
Lo que nos muestra que la función tiene una
0 raíz en [0,6].
>> syms x
-0.2 >> solve('(x-1)/exp(x)',x)
ans = 1
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6
Así el área será integrar de 0 a 1 en valor absoluto más la integral de 1 a 6.
Rellenamos la región, (esto no os lo voy a pedir)
>> x=0:0.01:6;
>> y1=(x-1)./exp(x);
>> y2=x-x;
>> X=[x,fliplr(x)]; %creamos valores continuos de x para dibujar
>> Y=[y1,fliplr(y2)]; %creamos valores continuos de y que van y vuelven
>> fill(X,Y,'c')
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6
>> A1=abs(int((x-1)/exp(x),x,0,1))
A1 =exp(-1)
>> A2=int((x-1)/exp(x),x,1,6)
A2 =-6*exp(-6)+exp(-1)
>> A=A1+A2
A = 2*exp(-1)-6*exp(-6)
>> double(A)
ans = 0.7209
Ejemplo 13: Calcular el área de la función 𝑓𝑓(𝑥𝑥) = 𝐿𝐿𝐿𝐿(𝑥𝑥) comprendida entre las rectas x= 0 y
x=3. Se trata de un problema de áreas en la que interviene una integral impropia pues la función
𝑓𝑓(𝑥𝑥) = 𝐿𝐿𝐿𝐿(𝑥𝑥) no está definida en x=0
>> fplot(@(x)log(x),[0,4])
>> hold on
>> fplot(@(x) x-x,[0,4])
11
Prácticas Matemáticas_I
Grado en Ingeniería Química.
Prf: Margarita Mora Carbonell
0
Vemos el cambio de signo de la
función en x=1.
-1
>> syms x
-2
>> solve(log(x),x)
-3 ans = 1
-4
-5
0 0.5 1 1.5 2 2.5 3 3.5 4
Por tanto, el área se obtendrá integrando de 0 a 1 (integral impropia) en valor absoluto y
sumando la integral de 1 a 3.
>> area=abs(int(log(x),x,0,1))+int(log(x),x,1,3)
area =
-1+3*log(3)
>> double(area)
ans = 2.2958
12