Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> MATLAB

MATLAB - Diferencial

MATLAB proporciona la dif Comando para calcular derivadas simbólicas. En su forma más simple, pasa la función que desea diferenciar al comando diff como argumento.

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

Ejemplo

Cree un archivo de script y escriba el siguiente código en él −

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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

ans =
6*t - 4/t^3

A continuación se muestra el equivalente en octavas del 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 Reglas Elementales de Diferenciación

Expresemos brevemente varias ecuaciones o reglas para la diferenciación de funciones y verifiquemos estas reglas. Para ello, escribiremos f'(x) para una derivada de primer orden y f"(x) para una derivada de segundo orden.

Las siguientes son las reglas para la diferenciación −

Regla 1

Para cualquier función f y g y cualquier número real a y b son la derivada de la función −

h(x) =af(x) + bg(x) con respecto a x está dada por −

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

Regla 2

La suma y resta Las reglas establecen que si f y g son dos funciones, f' y g' son sus derivadas respectivamente, entonces,

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

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

Regla 3

El producto La regla establece que si f y g son dos funciones, f' y g' son sus derivadas respectivamente, entonces,

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

Regla 4

El cociente La regla establece que si f y g son dos funciones, f' y g' son sus derivadas respectivamente, entonces,

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

Regla 5

El polinomio o la regla de la potencia elemental establece que, si y =f(x) =x n , entonces f' =n. x (n-1)

Un resultado directo de esta regla es que la derivada de cualquier constante es cero, es decir, si y =k , cualquier constante, entonces

f' =0

Regla 6

La cadena regla establece que, derivada de la función de una función h(x) =f(g(x)) con respecto a x es,

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

Ejemplo

Cree un archivo de script y escriba el siguiente código en él −

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)

Cuando ejecuta 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 en octavas del 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 Funciones Exponenciales, Logarítmicas y Trigonométricas

La siguiente tabla proporciona las derivadas de funciones exponenciales, logarítmicas y trigonométricas de uso común −

Función Derivada
c a.x c a.x .ln c.a (ln es logaritmo natural)
e x e x
lnx 1/x
lnc x 1/x.ln c
x x x x .(1 + ln x)
sen(x) cos(x)
cos(x) -sen(x)
bronceado(x) seg 2 (x), o 1/cos 2 (x), o 1 + tan 2 (x)
cuna(x) -csc 2 (x), o -1/sin 2 (x), o -(1 + cuna 2 (x))
seg(x) seg(x).tan(x)
csc(x) -csc(x).cot(x)

Ejemplo

Cree un archivo de script y escriba el siguiente código en él −

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)

Cuando ejecuta 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 en octavas del 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)

% symbolic packages does not have this support
%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 derivadas de orden superior

Para calcular derivadas superiores de una función f, usamos la sintaxis diff(f,n) .

Calculemos la segunda derivada 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 en octavas del 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. Dado que una función y =f(x) =3 sin(x) + 7 cos(5x) . Habrá que averiguar si la ecuación f" + f =-5cos(2x) es cierto.

Cree un archivo de script y escriba el siguiente código en él −

syms x
y = 3*sin(x)+7*cos(5*x);  % defining the function
lhs = diff(y,2)+y;        %evaluting the lhs of the equation
rhs = -5*cos(2*x);        %rhs of the equation
if(isequal(lhs,rhs))
   disp('Yes, the equation holds true');
else
   disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);

Cuando ejecuta el archivo, muestra el siguiente resultado −

No, the equation does not hold true
Value of LHS is: 
-168*cos(5*x)

A continuación se muestra el equivalente en octavas del cálculo anterior −

pkg load symbolic
symbols

x = sym("x");
y = 3*Sin(x)+7*Cos(5*x);           % defining the function
lhs = differentiate(y, x, 2) + y;  %evaluting the lhs of the equation
rhs = -5*Cos(2*x);                 %rhs of the equation

if(lhs == rhs)
   disp('Yes, the equation holds true');
else
   disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);

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

No, the equation does not hold true
Value of LHS is: 
-(168.0)*cos((5.0)*x)

Encontrar los máximos y mínimos de una curva

Si estamos buscando los máximos y mínimos locales para un gráfico, básicamente estamos buscando los puntos más altos o más bajos en el gráfico de la función en una localidad particular, o para un rango particular de valores de la variable simbólica.

Para una función y =f(x) los puntos en el gráfico donde el gráfico tiene pendiente cero se llaman puntos estacionarios . En otras palabras, los puntos estacionarios son donde f'(x) =0.

Para encontrar los puntos estacionarios de una función que derivamos, necesitamos igualar la derivada a cero y resolver la ecuación.

Ejemplo

Encontremos los puntos estacionarios de la función f(x) =2x 3 + 3x 2 − 12x + 17

Tome los siguientes pasos −

Primero ingresemos la función y tracemos su gráfica.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17;   % defining the function
ezplot(y)

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

Aquí está 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 máximos y mínimos locales en el gráfico, así que encontremos los máximos y mínimos locales para el intervalo [-2, 2] en el gráfico.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17;   % defining the function
ezplot(y, [-2, 2])

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

Aquí está 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

Luego, calculemos la derivada.

g = diff(y)

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

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

Aquí está el equivalente en octavas del 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)

Resolvamos la función derivada, g, para obtener los valores donde 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 en octavas del 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 concuerda con nuestra trama. Entonces, evalúemos la función f en los puntos críticos x =1, -2. Podemos sustituir un valor en una función simbólica usando subs comando.

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 en octavas del 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, los valores mínimo y máximo de la función f(x) =2x 3 + 3x 2 − 12x + 17, en el intervalo [-2,2] son ​​10 y 37.

Resolver ecuaciones diferenciales

MATLAB proporciona el dsolve Comando para resolver ecuaciones diferenciales simbólicamente.

La forma más básica de dsolve El comando para encontrar la solución a una sola ecuación es

dsolve('eqn') 

donde eqn es una cadena de texto utilizada para ingresar la ecuación.

Devuelve una solución simbólica con un conjunto de constantes arbitrarias que MATLAB etiqueta como C1, C2, etc.

También puede especificar condiciones iniciales y de contorno para el problema, como una lista delimitada por comas que sigue a la ecuación como −

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

Con el propósito de usar el comando dsolve, los derivados se indican con una D . Por ejemplo, una ecuación como f'(t) =-2*f + costo(t) se ingresa como −

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

Las derivadas superiores se indican siguiendo a D por el orden de la derivada.

Por ejemplo, la ecuación f"(x) + 2f'(x) =5sin3x debe ingresarse como −

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

Tomemos 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)

Tomemos otro ejemplo de una ecuación diferencial de segundo orden como:y" - y =0, y(0) =-1, y'(0) =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

MATLAB

  1. ¿Qué es un diferencial?
  2. ¿Qué es el fluido diferencial?
  3. MATLAB - Descripción general
  4. MATLAB - Tipos de datos
  5. MATLAB - Operadores
  6. MATLAB - Matriz
  7. MATLAB - Matrices
  8. MATLAB - Notación de dos puntos
  9. MATLAB-Números
  10. MATLAB - Cadenas
  11. MATLAB - Funciones