English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Diferenciación de MATLAB

Solución de ecuaciones diferencialesdiffcomando utilizado para calcular la derivada simbólica. En su forma más simple, se pasa la función que se va a diferenciar como parámetro al comando diff.

por ejemplo, calculemos la derivada de la función f(t) = 3t 2 + 2t -2

ejemplo en línea

Crea un archivo de script y escribe el siguiente código-

syms t
f = 3*t^2 + 2*t^(-2);
diff(f)

Después de compilar y ejecutar el código anterior, se producirán los siguientes resultados-

ans =
6*t - 4/t^3

A continuación, se muestra el equivalente de Octave para el cálculo anterior-

pkg load symbolic
symbols
t = sym("t");
f = 3*t^2 + 2*t^(-2);
differentiate(f,t)

Octave ejecuta el código y devuelve el siguiente resultado-

ans =
   -(4.0)*t^(-3.0)+(6.0)*t

verificación de las reglas básicas

Vamos a explicar brevemente varios tipos de ecuaciones o reglas utilizadas para la diferenciación y verificar estas reglas. Para esto, escribiremos f'(x) para el primer orden de derivada y f“(x) para el segundo orden de derivada.

A continuación se presentan las reglas de distinción-

regla1

para cualquier función f y g y cualquier número real a y b es la derivada de esta función-

h(x) = af(x) + bg(x) en términos de x por-

h'(x) = af'(x) + bg'(x)

regla dos

sumaenrestaLa regla indica que si f y g son dos funciones, f’ y g’ son respectivamente sus derivadas, entonces

(f + g)' = f' + g'

(f - g)' = f' - g'

regla tres

productoLa regla indica que si f y g son dos funciones, entonces f' y g' son respectivamente sus derivadas, entonces

(f.g)' = f'.g + g'.f

regla cuatro

cotaLa regla indica que si f y g son dos funciones, entonces f' y g' son respectivamente sus derivadas, entonces

(f/g)' = (f'.g - g'.f)/g2

regla cinco

polinómicoo la regla básica de los poderes especifica que si, entoncesy = f(x) = xnf' = n. x(n-1)

El resultado directo de esta regla es que la derivada de cualquier constante es cero, es decir, siy = k, cualquier constante, entonces

f' = 0

regla seis

cadenaLa regla indica que la derivada de una función de una función en términos de x es:h(x) = f(g(x))

h'(x) = f'(g(x)).g'(x)

Ejemplo

Crea un archivo de script y escribe el siguiente código-

syms x
syms t
f = (x + 2)*(x^2 + 3)
der1 = diff(f)
f = (t^2 + 3)*(sqrt(t) + t^3)
der2 = diff(f)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = diff(f)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = diff(f)
f = (x^2 + 1))17
der5 = diff(f)
f = (t^3 + 3* t^2 + 5*t -9))^(-6)
der6 = diff(f)

Al ejecutar el archivo, MATLAB muestra el siguiente resultado-

f =
   (x^2 + 3)*(x + 2)
 
   der1 =
   2*x*(x + 2) + x^2 + 3
  
f =
   (t^(1/2) + t^3)*(t^2 + 3)
 
   der2 =
   (t^2 + 3)*(3*t^2 + 1/(2*t^(1/2)) + 2*t*(t^(1/2) + t^3)
  
f =
   (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
  
der3 =
   (2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1)
 
f =
   (2*x^2 + 3*x)/(x^3 + 1)
  
der4 =
   (4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1))2
  
f =
   (x^2 + 1))17
  
der5 =
   34*x*(x^2 + 1))16
  
f =
   1/(t^3 + 3*t^2 + 5*t - 9))6
  
der6 =
   -(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9))7

A continuación, se muestra el equivalente de Octave para el cálculo anterior-

pkg load symbolic
symbols
x = sym("x");
t = sym("t");
f = (x + 2)*(x^2 + 3) 
der1 = differentiate(f,x) 
f = (t^2 + 3)*(t^(1/2) + t^3) 
der2 = differentiate(f,t) 
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) 
der3 = differentiate(f,x) 
f = (2*x^2 + 3*x)/(x^3 + 1) 
der4 = differentiate(f,x) 
f = (x^2 + 1))17 
der5 = differentiate(f,x) 
f = (t^3 + 3* t^2 + 5*t -9))^(-6) 
der6 = differentiate(f,t)

Octave ejecuta el código y devuelve el siguiente resultado-

f =
(2.0+x)*(3.0+x^(2.0))
der1 =
3.0+x^(2.0)+(2.0)*(2.0+x)*x
f =
(t^(3.0)+sqrt(t))*(3.0+t^(2.0))
der2 =
(2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0))
f =
(1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))
der3 =
(-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x)
f =
(1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x)
der4 =
(1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x)
f =
(1.0+x^(2.0))^(17.0)
der5 =
(34.0)*(1.0+x^(2.0))^(16.0)*x
f =
(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0)
der6 =
-(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t)

derivadas de las funciones exponenciales, logarítmicas y trigonométricas

La siguiente tabla proporciona las derivadas comunes de las funciones exponenciales, logarítmicas y trigonométricas-

función
derivada
ca.xca.x.lnc.a(ln es el logaritmo natural)
exex
ln x1/x
lncx1/x.ln c
xxxx.(1 + ln x)
sin(x)cos(x)
cos(x)-sin(x)
tan(x)sec2(x), or  1/cos2(x), o  1 + tan2(x)
cot(x)-csc2(x), or  -1/sin2(x), o -(1 + cot2(x))
sec(x)sec(x).tan(x)
csc(x)-csc(x).cot(x)

Ejemplo

Crea un archivo de script y escribe el siguiente código-

syms x
y = exp(x)
diff(y)
y = x^9
diff(y)
y = sin(x)
diff(y)
y = tan(x)
diff(y)
y = cos(x)
diff(y)
y = log(x)
diff(y)
y = log10(x)
diff(y)
y = sin(x)^2
diff(y)
y = cos(3*x^2 + 2*x + 1)
diff(y)
y = exp(x)/sin(x)
diff(y)

Al ejecutar el archivo, MATLAB muestra el siguiente resultado-

y =
   exp(x)
   ans =
   exp(x)
y =
   x^9
   ans =
   9*x^8
  
y =
   sin(x)
   ans =
   cos(x)
  
y =
   tan(x)
   ans =
   tan(x)^2 + 1
 
y =
   cos(x)
   ans =
   -sin(x)
  
y =
   log(x)
   ans =
   1/x
  
y =
   log(x)/log(10)
   ans =
   1/(x*log(10))
 
y =
   sin(x)^2
   ans =
   2*cos(x)*sin(x)
 
y =
   cos(3*x^2 + 2*x + 1)
   ans =
   -sin(3*x^2 + 2*x + 1)*(6*x + 2)
  
y =
   exp(x)/sin(x)
   ans =
   exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2

A continuación, se muestra el equivalente de Octave para el cálculo anterior-

pkg load symbolic
symbols
x = sym("x");
y = Exp(x)
differentiate(y, x)
y = x^9
differentiate(y, x)
y = Sin(x)
differentiate(y, x)
y = Tan(x)
differentiate(y, x)
y = Cos(x)
differentiate(y, x)
y = Log(x)
differentiate(y, x)
% el paquete symbolic no admite esta función
%y = Log10(x)
%differentiate(y, x)
y = Sin(x)^2
differentiate(y, x)
y = Cos(3*x^2 + 2*x + 1)
differentiate(y, x)
y = Exp(x)/Sin(x)
differentiate(y, x)

Octave ejecuta el código y devuelve el siguiente resultado-

y =
exp(x)
ans =
exp(x)
y =
x^(9.0)
ans =
(9.0)*x^(8.0)
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
1+tan(x)^2
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
x^(-1)
y =
sin(x)^(2.0)
ans =
(2.0)*sin(x)*cos(x)
y =
cos(1.0+(2.0)*x+(3.0)*x^(2.0))
ans =
-(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0))
y =
sin(x)^(-1)*exp(x)
ans =
sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x)

Cálculo de derivados de orden superior

Para calcular los derivados de orden superior de la función f, usamos la sintaxisdiff(f, n)

Calculemos el segundo derivado de la función y = f(x) = x. e -3x

f = x*exp(-3*x);
diff(f, 2)

MATLAB ejecuta el código y devuelve el siguiente resultado-

ans =
9*x*exp(-3*x) - 6*exp(-3*x)

A continuación, se muestra el equivalente de Octave para el cálculo anterior-

pkg load symbolic
symbols
x = sym("x");
f = x*Exp(-3*x);
differentiate(f, x, 2)

Octave ejecuta el código y devuelve el siguiente resultado-

ans =
(9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x)

Ejemplo

En este ejemplo, resolvamos un problema. Se nos da una función. Tendremos que encontrar si la ecuación se cumple.y = f(x) = 3 sin(x) + 7 cos(5x)f" + f = -5cos(2x)

Crea un archivo de script y escribe el siguiente código-

syms x
y = 3*sin(x)+7*cos(5*x);          % definiendo la función
lhs = diff(y,2)+y;          % evaluando el lhs de la ecuación
rhs = -5*cos(2*x);          % rhs de la ecuación
if(isequal(lhs, rhs))
   disp('Sí, la ecuación es verdadera');
else
   disp('No, la ecuación no es verdadera');
end
disp('El valor del LHS es: '), disp(lhs);

Al ejecutar el archivo, muestra el siguiente resultado-

No, la ecuación no es verdadera
El valor del LHS es: 
-168*cos(5*x)

A continuación, se muestra el equivalente de Octave para el cálculo anterior-

pkg load symbolic
symbols
x = sym("x");
y = 3*Sin(x)+7*Cos(5*x);          % definición de la función
lhs = differentiate(y, x, 2) + y;           % cálculo de la ecuación lhs
rhs = -5*Cos(2*x);          % ecuación rhs
if(lhs == rhs)
   disp('Sí, la ecuación es verdadera');
else
   disp('No, la ecuación no es verdadera');
end
disp('El valor del LHS es: '), disp(lhs);

Octave ejecuta el código y devuelve el siguiente resultado-

No, la ecuación no es verdadera
El valor del LHS es: 
-(168.0)*cos((5.0)*x)

Buscar el máximo y el mínimo de la curva

Si se desea buscar máximos y mínimos locales en el gráfico, básicamente es buscar los puntos más altos o más bajos en un rango específico de valores de variables simbólicas en la gráfica de la función.

Para la función y = f(x), los puntos en el gráfico con una pendiente cero se denominanpuntos estacionarios(puntos estacionarios/Puntos críticos). En otras palabras, los puntos fijos son f'(x) = 0.

Para encontrar los puntos estacionarios de la función que estamos diferenciando, necesitamos establecer la derivada en cero y resolver la ecuación.

Ejemplo

Vamos a encontrar el punto fijo de la función f(x) = 2x 3 + 3x 2 − 12x + 17

Siguiendo estos pasos-

Primero, vamos a entrar en la función y dibujar su gráfico.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % definición de la función
ezplot(y)

MATLAB ejecuta el código y devuelve el siguiente gráfico-

Este es el código equivalente de Octave para el ejemplo anterior-

pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17]);
ezplot(y)
print -deps graph.eps

Nuestro objetivo es encontrar algunos valores locales máximos y mínimos en el gráfico, por lo que encontremos el intervalo [-2,2] para encontrar los valores locales máximos y mínimos.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % definición de la función
ezplot(y, [-2, 2])

MATLAB ejecuta el código y devuelve el siguiente gráfico-

Este es el código equivalente de Octave para el ejemplo anterior-

pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17]);
ezplot(y, [-2, 2])
print -deps graph.eps

A continuación, vamos a calcular la derivada.

g = diff(y)

MATLAB ejecuta el código y devuelve el siguiente resultado-

g =
   6*x^2 + 6*x - 12

Esto es el octavo cálculo anterior-

pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y, x)

Octave ejecuta el código y devuelve el siguiente resultado-

g =
   -12.0+(6.0)*x+(6.0)*x^(2.0)

Vamos a resolver la función derivada g, obteniendo los valores en los que se convierte en cero.

s = solve(g)

MATLAB ejecuta el código y devuelve el siguiente resultado-

s =
   1
   -2

A continuación, se muestra el equivalente de Octave para el cálculo anterior-

pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y, x)
roots([6, 6, -12])

Octave ejecuta el código y devuelve el siguiente resultado-

g =
-12.0+(6.0)*x^(2.0)+(6.0)*x
ans =
  -2
   1

Esto coincide con nuestro gráfico, por lo que en el punto crítico x = 1,-2para calcular la función f.

subs(y, 1), subs(y, -2)

MATLAB ejecuta el código y devuelve el siguiente resultado-

ans =
   10
ans =
   37

A continuación, se muestra el equivalente de Octave para el cálculo anterior-

pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y, x)
roots([6, 6, -12])
subs(y, x, 1), subs(y, x, -2)
ans =
   10.0
ans =
   37.0-4.6734207789940138748E-18*I

Por lo tanto, el valor mínimo y máximo de la función f(x) es = 2x 3 + 3x 2 − 12x + 17en-2,2intervalo de10en37。

y

Solución de ecuaciones diferencialesEs el comando utilizado para resolver ecuaciones diferenciales simbólicas.MATLAB proporciona

Es el comando utilizado para resolver ecuaciones diferenciales simbólicas.dsolve

La forma más básica del comando para buscar la solución de una única ecuación es

dsolve('eqn')dondeEs una cadena de texto utilizada para ingresar ecuaciones. eqn

Devuelve una solución simbólica con un conjunto de constantes arbitrarias, que MATLAB marca como C1,C2等。

También puede especificar las condiciones iniciales y las condiciones de borde del problema como una lista separada por comas después de la ecuación-

dsolve('eqn','cond1', 'cond2',…)

Para el propósito de usar el comando dsolve, los derivados se representan por D. Por ejemplo, como f'(t)= -2 * f +Las ecuaciones como cost(t) se introducen como-

'Df = -2*f + cos(t)'

Los derivados de orden superior se representan por el orden de los derivados detrás de D. Por ejemplo,

Por ejemplo, la ecuación f“(x)+ 2f'(x)= 5sin3x debe introducirse como-

'D2y + 2Dy = 5*sin(3*x)'

Vamos a dar un ejemplo simple de una ecuación diferencial de primer orden: y'= 5y。

s = dsolve('Dy = 5*y')

MATLAB ejecuta el código y devuelve el siguiente resultado-

s =
   C2*exp(5*t)

Vamos a tomar otro ejemplo de una ecuación diferencial de segundo orden: y“-y = 0,y= -1,y'= 2。

dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2)

MATLAB ejecuta el código y devuelve el siguiente resultado-

ans =
   exp(t)/2 - (3*exp(-t))/2